Commit c6a18a59 by chentianzhong

2023年3月31日11:36:38

parent f750ef75
......@@ -55,18 +55,18 @@ public class EmailContentController {
}
/****** 这两个接口必须优化掉,,后期影响很大****************/
@ApiOperation("从content中获取邮件收件部门(草稿箱用)")
@PostMapping("findReceiveDeptByContentId")
public ResultVo findReceiveDeptByContentId(@RequestBody EmailDetailVo vo) {
AssertUtils.notNull(vo.getContentId(), "缺少参数:contentId");
return ResultVo.success(emailContentService.findReceiveDeptByContentId(vo.getContentId()));
}
@ApiOperation("从content中获取邮件收件人(草稿箱用)")
@PostMapping("findReceiverByContentId")
public ResultVo findReceiverByContentId(@RequestBody EmailDetailVo vo) {
AssertUtils.notNull(vo.getContentId(), "缺少参数:contentId");
return ResultVo.success(emailContentService.findReceiverByContentId(vo.getContentId()));
}
// @ApiOperation("从content中获取邮件收件部门(草稿箱用)")
// @PostMapping("findReceiveDeptByContentId")
// public ResultVo findReceiveDeptByContentId(@RequestBody EmailDetailVo vo) {
// AssertUtils.notNull(vo.getContentId(), "缺少参数:contentId");
// return ResultVo.success(emailContentService.findReceiveDeptByContentId(vo.getContentId()));
// }
//
// @ApiOperation("从content中获取邮件收件人(草稿箱用)")
// @PostMapping("findReceiverByContentId")
// public ResultVo findReceiverByContentId(@RequestBody EmailDetailVo vo) {
// AssertUtils.notNull(vo.getContentId(), "缺少参数:contentId");
// return ResultVo.success(emailContentService.findReceiverByContentId(vo.getContentId()));
// }
}
......@@ -103,7 +103,6 @@ public class EmailController {
EmailContent content = emailContentService.getById(vo.getContentId());
AssertUtils.notNull(content, "邮件内容读取失败");
EmailPerson emailPerson = emailPersonService.getByContentAndFolderId(content.getId(), content.getSendTime(), vo.getFolderId());
AssertUtils.notNull(emailPerson, "邮件人员信息不匹配");
emailPerson.setEmailContent(content);
return ResultVo.success(emailPerson);
}
......
......@@ -54,11 +54,18 @@ public class EmailPersonController {
return ResultVo.success(emailPersonService.findTaskEmailByContentId(vo.getContentId()));
}
@ApiOperation("非任务邮件收件人详情(收件箱和个人文件夹用)")
@ApiOperation("非任务邮件收件人详情(收件箱、个人文件夹和草稿箱用,草稿箱需要传isPersonId=1, 其他只传contenId)")
@PostMapping("findReceiverByContentId")
public ResultVo findReceiverByContentId(@RequestBody EmailDetailVo vo) {
AssertUtils.notNull(vo.getContentId(), "缺少参数:contentId");
return ResultVo.success(emailPersonService.findReceiverByContentId(vo.getContentId()));
return ResultVo.success(emailPersonService.findReceiverByContentId(vo.getContentId(), vo.getIsPerson()));
}
@ApiOperation("获取草稿箱收件部门")
@PostMapping("findDraftsDeptByContentId")
public ResultVo findDraftsDeptByContentId(@RequestBody EmailDetailVo vo) {
AssertUtils.notNull(vo.getContentId(), "缺少参数:contentId");
return ResultVo.success(emailPersonService.findDraftsDeptByContentId(vo.getContentId()));
}
@ApiOperation("设置为已读或未读")
......
......@@ -61,4 +61,6 @@ public class EmailContent implements Serializable {
private Integer isTask;
private Integer isFile;
}
package com.zq.email.feign;
import com.zq.common.annotation.AnonymousAccess;
import com.zq.common.vo.ResultVo;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PostMapping;
......@@ -55,4 +57,15 @@ public interface MessageFeignClient {
@PostMapping("/todo/revokeTodoBySysInfo")
ResultVo revokeTodoBySysInfo(@RequestBody Map<String, Object> params);
@ApiOperation("内部已读")
@PostMapping("/web/batchSetReadByUser")
public ResultVo batchSetReadByUser(@RequestBody Map<String, Object> params);
@ApiOperation("根据系统标识及业务id和人员id关闭(已读)代办")
@PostMapping("/todo/doneByBusinessIdAndSystemTagAndTodoUserId")
public ResultVo doneByBusinessIdAndSystemTagAndTodoUserId(@RequestBody Map<String, Object> params);
}
......@@ -19,7 +19,7 @@ import java.util.List;
*/
public interface IEmailAttachService extends IService<EmailAttach> {
void saveAttach(EmailEditVo vo, EmailContent content);
List<EmailAttach> saveAttach(EmailEditVo vo, EmailContent content);
List<EmailAttach> findByContentId(Long contentId);
......
......@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zq.common.vo.CustomerUserVo;
import com.zq.common.vo.OnlineUserDto;
import com.zq.common.vo.ResultVo;
import com.zq.email.dto.DeptSimpleDto;
import com.zq.email.entity.EmailContent;
import com.zq.email.entity.EmailPerson;
import com.baomidou.mybatisplus.extension.service.IService;
......@@ -47,7 +48,7 @@ public interface IEmailPersonService extends IService<EmailPerson> {
void moveEmailFolder(EmailFolderMoveVo vo);
//邮件接收人列表
List<EmailPerson> findReceiverByContentId(Long contentId);
List<EmailPerson> findReceiverByContentId(Long contentId, Integer isPerson);
//邮件接收人列表(包含回复邮件)
List<EmailPerson> findTaskEmailByContentId(Long contentId);
......@@ -110,4 +111,6 @@ public interface IEmailPersonService extends IService<EmailPerson> {
//根据content和文件夹获取person
EmailPerson getByContentAndFolderId(Long contentId, LocalDateTime sendTime, Long folderId);
List<DeptSimpleDto> findDraftsDeptByContentId(Long contentId);
}
......@@ -44,7 +44,7 @@ public class EmailAttachServiceImpl extends ServiceImpl<EmailAttachMapper, Email
private String profile;
@Override
public void saveAttach(EmailEditVo vo, EmailContent content) {
public List<EmailAttach> saveAttach(EmailEditVo vo, EmailContent content) {
List<EmailAttach> list = new ArrayList<>();
if(CollectionUtil.isNotEmpty(vo.getFileIds())) {
......@@ -93,6 +93,7 @@ public class EmailAttachServiceImpl extends ServiceImpl<EmailAttachMapper, Email
}
}
this.saveBatch(list);
return list;
}
@Override
......
......@@ -77,21 +77,21 @@ public class EmailContentServiceImpl extends ServiceImpl<EmailContentMapper, Ema
content.setMessageRemind(WhetherEnum.NO.getKey());
}
if (CollectionUtil.isNotEmpty(vo.getReceiver())){
StringBuffer r = new StringBuffer();
for (Long userId : vo.getReceiver()) {
r.append(userId).append(",");
}
content.setUserList(r.toString());
}
if (CollectionUtil.isNotEmpty(vo.getReceiveDeptList())){
StringBuffer sb = new StringBuffer();
for (Long deptId : vo.getReceiveDeptList()) {
sb.append(deptId).append(",");
}
content.setDeptList(sb.toString());
}
// if (CollectionUtil.isNotEmpty(vo.getReceiver())){
// StringBuffer r = new StringBuffer();
// for (Long userId : vo.getReceiver()) {
// r.append(userId).append(",");
// }
// content.setUserList(r.toString());
// }
//
// if (CollectionUtil.isNotEmpty(vo.getReceiveDeptList())){
// StringBuffer sb = new StringBuffer();
// for (Long deptId : vo.getReceiveDeptList()) {
// sb.append(deptId).append(",");
// }
// content.setDeptList(sb.toString());
// }
this.saveOrUpdate(content);
return content;
}
......@@ -111,13 +111,13 @@ public class EmailContentServiceImpl extends ServiceImpl<EmailContentMapper, Ema
content.setSmsRemind(WhetherEnum.NO.getKey());
content.setMessageRemind(WhetherEnum.NO.getKey());
if (CollectionUtil.isNotEmpty(receiveIds)){
StringBuffer r = new StringBuffer();
for (Long userId : receiveIds) {
r.append(userId).append(",");
}
content.setUserList(r.toString());
}
// if (CollectionUtil.isNotEmpty(receiveIds)){
// StringBuffer r = new StringBuffer();
// for (Long userId : receiveIds) {
// r.append(userId).append(",");
// }
// content.setUserList(r.toString());
// }
this.saveOrUpdate(content);
return content;
}
......@@ -136,21 +136,21 @@ public class EmailContentServiceImpl extends ServiceImpl<EmailContentMapper, Ema
content.setSmsRemind(vo.getIsSmsRemind());
content.setMessageRemind(vo.getIsMessageRemind());
if (CollectionUtil.isNotEmpty(vo.getReceiver())){
StringBuffer r = new StringBuffer();
for (Long userId : vo.getReceiver()) {
r.append(userId).append(",");
}
content.setUserList(r.toString());
}
if (CollectionUtil.isNotEmpty(vo.getReceiveDeptList())){
StringBuffer sb = new StringBuffer();
for (Long deptId : vo.getReceiveDeptList()) {
sb.append(deptId).append(",");
}
content.setDeptList(sb.toString());
}
// if (CollectionUtil.isNotEmpty(vo.getReceiver())){
// StringBuffer r = new StringBuffer();
// for (Long userId : vo.getReceiver()) {
// r.append(userId).append(",");
// }
// content.setUserList(r.toString());
// }
//
// if (CollectionUtil.isNotEmpty(vo.getReceiveDeptList())){
// StringBuffer sb = new StringBuffer();
// for (Long deptId : vo.getReceiveDeptList()) {
// sb.append(deptId).append(",");
// }
// content.setDeptList(sb.toString());
// }
this.saveOrUpdate(content);
return content;
}
......
......@@ -10,6 +10,7 @@ import com.zq.common.vo.CustomerUserVo;
import com.zq.common.vo.OnlineUserDto;
import com.zq.common.vo.ResultVo;
import com.zq.email.constants.EmailConstant;
import com.zq.email.dto.DeptSimpleDto;
import com.zq.email.dto.Person;
import com.zq.email.dto.SystemInfo;
import com.zq.email.entity.EmailAttach;
......@@ -130,7 +131,12 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
EmailContent content = emailContentService.saveContent(vo, adminContext);
if (content !=null) {
//附件
emailAttachService.saveAttach(vo, content);
List<EmailAttach> emailAttaches = emailAttachService.saveAttach(vo, content);
//是否存在附件
Integer whether = CollectionUtil.isNotEmpty(emailAttaches) ? WhetherEnum.YES.getKey() : WhetherEnum.NO.getKey();
content.setIsFile(whether);
this.emailContentService.updateById(content);
//person,先删除
this.lambdaUpdate().eq(EmailPerson::getEmailContentId, content.getId()).remove();
//发件人
......@@ -153,8 +159,8 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
smsUtil.sendBatchSms(receiverList, "您有一封新的邮件,标题为《" + content.getTitle() + "》。请及时查收。", content.getId());
}
//代办
if (vo.getIsSend().equals(WhetherEnum.YES.getKey()) && (content.getMessageRemind() != null && content.getSmsRemind().equals(WhetherEnum.YES.getKey()))) {
msgUtil.sendMsg(adminContext.getNickName(), content, receiverList, systemInfo);
if (vo.getIsSend().equals(WhetherEnum.YES.getKey()) && (content.getMessageRemind() != null && content.getMessageRemind().equals(WhetherEnum.YES.getKey()))) {
msgUtil.sendMsg(adminContext.getNickName(), content, receiverList, systemInfo, EmailFolderEnum.FOLDER_INBOX.getKey());
}
}
}
......@@ -176,8 +182,8 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
smsUtil.sendBatchSms(deptUserList, "您有一封新的邮件,标题为《" + content.getTitle() + "》。请及时查收。", content.getId());
}
//代办
if (vo.getIsSend().equals(WhetherEnum.YES.getKey()) && content.getSmsRemind().equals(WhetherEnum.YES.getKey())) {
msgUtil.sendMsg(adminContext.getNickName(), content, deptUserList, systemInfo);
if (vo.getIsSend().equals(WhetherEnum.YES.getKey()) && content.getMessageRemind().equals(WhetherEnum.YES.getKey())) {
msgUtil.sendMsg(adminContext.getNickName(), content, deptUserList, systemInfo, EmailFolderEnum.FOLDER_DEPT_INBOX.getKey());
}
}
}
......@@ -270,9 +276,10 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
}
@Override
public List<EmailPerson> findReceiverByContentId(Long contentId) {
public List<EmailPerson> findReceiverByContentId(Long contentId, Integer isPerson) {
return this.lambdaQuery()
.eq(EmailPerson::getEmailContentId, contentId)
.eq(contentId!=null, EmailPerson::getEmailContentId, contentId)
.eq(isPerson!=null , EmailPerson::getIsPerson, isPerson)
.eq(EmailPerson::getPersonType, EmailConstant.TYPE_EMAIL_RECEIVE)
.orderByAsc(EmailPerson::getId).list();
}
......@@ -280,7 +287,7 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
@Override
public List<EmailPerson> findTaskEmailByContentId(Long contentId) {
List<EmailPerson> personList = this.lambdaQuery()
.eq(EmailPerson::getEmailContentId, contentId)
.eq(contentId!=null, EmailPerson::getEmailContentId, contentId)
.eq(EmailPerson::getPersonType, EmailConstant.TYPE_EMAIL_RECEIVE)
.orderByAsc(EmailPerson::getId).list();
for (EmailPerson person : personList) {
......@@ -313,7 +320,7 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
@Override
public void readEmail(EmailReadVo vo) {
this.lambdaUpdate()
.ge(EmailPerson::getSendTime, DateUtils.getRangeStart(vo.getSearchRange()))
.ge(vo.getSearchRange()!=null, EmailPerson::getSendTime, DateUtils.getRangeStart(vo.getSearchRange()))
.le(EmailPerson::getSendTime, LocalDateTime.now())
.in(EmailPerson::getId, vo.getPersonIdList())
.set(EmailPerson::getIsRead, vo.getIsRead()).update();
......@@ -695,7 +702,7 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
//短信
smsUtil.sendBatchSms(toUserList, "您有一封新的邮件,标题为《" + content.getTitle() + "》。请及时查收。", content.getId());
//代办
msgUtil.sendMsg(fromVo.getData().getNickName(), content, toUserList, systemInfo);
msgUtil.sendMsg(fromVo.getData().getNickName(), content, toUserList, systemInfo, EmailFolderEnum.FOLDER_INBOX.getKey());
return content;
}
......@@ -725,7 +732,7 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
}
if (CollectionUtil.isNotEmpty(receiverList)){
smsUtil.sendBatchSms(receiverList, "您有一封新的邮件,标题为《" + content.getTitle() + "》。请及时查收。", content.getId());
msgUtil.sendMsg(formUser.getNickName(), content, receiverList, systemInfo);
msgUtil.sendMsg(formUser.getNickName(), content, receiverList, systemInfo, EmailFolderEnum.FOLDER_INBOX.getKey());
}
}
......@@ -741,7 +748,7 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
if (CollectionUtil.isNotEmpty(deptUserList)){
smsUtil.sendBatchSms(deptUserList, "您有一封新的邮件,标题为《" + content.getTitle() + "》。请及时查收。", content.getId());
msgUtil.sendMsg(formUser.getNickName(), content, deptUserList, systemInfo);
msgUtil.sendMsg(formUser.getNickName(), content, deptUserList, systemInfo, EmailFolderEnum.FOLDER_DEPT_INBOX.getKey());
}
}
}
......@@ -798,17 +805,35 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
break;
}
EmailPerson emailPerson = this.getOne(queryWrapper, false);
AssertUtils.notNull(emailPerson, "邮件人员信息不匹配");
return this.getOne(queryWrapper, false);
if (emailPerson.getIsRead().equals(WhetherEnum.NO.getKey())){
msgUtil.doneMsgByBusinessIdAndReceiverId(contentId, emailPerson.getUserId());
}
return emailPerson;
}
@Override
public List<DeptSimpleDto> findDraftsDeptByContentId(Long contentId) {
List<DeptSimpleDto> deptDtoList = new ArrayList<>();
List<EmailPerson> list = this.lambdaQuery()
.eq(contentId != null, EmailPerson::getEmailContentId, contentId)
.eq(EmailPerson::getIsPerson, WhetherEnum.NO.getKey())
.eq(EmailPerson::getPersonType, EmailConstant.TYPE_EMAIL_RECEIVE)
.orderByAsc(EmailPerson::getId).list();
Set<Long> deptIds = new HashSet<>();
for (EmailPerson person : list) {
deptIds.add(person.getDeptId());
}
for (Long deptId : deptIds) {
ResultVo<DeptSimpleDto> byDeptId = adminFeignClient.getByDeptId(deptId);
if (byDeptId.isSuccess() && byDeptId.getData()!=null){
deptDtoList.add(byDeptId.getData());
}
}
return deptDtoList;
}
}
......@@ -35,8 +35,9 @@ public class MsgUtil {
@Resource
public MessageFeignClient messageFeignClient;
//发送消息和代办
@Async
public void sendMsg(String sender, EmailContent content, List<CustomerUserVo> userVoList, SystemInfo systemInfo) {
public void sendMsg(String sender, EmailContent content, List<CustomerUserVo> userVoList, SystemInfo systemInfo, Integer folderId) {
Map<String, Object> params = new HashMap<>();
params .put("systemTag", EmailConstant.SYSTEM_TAG);
params .put("sender", sender);
......@@ -45,13 +46,14 @@ public class MsgUtil {
params .put("content", "您有一封新的邮件,标题为《"+content.getTitle()+"》。请及时查收。");
params.put("userIdList", userVoList.stream().map(e->e.getUserId()).collect(Collectors.toList()));
params .put("businessId", content.getId());
params.put("jumpUrl", systemInfo.getHomeUrl() + "/#/detail?contentId=" + content.getId());
params.put("jumpUrl", systemInfo.getHomeUrl() + "/#/detail?folderId="+folderId+"&contentId=" + content.getId());
log.debug("---发送内部消息打印内容: {}", JSONUtil.toJsonStr(params));
messageFeignClient.sendApi(params);
messageFeignClient.addToDoApi(params);
}
//撤回消息和代办
@Async
public void revokeMsgByBusinessId(Long businessId) {
Map<String, Object> params = new HashMap<>();
......@@ -63,16 +65,32 @@ public class MsgUtil {
}
//撤回消息和代办
@Async
public void revokeMsgByBusinessIdAndReceiverId(Long businessId, Long receiverId) {
Map<String, Object> params = new HashMap<>();
params .put("systemTag", EmailConstant.SYSTEM_TAG);
params .put("businessId", businessId);
params .put("receiverId", receiverId);
params .put("todoUserId", receiverId);
log.debug("---撤回内部消息打印内容: {}", JSONUtil.toJsonStr(params));
messageFeignClient.revokeWebBySysInfo(params);
messageFeignClient.revokeTodoBySysInfo(params);
}
//已读消息和代办
@Async
public void doneMsgByBusinessIdAndReceiverId(Long businessId, Long receiverId) {
Map<String, Object> params = new HashMap<>();
params .put("systemTag", EmailConstant.SYSTEM_TAG);
params .put("businessId", businessId);
params .put("todoUserId", receiverId);
params .put("receiverId", receiverId);
log.debug("---已读消息代办: {}", JSONUtil.toJsonStr(params));
messageFeignClient.batchSetReadByUser(params);
messageFeignClient.doneByBusinessIdAndSystemTagAndTodoUserId(params);
}
}
......@@ -17,4 +17,7 @@ public class EmailDetailVo {
@ApiModelProperty("文件夹Id")
private Long folderId;
@ApiModelProperty("是否个人邮件")
private Integer isPerson;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment