Преглед изворни кода

Merge remote-tracking branch 'origin/dev' into dev

18482106067 пре 2 година
родитељ
комит
46611f29b6

+ 23 - 13
sckw-modules/sckw-message/src/main/java/com/sckw/message/controller/MessageController.java

@@ -6,10 +6,8 @@ import com.sckw.core.model.page.PageHelperUtil;
 import com.sckw.core.model.page.PageResult;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.message.model.KwmMessage;
-import com.sckw.message.model.vo.req.DeleteMessagesReqVO;
-import com.sckw.message.model.vo.req.FindMessagesReqVO;
-import com.sckw.message.model.vo.req.ReadMessagesReqVO;
-import com.sckw.message.model.vo.req.SelectMessagesReqVO;
+import com.sckw.message.model.vo.req.*;
+import com.sckw.message.model.vo.res.KwmMessageListResVO;
 import com.sckw.message.model.vo.res.MessagesStatisticsResVO;
 import com.sckw.message.service.MessageService;
 import jakarta.validation.Valid;
@@ -43,7 +41,7 @@ public class MessageController {
     @GetMapping("/detail")
     public HttpResult detail(@RequestParam Long id) {
         KwmMessage message = messageService.detail(id);
-        return HttpResult.ok(message);
+        return HttpResult.ok("获取消息详情成功", message);
     }
 
     /**
@@ -56,9 +54,21 @@ public class MessageController {
     @PostMapping(value = "/select", produces = MediaType.APPLICATION_JSON_VALUE)
     public HttpResult select(@RequestBody @Valid SelectMessagesReqVO params) {
         PageHelper.startPage(params.getPage(), params.getPageSize());
-        List<KwmMessage> list = messageService.select(params);
+        List<KwmMessageListResVO> list = messageService.select(params);
         PageResult result = PageHelperUtil.getPageResult(new PageInfo<>(list));
-        return HttpResult.ok(result);
+        return HttpResult.ok("分页查询消息成功", result);
+    }
+
+    /**
+     * @desc: 消息列表统计查询
+     * @author: yzc
+     * @date: 2023-08-22 10:57
+     * @Param params:
+     * @return: com.sckw.core.web.response.HttpResult
+     */
+    @PostMapping(value = "/statisticsList", produces = MediaType.APPLICATION_JSON_VALUE)
+    public HttpResult statisticsList(@RequestBody @Valid StatisticsMessagesReqVO params) {
+        return HttpResult.ok("消息列表统计查询成功", messageService.statisticsList(params));
     }
 
     /**
@@ -71,7 +81,7 @@ public class MessageController {
     @PostMapping(value = "/read", produces = MediaType.APPLICATION_JSON_VALUE)
     public HttpResult read(@RequestBody ReadMessagesReqVO readMessagesReqVO) {
         messageService.read(readMessagesReqVO);
-        return HttpResult.ok();
+        return HttpResult.ok("读取消息成功");
     }
 
     /**
@@ -84,20 +94,20 @@ public class MessageController {
     @PostMapping(value = "/delete", produces = MediaType.APPLICATION_JSON_VALUE)
     public HttpResult delete(@RequestBody DeleteMessagesReqVO deleteMessagesReqVO) {
         messageService.delete(deleteMessagesReqVO);
-        return HttpResult.ok();
+        return HttpResult.ok("删除消息成功");
     }
 
     /**
+     * @param category
+     * @return com.sckw.core.web.response.HttpResult
      * @desc: 消息统计查询
      * @author: yzc
      * @date: 2023-06-14 10:54
-     * @param category
-     * @return com.sckw.core.web.response.HttpResult
      */
     @GetMapping(value = "/statistics")
     public HttpResult statistics(@RequestParam(required = false) String category) {
         List<MessagesStatisticsResVO> result = messageService.statistics(category);
-        return HttpResult.ok(result);
+        return HttpResult.ok("消息统计查询", result);
     }
 
     /**
@@ -109,7 +119,7 @@ public class MessageController {
      */
     @PostMapping(value = "/findList", produces = MediaType.APPLICATION_JSON_VALUE)
     public HttpResult findList(@RequestBody FindMessagesReqVO findMessagesReqVO) {
-        return HttpResult.ok(messageService.selectMessages(findMessagesReqVO));
+        return HttpResult.ok("查找消息集合", messageService.selectMessages(findMessagesReqVO));
     }
 
 }

+ 2 - 2
sckw-modules/sckw-message/src/main/java/com/sckw/message/dao/KwmMessageMapper.java

@@ -1,7 +1,7 @@
 package com.sckw.message.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.sckw.message.model.FindMessagePageParam;
