Quellcode durchsuchen

消息中心返回未读消息总量

yzc vor 2 Jahren
Ursprung
Commit
37854a3cc7

+ 3 - 3
sckw-modules/sckw-message/src/main/java/com/sckw/message/dao/KwmMessageUserMapper.java

@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.sckw.message.model.KwmMessageUser;
 import com.sckw.message.model.dto.UserMsgCenterLatestMsgDTO;
 import com.sckw.message.model.dto.UserMsgCenterReqDTO;
-import com.sckw.message.model.vo.res.UserMsgCenterResVO;
+import com.sckw.message.model.vo.res.UserCenterMsgVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -32,9 +32,9 @@ public interface KwmMessageUserMapper extends BaseMapper<KwmMessageUser> {
      * @author: yzc
      * @date: 2023-09-07 15:38
      * @Param item:
-     * @return: java.util.List<com.sckw.message.model.vo.res.UserMsgCenterResVO>
+     * @return: java.util.List<com.sckw.message.model.vo.res.UserCenterMsgVO>
      */
-    List<UserMsgCenterResVO> userMsgCenter(@Param(value = "item") UserMsgCenterReqDTO item);
+    List<UserCenterMsgVO> userMsgCenter(@Param(value = "item") UserMsgCenterReqDTO item);
 
     /**
      * @desc: 获取用户最新消息

+ 65 - 0
sckw-modules/sckw-message/src/main/java/com/sckw/message/model/vo/res/UserCenterMsgVO.java

@@ -0,0 +1,65 @@
+package com.sckw.message.model.vo.res;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @desc: 用户中心消息vo
+ * @author: yzc
+ * @date: 2023-09-07 14:53
+ */
+@Getter
+@Setter
+@ToString
+@Accessors(chain = true)
+public class UserCenterMsgVO implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1158795911479984678L;
+
+    private Long id;
+
+    /**
+     * 状态:0未读/1已读
+     */
+    private Integer status;
+
+    /**
+     * 消息分类
+     */
+    private String type;
+
+    /**
+     * 消息标题
+     */
+    private String title;
+
+    /**
+     * 未读数量
+     */
+    private Integer num;
+
+    /**
+     * 消息内容
+     */
+    private String content;
+
+    /**
+     * 消息跳转url
+     */
+    private String url;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern="HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+
+}

+ 5 - 35
sckw-modules/sckw-message/src/main/java/com/sckw/message/model/vo/res/UserMsgCenterResVO.java

@@ -1,6 +1,5 @@
 package com.sckw.message.model.vo.res;
 
-import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
@@ -8,7 +7,7 @@ import lombok.experimental.Accessors;
 
 import java.io.Serial;
 import java.io.Serializable;
-import java.util.Date;
+import java.util.List;
 
 /**
  * @desc: 用户消息中心响应vo
@@ -25,43 +24,14 @@ public class UserMsgCenterResVO implements Serializable {
     @Serial
     private static final long serialVersionUID = -3285612805457269859L;
 
-
-    private Long id;
-
-    /**
-     * 状态:0未读/1已读
-     */
-    private Integer status;
-
-    /**
-     * 消息分类
-     */
-    private String type;
-
-    /**
-     * 消息标题
-     */
-    private String title;
-
-    /**
-     * 未读数量
-     */
-    private Integer num;
-
-    /**
-     * 消息内容
-     */
-    private String content;
-
     /**
-     * 消息跳转url
+     * 总未读数据
      */
-    private String url;
+    private Long totalUnReadNum;
 
     /**
-     * 创建时间
+     * 消息列表
      */
-    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    private Date createTime;
+    private List<UserCenterMsgVO> msgList;
 
 }

+ 23 - 5
sckw-modules/sckw-message/src/main/java/com/sckw/message/service/KwmMessageUserService.java

@@ -9,7 +9,7 @@ import com.sckw.message.dao.KwmMessageUserMapper;
 import com.sckw.message.model.KwmMessageUser;
 import com.sckw.message.model.dto.UserMsgCenterLatestMsgDTO;
 import com.sckw.message.model.dto.UserMsgCenterReqDTO;
