Commit 0c02ac1e by chentianzhong

优化代码和排版

parent 94cc4aa6
...@@ -30,6 +30,7 @@ import io.swagger.annotations.Api; ...@@ -30,6 +30,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.asm.Advice;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -74,25 +75,25 @@ public class EmailApiController { ...@@ -74,25 +75,25 @@ public class EmailApiController {
AssertUtils.isTrue(businessSystemService.checkSystemInfo(emailVo), "业务系统信息验证不通过"); AssertUtils.isTrue(businessSystemService.checkSystemInfo(emailVo), "业务系统信息验证不通过");
emailVo.setIp(clientIP); emailVo.setIp(clientIP);
emailVo.setMethodName("/email/api/sendEmail"); emailVo.setMethodName("/email/api/sendEmail");
SysLog sysLog = null;
try { try {
EmailContent content = this.emailPersonService.sendEmailApi(emailVo); EmailContent content = this.emailPersonService.sendEmailApi(emailVo);
sysLog = sysLogService.insertSysLog(emailVo); sysLogService.insertSysLog(emailVo);
return ResultVo.success(content.getId()); return ResultVo.success(content.getId());
}catch (Exception e){ }catch (Exception e){
emailVo.setExceptionDetails(e.getLocalizedMessage()); emailVo.setExceptionDetails(e.getLocalizedMessage());
sysLog = sysLogService.insertSysLog(emailVo); SysLog sysLog = sysLogService.insertSysLog(emailVo);
log.error("邮件api接口(兼容旧)失败!!!!!"); log.error("邮件api接口(兼容旧)失败!!!!!");
log.error(e.getLocalizedMessage(), e); log.error(e.getLocalizedMessage(), e);
emailVo.setExceptionDetails(e.getLocalizedMessage()); emailVo.setExceptionDetails(e.getLocalizedMessage());
sysLogService.updateById(sysLog);
return ResultVo.fail(sysLog.getExceptionDetails());
} }
return ResultVo.fail(sysLog.getExceptionDetails());
} }
@ApiOperation("邮件api接口(兼容旧)") @ApiOperation("邮件api接口")
@AnonymousPostMapping("emailSend") @AnonymousPostMapping("emailSend")
public ResultVo emailSend(@RequestBody EmailEditApiVo vo) { public ResultVo emailSend(@RequestBody EmailEditApiVo vo) {
AssertUtils.hasText(vo.getTitle(), "缺少参数title"); AssertUtils.hasText(vo.getTitle(), "缺少参数title");
......
...@@ -2,8 +2,12 @@ package com.zq.email.controller; ...@@ -2,8 +2,12 @@ package com.zq.email.controller;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.servlet.ServletUtil;
import cn.hutool.http.HttpUtil; import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.zq.common.annotation.AnonymousAccess; import com.zq.common.annotation.AnonymousAccess;
...@@ -31,6 +35,7 @@ import org.springframework.web.bind.annotation.*; ...@@ -31,6 +35,7 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.OutputStream; import java.io.OutputStream;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.HashMap; import java.util.HashMap;
...@@ -52,8 +57,7 @@ public class EmailAttachController { ...@@ -52,8 +57,7 @@ public class EmailAttachController {
private final IEmailAttachService emailAttachService; private final IEmailAttachService emailAttachService;
private final FileFeignClient fileFeignClient; private final FileFeignClient fileFeignClient;
@Value("${spring.cloud.config.profile}")
private String profile;
@ApiOperation("获取附件") @ApiOperation("获取附件")
@PostMapping @PostMapping
...@@ -64,41 +68,18 @@ public class EmailAttachController { ...@@ -64,41 +68,18 @@ public class EmailAttachController {
@ApiOperation("下载附件") @ApiOperation("下载附件")
@AnonymousGetMapping("/download/{id}") @AnonymousGetMapping("/download/{id}")
public void download(HttpServletRequest request, HttpServletResponse response, @PathVariable("id") String id) { public void download(HttpServletRequest request, HttpServletResponse response, @PathVariable("id") Long id) {
EmailAttach emailAttach = emailAttachService.getById(id); EmailAttach emailAttach = emailAttachService.getById(id);
AssertUtils.notNull(emailAttach, "获取附件信息失败"); AssertUtils.notNull(emailAttach, "获取附件信息失败");
String download = emailAttach.getDownloadPath();
log.info("文件下载地址1111:{}", download); String download = emailAttachService.getDownloadPath(emailAttach);
if (StrUtil.isBlank(download)){
String year = DateUtil.format(emailAttach.getSendTime(), "yyyy");
String yearMonth = DateUtil.format(emailAttach.getSendTime(), "yyyyMM");
String yearMonthDate = DateUtil.format(emailAttach.getSendTime(), "yyyyMMdd");
String path = "/" + year + "/" + yearMonth + "/" + yearMonthDate + "/" + emailAttach.getAttachId() + "/" + emailAttach.getAttachName();
if (profile.equals("product") || profile.equals("test")) {
download = "http://147.1.3.87/attwjsf_email" + path;
}else if (profile.equals("wanpro") || profile.equals("wantest")){
download = "http://172.28.1.159:82/attwjsf_yj" + path;
}
}else{
if (profile.equals("wanpro") || profile.equals("wantest")) {
download.replaceAll("147.2.3.3", "172.28.1.70");
}
}
log.info("文件下载地址2222:{}", download);
AssertUtils.hasText(download, "下载地址为空"); AssertUtils.hasText(download, "下载地址为空");
ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
try { try {
OutputStream os = response.getOutputStream();
HttpUtil.download(download, outputStream, true); HttpUtil.download(download, outputStream, true);
byte[] bytes = outputStream.toByteArray(); byte[] bytes = outputStream.toByteArray();
response.reset(); ServletUtil.write(response, IoUtil.toStream(bytes), "application/octet-stream",
response.setContentType("application/octet-stream"); new String(emailAttach.getAttachName().getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1));
response.addHeader("Content-Disposition",
"attachment;filename=" + new String(emailAttach.getAttachName().getBytes(StandardCharsets.UTF_8),
StandardCharsets.ISO_8859_1));
response.addHeader("Content-Length", "" + bytes.length);
os.write(bytes);
os.flush();
} catch (Exception e) { } catch (Exception e) {
log.error("下载文件失败:" + e.getLocalizedMessage(), e); log.error("下载文件失败:" + e.getLocalizedMessage(), e);
AssertUtils.isTrue(false, "网络异常,下载文件失败"); AssertUtils.isTrue(false, "网络异常,下载文件失败");
...@@ -109,26 +90,8 @@ public class EmailAttachController { ...@@ -109,26 +90,8 @@ public class EmailAttachController {
@ApiOperation("返回附件下载地址") @ApiOperation("返回附件下载地址")
@GetMapping("/downloadPath/{id}") @GetMapping("/downloadPath/{id}")
public ResultVo downloadPath(@PathVariable("id") String id) { public ResultVo downloadPath(@PathVariable("id") Long id) {
EmailAttach emailAttach = emailAttachService.getById(id); String download = emailAttachService.getDownloadPath(id);
AssertUtils.notNull(emailAttach, "获取附件信息失败");
String download = emailAttach.getDownloadPath();
log.info("文件下载地址 downloadPath 1111:{}", download);
if (StrUtil.isBlank(download)) {
String year = DateUtil.format(emailAttach.getSendTime(), "yyyy");
String yearMonth = DateUtil.format(emailAttach.getSendTime(), "yyyyMM");
String yearMonthDate = DateUtil.format(emailAttach.getSendTime(), "yyyyMMdd");
String path = "/" + year + "/" + yearMonth + "/" + yearMonthDate + "/" + emailAttach.getAttachId() + "/" + emailAttach.getAttachName();
if (profile.equals("product") || profile.equals("test")) {
download = "http://147.1.3.87/attwjsf_email" + path;
} else if (profile.equals("wanpro") || profile.equals("wantest")) {
download = "http://172.28.1.159:82/attwjsf_yj" + path;
}
} else {
if (profile.equals("wanpro") || profile.equals("wantest")) {
download.replaceAll("147.2.3.3", "172.28.1.70");
}
}
AssertUtils.hasText(download, "内部错误,获取下载地址空"); AssertUtils.hasText(download, "内部错误,获取下载地址空");
return ResultVo.success(download); return ResultVo.success(download);
} }
...@@ -137,50 +100,8 @@ public class EmailAttachController { ...@@ -137,50 +100,8 @@ public class EmailAttachController {
@ApiOperation("wps预览") @ApiOperation("wps预览")
@GetMapping("/viewFileByWps/{id}") @GetMapping("/viewFileByWps/{id}")
public ResultVo viewFileByWps(@PathVariable("id") String id) { public ResultVo viewFileByWps(@PathVariable("id") Long id) {
OnlineUserDto adminContext = TokenUtils.getAdminContext(); return ResultVo.success(emailAttachService.getWpsPreviewUrl(id));
AssertUtils.notNull(adminContext, "登录已失效,请重新登录后再次尝试!");
EmailAttach emailAttach = emailAttachService.getById(id);
AssertUtils.notNull(emailAttach, "获取附件信息失败");
AssertUtils.notNull(emailAttach.getAttachName(), "附件名称为空");
String suffix = emailAttach.getAttachName().substring(emailAttach.getAttachName().lastIndexOf(".") + 1);
String download = emailAttach.getDownloadPath();
log.info("文件下载地址 downloadPath 1111:{}", download);
if (StrUtil.isBlank(download)) {
String year = DateUtil.format(emailAttach.getSendTime(), "yyyy");
String yearMonth = DateUtil.format(emailAttach.getSendTime(), "yyyyMM");
String yearMonthDate = DateUtil.format(emailAttach.getSendTime(), "yyyyMMdd");
String path = "/" + year + "/" + yearMonth + "/" + yearMonthDate + "/" + emailAttach.getAttachId() + "/" + emailAttach.getAttachName();
if (profile.equals("product") || profile.equals("test")) {
download = "http://147.1.3.87/attwjsf_email" + path;
} else if (profile.equals("wanpro") || profile.equals("wantest")) {
download = "http://172.28.1.159:82/attwjsf_yj" + path;
}
} else {
if (profile.equals("wanpro") || profile.equals("wantest")) {
download.replaceAll("147.2.3.3", "172.28.1.70");
}
}
log.info("文件下载地址 downloadPath 222:{}", download);
AssertUtils.hasText(download, "获取到的下载地址为空");
//调用文件服务wps
FileViewVo viewVo = new FileViewVo();
viewVo.setFileId(IdUtil.fastSimpleUUID());
viewVo.setDownloadPath(download);
viewVo.setFileType(suffix);
viewVo.setFileName(emailAttach.getAttachName());
viewVo.setUserId(String.valueOf(adminContext.getUserId()));
ResultVo<String> resultVo = fileFeignClient.getViewUrlByDownloadPath(viewVo);
log.info("中台返回结果:"+ JSONUtil.toJsonStr(resultVo));
String linkUrl = "";
if (resultVo.isSuccess() && StrUtil.isNotBlank(resultVo.getData())){
linkUrl = resultVo.getData();
}
AssertUtils.hasText(linkUrl, "调用wps组件失败,失败原因("+resultVo.getErrMsg()+")");
return ResultVo.success(linkUrl);
} }
......
...@@ -4,7 +4,6 @@ package com.zq.email.controller; ...@@ -4,7 +4,6 @@ package com.zq.email.controller;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.zq.common.utils.AssertUtils; import com.zq.common.utils.AssertUtils;
import com.zq.common.utils.TokenUtils; import com.zq.common.utils.TokenUtils;
import com.zq.common.vo.CustomerUserVo;
import com.zq.common.vo.OnlineUserDto; import com.zq.common.vo.OnlineUserDto;
import com.zq.common.vo.ResultVo; import com.zq.common.vo.ResultVo;
import com.zq.email.entity.EmailContent; import com.zq.email.entity.EmailContent;
...@@ -18,16 +17,11 @@ import io.swagger.annotations.Api; ...@@ -18,16 +17,11 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.core.io.InputStreamResource;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMessage;
import javax.servlet.ServletOutputStream; import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.List; import java.util.List;
/** /**
...@@ -107,33 +101,13 @@ public class EmailController { ...@@ -107,33 +101,13 @@ public class EmailController {
AssertUtils.notNull(adminContext, "登录已失效,请重新登录后再次尝试!"); AssertUtils.notNull(adminContext, "登录已失效,请重新登录后再次尝试!");
AssertUtils.notNull(vo.getContentId(), "缺少参数:contentId"); AssertUtils.notNull(vo.getContentId(), "缺少参数:contentId");
EmailContent content = emailContentService.getById(vo.getContentId()); EmailContent content = emailContentService.getById(vo.getContentId());
AssertUtils.notNull(content, "获取邮件内容失败"); AssertUtils.notNull(content, "邮件内容读取失败");
EmailPerson emailPerson = emailPersonService.getByIdAndSendTime(vo.getPersonId(), content.getSendTime()); EmailPerson emailPerson = emailPersonService.getByContentAndFolderId(content.getId(), content.getSendTime(), vo.getFolderId());
AssertUtils.notNull(emailPerson, "获取邮件对应人员信息失败"); AssertUtils.notNull(emailPerson, "邮件人员信息不匹配");
AssertUtils.isTrue(emailPerson.getUserId().equals(adminContext.getUserId()) , "非本人邮件,不允许阅读");
emailPerson.setEmailContent(content); emailPerson.setEmailContent(content);
return ResultVo.success(emailPerson); return ResultVo.success(emailPerson);
} }
// @ApiOperation("回复")
// @PostMapping("reply")
// public ResultVo reply(@RequestBody EmailEditVo vo) {
// AssertUtils.hasText(vo.getTitle(), "缺少参数:title");
// AssertUtils.notNull(vo.getIsSend(), "缺少参数: isSend");
// AssertUtils.isTrue(CollectionUtil.isNotEmpty(vo.getReceiver()) || CollectionUtil.isNotEmpty(vo.getReceiver()), "缺少参数:receiver和 receiveDeptList");
// emailPersonService.emailEditVo(vo);
// return ResultVo.success();
// }
//
// @ApiOperation("转发")
// @PostMapping("forward")
// public ResultVo forward(@RequestBody EmailEditVo vo) {
// AssertUtils.hasText(vo.getTitle(), "缺少参数:title");
// AssertUtils.notNull(vo.getIsSend(), "缺少参数: isSend");
// AssertUtils.isTrue(CollectionUtil.isNotEmpty(vo.getReceiver()) || CollectionUtil.isNotEmpty(vo.getReceiver()), "缺少参数:receiver和 receiveDeptList");
// emailPersonService.emailEditVo(vo);
// return ResultVo.success();
// }
@ApiOperation("收件箱彻底删除") @ApiOperation("收件箱彻底删除")
@PostMapping("delete") @PostMapping("delete")
......
...@@ -20,8 +20,8 @@ public interface MessageFeignClient { ...@@ -20,8 +20,8 @@ public interface MessageFeignClient {
* @param param * @param param
* @return * @return
*/ */
@PostMapping("/web/send") @PostMapping("/web/sendApi")
ResultVo sendWebMessage(@RequestBody Map<String, Object> param); ResultVo sendApi(@RequestBody Map<String, Object> param);
/** /**
* 新增待办事宜 * 新增待办事宜
...@@ -32,8 +32,8 @@ public interface MessageFeignClient { ...@@ -32,8 +32,8 @@ public interface MessageFeignClient {
* @param params content - 待办内容 - 必传 * @param params content - 待办内容 - 必传
* @return * @return
*/ */
@PostMapping("/todo/addToDo") @PostMapping("/todo/addToDoApi")
ResultVo addToDo(@RequestBody Map<String, Object> params); ResultVo addToDoApi(@RequestBody Map<String, Object> params);
/** /**
* 撤回网页消息 * 撤回网页消息
...@@ -42,7 +42,7 @@ public interface MessageFeignClient { ...@@ -42,7 +42,7 @@ public interface MessageFeignClient {
* @param params * @param params
* @return * @return
*/ */
@DeleteMapping("/web/delMessageBySystem") @DeleteMapping("/web/revokeWebBySysInfo")
ResultVo revokeWebBySysInfo(@RequestBody Map<String, Object> params); ResultVo revokeWebBySysInfo(@RequestBody Map<String, Object> params);
/** /**
...@@ -52,7 +52,7 @@ public interface MessageFeignClient { ...@@ -52,7 +52,7 @@ public interface MessageFeignClient {
* @param params * @param params
* @return * @return
*/ */
@DeleteMapping("/todo/delMessageBySystem") @DeleteMapping("/todo/revokeTodoBySysInfo")
ResultVo revokeTodoBySysInfo(@RequestBody Map<String, Object> params); ResultVo revokeTodoBySysInfo(@RequestBody Map<String, Object> params);
} }
...@@ -24,4 +24,9 @@ public interface IEmailAttachService extends IService<EmailAttach> { ...@@ -24,4 +24,9 @@ public interface IEmailAttachService extends IService<EmailAttach> {
List<EmailAttach> findByContentId(Long contentId); List<EmailAttach> findByContentId(Long contentId);
String getDownloadPath(Long id);
String getDownloadPath(EmailAttach emailAttach);
String getWpsPreviewUrl(Long id);
} }
...@@ -27,6 +27,8 @@ public interface IEmailContentService extends IService<EmailContent> { ...@@ -27,6 +27,8 @@ public interface IEmailContentService extends IService<EmailContent> {
EmailContent saveContentApi(ApiSendEmailVo emailVo, CustomerUserVo data, List<Long> receiveIds); EmailContent saveContentApi(ApiSendEmailVo emailVo, CustomerUserVo data, List<Long> receiveIds);
EmailContent saveContentApi2(EmailEditApiVo vo, CustomerUserVo formUser);
void setTaskEmail(EmailTaskVo vo); void setTaskEmail(EmailTaskVo vo);
void setDegreeEmail(EmailDegreeVo vo); void setDegreeEmail(EmailDegreeVo vo);
...@@ -37,5 +39,5 @@ public interface IEmailContentService extends IService<EmailContent> { ...@@ -37,5 +39,5 @@ public interface IEmailContentService extends IService<EmailContent> {
List<Long> findRecentlySendEmail(Integer num); List<Long> findRecentlySendEmail(Integer num);
EmailContent saveContent(EmailEditApiVo vo, CustomerUserVo formUser);
} }
...@@ -2,6 +2,7 @@ package com.zq.email.service; ...@@ -2,6 +2,7 @@ package com.zq.email.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zq.common.vo.CustomerUserVo; import com.zq.common.vo.CustomerUserVo;
import com.zq.common.vo.OnlineUserDto;
import com.zq.common.vo.ResultVo; import com.zq.common.vo.ResultVo;
import com.zq.email.entity.EmailContent; import com.zq.email.entity.EmailContent;
import com.zq.email.entity.EmailPerson; import com.zq.email.entity.EmailPerson;
...@@ -24,37 +25,61 @@ import java.util.List; ...@@ -24,37 +25,61 @@ import java.util.List;
*/ */
public interface IEmailPersonService extends IService<EmailPerson> { public interface IEmailPersonService extends IService<EmailPerson> {
//邮件分页总数
Integer emailCount(EmailReqVo vo); Integer emailCount(EmailReqVo vo);
//邮件分页列表
Page<EmailPerson> emailPage(EmailReqVo vo); Page<EmailPerson> emailPage(EmailReqVo vo);
//写邮件
EmailContent emailEditVo(EmailEditVo vo); EmailContent emailEditVo(EmailEditVo vo);
//保存发件人1
EmailPerson saveEmailSender(OnlineUserDto userDto, EmailContent content, Long folderId, Integer isSend);
//保存发件人2
EmailPerson saveEmailSender(CustomerUserVo userVo, EmailContent content, Long folderId, Integer isSend);
//保存收件人
void saveEmailReceiver(List<CustomerUserVo> receiverList, EmailContent content, Long folderId, Integer isPerson, Integer isSend);
//移动邮件到文件夹
void moveEmailFolder(EmailFolderMoveVo vo); void moveEmailFolder(EmailFolderMoveVo vo);
//邮件接收人列表
List<EmailPerson> findReceiverByContentId(Long contentId); List<EmailPerson> findReceiverByContentId(Long contentId);
//邮件接收人列表(包含回复邮件)
List<EmailPerson> findTaskEmailByContentId(Long contentId); List<EmailPerson> findTaskEmailByContentId(Long contentId);
//全部已读
void readAllEmails(Long folderId); void readAllEmails(Long folderId);
//已读
void readEmail(EmailReadVo vo); void readEmail(EmailReadVo vo);
//删除已读(移动到回收站)
void readToBin(Long folderId); void readToBin(Long folderId);
//删除已读(生成EML文件)
MimeMessage emlFile(Long contentId); MimeMessage emlFile(Long contentId);
//删除所有收件人已删除邮件
void deleteAllReceiverDelete(); void deleteAllReceiverDelete();
//删除所有收件人未读邮件
void deleteAllReceiverUnread(); void deleteAllReceiverUnread();
// 0上一封 1下一封 // 0上一封 1下一封
EmailPerson lastAndAfterEmail(EmailLastAndAfterReqVo vo, Integer type); EmailPerson lastAndAfterEmail(EmailLastAndAfterReqVo vo, Integer type);
//邮件撤回
void recallPerson(EmailSendVo vo); void recallPerson(EmailSendVo vo);
//邮件撤回(发件箱列表撤回使用,如果该邮件存在收件人已读无法撤回)
void recallEmail(Long contentId); void recallEmail(Long contentId);
//回收站恢复(列表)
void resumeEmail(List<Long> personIdList); void resumeEmail(List<Long> personIdList);
Integer searchTotal(EmailSearchReqVo vo); Integer searchTotal(EmailSearchReqVo vo);
...@@ -64,13 +89,25 @@ public interface IEmailPersonService extends IService<EmailPerson> { ...@@ -64,13 +89,25 @@ public interface IEmailPersonService extends IService<EmailPerson> {
//当前部门的人员 //当前部门的人员
ResultVo getUserPolice(); ResultVo getUserPolice();
//最近联系人
List<CustomerUserVo> recentlyContacts(List<Long> recentlySendEmail); List<CustomerUserVo> recentlyContacts(List<Long> recentlySendEmail);
//
EmailPerson getByIdAndSendTime(Long personId, LocalDateTime sendTime); EmailPerson getByIdAndSendTime(Long personId, LocalDateTime sendTime);
//移动邮件到自定义文件夹或回收站
void moveDetailEmailFolder(EmailDetailVo vo); void moveDetailEmailFolder(EmailDetailVo vo);
/**
* 法意接口发送短信
* **/
EmailContent sendEmailApi(ApiSendEmailVo emailVo); EmailContent sendEmailApi(ApiSendEmailVo emailVo);
/**
* 其他接口使用
* **/
EmailContent sendEmailApi2(EmailEditApiVo vo); EmailContent sendEmailApi2(EmailEditApiVo vo);
//根据content和文件夹获取person
EmailPerson getByContentAndFolderId(Long contentId, LocalDateTime sendTime, Long folderId);
} }
...@@ -2,6 +2,9 @@ package com.zq.email.service.impl; ...@@ -2,6 +2,9 @@ package com.zq.email.service.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.zq.common.utils.AssertUtils; import com.zq.common.utils.AssertUtils;
import com.zq.common.utils.TokenUtils; import com.zq.common.utils.TokenUtils;
import com.zq.common.vo.*; import com.zq.common.vo.*;
...@@ -13,8 +16,10 @@ import com.zq.email.mapper.EmailAttachMapper; ...@@ -13,8 +16,10 @@ import com.zq.email.mapper.EmailAttachMapper;
import com.zq.email.service.IEmailAttachService; import com.zq.email.service.IEmailAttachService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zq.email.vo.EmailEditVo; import com.zq.email.vo.EmailEditVo;
import com.zq.email.vo.api.EmailEditApiVo; import com.zq.email.vo.FileViewVo;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
...@@ -31,9 +36,12 @@ import java.util.List; ...@@ -31,9 +36,12 @@ import java.util.List;
*/ */
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@Slf4j
public class EmailAttachServiceImpl extends ServiceImpl<EmailAttachMapper, EmailAttach> implements IEmailAttachService { public class EmailAttachServiceImpl extends ServiceImpl<EmailAttachMapper, EmailAttach> implements IEmailAttachService {
private final FileFeignClient fileFeignClient; private final FileFeignClient fileFeignClient;
@Value("${spring.cloud.config.profile}")
private String profile;
@Override @Override
public void saveAttach(EmailEditVo vo, EmailContent content) { public void saveAttach(EmailEditVo vo, EmailContent content) {
...@@ -92,5 +100,74 @@ public class EmailAttachServiceImpl extends ServiceImpl<EmailAttachMapper, Email ...@@ -92,5 +100,74 @@ public class EmailAttachServiceImpl extends ServiceImpl<EmailAttachMapper, Email
return this.lambdaQuery().eq(EmailAttach::getEmailContentId, contentId).orderByAsc(EmailAttach::getId).list(); return this.lambdaQuery().eq(EmailAttach::getEmailContentId, contentId).orderByAsc(EmailAttach::getId).list();
} }
@Override
public String getDownloadPath(Long id) {
EmailAttach emailAttach = this.getById(id);
AssertUtils.notNull(emailAttach, "获取附件信息失败");
String download = emailAttach.getDownloadPath();
if (StrUtil.isBlank(download)){
String year = DateUtil.format(emailAttach.getSendTime(), "yyyy");
String yearMonth = DateUtil.format(emailAttach.getSendTime(), "yyyyMM");
String yearMonthDate = DateUtil.format(emailAttach.getSendTime(), "yyyyMMdd");
String path = "/" + year + "/" + yearMonth + "/" + yearMonthDate + "/" + emailAttach.getAttachId() + "/" + emailAttach.getAttachName();
if (profile.equals("product") || profile.equals("test")) {
download = "http://147.1.3.87/attwjsf_email" + path;
}else if (profile.equals("wanpro") || profile.equals("wantest")){
download = "http://172.28.1.159:82/attwjsf_yj" + path;
}
}else{
if (profile.equals("wanpro") || profile.equals("wantest")) {
download.replaceAll("147.2.3.3", "172.28.1.70");
}
}
return download;
}
@Override
public String getDownloadPath(EmailAttach emailAttach) {
String download = emailAttach.getDownloadPath();
if (StrUtil.isBlank(download)){
String year = DateUtil.format(emailAttach.getSendTime(), "yyyy");
String yearMonth = DateUtil.format(emailAttach.getSendTime(), "yyyyMM");
String yearMonthDate = DateUtil.format(emailAttach.getSendTime(), "yyyyMMdd");
String path = "/" + year + "/" + yearMonth + "/" + yearMonthDate + "/" + emailAttach.getAttachId() + "/" + emailAttach.getAttachName();
if (profile.equals("product") || profile.equals("test")) {
download = "http://147.1.3.87/attwjsf_email" + path;
}else if (profile.equals("wanpro") || profile.equals("wantest")){
download = "http://172.28.1.159:82/attwjsf_yj" + path;
}
}else{
if (profile.equals("wanpro") || profile.equals("wantest")) {
download.replaceAll("147.2.3.3", "172.28.1.70");
}
}
return download;
}
@Override
public String getWpsPreviewUrl(Long id) {
OnlineUserDto adminContext = TokenUtils.getAdminContext();
AssertUtils.notNull(adminContext, "登录已失效,请重新登录后再次尝试!");
EmailAttach emailAttach = this.getById(id);
AssertUtils.notNull(emailAttach, "获取附件信息失败");
AssertUtils.hasText(emailAttach.getAttachName(), "附件名称为空");
String downloadPath = this.getDownloadPath(emailAttach);
String suffix = emailAttach.getAttachName().substring(emailAttach.getAttachName().lastIndexOf(".") + 1);
AssertUtils.hasText(suffix, "错误的文件名称("+emailAttach.getAttachName()+"),导致获取文件类型失败");
FileViewVo viewVo = new FileViewVo();
viewVo.setFileId(IdUtil.fastSimpleUUID());
viewVo.setDownloadPath(downloadPath);
viewVo.setFileType(suffix);
viewVo.setFileName(emailAttach.getAttachName());
viewVo.setUserId(String.valueOf(adminContext.getUserId()));
ResultVo<String> resultVo = fileFeignClient.getViewUrlByDownloadPath(viewVo);
log.info("中台预览文件返回结果: {}", JSONUtil.toJsonStr(resultVo));
AssertUtils.isTrue(resultVo.isSuccess() && StrUtil.isNotBlank(resultVo.getData()), "调用wps组件失败:("+resultVo.getErrMsg()+")");
return resultVo.getData();
}
} }
...@@ -106,7 +106,7 @@ public class EmailContentServiceImpl extends ServiceImpl<EmailContentMapper, Ema ...@@ -106,7 +106,7 @@ public class EmailContentServiceImpl extends ServiceImpl<EmailContentMapper, Ema
content.setSendUserEmail(data.getUsername()); content.setSendUserEmail(data.getUsername());
content.setSendUserName(data.getNickName()); content.setSendUserName(data.getNickName());
content.setSendTime(LocalDateTime.now()); content.setSendTime(LocalDateTime.now());
content.setIsTask(WhetherEnum.YES.getKey()); content.setIsTask(WhetherEnum.NO.getKey());
content.setSmsRemind(WhetherEnum.NO.getKey()); content.setSmsRemind(WhetherEnum.NO.getKey());
content.setMessageRemind(WhetherEnum.NO.getKey()); content.setMessageRemind(WhetherEnum.NO.getKey());
...@@ -123,6 +123,39 @@ public class EmailContentServiceImpl extends ServiceImpl<EmailContentMapper, Ema ...@@ -123,6 +123,39 @@ public class EmailContentServiceImpl extends ServiceImpl<EmailContentMapper, Ema
} }
@Override @Override
public EmailContent saveContentApi2(EmailEditApiVo vo, CustomerUserVo formUser) {
EmailContent content = new EmailContent();
content.setTitle(vo.getTitle());
content.setContent(vo.getContent());
content.setDegree(vo.getDegree());
content.setSendUserId(formUser.getUserId());
content.setSendUserEmail(formUser.getUsername());
content.setSendUserName(formUser.getNickName());
content.setSendTime(LocalDateTime.now());
content.setIsTask(vo.getIsTask());
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());
}
this.saveOrUpdate(content);
return content;
}
@Override
public void setTaskEmail(EmailTaskVo vo) { public void setTaskEmail(EmailTaskVo vo) {
this.lambdaUpdate().in(EmailContent::getId, vo.getContentId()).set(EmailContent::getIsTask, vo.getIsTask()).update(); this.lambdaUpdate().in(EmailContent::getId, vo.getContentId()).set(EmailContent::getIsTask, vo.getIsTask()).update();
} }
...@@ -187,37 +220,4 @@ public class EmailContentServiceImpl extends ServiceImpl<EmailContentMapper, Ema ...@@ -187,37 +220,4 @@ public class EmailContentServiceImpl extends ServiceImpl<EmailContentMapper, Ema
return list; return list;
} }
@Override
public EmailContent saveContent(EmailEditApiVo vo, CustomerUserVo formUser) {
EmailContent content = new EmailContent();
content.setTitle(vo.getTitle());
content.setContent(vo.getContent());
content.setDegree(vo.getDegree());
content.setSendUserId(formUser.getUserId());
content.setSendUserEmail(formUser.getUsername());
content.setSendUserName(formUser.getNickName());
content.setSendTime(LocalDateTime.now());
content.setIsTask(WhetherEnum.YES.getKey());
content.setSmsRemind(WhetherEnum.NO.getKey());
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());
}
this.saveOrUpdate(content);
return content;
}
} }
package com.zq.email.utils;
import cn.hutool.core.codec.Base64;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import com.zq.common.vo.CustomerUserVo;
import com.zq.common.vo.ResultVo;
import com.zq.email.constants.EmailConstant;
import com.zq.email.dto.SystemInfo;
import com.zq.email.entity.EmailContent;
import com.zq.email.feign.MessageFeignClient;
import com.zq.email.properties.SmsProperties;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author wilmiam
* @since 2022-12-10 17:09
*/
@Slf4j
@Component
public class MsgUtil {
@Resource
public MessageFeignClient messageFeignClient;
/**
* 发送批量短信
*
* @return
*/
@Async
public void sendMsg(EmailContent content, List<CustomerUserVo> userVoList, SystemInfo systemInfo) {
Map<String, Object> params = new HashMap<>();
params .put("systemTag", EmailConstant.SYSTEM_TAG);
params .put("title","您有一封新邮件提醒");
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());
log.debug("---发送内部消息打印内容: {}", JSONUtil.toJsonStr(params));
messageFeignClient.sendApi(params);
messageFeignClient.addToDoApi(params);
}
@Async
public void revokeMsgByBusinessId(Long businessId) {
Map<String, Object> params = new HashMap<>();
params .put("systemTag", EmailConstant.SYSTEM_TAG);
params .put("businessId", businessId);
log.debug("---撤回内部消息打印内容: {}", JSONUtil.toJsonStr(params));
messageFeignClient.revokeWebBySysInfo(params);
messageFeignClient.revokeTodoBySysInfo(params);
}
@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);
log.debug("---撤回内部消息打印内容: {}", JSONUtil.toJsonStr(params));
messageFeignClient.revokeWebBySysInfo(params);
messageFeignClient.revokeTodoBySysInfo(params);
}
}
...@@ -12,6 +12,7 @@ import com.zq.common.vo.CustomerUserVo; ...@@ -12,6 +12,7 @@ import com.zq.common.vo.CustomerUserVo;
import com.zq.common.vo.ResultVo; import com.zq.common.vo.ResultVo;
import com.zq.email.properties.SmsProperties; import com.zq.email.properties.SmsProperties;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.Resource; import javax.annotation.Resource;
...@@ -36,6 +37,7 @@ public class SmsUtil { ...@@ -36,6 +37,7 @@ public class SmsUtil {
* *
* @return * @return
*/ */
@Async
public void sendBatchSms(List<CustomerUserVo> userVoList, String content, Long contentId) { public void sendBatchSms(List<CustomerUserVo> userVoList, String content, Long contentId) {
String regex = "^1[3-9]\\d{9}"; String regex = "^1[3-9]\\d{9}";
StringBuffer sb = new StringBuffer(); StringBuffer sb = new StringBuffer();
......
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