+import com.sckw.message.model.dto.SelectMessagesDTO;
 import com.sckw.message.model.KwmMessage;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -22,5 +22,5 @@ public interface KwmMessageMapper extends BaseMapper<KwmMessage> {
      * @param item
      * @return java.util.List<com.sckw.message.model.KwmMessage>
      */
-    List<KwmMessage> findPage(@Param("item") FindMessagePageParam item);
+    List<KwmMessage> findPage(@Param("item") SelectMessagesDTO item);
 }

+ 44 - 0
sckw-modules/sckw-message/src/main/java/com/sckw/message/enums/MsgStatusEnum.java

@@ -0,0 +1,44 @@
+package com.sckw.message.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * @desc: 消息状态枚举
+ * @author: yzc
+ * @date: 2023-08-22 11:43
+ */
+@Getter
+@AllArgsConstructor
+public enum MsgStatusEnum {
+
+    /**
+     * 产品状态枚举
+     */
+    UN_READ(0, "未读"),
+    READ(1, "已读");
+
+    private final Integer code;
+    private final String msg;
+
+
+    public static String getNameByCode(Integer code) {
+        MsgStatusEnum[] enums = MsgStatusEnum.values();
+        for (MsgStatusEnum instance : enums) {
+            if (Objects.equals(instance.getCode(), code)) {
+                return instance.getMsg();
+            }
+        }
+        return null;
+    }
+
+    public static List<MsgStatusEnum> getSortList() {
+        MsgStatusEnum[] enums = MsgStatusEnum.values();
+        return Arrays.stream(enums).sorted(Comparator.comparingInt(MsgStatusEnum::getCode)).toList();
+    }
+}

+ 0 - 33
sckw-modules/sckw-message/src/main/java/com/sckw/message/model/FindMessagePageParam.java

@@ -1,33 +0,0 @@
-package com.sckw.message.model;
-
-import lombok.Builder;
-import lombok.Getter;
-import lombok.Setter;
-import lombok.ToString;
-
-/**
- * @desc: 获取消息分页参数
- * @author: yzc
- * @date: 2023-06-13 16:30
- */
-@Getter
-@Setter
-@ToString
-@Builder
-public class FindMessagePageParam {
-
-    /**
-     * 用户id
-     */
-    private Long userId;
-
-    /**
-     * 消息分类
-     */
-    private String category;
-
-    /**
-     * 消息类型
-     */
-    private String type;
-}

+ 5 - 0
sckw-modules/sckw-message/src/main/java/com/sckw/message/model/KwmMessage.java

@@ -7,6 +7,8 @@ import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
 
+import java.io.Serial;
+
 /**
  * @author: yzc
  * @date: 2023-06-08 15:44
@@ -18,6 +20,9 @@ import lombok.ToString;
 @Builder
 @TableName("kwm_message")
 public class KwmMessage extends BaseModel {
+    @Serial
+    private static final long serialVersionUID = -675413476264729352L;
+
     /**
      * 消息分类
      */

+ 5 - 0
sckw-modules/sckw-message/src/main/java/com/sckw/message/model/KwmMessageUser.java

@@ -7,6 +7,8 @@ import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
 
+import java.io.Serial;
+
 /**
  * @author: yzc
  * @date: 2023-06-08 15:44
@@ -18,6 +20,9 @@ import lombok.ToString;
 @Builder
 @TableName("kwm_message_user")
 public class KwmMessageUser extends BaseModel {
+    @Serial
+    private static final long serialVersionUID = -4745868973185016717L;
+
     /**
      * 消息id
      */

+ 5 - 0
sckw-modules/sckw-message/src/main/java/com/sckw/message/model/KwmSms.java

@@ -7,6 +7,8 @@ import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
 
+import java.io.Serial;
+
 /**
  * @author: yzc
  * @date: 2023-06-08 15:44
@@ -18,6 +20,9 @@ import lombok.ToString;
 @Builder
 @TableName("kwm_sms")
 public class KwmSms extends BaseModel {
+    @Serial
+    private static final long serialVersionUID = 7454247600187996886L;
+
     /**
      * 短信类型
      */

+ 48 - 0
sckw-modules/sckw-message/src/main/java/com/sckw/message/model/dto/SelectMessagesDTO.java

