From a80267d6c2c918d686a7d24c5ecee84880cdcfa2 Mon Sep 17 00:00:00 2001 From: wangzhijiang Date: Wed, 31 Aug 2022 16:46:56 +0800 Subject: [PATCH] =?UTF-8?q?=E9=97=AE=E9=A2=98=E7=9F=A5=E8=AF=86=E5=BA=93-?= =?UTF-8?q?=E8=BD=AC=E5=8F=91=E6=8E=A5=E5=8F=A3=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProblemKnowledgeBaseEOController.java | 9 ++ .../IProblemKnowledgeBaseEOService.java | 9 ++ .../ProblemKnowledgeBaseEOServiceImpl.java | 135 ++++++++++++++++++ 3 files changed, 153 insertions(+) diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/controller/ProblemKnowledgeBaseEOController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/controller/ProblemKnowledgeBaseEOController.java index 41b5dcb78..ec31393a5 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/controller/ProblemKnowledgeBaseEOController.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/controller/ProblemKnowledgeBaseEOController.java @@ -4,6 +4,8 @@ import java.util.Arrays; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; + +import com.alibaba.fastjson.JSONObject; import com.jero.common.api.vo.Result; import com.jero.common.system.query.QueryGenerator; import com.jero.modules.problemKnowledgeBase.entity.ProblemKnowledgeBaseEO; @@ -172,4 +174,11 @@ public class ProblemKnowledgeBaseEOController extends JeroController forward(@RequestBody JSONObject json) { + return this.problemKnowledgeBaseEOService.forward(json); + } + } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/IProblemKnowledgeBaseEOService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/IProblemKnowledgeBaseEOService.java index 4b538190c..0c3131507 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/IProblemKnowledgeBaseEOService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/IProblemKnowledgeBaseEOService.java @@ -1,6 +1,8 @@ package com.jero.modules.problemKnowledgeBase.service; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.jero.common.api.vo.Result; import com.jero.modules.problemKnowledgeBase.entity.ProblemKnowledgeBaseEO; import com.baomidou.mybatisplus.extension.service.IService; @@ -75,4 +77,11 @@ public interface IProblemKnowledgeBaseEOService extends IService queryWrapper,ProblemKnowledgeBaseEO problemKnowledgeBaseEO); + + /** + * 转发 + * @param json + * @return + */ + Result forward(JSONObject json); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/impl/ProblemKnowledgeBaseEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/impl/ProblemKnowledgeBaseEOServiceImpl.java index ff9e0fa10..b7460d4c9 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/impl/ProblemKnowledgeBaseEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/impl/ProblemKnowledgeBaseEOServiceImpl.java @@ -4,14 +4,21 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.jero.common.api.vo.Result; +import com.jero.common.constant.CommonConstant; +import com.jero.common.constant.WebsocketConst; import com.jero.common.constant.enums.CutEnum; +import com.jero.common.constant.enums.MessageTypeEnum; import com.jero.common.es.JeroElasticsearchTemplate; +import com.jero.common.exception.JeroBootException; import com.jero.common.system.query.QueryGenerator; import com.jero.common.system.vo.DictModel; import com.jero.common.system.vo.LoginUser; import com.jero.modules.document.enums.SearchEnum; import com.jero.modules.document.utils.ReadPdfUtil; import com.jero.modules.document.utils.ReadWordUtil; +import com.jero.modules.feishu.service.IFeishuService; +import com.jero.modules.message.websocket.WebSocket; import com.jero.modules.oss.entity.OSSFile; import com.jero.modules.oss.service.IOSSFileService; import com.jero.modules.problemKnowledgeBase.entity.*; @@ -20,16 +27,24 @@ import com.jero.modules.problemKnowledgeBase.enums.PraiseStatusEnum; import com.jero.modules.problemKnowledgeBase.enums.ShowPermissionsEnum; import com.jero.modules.problemKnowledgeBase.mapper.ProblemKnowledgeBaseEOMapper; import com.jero.modules.problemKnowledgeBase.service.*; +import com.jero.modules.project.enums.JumpLinkEnum; import com.jero.modules.searchcenter.enums.ModuleTypeFlagEnum; +import com.jero.modules.system.entity.SysAnnouncement; +import com.jero.modules.system.entity.SysUser; import com.jero.modules.system.enums.DicCodeEnum; +import com.jero.modules.system.service.ISysAnnouncementService; +import com.jero.modules.system.service.ISysDepartService; import com.jero.modules.system.service.ISysDictService; +import com.jero.modules.system.service.ISysUserService; import com.jero.modules.system.util.StringUtils; import org.apache.commons.collections4.CollectionUtils; import org.apache.shiro.SecurityUtils; +import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import java.io.IOException; import java.util.*; import java.util.stream.Collectors; @@ -37,6 +52,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; /** @@ -67,10 +83,23 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl forward(JSONObject json) { + String cut = json.getString("cut"); + + String userIds = json.getString("userIds"); + String departIds = json.getString("departIds"); + if(StringUtils.isEmpty(userIds) && StringUtils.isNotEmpty(departIds)){ + if(StringUtils.equals(cut,CutEnum.CN.getValue())){ + throw new JeroBootException("至少选择一个人或部门进行转发!"); + }else if(StringUtils.equals(cut,CutEnum.EN.getValue())){ + throw new JeroBootException("Select at least one person or department to forward!"); + } + } + + LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + + List userList = new ArrayList<>(); + + Set allDepartIds = new HashSet<>(); + if(StringUtils.isNotEmpty(departIds)){ + String[] departIdArr = departIds.split(","); + for (String departId : departIdArr) { + List subDepIdsByDepId = this.sysDepartService.getSubDepIdsByDepId(departId); + allDepartIds.addAll(subDepIdsByDepId); + } + + //查询部门下的人员 + if(allDepartIds.size() != 0){ + List userListByDepIds = this.sysUserService.getUserListByDepIds(new ArrayList<>(allDepartIds)); + userList.addAll(userListByDepIds); + } + } + + if(StringUtils.isNotEmpty(userIds)){ + List sysUsers = this.sysUserService.querySysUserListByIdList(Arrays.asList(userIds.split(","))); + userList.addAll(sysUsers); + } + + List userIdList = new ArrayList<>(); + List thirdIdList = new ArrayList<>(); + if (userList.size() != 0) { + userIdList.addAll(userList.stream().map(SysUser::getId).distinct().collect(Collectors.toList())); + thirdIdList.addAll(userList.stream().map(SysUser::getThirdId).distinct().collect(Collectors.toList())); + } + + //String msgType = json.getString("msgType"); + String problemKnowledgeBaseId = json.getString("problemKnowledgeBaseId"); + //问题知识库标题 + String problemKnowledgeBaseTitle = json.getString("problemKnowledgeBaseTitle"); + + //XXX向您推送了XXXXXXXXXX,请注意查看。 + String msgContentEN = currentUser.getUsername()+" pushed " + problemKnowledgeBaseTitle + " to you.Please be reminded to check it out."; + String msgTitle = problemKnowledgeBaseTitle + " has been shared with you, please check."; + + //飞书跳转链接 + String hrefFeishu = backUrl + JumpLinkEnum.PROBLEM_KNOWLEDGE_BASE_DETAIL.getLink() + "?id=" + problemKnowledgeBaseId; + //系统内部跳转链接 + String href = "" + " View details" + ""; + String contentInfo = msgContentEN + " " + href; + + //封装消息的实体类 + SysAnnouncement sysAnnouncement = getSysAnnouncement(userIdList, msgTitle, msgContentEN, contentInfo,MessageTypeEnum.PUSH.getValue(),MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName()); + this.sysAnnouncementService.saveAnnouncement(sysAnnouncement); + this.sendWebsocket(StringUtils.join(thirdIdList, ","), contentInfo); + //飞书 + try { + this.iFeishuService.batchSendMessage(thirdIdList.toArray(new String[]{}), msgContentEN, MessageTypeEnum.PUSH.getName(), hrefFeishu); + } catch (IOException e) { + log.error("飞书推送失败"); + } + this.sendWebsocket(problemKnowledgeBaseId, contentInfo); + return Result.OK("转发成功!"); + } + + public void sendWebsocket(String msgId, String msgTet) { + JSONObject obj = new JSONObject(); + obj.put(WebsocketConst.MSG_CMD, WebsocketConst.CMD_TOPIC); + obj.put(WebsocketConst.MSG_ID, msgId); + obj.put(WebsocketConst.MSG_TXT, msgTet); + webSocket.sendMessage(obj.toJSONString()); + } + + @NotNull + public SysAnnouncement getSysAnnouncement(List userIdList, + String title, + String content, + String contentInfo, + String messageType, + String initiator) { + SysAnnouncement sysAnnouncement = new SysAnnouncement(); + sysAnnouncement.setInitiator(initiator); + sysAnnouncement.setDelFlag("0"); + sysAnnouncement.setSendStatus("0"); + sysAnnouncement.setSendTime(new Date()); + sysAnnouncement.setMsgCategory(messageType);//消息类型 + sysAnnouncement.setMsgType(CommonConstant.MSG_TYPE_UESR);//指定用户 + sysAnnouncement.setTitile(title); + sysAnnouncement.setMsgContent(content); + sysAnnouncement.setMsgContentInfo(contentInfo); + sysAnnouncement.setUserIds(StringUtils.join(userIdList, ",")); + return sysAnnouncement; + } }