问题知识库-转发接口。
This commit is contained in:
+9
@@ -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<ProblemKnow
|
||||
return super.importExcel(request, response, ProblemKnowledgeBaseEO.class);
|
||||
}
|
||||
|
||||
@AutoLog(value = "问题知识库表-转发")
|
||||
@ApiOperation(value="问题知识库表-转发", notes="问题知识库表-转发")
|
||||
@PostMapping(value = "/forward")
|
||||
public Result<?> forward(@RequestBody JSONObject json) {
|
||||
return this.problemKnowledgeBaseEOService.forward(json);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+9
@@ -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<ProblemKnowledg
|
||||
* @param queryWrapper
|
||||
*/
|
||||
void createQueryPermission(QueryWrapper<ProblemKnowledgeBaseEO> queryWrapper,ProblemKnowledgeBaseEO problemKnowledgeBaseEO);
|
||||
|
||||
/**
|
||||
* 转发
|
||||
* @param json
|
||||
* @return
|
||||
*/
|
||||
Result<?> forward(JSONObject json);
|
||||
}
|
||||
|
||||
+135
@@ -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<ProblemKnowle
|
||||
private JeroElasticsearchTemplate jeroElasticsearchTemplate;
|
||||
@Autowired
|
||||
private IOSSFileService iOSSFileService;
|
||||
@Resource
|
||||
private WebSocket webSocket;
|
||||
@Autowired
|
||||
private ISysAnnouncementService sysAnnouncementService;
|
||||
@Resource
|
||||
private IFeishuService iFeishuService;
|
||||
@Autowired
|
||||
private ISysDepartService sysDepartService;
|
||||
@Autowired
|
||||
private ISysUserService sysUserService;
|
||||
|
||||
|
||||
public static final String SEARCH_FLAG = "魑";
|
||||
@Value(value = "${jero.path.upload}")
|
||||
private String uploadpath;
|
||||
@Value(value = "${jero.backUrl}")
|
||||
private String backUrl;
|
||||
|
||||
/**
|
||||
* 保存
|
||||
@@ -724,4 +753,110 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl<ProblemKnowle
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result<?> 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<SysUser> userList = new ArrayList<>();
|
||||
|
||||
Set<String> allDepartIds = new HashSet<>();
|
||||
if(StringUtils.isNotEmpty(departIds)){
|
||||
String[] departIdArr = departIds.split(",");
|
||||
for (String departId : departIdArr) {
|
||||
List<String> subDepIdsByDepId = this.sysDepartService.getSubDepIdsByDepId(departId);
|
||||
allDepartIds.addAll(subDepIdsByDepId);
|
||||
}
|
||||
|
||||
//查询部门下的人员
|
||||
if(allDepartIds.size() != 0){
|
||||
List<SysUser> userListByDepIds = this.sysUserService.getUserListByDepIds(new ArrayList<>(allDepartIds));
|
||||
userList.addAll(userListByDepIds);
|
||||
}
|
||||
}
|
||||
|
||||
if(StringUtils.isNotEmpty(userIds)){
|
||||
List<SysUser> sysUsers = this.sysUserService.querySysUserListByIdList(Arrays.asList(userIds.split(",")));
|
||||
userList.addAll(sysUsers);
|
||||
}
|
||||
|
||||
List<String> userIdList = new ArrayList<>();
|
||||
List<String> 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 = "<a href='"
|
||||
+ JumpLinkEnum.PROBLEM_KNOWLEDGE_BASE_DETAIL.getLink()+ "?id="
|
||||
+ problemKnowledgeBaseId
|
||||
+ "'>" + " View details" + "</a>";
|
||||
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<String> 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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user