@@ -0,0 +1,48 @@
+package com.sckw.message.model.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Builder;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+import java.util.Date;
+
+/**
+ * @desc: 获取消息分页参数
+ * @author: yzc
+ * @date: 2023-06-13 16:30
+ */
+@Getter
+@Setter
+@ToString
+@Builder
+public class SelectMessagesDTO {
+
+    /**
+     * 用户id
+     */
+    private Long userId;
+
+    /**
+     * 消息分类
+     */
+    private String category;
+
+    /**
+     * 消息类型
+     */
+    private String type;
+
+    /**
+     * 创建时间开始(yyyy-MM-dd HH:mm:ss)
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date startCreateTime;
+
+    /**
+     * 创建时间结束(yyyy-MM-dd HH:mm:ss)
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date endCreateTime;
+}

+ 12 - 0
sckw-modules/sckw-message/src/main/java/com/sckw/message/model/vo/req/SelectMessagesReqVO.java

@@ -5,6 +5,8 @@ import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
 
+import java.util.Date;
+
 /**
  * @desc: 查找消息列表请求参数
  * @author: yzc
@@ -25,5 +27,15 @@ public class SelectMessagesReqVO extends PageRequest {
      */
     private String type;
 
+    /**
+     * 创建时间开始(yyyy-MM-dd HH:mm:ss)
+     */
+    private Date startCreateTime;
+
+    /**
+     * 创建时间结束(yyyy-MM-dd HH:mm:ss)
+     */
+    private Date endCreateTime;
+
 
 }

+ 40 - 0
sckw-modules/sckw-message/src/main/java/com/sckw/message/model/vo/req/StatisticsMessagesReqVO.java

@@ -0,0 +1,40 @@
+package com.sckw.message.model.vo.req;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+import java.util.Date;
+
+/**
+ * @desc: 统计消息列表请求参数
+ * @author: yzc
+ * @date: 2023-06-09 11:34
+ */
+@Getter
+@Setter
+@ToString
+public class StatisticsMessagesReqVO {
+
+    /**
+     * 消息分类
+     */
+    private String category;
+
+    /**
+     * 消息类型
+     */
+    private String type;
+
+    /**
+     * 创建时间开始(yyyy-MM-dd HH:mm:ss)
+     */
+    private Date startCreateTime;
+
+    /**
+     * 创建时间结束(yyyy-MM-dd HH:mm:ss)
+     */
+    private Date endCreateTime;
+
+
+}

+ 73 - 0
sckw-modules/sckw-message/src/main/java/com/sckw/message/model/vo/res/KwmMessageListResVO.java

@@ -0,0 +1,73 @@
+package com.sckw.message.model.vo.res;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+import java.util.Date;
+
+/**
+ * @desc: 消息列表响应
+ * @author: yzc
+ * @date: 2023-08-22 11:05
+ */
+@Getter
+@Setter
+@ToString
+public class KwmMessageListResVO {
+
+    private Long id;
+
+    private Integer status;
+
+    private String statusLabel;
+
+    /**
+     * 消息分类
+     */
+    private String category;
+
+    /**
+     * 消息类型
+     */
+    private String type;
+
+    /**
+     * 消息标题
+     */
+    private String title;
+
+    /**
+     * 消息内容
+     */
+    private String content;
+
+    /**
+     * 消息跳转url
+     */
+    private String url;
+
+    /**
+     * 消息跳转参数
+     */
+    private String params;
+
+    /**
+     * 推送设备类型
+     */
+    private String clientType;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updateTime;
+
+}

+ 4 - 4
sckw-modules/sckw-message/src/main/java/com/sckw/message/service/KwmMessageService.java

@@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.utils.StringUtils;
 import com.sckw.message.dao.KwmMessageMapper;
-import com.sckw.message.model.FindMessagePageParam;
+import com.sckw.message.model.dto.SelectMessagesDTO;
 import com.sckw.message.model.KwmMessage;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -90,14 +90,14 @@ public class KwmMessageService {
     }
 
     /**
-     * @param findMessagePageParam
+     * @param dto
      * @return java.util.List<com.sckw.message.model.KwmMessage>
      * @desc: 分页查询
      * @author: yzc
      * @date: 2023-06-13 9:08
      */
