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 | 76 ++++++++++++++++++++++++++++++++++++-- 1 files changed, 72 insertions(+), 4 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 8e03e92..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); } @@ -64,7 +84,15 @@ // @PreAuthorize("@ss.hasPermi('system:notice:query')") @GetMapping(value = "/{noticeId}") public AjaxResult getInfo(@PathVariable Long noticeId) { - return success(noticeService.selectNoticeById(noticeId)); + SysNotice byId = noticeService.getById(noticeId); + LambdaQueryWrapper<SysNoticeUser> wq = new LambdaQueryWrapper<>(); + wq.eq(SysNoticeUser::getNoticeId, noticeId); + List<SysNoticeUser> sysNoticeUsers = sysNoticeUserService.list(wq); + if(null != sysNoticeUsers && !sysNoticeUsers.isEmpty()){ + List<String> longList = sysNoticeUsers.stream().map(i -> i.getUserId().toString()).collect(Collectors.toList()); + byId.setUserIds(longList); + } + return success(byId); } /** @@ -77,8 +105,8 @@ public AjaxResult add(@Validated @RequestBody SysNotice notice) { notice.setCreateBy(getUsername()); notice.setNoticeId(IdUtil.getSnowflake().nextId()); - int insertNotice = noticeService.insertNotice(notice); - if (insertNotice > 0){ + boolean insertNotice = noticeService.save(notice); + if (insertNotice){ if (notice.getUserIds() == null || notice.getUserIds().isEmpty()){ if (StrUtil.isBlank(notice.getDeptId())){ notice.setUserIds(userService.list().stream().map(i -> String.valueOf(i.getUserId())).collect(Collectors.toList())); @@ -96,7 +124,30 @@ 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(); } /** @@ -107,7 +158,24 @@ @PutMapping public AjaxResult edit(@Validated @RequestBody SysNotice notice) { notice.setUpdateBy(getUsername()); - return toAjax(noticeService.updateNotice(notice)); + List<String> userIds = notice.getUserIds(); + if (noticeService.updateById(notice)) { + if(null !=userIds && !userIds.isEmpty()){ + LambdaQueryWrapper<SysNoticeUser> wq = new LambdaQueryWrapper<>(); + wq.eq(SysNoticeUser::getNoticeId, notice.getNoticeId()); + sysNoticeUserService.remove(wq); + for (String userId : userIds) { + SysNoticeUser user = new SysNoticeUser(); + user.setId(IdUtil.getSnowflake().nextId()); + user.setNoticeId(notice.getNoticeId()); + user.setUserId(Long.valueOf(userId)); + sysNoticeUserService.save(user); + } + } + return AjaxResult.success(); + } + + return AjaxResult.error(); } /** -- Gitblit v1.8.0