From 49891613193de521e03aa0b6239174eca9a3f1bb Mon Sep 17 00:00:00 2001 From: Charles7c Date: Sun, 8 Jun 2025 12:01:19 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96=E9=80=9A?= =?UTF-8?q?=E7=9F=A5=E5=85=AC=E5=91=8A=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/system/enums/NoticeMethodEnum.java | 7 ++++++- .../admin/system/mapper/NoticeMapper.java | 9 +++++---- ...eadResp.java => NoticeUnreadCountResp.java} | 12 ++++++------ .../admin/system/service/NoticeService.java | 11 ++++++----- .../system/service/impl/NoticeServiceImpl.java | 5 ++--- .../src/main/resources/mapper/NoticeMapper.xml | 11 +++++++---- .../system/UserMessageController.java | 18 +++++++++++++++--- 7 files changed, 47 insertions(+), 26 deletions(-) rename continew-module-system/src/main/java/top/continew/admin/system/model/resp/notice/{NoticeUnreadResp.java => NoticeUnreadCountResp.java} (81%) diff --git a/continew-module-system/src/main/java/top/continew/admin/system/enums/NoticeMethodEnum.java b/continew-module-system/src/main/java/top/continew/admin/system/enums/NoticeMethodEnum.java index b58ce148..809b22bb 100644 --- a/continew-module-system/src/main/java/top/continew/admin/system/enums/NoticeMethodEnum.java +++ b/continew-module-system/src/main/java/top/continew/admin/system/enums/NoticeMethodEnum.java @@ -33,7 +33,12 @@ public enum NoticeMethodEnum implements BaseEnum { /** * 系统消息 */ - SYSTEM_MESSAGE(1, "系统消息"),; + SYSTEM_MESSAGE(1, "系统消息"), + + /** + * 登录弹窗 + */ + POPUP(2, "登录弹窗"),; private final Integer value; private final String description; diff --git a/continew-module-system/src/main/java/top/continew/admin/system/mapper/NoticeMapper.java b/continew-module-system/src/main/java/top/continew/admin/system/mapper/NoticeMapper.java index 599d6a75..89d35b60 100644 --- a/continew-module-system/src/main/java/top/continew/admin/system/mapper/NoticeMapper.java +++ b/continew-module-system/src/main/java/top/continew/admin/system/mapper/NoticeMapper.java @@ -45,12 +45,13 @@ public interface NoticeMapper extends BaseMapper { IPage selectNoticePage(@Param("page") Page page, @Param("query") NoticeQuery query); /** - * 查询未读公告数量 + * 查询未读公告 ID 列表 * - * @param userId 用户 ID - * @return 未读公告数量 + * @param noticeMethod 通知方式 + * @param userId 用户 ID + * @return 未读公告 ID 列表 */ - Long selectUnreadCountByUserId(@Param("userId") Long userId); + List selectUnreadIdsByUserId(@Param("noticeMethod") Integer noticeMethod, @Param("userId") Long userId); /** * 查询仪表盘公告列表 diff --git a/continew-module-system/src/main/java/top/continew/admin/system/model/resp/notice/NoticeUnreadResp.java b/continew-module-system/src/main/java/top/continew/admin/system/model/resp/notice/NoticeUnreadCountResp.java similarity index 81% rename from continew-module-system/src/main/java/top/continew/admin/system/model/resp/notice/NoticeUnreadResp.java rename to continew-module-system/src/main/java/top/continew/admin/system/model/resp/notice/NoticeUnreadCountResp.java index dc7f7891..a980a195 100644 --- a/continew-module-system/src/main/java/top/continew/admin/system/model/resp/notice/NoticeUnreadResp.java +++ b/continew-module-system/src/main/java/top/continew/admin/system/model/resp/notice/NoticeUnreadCountResp.java @@ -24,15 +24,15 @@ import java.io.Serial; import java.io.Serializable; /** - * 未读公告响应参数 + * 未读公告数量响应参数 * * @author Charles7c - * @since 2025/5/20 22:00 + * @since 2025/5/22 22:15 */ @Data @NoArgsConstructor -@Schema(description = "未读公告响应参数") -public class NoticeUnreadResp implements Serializable { +@Schema(description = "未读公告数量响应参数") +public class NoticeUnreadCountResp implements Serializable { @Serial private static final long serialVersionUID = 1L; @@ -41,9 +41,9 @@ public class NoticeUnreadResp implements Serializable { * 未读公告数量 */ @Schema(description = "未读公告数量", example = "1") - private Long total; + private Integer total; - public NoticeUnreadResp(Long total) { + public NoticeUnreadCountResp(Integer total) { this.total = total; } } \ No newline at end of file diff --git a/continew-module-system/src/main/java/top/continew/admin/system/service/NoticeService.java b/continew-module-system/src/main/java/top/continew/admin/system/service/NoticeService.java index ecc6d6a3..658266c1 100644 --- a/continew-module-system/src/main/java/top/continew/admin/system/service/NoticeService.java +++ b/continew-module-system/src/main/java/top/continew/admin/system/service/NoticeService.java @@ -16,13 +16,13 @@ package top.continew.admin.system.service; +import top.continew.admin.system.enums.NoticeMethodEnum; import top.continew.admin.system.model.entity.NoticeDO; import top.continew.admin.system.model.query.NoticeQuery; import top.continew.admin.system.model.req.NoticeReq; import top.continew.admin.system.model.resp.dashboard.DashboardNoticeResp; import top.continew.admin.system.model.resp.notice.NoticeDetailResp; import top.continew.admin.system.model.resp.notice.NoticeResp; -import top.continew.admin.system.model.resp.notice.NoticeUnreadResp; import top.continew.starter.data.mp.service.IService; import top.continew.starter.extension.crud.service.BaseService; @@ -44,12 +44,13 @@ public interface NoticeService extends BaseService listUnreadIdsByUserId(NoticeMethodEnum method, Long userId); /** * 阅读公告 diff --git a/continew-module-system/src/main/java/top/continew/admin/system/service/impl/NoticeServiceImpl.java b/continew-module-system/src/main/java/top/continew/admin/system/service/impl/NoticeServiceImpl.java index 811438e6..bf7a7bb6 100644 --- a/continew-module-system/src/main/java/top/continew/admin/system/service/impl/NoticeServiceImpl.java +++ b/continew-module-system/src/main/java/top/continew/admin/system/service/impl/NoticeServiceImpl.java @@ -31,7 +31,6 @@ import top.continew.admin.system.model.req.NoticeReq; import top.continew.admin.system.model.resp.dashboard.DashboardNoticeResp; import top.continew.admin.system.model.resp.notice.NoticeDetailResp; import top.continew.admin.system.model.resp.notice.NoticeResp; -import top.continew.admin.system.model.resp.notice.NoticeUnreadResp; import top.continew.admin.system.service.MessageService; import top.continew.admin.system.service.NoticeLogService; import top.continew.admin.system.service.NoticeService; @@ -169,8 +168,8 @@ public class NoticeServiceImpl extends BaseServiceImpl listUnreadIdsByUserId(NoticeMethodEnum method, Long userId) { + return baseMapper.selectUnreadIdsByUserId(method != null ? method.getValue() : null, userId); } @Override diff --git a/continew-module-system/src/main/resources/mapper/NoticeMapper.xml b/continew-module-system/src/main/resources/mapper/NoticeMapper.xml index 8372b890..edc15936 100644 --- a/continew-module-system/src/main/resources/mapper/NoticeMapper.xml +++ b/continew-module-system/src/main/resources/mapper/NoticeMapper.xml @@ -24,7 +24,7 @@ LEFT JOIN sys_notice_log AS t2 ON t2.notice_id = t1.id - (t1.notice_scope = 1 OR (t1.notice_scope = 2 AND JSON_EXTRACT(t1.notice_users, "$[0]") = CAST(#{query.userId} AS CHAR))) + (t1.notice_scope = 1 OR (t1.notice_scope = 2 AND JSON_CONTAINS(t1.notice_users, CONCAT('"', #{userId}, '"')))) AND t1.title LIKE CONCAT('%', #{query.title}, '%') @@ -41,12 +41,15 @@ - SELECT - COUNT(1) + t1.id FROM sys_notice AS t1 - LEFT JOIN sys_notice_log AS t2 ON t2.notice_id = t1.id + LEFT JOIN sys_notice_log AS t2 ON t2.notice_id = t1.id WHERE (t1.notice_scope = 1 OR (t1.notice_scope = 2 AND JSON_CONTAINS(t1.notice_users, CONCAT('"', #{userId}, '"')))) + + AND JSON_CONTAINS(t1.notice_methods, CAST(#{noticeMethod} AS CHAR)) + AND t2.read_time IS NULL diff --git a/continew-webapi/src/main/java/top/continew/admin/controller/system/UserMessageController.java b/continew-webapi/src/main/java/top/continew/admin/controller/system/UserMessageController.java index 16bb04bf..33f60eab 100644 --- a/continew-webapi/src/main/java/top/continew/admin/controller/system/UserMessageController.java +++ b/continew-webapi/src/main/java/top/continew/admin/controller/system/UserMessageController.java @@ -24,6 +24,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import top.continew.admin.common.context.UserContextHolder; +import top.continew.admin.system.enums.NoticeMethodEnum; import top.continew.admin.system.enums.NoticeScopeEnum; import top.continew.admin.system.model.query.MessageQuery; import top.continew.admin.system.model.query.NoticeQuery; @@ -31,7 +32,7 @@ import top.continew.admin.system.model.resp.message.MessageResp; import top.continew.admin.system.model.resp.message.MessageUnreadResp; import top.continew.admin.system.model.resp.notice.NoticeDetailResp; import top.continew.admin.system.model.resp.notice.NoticeResp; -import top.continew.admin.system.model.resp.notice.NoticeUnreadResp; +import top.continew.admin.system.model.resp.notice.NoticeUnreadCountResp; import top.continew.admin.system.service.MessageService; import top.continew.admin.system.service.NoticeService; import top.continew.starter.core.validation.CheckUtils; @@ -41,6 +42,8 @@ import top.continew.starter.extension.crud.model.resp.BasePageResp; import top.continew.starter.extension.crud.model.resp.PageResp; import top.continew.starter.log.annotation.Log; +import java.util.List; + /** * 个人消息 API * @@ -93,8 +96,17 @@ public class UserMessageController { @Log(ignore = true) @Operation(summary = "查询未读公告数量", description = "查询当前用户的未读公告数量") @GetMapping("/notice/unread") - public NoticeUnreadResp countUnreadNotice() { - return noticeService.countUnreadByUserId(UserContextHolder.getUserId()); + public NoticeUnreadCountResp countUnreadNotice() { + List list = noticeService.listUnreadIdsByUserId(null, UserContextHolder.getUserId()); + return new NoticeUnreadCountResp(list.size()); + } + + @Log(ignore = true) + @Operation(summary = "查询未读公告", description = "查询当前用户的未读公告") + @Parameter(name = "method", description = "通知方式", example = "LOGIN_POPUP", in = ParameterIn.PATH) + @GetMapping("/notice/unread/{method}") + public List listUnreadNotice(@PathVariable String method) { + return noticeService.listUnreadIdsByUserId(NoticeMethodEnum.valueOf(method), UserContextHolder.getUserId()); } @Operation(summary = "分页查询公告列表", description = "分页查询公告列表")