Selaa lähdekoodia

新增已读逻辑

hubin 1 vuosi sitten
vanhempi
sitoutus
393c75ac0b

+ 12 - 4
src/main/java/com/aizuda/boot/modules/system/controller/SysMessageController.java

@@ -1,21 +1,22 @@
 package com.aizuda.boot.modules.system.controller;
 
+import com.aizuda.boot.modules.system.entity.SysMessage;
 import com.aizuda.boot.modules.system.entity.vo.InformMessageVO;
+import com.aizuda.boot.modules.system.service.ISysMessageService;
 import com.aizuda.core.api.ApiController;
 import com.aizuda.core.api.PageParam;
 import com.aizuda.core.validation.Create;
 import com.aizuda.core.validation.Update;
-import com.aizuda.boot.modules.system.entity.SysMessage;
-import com.aizuda.boot.modules.system.service.ISysMessageService;
+import com.aizuda.service.web.UserSession;
 import com.baomidou.kisso.annotation.Permission;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.validation.constraints.NotEmpty;
 import lombok.AllArgsConstructor;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
-import jakarta.validation.constraints.NotEmpty;
 import java.util.List;
 
 /**
@@ -38,6 +39,13 @@ public class SysMessageController extends ApiController {
         return sysMessageService.page(dto.page(), dto.getData());
     }
 
+    @Operation(summary = "一键已读")
+    @Permission("sys:message:page")
+    @PostMapping("/read")
+    public boolean read() {
+        return sysMessageService.readAll(UserSession.getLoginInfo());
+    }
+
     @Operation(summary = "告知消息")
     @Permission(ignore = true)
     @GetMapping("/inform")
@@ -49,7 +57,7 @@ public class SysMessageController extends ApiController {
     @Permission("sys:message:get")
     @GetMapping("/get")
     public SysMessage get(@RequestParam Long id) {
-        return sysMessageService.getById(id);
+        return sysMessageService.getViewedById(id);
     }
 
     @Operation(summary = "根据 id 修改信息")

+ 11 - 0
src/main/java/com/aizuda/boot/modules/system/service/ISysMessageService.java

@@ -1,6 +1,7 @@
 package com.aizuda.boot.modules.system.service;
 
 import com.aizuda.boot.modules.system.entity.vo.InformMessageVO;
+import com.aizuda.service.web.UserSession;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.aizuda.service.service.IBaseService;
 import com.aizuda.boot.modules.system.entity.SysMessage;
@@ -15,6 +16,16 @@ public interface ISysMessageService extends IBaseService<SysMessage> {
 
     Page<SysMessage> page(Page<SysMessage> page, SysMessage sysMessage);
 
+    SysMessage getViewedById(Long id);
+
+    /**
+     * 告知消息
+     */
     InformMessageVO getInformByUser();
 
+    /**
+     * 一键已读
+     */
+    boolean readAll(UserSession userSession);
+
 }

+ 22 - 0
src/main/java/com/aizuda/boot/modules/system/service/impl/SysMessageServiceImpl.java

@@ -12,6 +12,8 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.springframework.stereotype.Service;
 
+import java.util.Objects;
+
 /**
  * 系统消息表 服务实现类
  *
@@ -33,6 +35,22 @@ public class SysMessageServiceImpl extends BaseServiceImpl<SysMessageMapper, Sys
         return super.updateById(sysMessage);
     }
 
+    @Override
+    public SysMessage getViewedById(Long id) {
+        SysMessage sysMessage = this.getById(id);
+        if (null != sysMessage && Objects.equals(sysMessage.getViewed(), 0)) {
+            UserSession userSession = UserSession.getLoginInfo();
+            if (Objects.equals(sysMessage.getUserId(), userSession.getId())) {
+                // 接收人查看,更新已读状态
+                SysMessage temp = new SysMessage();
+                temp.setViewed(1);
+                temp.setId(id);
+                super.updateById(temp);
+            }
+        }
+        return sysMessage;
+    }
+
     @Override
     public InformMessageVO getInformByUser() {
         UserSession userSession = UserSession.getLoginInfo();
@@ -60,4 +78,8 @@ public class SysMessageServiceImpl extends BaseServiceImpl<SysMessageMapper, Sys
                 .eq(SysMessage::getUserId, userId).eq(SysMessage::getViewed, 0).orderByDesc(SysMessage::getCreateTime));
     }
 
+    @Override
+    public boolean readAll(UserSession userSession) {
+        return lambdaUpdate().set(SysMessage::getViewed, 1).eq(SysMessage::getUserId, userSession.getId()).update();
+    }
 }