package com.tcm.training.admin.app.notice.controller; import com.tcm.training.admin.app.notice.service.AppNoticeService; import com.tcm.training.admin.app.notice.vo.AppActivityNoticeDetailVO; import com.tcm.training.admin.app.notice.vo.AppActivityNoticeListItemVO; import com.tcm.training.admin.app.notice.vo.AppNoticeDetailVO; import com.tcm.training.admin.app.notice.vo.AppNoticeItemVO; import com.tcm.training.admin.common.ApiResponse; import com.tcm.training.admin.common.PageResponse; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; /** * APP 通知中心接口。 */ @Validated @RestController @RequestMapping({"/api/app/notices", "/api/v1/app/notices"}) public class AppNoticeController { private final AppNoticeService appNoticeService; /** * 注入 APP 通知中心服务。 */ public AppNoticeController(AppNoticeService appNoticeService) { this.appNoticeService = appNoticeService; } /** * 获取当前登录用户的通知列表。 */ @GetMapping public ApiResponse> list() { return ApiResponse.ok(appNoticeService.list()); } /** * 将当前登录用户的全部通知标记为已读。 */ @PostMapping("/read-all") public ApiResponse markAllRead() { appNoticeService.markAllRead(); return ApiResponse.ok(null); } /** * 将指定类型通知标记为已读。 */ @PostMapping("/{noticeType}/read") public ApiResponse markRead(@PathVariable("noticeType") String noticeType) { appNoticeService.markRead(noticeType); return ApiResponse.ok(null); } /** * 获取指定类型通知详情。 */ @GetMapping("/{noticeType}/detail") public ApiResponse detail(@PathVariable("noticeType") String noticeType) { return ApiResponse.ok(appNoticeService.getNoticeDetail(noticeType)); } /** * 获取当前登录用户的活动通知分页列表。 */ @GetMapping("/activity") public ApiResponse> activityPage(@org.springframework.web.bind.annotation.RequestParam(defaultValue = "1") int page, @org.springframework.web.bind.annotation.RequestParam(defaultValue = "10") int pageSize) { return ApiResponse.ok(appNoticeService.pageActivityNotices(page, pageSize)); } /** * 获取当前登录用户的活动通知详情。 */ @GetMapping("/activity/{id}") public ApiResponse activityDetail(@PathVariable("id") Long id) { return ApiResponse.ok(appNoticeService.getActivityNoticeDetail(id)); } /** * 将当前登录用户的一条活动通知标记为已读。 */ @PostMapping("/activity/{id}/read") public ApiResponse markActivityRead(@PathVariable("id") Long id) { appNoticeService.markActivityRead(id); return ApiResponse.ok(null); } }