From dedacd79c93f8ef95e0cb986f5e7fbd27ddbd907 Mon Sep 17 00:00:00 2001 From: zhaowenxuan <chacca165@163.com> Date: 星期四, 03 七月 2025 09:12:49 +0800 Subject: [PATCH] 2025-07-03 --- ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysNoticeController.java | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 105 insertions(+), 8 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 cb2232a..637fa40 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,9 +1,25 @@ 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.JSONUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +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; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; @@ -20,6 +36,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; /** * 鍏憡 淇℃伅鎿嶄綔澶勭悊 @@ -31,56 +49,135 @@ public class SysNoticeController extends BaseController { @Autowired private ISysNoticeService noticeService; + @Autowired + private SysNoticeUserService sysNoticeUserService; + @Autowired + private ISysUserService userService; + @Autowired + private WebSockerManager webSockerManager; /** * 鑾峰彇閫氱煡鍏憡鍒楄〃 */ - @PreAuthorize("@ss.hasPermi('system:notice:list')") +// @PreAuthorize("@ss.hasPermi('system:notice:list')") @GetMapping("/list") 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); } /** * 鏍规嵁閫氱煡鍏憡缂栧彿鑾峰彇璇︾粏淇℃伅 */ - @PreAuthorize("@ss.hasPermi('system:notice:query')") +// @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); } /** * 鏂板閫氱煡鍏憡 */ - @PreAuthorize("@ss.hasPermi('system:notice:add')") +// @PreAuthorize("@ss.hasPermi('system:notice:add')") @Log(title = "閫氱煡鍏憡", businessType = BusinessType.INSERT) @PostMapping + @Transactional public AjaxResult add(@Validated @RequestBody SysNotice notice) { notice.setCreateBy(getUsername()); - return toAjax(noticeService.insertNotice(notice)); + notice.setNoticeId(IdUtil.getSnowflake().nextId()); + 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())); + }else { + LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SysUser::getDeptId, notice.getDeptId()); + notice.setUserIds(userService.list(wrapper).stream().map(i -> String.valueOf(i.getUserId())).collect(Collectors.toList())); + } + } + for (String userId : notice.getUserIds()) { + SysNoticeUser user = new SysNoticeUser(); + user.setId(IdUtil.getSnowflake().nextId()); + user.setNoticeId(notice.getNoticeId()); + user.setUserId(Long.valueOf(userId)); + 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(); } /** * 淇敼閫氱煡鍏憡 */ - @PreAuthorize("@ss.hasPermi('system:notice:edit')") +// @PreAuthorize("@ss.hasPermi('system:notice:edit')") @Log(title = "閫氱煡鍏憡", businessType = BusinessType.UPDATE) @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(); } /** * 鍒犻櫎閫氱煡鍏憡 */ - @PreAuthorize("@ss.hasPermi('system:notice:remove')") +// @PreAuthorize("@ss.hasPermi('system:notice:remove')") @Log(title = "閫氱煡鍏憡", businessType = BusinessType.DELETE) @DeleteMapping("/{noticeIds}") public AjaxResult remove(@PathVariable Long[] noticeIds) { return toAjax(noticeService.deleteNoticeByIds(noticeIds)); } + + @GetMapping("/noticeToday") + public AjaxResult noticeToday(){ + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser.getUserId().equalsIgnoreCase("1")){ + return AjaxResult.success(noticeService.selectAllByAdmin()); + }else { + return AjaxResult.success(noticeService.selectAll(loginUser.getUserId())); + } + } } -- Gitblit v1.8.0