From a1808ba0ff1ccc2efacb69c1033054dbaab8687f Mon Sep 17 00:00:00 2001 From: zhaowenxuan <chacca165@163.com> Date: 星期四, 10 七月 2025 17:57:16 +0800 Subject: [PATCH] 2025-07-10 --- ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysNoticeController.java | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 43 insertions(+), 0 deletions(-) diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysNoticeController.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysNoticeController.java index 4c35906..0c940f0 100644 --- a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysNoticeController.java +++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysNoticeController.java @@ -1,17 +1,24 @@ package com.ltkj.web.controller.system; +import java.io.IOException; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.ltkj.common.core.domain.entity.SysUser; import com.ltkj.common.core.domain.model.LoginUser; import com.ltkj.common.utils.SecurityUtils; import com.ltkj.hosp.domain.SysNoticeUser; import com.ltkj.hosp.service.SysNoticeUserService; import com.ltkj.system.service.ISysUserService; +import com.ltkj.web.websocket.ClientSessionInfo; +import com.ltkj.web.websocket.WebSockerManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.transaction.annotation.Transactional; @@ -31,6 +38,8 @@ import com.ltkj.common.enums.BusinessType; import com.ltkj.system.domain.SysNotice; import com.ltkj.system.service.ISysNoticeService; +import org.springframework.web.socket.TextMessage; +import org.springframework.web.socket.WebSocketSession; /** * 鍏憡 淇℃伅鎿嶄綔澶勭悊 @@ -46,6 +55,8 @@ private SysNoticeUserService sysNoticeUserService; @Autowired private ISysUserService userService; + @Autowired + private WebSockerManager webSockerManager; /** * 鑾峰彇閫氱煡鍏憡鍒楄〃 @@ -55,6 +66,15 @@ public TableDataInfo list(SysNotice notice) { startPage(); List<SysNotice> list = noticeService.selectNoticeList(notice); + for (SysNotice sysNotice : list) { + LambdaQueryWrapper<SysNoticeUser> wq = new LambdaQueryWrapper<>(); + wq.eq(SysNoticeUser::getNoticeId, sysNotice.getNoticeId()); + List<SysNoticeUser> sysNoticeUsers = sysNoticeUserService.list(wq); + if(null != sysNoticeUsers && !sysNoticeUsers.isEmpty()){ + List<String> longList = sysNoticeUsers.stream().map(i -> i.getUserId().toString()).collect(Collectors.toList()); + sysNotice.setUserIds(longList); + } + } return getDataTable(list); } @@ -104,9 +124,32 @@ sysNoticeUserService.save(user); } }else return AjaxResult.error(); + for (Map.Entry<String, ClientSessionInfo> entry : webSockerManager.userSessions.entrySet()) { + if (!notice.getUserIds().contains(entry.getKey())) continue; + WebSocketSession session = entry.getValue().getSession(); + try { + session.sendMessage(new TextMessage(JSONUtil.toJsonStr(notice))); + } catch (IOException ignored) { + } + } return AjaxResult.success(); } + @Log(title = "鍏憡宸茶", businessType = BusinessType.UPDATE) + @PostMapping("readNotice") + public AjaxResult read(@RequestBody String json){ + JSONObject entries = JSONUtil.parseObj(json); + String noticeId = entries.getStr("noticeId"); + LambdaUpdateWrapper<SysNoticeUser> wrapper = new LambdaUpdateWrapper<>(); + wrapper.eq(SysNoticeUser::getNoticeId, noticeId); + wrapper.eq(SysNoticeUser::getUserId, getUserId()); + wrapper.set(SysNoticeUser::getIsRead, 1); + boolean update = sysNoticeUserService.update(wrapper); + if (update) { + return success(); + }else return error(); + } + /** * 淇敼閫氱煡鍏憡 */ -- Gitblit v1.8.0