-import com.sckw.message.model.vo.res.UserMsgCenterResVO;
+import com.sckw.message.model.vo.res.UserCenterMsgVO;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -160,10 +160,10 @@ public class KwmMessageUserService {
      * @author: yzc
      * @date: 2023-09-07 15:40
      * @Param dto:
-     * @return: java.util.List<com.sckw.message.model.vo.res.UserMsgCenterResVO>
+     * @return: java.util.List<com.sckw.message.model.vo.res.UserCenterMsgVO>
      */
-    public List<UserMsgCenterResVO> userMsgCenter(UserMsgCenterReqDTO dto) {
-        List<UserMsgCenterResVO> list = kwmMessageUserMapper.userMsgCenter(dto);
+    public List<UserCenterMsgVO> userMsgCenter(UserMsgCenterReqDTO dto) {
+        List<UserCenterMsgVO> list = kwmMessageUserMapper.userMsgCenter(dto);
         return CollectionUtils.emptyIfNull(list);
     }
 
@@ -175,6 +175,24 @@ public class KwmMessageUserService {
      * @return: com.sckw.message.model.dto.UserMsgCenterLatestMsgDTO
      */
     public UserMsgCenterLatestMsgDTO getLatestMsg(UserMsgCenterReqDTO dto) {
-        return  kwmMessageUserMapper.getLatestMsg(dto);
+        return kwmMessageUserMapper.getLatestMsg(dto);
+    }
+
+    /**
+     * @desc: 统计消息数量
+     * @author: yzc
+     * @date: 2023-09-21 15:18
+     * @Param entId:
+     * @Param userId:
+     * @Param status:
+     * @return: java.lang.Long
+     */
+    public Long count(Long entId, Long userId, Integer status) {
+        LambdaUpdateWrapper<KwmMessageUser> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.eq(Objects.nonNull(entId), KwmMessageUser::getEntId, entId)
+                .eq(Objects.nonNull(userId), KwmMessageUser::getUserId, userId)
+                .eq(Objects.nonNull(status), KwmMessageUser::getStatus, status)
+                .eq(KwmMessageUser::getDelFlag, Global.NO);
+        return kwmMessageUserMapper.selectCount(wrapper);
     }
 }

+ 14 - 7
sckw-modules/sckw-message/src/main/java/com/sckw/message/service/MessageService.java

@@ -24,6 +24,7 @@ import com.sckw.message.model.vo.req.SelectMessagesReqVO;
 import com.sckw.message.model.vo.req.StatisticsMessagesReqVO;
 import com.sckw.message.model.vo.res.KwmMessageListResVO;
 import com.sckw.message.model.vo.res.MessagesStatisticsResVO;
+import com.sckw.message.model.vo.res.UserCenterMsgVO;
 import com.sckw.message.model.vo.res.UserMsgCenterResVO;
 import com.sckw.stream.enums.MessageEnum;
 import com.sckw.system.api.RemoteSystemService;
@@ -276,19 +277,20 @@ public class MessageService {
      * @desc: 用户消息中心获取
      * @author: yzc
      * @date: 2023-09-07 17:41
-     * @return: java.util.List<com.sckw.message.model.vo.res.UserMsgCenterResVO>
+     * @return: com.sckw.message.model.vo.res.UserMsgCenterResVO
      */
-    public List<UserMsgCenterResVO> userMsgCenter() {
+    public UserMsgCenterResVO userMsgCenter() {
         UserMsgCenterReqDTO dto = new UserMsgCenterReqDTO();
         boolean isMain = Objects.equals(LoginUserHolder.getIsMain(), 1);
         dto.setEntId(isMain ? LoginUserHolder.getEntId() : null);
         dto.setUserId(isMain ? null : LoginUserHolder.getUserId());
-        List<UserMsgCenterResVO> result = kwmMessageUserService.userMsgCenter(dto);
-        int size = result.size();
+        //获取消息列表
+        List<UserCenterMsgVO> msgList = kwmMessageUserService.userMsgCenter(dto);
+        int size = msgList.size();
         boolean flag = size < 5;
         Set<MessageEnum> excludeEnums = new HashSet<>();
         String clientType = LoginUserHolder.getClientType();
-        result.forEach(e -> {
+        msgList.forEach(e -> {
             dto.setStatus(e.getStatus()).setType(e.getType());
             UserMsgCenterLatestMsgDTO msg = kwmMessageUserService.getLatestMsg(dto);
             if (Objects.nonNull(msg.getUrl())) {
@@ -305,14 +307,19 @@ public class MessageService {
                 }
             }
         });
+        //补齐默认消息
         if (flag) {
             List<MessageEnum> enums = MessageEnum.getEnums(isMain, 5 - size, excludeEnums);
             enums.forEach(e -> {
-                UserMsgCenterResVO vo = new UserMsgCenterResVO();
+                UserCenterMsgVO vo = new UserCenterMsgVO();
                 vo.setTitle(e.getTitle()).setContent("暂无" + e.getTitle());
-                result.add(vo);
+                msgList.add(vo);
             });
         }
+        //统计总未读消息条数
+        Long unReadNum = kwmMessageUserService.count(dto.getEntId(), dto.getUserId(), 0);
+        UserMsgCenterResVO result = new UserMsgCenterResVO();
+        result.setMsgList(msgList).setTotalUnReadNum(unReadNum);
         return result;
     }
 }

+ 1 - 1
sckw-modules/sckw-message/src/main/resources/mapper/KwmMessageUserMapper.xml

@@ -34,7 +34,7 @@
             </trim>
         </foreach>
     </insert>
-    <select id="userMsgCenter" resultType="com.sckw.message.model.vo.res.UserMsgCenterResVO">
+    <select id="userMsgCenter" resultType="com.sckw.message.model.vo.res.UserCenterMsgVO">
         SELECT
         mu.status as status,
         m.type as type,