Browse Source

消息中心调整

谭斌 1 year ago
parent
commit
bbb2b65687

+ 7 - 1
sys-api-service/src/main/java/com/xy/entity/MsgSysMonitorNotice.java

@@ -50,7 +50,7 @@ public class MsgSysMonitorNotice implements Serializable {
 
     @ApiModelProperty(value = "发送类型")
     private String channelType;
-    
+
     @ApiModelProperty(value = "事件编码")
     private String eventCode;
 
@@ -73,5 +73,11 @@ public class MsgSysMonitorNotice implements Serializable {
     @TableField(fill = FieldFill.INSERT)
     private LocalDateTime createTime;
 
+    /**
+     * 是否弹出显示
+     */
+    @ApiModelProperty(value = "是否弹出显示")
+    private Boolean popUp;
+
 
 }

+ 7 - 0
sys-api-service/src/main/java/com/xy/entity/MsgUserMessage.java

@@ -56,4 +56,11 @@ public class MsgUserMessage implements Serializable {
     private LocalDateTime createTime;
 
 
+    /**
+     * 是否弹出显示
+     */
+    @ApiModelProperty(value = "是否弹出显示")
+    private Boolean popUp;
+
+
 }

+ 21 - 0
sys-api-service/src/main/java/com/xy/service/MsgSysMonitorNoticeServiceImpl.java

@@ -1,10 +1,14 @@
 package com.xy.service;
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.BooleanUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xy.dto.MsgSysMonitorNoticeDto;
 import com.xy.dto.MsgUserMessageDto;
+import com.xy.dto.UserInfoDto;
 import com.xy.entity.MsgSysMonitorNotice;
 import com.xy.mapper.MsgSysMonitorNoticeMapper;
 import com.xy.utils.Emptys;
@@ -16,6 +20,7 @@ import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.RequestBody;
 
@@ -40,6 +45,7 @@ import static com.xy.utils.PlusBeans.toPageBean;
 public class MsgSysMonitorNoticeServiceImpl extends ServiceImpl<MsgSysMonitorNoticeMapper, MsgSysMonitorNotice> implements MsgSysMonitorNoticeService {
 
     private MsgUserMessageServiceImpl msgUserMessageService;
+    private UserInfoService userInfoService;
 
     @Override
     @ApiOperation("对象查询")
@@ -71,11 +77,24 @@ public class MsgSysMonitorNoticeServiceImpl extends ServiceImpl<MsgSysMonitorNot
 
     @Override
     @ApiOperation("添加")
+    @Transactional(rollbackFor = Exception.class)
     public R save(@RequestBody @Validated MsgSysMonitorNoticeDto.Save save) {
         MsgSysMonitorNotice saveInfo = copy(MsgSysMonitorNotice.class, save);
         save(saveInfo);
         Long userId = save.getUserId();
         if (userId != null) {
+            String sendTargets = saveInfo.getSendTargets();
+            if (StrUtil.isNotEmpty(sendTargets)) {
+                //更新发送目标名字
+                UserInfoDto.SelectListDto selectListDto = new UserInfoDto.SelectListDto();
+                selectListDto.setUserIds(CollUtil.newArrayList(userId));
+                List<UserInfoDto.Vo> userInfoList = R.feignCheckData(userInfoService.list(selectListDto));
+                if (CollUtil.isNotEmpty(userInfoList)) {
+                    String name = userInfoList.get(0).getName();
+                    saveInfo.setSendTargets(name);
+                    updateById(saveInfo);
+                }
+            }
             String channelType = save.getChannelType();
 
             MsgUserMessageDto.Save mum = new MsgUserMessageDto.Save();
@@ -87,8 +106,10 @@ public class MsgSysMonitorNoticeServiceImpl extends ServiceImpl<MsgSysMonitorNot
             mum.setMsgType(saveInfo.getMsgType());
             mum.setPriority(saveInfo.getPriority());
             mum.setUserId(userId);
+            mum.setPopUp(BooleanUtil.isTrue(save.getPopUp()) ? Boolean.TRUE : Boolean.FALSE);
             msgUserMessageService.save(mum);
         }
+
         return R.ok();
     }
 

+ 63 - 1
sys-api-service/src/main/java/com/xy/service/MsgUserMessageServiceImpl.java

@@ -1,5 +1,6 @@
 package com.xy.service;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -18,6 +19,7 @@ import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 
 import java.util.ArrayList;
@@ -57,7 +59,7 @@ public class MsgUserMessageServiceImpl extends ServiceImpl<MsgUserMessageMapper,
             MsgUserMessage msgUserMessage = new MsgUserMessage();
             msgUserMessage.setId(myMsg.getId()).setReadState(MsgReadStatus.READ.getCode().toString());
             if (ObjectUtil.isNotEmpty(myMsg)) {
-                Long msgId = myMsg.getMsgId();
+                Integer msgId = myMsg.getMsgId();
                 MsgSysMonitorNotice msgSysMonitorNotice = msgSysMonitorNoticeService.getById(msgId);
                 if (ObjectUtil.isNotEmpty(msgSysMonitorNotice)) {
                     myMsg.setContent(msgSysMonitorNotice.getContent());
@@ -76,6 +78,55 @@ public class MsgUserMessageServiceImpl extends ServiceImpl<MsgUserMessageMapper,
         return R.ok(copy(MsgUserMessageDto.Vo.class, list));
     }
 
+    @ApiOperation("我的消息-弹窗提示")
+    @PostMapping("myMsgPopUp")
+    public R<List<MsgUserMessageDto.Vo>> myMsgPopUp() {
+        List<MsgUserMessageDto.Vo> voList = new ArrayList<>();
+        LambdaQueryWrapper<MsgUserMessage> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(MsgUserMessage::getReadState, MsgReadStatus.UN_READ.getCode());
+        lambdaQueryWrapper.eq(MsgUserMessage::getUserId, AuthorizeUtils.getLoginId(Long.class));
+        lambdaQueryWrapper.eq(MsgUserMessage::getPopUp, Boolean.TRUE);
+        List<MsgUserMessage> list = this.list(lambdaQueryWrapper);
+        if (CollUtil.isEmpty(list)) {
+            return R.ok(voList);
+        }
+        List<MsgUserMessageDto.Vo> msgList = BeanUtil.copyToList(list, MsgUserMessageDto.Vo.class);
+
+        List<Integer> msgIds = list.stream().map(MsgUserMessage::getMsgId).collect(Collectors.toList());
+        List<MsgSysMonitorNotice> msgSysMonitorNotices = msgSysMonitorNoticeService.listByIds(msgIds);
+        if (CollUtil.isNotEmpty(msgSysMonitorNotices)) {
+            Map<Integer, MsgSysMonitorNotice> msgSysMonitorNoticeMap = msgSysMonitorNotices.stream().collect(Collectors.toMap(MsgSysMonitorNotice::getMsgId, i -> i));
+            for (MsgUserMessageDto.Vo record : msgList) {
+                Integer msgId = record.getMsgId();
+                MsgSysMonitorNotice msgSysMonitorNotice = msgSysMonitorNoticeMap.get(msgId);
+                if (msgSysMonitorNotice != null) {
+                    record.setContent(msgSysMonitorNotice.getContent());
+                    record.setTitle(msgSysMonitorNotice.getTitle());
+                }
+            }
+        }
+
+        return R.ok(msgList);
+    }
+
+    @ApiOperation("我的消息-标记已读")
+    @PostMapping("readById")
+    public R<Boolean> readById(@RequestBody MsgUserMessageDto.ReadOver dto) {
+        List<Long> ids = dto.getIds();
+        Long loginId = AuthorizeUtils.getLoginId(Long.class);
+        List<MsgUserMessage> msgUserMessages = this.list(Wrappers.<MsgUserMessage>lambdaQuery()
+                .eq(MsgUserMessage::getUserId, loginId)
+                .in(MsgUserMessage::getId, ids)
+                .eq(MsgUserMessage::getReadState, MsgReadStatus.UN_READ.getCode()));
+        if (CollUtil.isNotEmpty(msgUserMessages)) {
+            msgUserMessages.forEach(mum -> {
+                mum.setReadState(String.valueOf(MsgReadStatus.READ.getCode()));
+            });
+            this.saveOrUpdateBatch(msgUserMessages);
+        }
+        return R.ok(Boolean.TRUE);
+    }
+
     @ApiOperation("我的消息-未读数量")
     @Override
     public R<Long> myMsgUnRead() {
@@ -112,12 +163,17 @@ public class MsgUserMessageServiceImpl extends ServiceImpl<MsgUserMessageMapper,
         Integer riskNum = getTotalMsgNum(myMsgPage(page));
         page.setType("2");
         Integer tradeNum = getTotalMsgNum(myMsgPage(page));
+        //其他
         page.setType("3");
         Integer otherNum = getTotalMsgNum(myMsgPage(page));
+        //费用
+        page.setType("4");
+        Integer costNum = getTotalMsgNum(myMsgPage(page));
         MsgUserMessageDto.PageCount pageCount = new MsgUserMessageDto.PageCount()
                 .setAllNum(allNum)
                 .setOtherNum(otherNum)
                 .setRiskNum(riskNum)
+                .setCostNum(costNum)
                 .setTradeNum(tradeNum);
 
         return R.ok(pageCount);
@@ -142,6 +198,11 @@ public class MsgUserMessageServiceImpl extends ServiceImpl<MsgUserMessageMapper,
         if ("2".equals(type)) {
             msgTypes.add(MsgType.TYPE8.getCode());
         }
+        //费用
+        if ("4".equals(type)) {
+            msgTypes.add(MsgType.TYPE9.getCode());
+        }
+
         if ("3".equals(type)) {
             msgTypesNotIn.add(MsgType.TYPE6.getCode());
             msgTypesNotIn.add(MsgType.TYPE8.getCode());
@@ -176,6 +237,7 @@ public class MsgUserMessageServiceImpl extends ServiceImpl<MsgUserMessageMapper,
         return R.ok(pageVo);
     }
 
+
     @ApiOperation("新增我的消息")
     @Override
     public R save(@RequestBody @Validated MsgUserMessageDto.Save save) {

+ 5 - 1
sys-api/src/main/java/com/xy/dto/MsgSysMonitorNoticeDto.java

@@ -96,7 +96,11 @@ public class MsgSysMonitorNoticeDto {
         @ApiModelProperty(value = "创建时间")
         @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
         private LocalDateTime createTime;
-
+        /**
+         * 是否弹出显示
+         */
+        @ApiModelProperty(value = "是否弹出显示")
+        private Boolean popUp;
 
     }
 

+ 35 - 1
sys-api/src/main/java/com/xy/dto/MsgUserMessageDto.java

@@ -6,8 +6,10 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
+import javax.validation.constraints.NotEmpty;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  * <p>
@@ -19,10 +21,20 @@ import java.time.LocalDateTime;
  */
 public class MsgUserMessageDto {
 
+    @Data
+    @Accessors(chain = true)
+    public static class ReadOver {
+        @NotEmpty(message = "消息ID不可为空")
+        @ApiModelProperty(value = "消息ID", required = true)
+        private List<Long> ids;
+    }
+
+
     @Data
     @Accessors(chain = true)
     public static class SelectList extends Vo {
 
+
     }
 
     @Data
@@ -74,6 +86,13 @@ public class MsgUserMessageDto {
          */
         @ApiModelProperty("优先级")
         private Integer priority;
+
+
+        /**
+         * 是否弹出显示
+         */
+        @ApiModelProperty(value = "是否弹出显示")
+        private Boolean popUp;
     }
 
     @Data
@@ -93,6 +112,8 @@ public class MsgUserMessageDto {
         private Integer riskNum;
         @ApiModelProperty(value = "其他未读数")
         private Integer otherNum;
+        @ApiModelProperty(value = "费用未读数")
+        private Integer costNum;
     }
 
     @Data
@@ -132,6 +153,12 @@ public class MsgUserMessageDto {
         private LocalDateTime createTime;
 
 
+        /**
+         * 是否弹出显示
+         */
+        @ApiModelProperty(value = "是否弹出显示")
+        private Boolean popUp;
+
     }
 
     @Data
@@ -145,7 +172,7 @@ public class MsgUserMessageDto {
         private Long userId;
 
         @ApiModelProperty(value = "消息id")
-        private Long msgId;
+        private Integer msgId;
 
         @ApiModelProperty(value = "状态")
         private String readState;
@@ -170,6 +197,13 @@ public class MsgUserMessageDto {
         private String content;
 
 
+        /**
+         * 是否弹出显示
+         */
+        @ApiModelProperty(value = "是否弹出显示")
+        private Boolean popUp;
+
+
     }
 
 }

+ 7 - 1
sys-start/pom.xml

@@ -39,6 +39,12 @@
             <version>1.0</version>
         </dependency>
 
+        <dependency>
+            <groupId>com.xy</groupId>
+            <artifactId>merc-api-cloud</artifactId>
+            <version>1.0</version>
+        </dependency>
+
         <dependency>
             <groupId>com.xy</groupId>
             <artifactId>xy-logback</artifactId>
@@ -103,4 +109,4 @@
             </plugin>
         </plugins>
     </build>
-</project>
+</project>