From 7131d744a4c202a3ca986dacdf9825b18bea7c45 Mon Sep 17 00:00:00 2001 From: pan <380711010@qq.com> Date: Fri, 6 Sep 2024 19:59:46 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E5=8F=B3=E4=B8=8A=E8=A7=92=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E6=B6=88=E6=81=AF=E4=B8=AD=E5=BF=83=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=202=E3=80=81=E6=B6=88=E6=81=AF=E4=B8=AD=E5=BF=83=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E8=BF=9E=E6=8E=A5=E7=82=B9=E5=87=BB=E6=89=93=E5=BC=80?= =?UTF-8?q?=E5=AF=B9=E5=BA=94=E7=9A=84=E8=AF=A6=E6=83=85=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=203=E3=80=81=E9=A1=B5=E9=9D=A2=E6=A0=B7=E5=BC=8F=E8=B0=83?= =?UTF-8?q?=E6=95=B4=EF=BC=8C=E5=85=B3=E8=81=94=E9=99=84=E4=BB=B6=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E5=89=8D=E7=AB=AF=E5=88=86=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/system/SysLoginController.java | 12 +++ .../controller/tool/TzMessageController.java | 10 +++ .../java/com/rzdata/web/domain/TzMessage.java | 6 ++ .../rzdata/web/mapper/TzMessageMapper.java | 5 ++ .../rzdata/web/service/ITzMessageService.java | 7 ++ .../web/service/impl/DocumentServiceImpl.java | 75 ++++++++++++++++++- .../service/impl/ToolApplyServiceImpl.java | 2 + .../web/service/impl/ToolServiceImpl.java | 2 + .../service/impl/TzMessageServiceImpl.java | 5 ++ .../main/resources/mapper/DocumentMapper.xml | 5 +- .../main/resources/mapper/TzMessageMapper.xml | 25 +++++-- 11 files changed, 145 insertions(+), 9 deletions(-) diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/system/SysLoginController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/system/SysLoginController.java index 5993734..5992991 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/system/SysLoginController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/system/SysLoginController.java @@ -2,6 +2,9 @@ package com.rzdata.web.controller.system; import java.util.List; import java.util.Set; + +import com.rzdata.web.domain.TzMessage; +import com.rzdata.web.service.ITzMessageService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -34,6 +37,10 @@ public class SysLoginController @Autowired private SysPermissionService permissionService; + /** 消息中心 **/ + @Autowired + private ITzMessageService tzMessageService; + /** * 登录方法 * @@ -64,9 +71,14 @@ public class SysLoginController Set roles = permissionService.getRolePermission(user); // 权限集合 Set permissions = permissionService.getMenuPermission(user); + + /** 未读消息 **/ + int unMsgNumber = tzMessageService.selectTzMessageByUserCount(String.valueOf(user.getUserId())); + AjaxResult ajax = AjaxResult.success(); ajax.put("user", user); ajax.put("roles", roles); + ajax.put("unMsgNumber", unMsgNumber); ajax.put("permissions", permissions); return ajax; } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/TzMessageController.java b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/TzMessageController.java index 5e3c215..cda8b68 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/TzMessageController.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/controller/tool/TzMessageController.java @@ -108,4 +108,14 @@ public class TzMessageController extends BaseController { return toAjax(tzMessageService.allMarkedRead(tzMessage)); } + + + /** + * 获取用户统计 + */ + @GetMapping(value = "/user/msg/count/{id}") + public AjaxResult getUserMessageCount(@PathVariable("id") String id) + { + return success(tzMessageService.selectTzMessageByUserCount(id)); + } } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/domain/TzMessage.java b/tool-tech-admin/src/main/java/com/rzdata/web/domain/TzMessage.java index 8f39667..1a63479 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/domain/TzMessage.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/domain/TzMessage.java @@ -30,6 +30,12 @@ public class TzMessage extends BaseEntity @Excel(name = "消息推送内容") private String content; + /** 业务id */ + private String businessId; + + /** 业务类型;(doc:文档,tool:工具) */ + private String businessType; + /** 逻辑删除标记:1删除;0未删除 */ @Excel(name = "逻辑删除标记:1删除;0未删除") private String deleted; diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/TzMessageMapper.java b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/TzMessageMapper.java index 8c62b40..d272354 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/mapper/TzMessageMapper.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/mapper/TzMessageMapper.java @@ -74,4 +74,9 @@ public interface TzMessageMapper * @return */ public int batchInsert(@Param("tzMessageList") List tzMessageList); + + /** + * 消息中心未读消息数量查询 + * **/ + int selectTzMessageByUserCount(String userId); } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/ITzMessageService.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/ITzMessageService.java index 9444c12..a1f5bf2 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/ITzMessageService.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/ITzMessageService.java @@ -64,4 +64,11 @@ public interface ITzMessageService int allMarkedRead(TzMessage tzMessage); public int batchInsert(List tzMessageList); + + /** + * 未读消息数量 + * @param userId + * @return + */ + int selectTzMessageByUserCount(String userId); } diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java index 9729fb4..d6b2b23 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/DocumentServiceImpl.java @@ -7,19 +7,25 @@ import cn.hutool.core.util.BooleanUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.rzdata.common.annotation.DataScope; import com.rzdata.common.constant.Constants; import com.rzdata.common.core.domain.entity.SysDictData; import com.rzdata.common.core.domain.entity.SysUser; +import com.rzdata.common.exception.ServiceException; import com.rzdata.common.utils.DateUtils; import com.rzdata.common.utils.SecurityUtils; import com.rzdata.system.service.ISysDeptService; import com.rzdata.system.service.ISysDictTypeService; +import com.rzdata.system.service.ISysUserService; import com.rzdata.web.domain.Attachment; import com.rzdata.web.domain.Document; import com.rzdata.web.domain.Tool; +import com.rzdata.web.domain.TzMessage; import com.rzdata.web.mapper.DocumentMapper; import com.rzdata.web.service.IDocumentService; import com.rzdata.web.service.IToolApplyService; +import com.rzdata.web.service.ITzMessageService; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -34,6 +40,7 @@ import java.util.stream.Collectors; * @author ja * @date 2024-07-09 */ +@Slf4j @Service public class DocumentServiceImpl implements IDocumentService { @@ -57,6 +64,13 @@ public class DocumentServiceImpl implements IDocumentService @Autowired private Snowflake snowflake; + @Autowired + private ISysUserService iSysUserService; + + + @Autowired + private ITzMessageService tzMessageService; + /** * 查询【请填写功能名称】 * @@ -71,6 +85,7 @@ public class DocumentServiceImpl implements IDocumentService Tool tool = toolService.selectToolByToolId(document.getToolId()); document.setToolName(tool.getToolName()); } + document.setDocRespDeptName(sysDeptService.getDeptName(document.getDocRespDept())); Attachment attachment = new Attachment(); attachment.setBusinessId(document.getDocId()); attachment.setDel(Constants.STR_ZERO); @@ -88,6 +103,7 @@ public class DocumentServiceImpl implements IDocumentService * @return 【请填写功能名称】 */ @Override + @DataScope(deptAlias = "sd") public List selectDocumentList(Document document) { if (BooleanUtil.isTrue(document.getPermissionCheck())) { @@ -265,13 +281,68 @@ public class DocumentServiceImpl implements IDocumentService */ @Override public int pushDoc(String[] ids) { + List docIdList = Arrays.asList(ids); + if(CollUtil.isEmpty(docIdList)){ + throw new ServiceException("请选择需发布的文档"); + } Document doc = new Document(); - doc.setIds(Arrays.asList(ids)); + doc.setIds(docIdList); doc.setUpdateBy(SecurityUtils.getLoginUser().getUsername()); doc.setUpdateById(String.valueOf(SecurityUtils.getLoginUser().getUserId())); doc.setDocStatus(Constants.DOC_STATUS_YFB); doc.setUpdateTime(new Date()); - return documentMapper.updatePushDoc(doc); + int result = documentMapper.updatePushDoc(doc); + //发送消息 + Document document = new Document(); + document.setDocIdList(docIdList); + List documents = documentMapper.selectDocumentList(document); + + SysUser sysUser = new SysUser(); + sysUser.setStatus("0"); + sysUser.setDelFlag("0"); + List sysUsers = iSysUserService.selectUserList(sysUser); + for (Document docItem : documents) { + sendTzMessage(docItem, sysUsers); + } + + + return result; + } + + /** + * 给消息中心发送消息 + */ + public void sendTzMessage(Document doc, List sysUsers) { + try{ + String content = doc.getDocName() + "已发布"; + List addList = new ArrayList<>(); + for (SysUser user : sysUsers) { + TzMessage tzMessage = new TzMessage(); + //雪花 + tzMessage.setId(String.valueOf(snowflake.nextId())); + tzMessage.setBusinessId(doc.getDocId()); + tzMessage.setBusinessType(Constants.DOC_TYPE_DOC); + tzMessage.setReceiverId(String.valueOf(user.getUserId())); + tzMessage.setStates(1); + tzMessage.setContent(content); + tzMessage.setDeleted("0"); + tzMessage.setCreateTime(DateUtils.getNowDate()); + tzMessage.setCreateBy(SecurityUtils.getLoginUser().getUsername()); + tzMessage.setCreateById(String.valueOf(SecurityUtils.getLoginUser().getUserId())); + addList.add(tzMessage); + } + // 使用AtomicInteger来跟踪索引 + AtomicInteger counter = new AtomicInteger(0); + // 使用Stream API进行分组 + Map> grouped = addList.stream() + .collect(Collectors.groupingBy( + e -> counter.getAndIncrement() / 500 + )); + // 对每个子列表进行批量插入 + grouped.values().forEach(batch -> tzMessageService.batchInsert(batch)); + }catch (Exception e){ + log.error("UseApplyServiceImpl-->sendTzMessage--发送消息中心异常--e###", e); + } } /** diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolApplyServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolApplyServiceImpl.java index 797b8cf..9d1cddf 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolApplyServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolApplyServiceImpl.java @@ -146,6 +146,8 @@ public class ToolApplyServiceImpl implements IToolApplyService TzMessage tzMessage = new TzMessage(); //雪花 tzMessage.setId(String.valueOf(snowflake.nextId())); + tzMessage.setBusinessId(toolApply.getToolId()); + tzMessage.setBusinessType(Constants.ATT_TYPE_TOOL); tzMessage.setReceiverId(String.valueOf(sysUser.getUserId())); tzMessage.setStates(1); tzMessage.setContent(content); diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java index 2783b2f..6087bf5 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/ToolServiceImpl.java @@ -256,6 +256,8 @@ public class ToolServiceImpl implements IToolService TzMessage tzMessage = new TzMessage(); //雪花 tzMessage.setId(String.valueOf(snowflake.nextId())); + tzMessage.setBusinessId(tTool.getToolId()); + tzMessage.setBusinessType(Constants.ATT_TYPE_TOOL); tzMessage.setReceiverId(String.valueOf(user.getUserId())); tzMessage.setStates(1); tzMessage.setContent(content); diff --git a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/TzMessageServiceImpl.java b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/TzMessageServiceImpl.java index a0fab22..e04d890 100644 --- a/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/TzMessageServiceImpl.java +++ b/tool-tech-admin/src/main/java/com/rzdata/web/service/impl/TzMessageServiceImpl.java @@ -121,4 +121,9 @@ public class TzMessageServiceImpl implements ITzMessageService public int batchInsert(List tzMessageList) { return tzMessageMapper.batchInsert(tzMessageList); } + + @Override + public int selectTzMessageByUserCount(String userId) { + return tzMessageMapper.selectTzMessageByUserCount(userId); + } } diff --git a/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml b/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml index 6befa39..b8096a0 100644 --- a/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/DocumentMapper.xml @@ -36,10 +36,10 @@ diff --git a/tool-tech-admin/src/main/resources/mapper/TzMessageMapper.xml b/tool-tech-admin/src/main/resources/mapper/TzMessageMapper.xml index 0416368..2aa7071 100644 --- a/tool-tech-admin/src/main/resources/mapper/TzMessageMapper.xml +++ b/tool-tech-admin/src/main/resources/mapper/TzMessageMapper.xml @@ -7,6 +7,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + @@ -20,7 +22,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select id, receiver_id, states, content, deleted, create_by, create_time, update_by, update_time, remark,create_by_id,update_by_id from tz_message + select id, business_id, business_type, receiver_id, states, content, deleted, create_by, + create_time, update_by, update_time, + remark,create_by_id,update_by_id from tz_message @@ -44,6 +49,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" id, receiver_id, + business_id, + business_type, states, content, deleted, @@ -58,6 +65,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{id}, #{receiverId}, + #{businessId}, + #{businessType}, #{states}, #{content}, #{deleted}, @@ -66,8 +75,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{updateBy}, #{updateTime}, #{remark}, - #{create_by_id}, - #{update_by_id}, + #{createById}, + #{updateById}, @@ -75,6 +84,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update tz_message receiver_id = #{receiverId}, + business_id = #{businessId}, + business_type = #{businessType}, states = #{states}, content = #{content}, deleted = #{deleted}, @@ -106,10 +117,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - insert into tz_message (id, receiver_id, states, content, deleted, create_by, create_by_id, create_time) + insert into tz_message (id, business_id, business_type, receiver_id, states, content, deleted, create_by, create_by_id, create_time) values - #{item.id}, #{item.receiverId}, #{item.states}, #{item.content}, #{item.deleted}, #{item.createBy},#{item.createById}, #{item.createTime} + #{item.id}, #{item.businessId}, #{item.businessType}, #{item.receiverId}, #{item.states}, #{item.content}, #{item.deleted}, #{item.createBy},#{item.createById}, #{item.createTime} + + \ No newline at end of file