فهرست منبع

我的消息-弹窗提示,指定消息标记已读

谭斌 1 سال پیش
والد
کامیت
16b4b4f84e

+ 41 - 2
sys-api-service/src/main/java/com/xy/service/MsgUserMessageServiceImpl.java

@@ -1,5 +1,6 @@
 package com.xy.service;
 package com.xy.service;
 
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -58,7 +59,7 @@ public class MsgUserMessageServiceImpl extends ServiceImpl<MsgUserMessageMapper,
             MsgUserMessage msgUserMessage = new MsgUserMessage();
             MsgUserMessage msgUserMessage = new MsgUserMessage();
             msgUserMessage.setId(myMsg.getId()).setReadState(MsgReadStatus.READ.getCode().toString());
             msgUserMessage.setId(myMsg.getId()).setReadState(MsgReadStatus.READ.getCode().toString());
             if (ObjectUtil.isNotEmpty(myMsg)) {
             if (ObjectUtil.isNotEmpty(myMsg)) {
-                Long msgId = myMsg.getMsgId();
+                Integer msgId = myMsg.getMsgId();
                 MsgSysMonitorNotice msgSysMonitorNotice = msgSysMonitorNoticeService.getById(msgId);
                 MsgSysMonitorNotice msgSysMonitorNotice = msgSysMonitorNoticeService.getById(msgId);
                 if (ObjectUtil.isNotEmpty(msgSysMonitorNotice)) {
                 if (ObjectUtil.isNotEmpty(msgSysMonitorNotice)) {
                     myMsg.setContent(msgSysMonitorNotice.getContent());
                     myMsg.setContent(msgSysMonitorNotice.getContent());
@@ -80,13 +81,51 @@ public class MsgUserMessageServiceImpl extends ServiceImpl<MsgUserMessageMapper,
     @ApiOperation("我的消息-弹窗提示")
     @ApiOperation("我的消息-弹窗提示")
     @PostMapping("myMsgPopUp")
     @PostMapping("myMsgPopUp")
     public R<List<MsgUserMessageDto.Vo>> myMsgPopUp() {
     public R<List<MsgUserMessageDto.Vo>> myMsgPopUp() {
+        List<MsgUserMessageDto.Vo> voList = new ArrayList<>();
         LambdaQueryWrapper<MsgUserMessage> lambdaQueryWrapper = new LambdaQueryWrapper<>();
         LambdaQueryWrapper<MsgUserMessage> lambdaQueryWrapper = new LambdaQueryWrapper<>();
         lambdaQueryWrapper.eq(MsgUserMessage::getReadState, MsgReadStatus.UN_READ.getCode());
         lambdaQueryWrapper.eq(MsgUserMessage::getReadState, MsgReadStatus.UN_READ.getCode());
         lambdaQueryWrapper.eq(MsgUserMessage::getUserId, AuthorizeUtils.getLoginId(Long.class));
         lambdaQueryWrapper.eq(MsgUserMessage::getUserId, AuthorizeUtils.getLoginId(Long.class));
+        lambdaQueryWrapper.eq(MsgUserMessage::getPopUp, Boolean.TRUE);
         List<MsgUserMessage> list = this.list(lambdaQueryWrapper);
         List<MsgUserMessage> list = this.list(lambdaQueryWrapper);
-        return R.ok();
+        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("我的消息-未读数量")
     @ApiOperation("我的消息-未读数量")
     @Override
     @Override

+ 13 - 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.Data;
 import lombok.experimental.Accessors;
 import lombok.experimental.Accessors;
 
 
+import javax.validation.constraints.NotEmpty;
 import java.time.LocalDate;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
+import java.util.List;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -19,10 +21,20 @@ import java.time.LocalDateTime;
  */
  */
 public class MsgUserMessageDto {
 public class MsgUserMessageDto {
 
 
+    @Data
+    @Accessors(chain = true)
+    public static class ReadOver {
+        @NotEmpty(message = "消息ID不可为空")
+        @ApiModelProperty(value = "消息ID", required = true)
+        private List<Long> ids;
+    }
+
+
     @Data
     @Data
     @Accessors(chain = true)
     @Accessors(chain = true)
     public static class SelectList extends Vo {
     public static class SelectList extends Vo {
 
 
+
     }
     }
 
 
     @Data
     @Data
@@ -160,7 +172,7 @@ public class MsgUserMessageDto {
         private Long userId;
         private Long userId;
 
 
         @ApiModelProperty(value = "消息id")
         @ApiModelProperty(value = "消息id")
-        private Long msgId;
+        private Integer msgId;
 
 
         @ApiModelProperty(value = "状态")
         @ApiModelProperty(value = "状态")
         private String readState;
         private String readState;