-    public List<KwmMessage> findPage(FindMessagePageParam findMessagePageParam) {
-        return kwmMessageMapper.findPage(findMessagePageParam);
+    public List<KwmMessage> findPage(SelectMessagesDTO dto) {
+        return kwmMessageMapper.findPage(dto);
     }
 
     /**

+ 50 - 9
sckw-modules/sckw-message/src/main/java/com/sckw/message/service/MessageService.java

@@ -1,17 +1,19 @@
 package com.sckw.message.service;
 
 import com.sckw.core.model.constant.Global;
+import com.sckw.core.model.vo.TableBottom;
+import com.sckw.core.model.vo.TableStatisticRes;
+import com.sckw.core.model.vo.TableTop;
 import com.sckw.core.utils.BeanUtils;
 import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.context.LoginUserHolder;
-import com.sckw.message.model.FindMessagePageParam;
+import com.sckw.message.enums.MsgStatusEnum;
 import com.sckw.message.model.KwmMessage;
 import com.sckw.message.model.KwmMessageUser;
-import com.sckw.message.model.vo.req.DeleteMessagesReqVO;
-import com.sckw.message.model.vo.req.FindMessagesReqVO;
-import com.sckw.message.model.vo.req.ReadMessagesReqVO;
-import com.sckw.message.model.vo.req.SelectMessagesReqVO;
+import com.sckw.message.model.dto.SelectMessagesDTO;
+import com.sckw.message.model.vo.req.*;
+import com.sckw.message.model.vo.res.KwmMessageListResVO;
 import com.sckw.message.model.vo.res.MessagesStatisticsResVO;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -127,10 +129,20 @@ public class MessageService {
      * @author: yzc
      * @date: 2023-06-13 9:05
      */
-    public List<KwmMessage> select(SelectMessagesReqVO reqVO) {
-        FindMessagePageParam findMessagePageParam = FindMessagePageParam.builder().userId(LoginUserHolder.getUserId())
-                .category(reqVO.getCategory()).type(reqVO.getType()).build();
-        return kwmMessageService.findPage(findMessagePageParam);
+    public List<KwmMessageListResVO> select(SelectMessagesReqVO reqVO) {
+        SelectMessagesDTO dto = BeanUtils.copyProperties(reqVO, SelectMessagesDTO.class);
+        dto.setUserId(LoginUserHolder.getUserId());
+        List<KwmMessage> list = kwmMessageService.findPage(dto);
+        if (CollectionUtils.isEmpty(list)) {
+            return Collections.emptyList();
+        }
+        List<KwmMessageListResVO> result = new ArrayList<>(list.size());
+        list.forEach(e -> {
+            KwmMessageListResVO res = BeanUtils.copyProperties(e, KwmMessageListResVO.class);
+            res.setStatusLabel(MsgStatusEnum.getNameByCode(res.getStatus()));
+            result.add(res);
+        });
+        return result;
     }
 
     /**
@@ -200,4 +212,33 @@ public class MessageService {
         kwmMessageUserService.readByUserAndMsgIds(userId, ids);
         return message;
     }
+
+    /**
+     * @desc: 消息列表统计
+     * @author: yzc
+     * @date: 2023-08-22 11:48
+     * @Param params:
+     * @return: com.sckw.core.model.vo.TableStatisticRes
+     */
+    public TableStatisticRes statisticsList(StatisticsMessagesReqVO params) {
+        TableStatisticRes res = new TableStatisticRes();
+        List<KwmMessageListResVO> messages = this.select(BeanUtils.copyProperties(params, SelectMessagesReqVO.class));
+        Map<Integer, List<KwmMessageListResVO>> map = messages.stream().collect(Collectors.groupingBy(KwmMessageListResVO::getStatus));
+        List<TableTop> tableTops = new ArrayList<>();
+        TableTop all = new TableTop();
+        all.setName("全部").setTotal(CollectionUtils.isEmpty(messages) ? 0 : messages.size());
+        tableTops.add(all);
+        List<MsgStatusEnum> enums = MsgStatusEnum.getSortList();
+        enums.forEach(e -> {
+            List<KwmMessageListResVO> list = map.get(e.getCode());
+            int total = CollectionUtils.isEmpty(list) ? 0 : list.size();
+            TableTop tableTop = new TableTop();
+            tableTop.setName(e.getMsg()).setValue(e.getCode()).setTotal(total);
+            tableTops.add(tableTop);
+        });
+        TableBottom tableBottom = new TableBottom();
+        tableBottom.setTotal(CollectionUtils.isEmpty(messages) ? 0 : messages.size());
+        res.setTableTops(tableTops).setTableBottom(tableBottom);
+        return res;
+    }
 }

+ 6 - 0
sckw-modules/sckw-message/src/main/resources/mapper/KwmMessageMapper.xml

@@ -17,6 +17,12 @@
         <if test="item.type != null and item.type != ''">
           and m.type = #{item.type}
         </if>
+        <if test="item.startCreateTime != null">
+            and m.create_time &gt;= #{item.startCreateTime,jdbcType=TIMESTAMP}
+        </if>
+        <if test="item.endCreateTime != null">
+            and m.create_time &lt;= #{item.endCreateTime,jdbcType=TIMESTAMP}
+        </if>
     </where>
     ORDER BY m.status, m.create_time desc
   </select>