package com.yc.crm.mail.action;
|
|
import com.yc.crm.mail.entity.*;
|
import com.yc.crm.mail.service.MailAccountIfc;
|
import com.yc.crm.mail.service.MailFileIfc;
|
import com.yc.crm.mail.service.MailIfc;
|
import com.yc.crm.mail.service.MailServiceIfc;
|
import com.yc.crm.mail.util.AllBackMsg;
|
import com.yc.entity.AttachmentConfig;
|
import com.yc.entity.DataSourceEntity;
|
import com.yc.entity.attachment.AttachmentEntity;
|
import com.yc.factory.FactoryBean;
|
import com.yc.multiData.MultiDataSource;
|
import com.yc.multiData.SpObserver;
|
import com.yc.utils.SessionKey;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
import org.springframework.web.bind.annotation.*;
|
|
import javax.mail.MessagingException;
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpSession;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.regex.Matcher;
|
import java.util.regex.Pattern;
|
|
/**
|
* @BelongsProject: eCoWorksV3
|
* @BelongsPackage: com.yc.crm.mail.action
|
* @author: xinyb
|
* @CreateTime: 2024-08-07 17:30
|
* @Description: 邮箱发送 收件
|
*/
|
@CrossOrigin
|
@RestController
|
@RequestMapping("/crm/mail")
|
public class MailController {
|
ThreadPoolTaskExecutor threadPoolExecutor = (ThreadPoolTaskExecutor) FactoryBean.getBean("threadPoolExecutor");//线程池
|
|
final static String shoppingImageServer = AttachmentConfig.get("attachment.server");
|
@Autowired
|
MailAccountIfc emailAccountIfc;
|
@Autowired
|
MailIfc emailIfc;
|
@Autowired
|
MailServiceIfc mailServiceIfc;
|
@Autowired
|
MailFileIfc mailFileIfc;
|
|
private static final Pattern EMAIL_PATTERN =
|
Pattern.compile("^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$");
|
|
|
/**
|
* 左边结构上层
|
*
|
* @return
|
*/
|
@GetMapping("/getEmailModule.do")
|
public AllBackMsg getEmailModule(HttpServletRequest request, HttpServletResponse response) throws Exception {
|
AllBackMsg msg = new AllBackMsg();
|
try {
|
HttpSession session = request.getSession();
|
String userCode = (String) session.getAttribute(SessionKey.USERCODE);//当前登录用户
|
if (StringUtils.isBlank(userCode)) {//获取不到当前用户直接结束
|
msg.setFail("获取不到用户信息");
|
return msg;
|
}
|
DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(request);//获取数据源信息
|
SpObserver.setDBtoInstance("_" + dataSourceEntity.getDbId());//切换数据源
|
List<MailModuleEntity> list = emailIfc.getMailModuleList(userCode);
|
msg.setSuccess("执行成功", list);
|
} catch (Exception e) {
|
msg.setFail(e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
return msg;
|
}
|
|
/**
|
* 左边结构下层
|
*
|
* @return
|
*/
|
@GetMapping("/getEmailModuleBelow.do")
|
public AllBackMsg getEmailModuleBelow(HttpServletRequest request, HttpServletResponse response) throws Exception {
|
AllBackMsg msg = new AllBackMsg();
|
try {
|
HttpSession session = request.getSession();
|
String userCode = (String) session.getAttribute(SessionKey.USERCODE);//当前登录用户
|
if (StringUtils.isBlank(userCode)) {//获取不到当前用户直接结束
|
msg.setFail("获取不到用户信息");
|
return msg;
|
}
|
DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(request);//获取数据源信息
|
SpObserver.setDBtoInstance("_" + dataSourceEntity.getDbId());//切换数据源
|
List<MailModuleBelowEntity> list = emailIfc.getMailModuleBelowList(userCode);
|
msg.setSuccess("执行成功", list);
|
} catch (Exception e) {
|
msg.setFail(e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
return msg;
|
}
|
|
/**
|
* 获取邮件列表(包括草稿箱,收件箱)
|
*
|
* @return
|
*/
|
@GetMapping("/getMailList.do")
|
public AllBackMsg getMailList(String mail, @RequestParam(defaultValue = "1") Integer mailType,
|
@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "20") Integer limit, boolean isNoRead, HttpServletRequest request, HttpServletResponse response) throws Exception {
|
AllBackMsg msg = new AllBackMsg();
|
try {
|
if (StringUtils.isNotBlank(mail)) {
|
if (!EMAIL_PATTERN.matcher(mail).matches()) {
|
msg.setFail("邮箱的各式不争取");
|
return msg;
|
}
|
}
|
HttpSession session = request.getSession();
|
String userCode = (String) session.getAttribute(SessionKey.USERCODE);//当前登录用户
|
if (StringUtils.isBlank(userCode)) {//获取不到当前用户直接结束
|
msg.setFail("获取不到用户信息");
|
return msg;
|
}
|
DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(request);//获取数据源信息
|
SpObserver.setDBtoInstance("_" + dataSourceEntity.getDbId());//切换数据源
|
List<t482101HList> t482101HEntityList = emailIfc.getReceivingMailList(mail, mailType, isNoRead, userCode, page, limit);
|
Map<String, Object> map = new HashMap<>();
|
map.put("page", page);
|
map.put("limit", limit);
|
if (t482101HEntityList.size() > 0) {
|
map.put("total", emailIfc.getMailTotal(mail, mailType, isNoRead, null, userCode));
|
map.put("list", t482101HEntityList);
|
} else {
|
map.put("list", new ArrayList<>());
|
}
|
msg.setSuccess("执行完成", map);
|
} catch (Exception e) {
|
msg.setFail(e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
return msg;
|
}
|
|
/**
|
* 获取待处理邮件列表
|
*
|
* @return
|
*/
|
@GetMapping("/getHandleMailList.do")
|
public AllBackMsg getHandleMailList(String mail, @RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "20") Integer limit,
|
HttpServletRequest request, HttpServletResponse response) throws Exception {
|
AllBackMsg msg = new AllBackMsg();
|
try {
|
if (StringUtils.isNotBlank(mail)) {
|
if (!EMAIL_PATTERN.matcher(mail).matches()) {
|
msg.setFail("邮箱的各式不争取");
|
return msg;
|
}
|
}
|
HttpSession session = request.getSession();
|
String userCode = (String) session.getAttribute(SessionKey.USERCODE);//当前登录用户
|
if (StringUtils.isBlank(userCode)) {//获取不到当前用户直接结束
|
msg.setFail("获取不到用户信息");
|
return msg;
|
}
|
DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(request);//获取数据源信息
|
SpObserver.setDBtoInstance("_" + dataSourceEntity.getDbId());//切换数据源
|
List<t482101HList> t482101HEntityList = emailIfc.getHandleMailList(mail, userCode, page, limit);
|
Map<String, Object> map = new HashMap<>();
|
map.put("page", page);
|
map.put("limit", limit);
|
if (t482101HEntityList.size() > 0) {
|
map.put("total", emailIfc.getMailTotal(mail, 3, false, null, userCode));
|
map.put("list", t482101HEntityList);
|
} else {
|
map.put("list", new ArrayList<>());
|
}
|
msg.setSuccess("执行完成", map);
|
} catch (Exception e) {
|
msg.setFail(e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
return msg;
|
}
|
|
/**
|
* 获取邮件详情
|
*
|
* @return
|
*/
|
@GetMapping("/getMailInfo.do")
|
public AllBackMsg getMailInfo(String docCode, HttpServletRequest request, HttpServletResponse response) throws Exception {
|
AllBackMsg msg = new AllBackMsg();
|
try {
|
if (StringUtils.isBlank(docCode)) {//获取不到当前用户直接结束
|
msg.setFail("缺少邮箱唯一码docCode,请检查");
|
return msg;
|
}
|
DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(request);//获取数据源信息
|
SpObserver.setDBtoInstance("_" + dataSourceEntity.getDbId());//切换数据源
|
t482101HEntity t482101HEntity = emailIfc.getReceivingMailInfo(docCode);
|
if (t482101HEntity != null) {
|
if (StringUtils.isNotBlank(t482101HEntity.getAttachmentList())) {//附件的处理
|
//获取到附件内容
|
List<AttachmentEntity> attachmentEntities = mailFileIfc.getAttachmentEntityList(t482101HEntity.getAttachmentList());
|
List<Map<String, Object>> list = new ArrayList<>();
|
if (attachmentEntities.size() > 0) {
|
for (AttachmentEntity a : attachmentEntities) {
|
Map<String, Object> map = new HashMap<>();
|
map.put("url", "http://yingchen.onbus.cn:9010" + "/uploads/email/" + dataSourceEntity.getDbId() + "/482101/" + a.getUnid() + "@p@" + a.getPhysicalFile());
|
if (!t482101HEntity.getMailType().equals(1)) {//不是收件类型(1)
|
map.put("url", shoppingImageServer + "/uploads/attachment/" + dataSourceEntity.getDbId() + "/482101/" + a.getUnid() + "@p@" + a.getSeq() + "." + a.getFileType());
|
}
|
map.put("name", a.getOriginalFileName());
|
map.put("size", a.getFileSize());
|
map.put("fileType", a.getFileType());
|
list.add(map);
|
}
|
t482101HEntity.setAttachmentPath(list);
|
}
|
}
|
msg.setSuccess("执行完成", t482101HEntity);
|
}
|
} catch (Exception e) {
|
msg.setFail(e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
return msg;
|
}
|
|
/**
|
* 删除邮件
|
*
|
* @return
|
*/
|
@PostMapping("/deleteEmail.do")
|
public AllBackMsg deleteEmail(@RequestBody List<String> docCode, HttpServletRequest request, HttpServletResponse response) throws Exception {
|
AllBackMsg msg = new AllBackMsg();
|
try {
|
if (docCode == null && docCode.size() == 0) {//获取不到当前用户直接结束
|
msg.setFail("请选中删除的邮件");
|
return msg;
|
}
|
String arrayCode = StringUtils.join(docCode, ",");
|
HttpSession session = request.getSession();
|
String userCode = (String) session.getAttribute(SessionKey.USERCODE);//当前登录用户
|
if (StringUtils.isBlank(userCode)) {//获取不到当前用户直接结束
|
msg.setFail("获取不到用户信息");
|
return msg;
|
}
|
DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(request);//获取数据源信息
|
SpObserver.setDBtoInstance("_" + dataSourceEntity.getDbId());//切换数据源
|
Integer cont = emailIfc.deleteEmail(userCode, arrayCode);
|
if (cont > 0) {
|
msg.setOk("已删除");
|
}
|
} catch (Exception e) {
|
msg.setFail(e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
return msg;
|
}
|
|
/**
|
* 快速回复
|
*
|
* @return
|
*/
|
@PostMapping("/setQuickReply.do")
|
public AllBackMsg setQuickReply(@RequestBody Map<String, Object> reply, HttpServletRequest request, HttpServletResponse response) throws Exception {
|
AllBackMsg msg = new AllBackMsg();
|
try {
|
if (reply.get("docCode") == null) {
|
msg.setFail("获取不到回复邮件的唯一docCode值");
|
return msg;
|
}
|
if (reply.get("content") == null) {
|
msg.setFail("请输入回复内容");
|
return msg;
|
}
|
HttpSession session = request.getSession();
|
String userCode = (String) session.getAttribute(SessionKey.USERCODE);//当前登录用户
|
if (StringUtils.isBlank(userCode)) {//获取不到当前用户直接结束
|
msg.setFail("获取不到用户信息");
|
return msg;
|
}
|
String docCode = (String) reply.get("docCode");//编号
|
String content = (String) reply.get("content");//内容
|
Integer count = mailServiceIfc.setQuickReply(docCode, content);
|
Map<String, Object> map = new HashMap<>();
|
if (count.equals(1)) {
|
map.put("code", 0);
|
map.put("docCode", docCode);
|
map.put("msg", "邮件已回复");
|
msg.setSuccess("执行成功", map);
|
} else {
|
map.put("code", -1);
|
map.put("docCode", docCode);
|
map.put("msg", "邮件回复失败");
|
msg.setSuccess("执行成功", map);
|
}
|
} catch (Exception e) {
|
msg.setFail(e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
return msg;
|
}
|
|
/**
|
* 保存草稿箱(保存或修改)
|
*
|
* @return
|
*/
|
@PostMapping("/saveMailDrafts.do")
|
public AllBackMsg saveMailDrafts(@RequestBody t482101HEntity t482101H, HttpServletRequest request, HttpServletResponse response) throws Exception {
|
AllBackMsg msg = new AllBackMsg();
|
try {
|
HttpSession session = request.getSession();
|
String userCode = (String) session.getAttribute(SessionKey.USERCODE);//当前登录用户
|
if (StringUtils.isBlank(userCode)) {//获取不到当前用户直接结束
|
msg.setFail("获取不到用户信息");
|
return msg;
|
}
|
if (StringUtils.isNotBlank(t482101H.getSender())) {
|
if (!EMAIL_PATTERN.matcher(t482101H.getSender()).matches()) {
|
msg.setFail("发送人邮箱:" + t482101H.getSender() + "的格式不正确");
|
return msg;
|
}
|
}
|
if (t482101H.getReceiver() != null && t482101H.getReceiver().size() > 0) {
|
for (String mail : t482101H.getReceiver()) {
|
if (!EMAIL_PATTERN.matcher(mail).matches()) {
|
msg.setFail("收件人邮箱:" + mail + "的格式不正确");
|
return msg;
|
}
|
}
|
|
}
|
String companyId = (String) session.getAttribute(SessionKey.COMPANY_ID);
|
String companyName = (String) session.getAttribute(SessionKey.COMPANY_NAME);
|
String userName = (String) session.getAttribute(SessionKey.USER_NAME);
|
t482101H.setCompanyId(companyId);
|
t482101H.setCompanyName(companyName);
|
t482101H.setUserCode(userCode);
|
t482101H.setUserName(userName);
|
t482101H.setMailType(0);//草稿
|
t482101H.setReadFlag(1);//已读
|
t482101H.setAttachmentList(t482101H.getAttachmentList());
|
DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(request);//获取数据源信息
|
SpObserver.setDBtoInstance("_" + dataSourceEntity.getDbId());//切换数据源
|
t482101H = emailIfc.saveReceivingMail(t482101H);
|
Map<String, Object> map = new HashMap<>();
|
map.put("docCode", t482101H.getDocCode());
|
msg.setSuccess("执行成功", map);
|
} catch (Exception e) {
|
msg.setFail(e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
return msg;
|
}
|
|
|
/**
|
* 收邮件
|
*
|
* @param request
|
* @param response
|
* @return
|
*/
|
@GetMapping("/receive.do")
|
public AllBackMsg getReceiveMail(String mail, HttpServletRequest request, HttpServletResponse response) throws Exception {
|
AllBackMsg msg = new AllBackMsg();
|
try {
|
HttpSession session = request.getSession();
|
String userCode = (String) session.getAttribute(SessionKey.USERCODE);//当前登录用户
|
if (StringUtils.isBlank(userCode)) {//获取不到当前用户直接结束
|
msg.setFail("获取不到用户信息");
|
return msg;
|
}
|
if (StringUtils.isNotBlank(mail)) {
|
if (!EMAIL_PATTERN.matcher(mail).matches()) {
|
msg.setFail("请输入有效的邮箱");
|
return msg;
|
}
|
}
|
DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(request);//获取数据源信息
|
SpObserver.setDBtoInstance("_" + dataSourceEntity.getDbId());//切换数据源
|
//根据当前用户查询绑定的邮箱信息
|
List<T482102Entity> emailEntities = new ArrayList<>();
|
if (StringUtils.isBlank(mail)) {
|
emailEntities = emailAccountIfc.getAccount(userCode);//返回邮箱的账号信息
|
} else {
|
T482102Entity T482102 = emailAccountIfc.getAccountInfo(userCode, mail);
|
if (T482102 != null) {
|
emailEntities.add(T482102);
|
}
|
}
|
if (emailEntities.size() > 0) {
|
List<t482101HEntity> mails = new ArrayList<>();
|
Map<String, Object> map = new HashMap<>();
|
for (T482102Entity e : emailEntities) {//遍历用户绑定邮箱
|
//多线程收邮件
|
threadPoolExecutor.execute(new ReceivingEmailsSave(mailServiceIfc, e, new FoundationEntity(request)));
|
}
|
map.put("code", 0);
|
map.put("msg", "请销等,邮件正在系统保存");
|
msg.setSuccess("执行成功", map);
|
} else {
|
msg.setFail("没有找到绑定的邮箱信息");
|
}
|
} catch (Exception e) {
|
msg.setFail(e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
return msg;
|
}
|
|
|
/**
|
* 发邮件
|
*
|
* @param request
|
* @param response
|
* @return
|
*/
|
@PostMapping("/sendingMail.do")
|
public AllBackMsg sendingMail(@RequestBody t482101HEntity t482101H, HttpServletRequest request, HttpServletResponse response) throws Exception {
|
AllBackMsg msg = new AllBackMsg();
|
try {
|
HttpSession session = request.getSession();
|
String userCode = (String) session.getAttribute(SessionKey.USERCODE);//当前登录用户
|
if (StringUtils.isBlank(userCode)) {//获取不到当前用户直接结束
|
msg.setFail("获取不到用户信息");
|
return msg;
|
}
|
if (StringUtils.isNotBlank(t482101H.getSender())) {
|
if (!EMAIL_PATTERN.matcher(t482101H.getSender()).matches()) {
|
msg.setFail("发送人邮箱:" + t482101H.getSender() + "的格式不正确");
|
return msg;
|
}
|
}
|
if (t482101H.getReceiver() != null && t482101H.getReceiver().size() > 0) {
|
for (String mail : t482101H.getReceiver()) {
|
if (!EMAIL_PATTERN.matcher(mail).matches()) {
|
msg.setFail("收件人邮箱:" + mail + "的格式不正确");
|
return msg;
|
}
|
}
|
|
}
|
String companyId = (String) session.getAttribute(SessionKey.COMPANY_ID);
|
String companyName = (String) session.getAttribute(SessionKey.COMPANY_NAME);
|
String userName = (String) session.getAttribute(SessionKey.USER_NAME);
|
t482101H.setCompanyId(companyId);
|
t482101H.setCompanyName(companyName);
|
t482101H.setUserCode(userCode);
|
t482101H.setUserName(userName);
|
t482101H.setMailType(2);//发件
|
t482101H.setAttachmentList(t482101H.getAttachmentList());
|
DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(request);//获取数据源信息
|
SpObserver.setDBtoInstance("_" + dataSourceEntity.getDbId());//切换数据源
|
//发送
|
mailServiceIfc.sendEmails(t482101H, request);
|
msg.setOk("发送成功");
|
} catch (MessagingException e) {
|
String error = e.getCause() != null ? e.getCause().getMessage() : e.getMessage();
|
if (StringUtils.isNotBlank(error)) {
|
String[] arrayError = error.split("#");
|
if (arrayError.length == 2) {
|
Map<String, Object> map = new HashMap<>();
|
map.put("docCode", arrayError[1]);
|
msg.setError(arrayError[0], map);
|
} else {
|
msg.setFail(error);
|
}
|
} else {
|
msg.setFail(error);
|
}
|
} catch (Exception e) {
|
msg.setFail(e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
return msg;
|
}
|
|
/**
|
* 标记已读
|
*
|
* @param request
|
* @param response
|
* @return
|
*/
|
@PostMapping("/updateRead.do")
|
public AllBackMsg updateRead(@RequestBody Map<String, Object> map, HttpServletRequest request, HttpServletResponse response) throws Exception {
|
AllBackMsg msg = new AllBackMsg();
|
try {
|
HttpSession session = request.getSession();
|
String userCode = (String) session.getAttribute(SessionKey.USERCODE);//当前登录用户
|
if (StringUtils.isBlank(userCode)) {//获取不到当前用户直接结束
|
msg.setFail("获取不到用户信息");
|
return msg;
|
}
|
List<String> docCode = (List<String>) map.get("list");
|
if (docCode == null && docCode.size() == 0) {
|
msg.setFail("请选择标记邮件");
|
return msg;
|
}
|
if (map.get("status") == null) {
|
msg.setFail("请传入状态值");
|
return msg;
|
}
|
boolean read = (Boolean) map.get("status");
|
String arrayCode = StringUtils.join(docCode, ",");
|
DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(request);//获取数据源信息
|
SpObserver.setDBtoInstance("_" + dataSourceEntity.getDbId());//切换数据源
|
emailIfc.updateRead(arrayCode, read);
|
msg.setOk("标记成功");
|
} catch (Exception e) {
|
msg.setFail(e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
return msg;
|
}
|
|
/**
|
* 移动邮件分类
|
*
|
* @param request
|
* @param response
|
* @return
|
*/
|
@PostMapping("/updateMailType.do")
|
public AllBackMsg updateMailType(@RequestBody Map<String, Object> map, HttpServletRequest request, HttpServletResponse response) throws Exception {
|
AllBackMsg msg = new AllBackMsg();
|
try {
|
HttpSession session = request.getSession();
|
String userCode = (String) session.getAttribute(SessionKey.USERCODE);//当前登录用户
|
if (StringUtils.isBlank(userCode)) {//获取不到当前用户直接结束
|
msg.setFail("获取不到用户信息");
|
return msg;
|
}
|
if (map.get("docCode") == null) {
|
msg.setFail("获取不到移动邮件编号docCode");
|
return msg;
|
}
|
String docCode = (String) map.get("docCode");
|
Integer folderId = map.get("folderId") == null ? 0 : (Integer) map.get("folderId");
|
List<String> tagArray = (List<String>) map.get("tagId");
|
if (folderId.equals(0) && (tagArray == null || tagArray.size() == 0)) {
|
msg.setFail("移动邮件分类不能为空");
|
return msg;
|
}
|
String tagId = "";
|
if (tagArray != null && tagArray.size() > 0) {
|
tagId = StringUtils.join(tagArray, ",");
|
}
|
DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(request);//获取数据源信息
|
SpObserver.setDBtoInstance("_" + dataSourceEntity.getDbId());//切换数据源
|
emailIfc.updateMailType(docCode, folderId, tagId);
|
msg.setOk("移动成功");
|
} catch (Exception e) {
|
msg.setFail(e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
return msg;
|
}
|
|
/**
|
* 加载不同目录里的邮件
|
*
|
* @param request
|
* @param response
|
* @return
|
*/
|
@GetMapping("/classificationMail.do")
|
public AllBackMsg classificationMail(@RequestParam(defaultValue = "-1") Integer id, String type, @RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "20") Integer limit,
|
HttpServletRequest request, HttpServletResponse response) throws Exception {
|
AllBackMsg msg = new AllBackMsg();
|
try {
|
HttpSession session = request.getSession();
|
String userCode = (String) session.getAttribute(SessionKey.USERCODE);//当前登录用户
|
if (StringUtils.isBlank(userCode)) {//获取不到当前用户直接结束
|
msg.setFail("获取不到用户信息");
|
return msg;
|
}
|
if (id == null || id.equals(-1)) {
|
msg.setFail("获取不到文件Id");
|
return msg;
|
}
|
if (StringUtils.isBlank(type)) {
|
msg.setFail("获取不到文件类型");
|
return msg;
|
}
|
type = type + "_" + id;//组装下
|
DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(request);//获取数据源信息
|
SpObserver.setDBtoInstance("_" + dataSourceEntity.getDbId());//切换数据源
|
List<t482101HList> t482101 = emailIfc.getFolderMailList(type, userCode, page, limit);
|
Map<String, Object> map = new HashMap<>();
|
map.put("page", page);
|
map.put("limit", limit);
|
if (t482101.size() > 0) {
|
map.put("total", emailIfc.getMailTotal(null, 6, false, type, userCode));
|
map.put("list", t482101);
|
} else {
|
map.put("list", new ArrayList<>());
|
}
|
msg.setSuccess("执行完成", map);
|
} catch (Exception e) {
|
msg.setFail(e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
return msg;
|
}
|
|
/**
|
* 待处理邮件
|
*
|
* @param request
|
* @param response
|
* @return
|
*/
|
@PostMapping("/updateHandle.do")
|
public AllBackMsg updateHandle(@RequestBody Map<String, Object> param, HttpServletRequest request, HttpServletResponse response) throws Exception {
|
AllBackMsg msg = new AllBackMsg();
|
try {
|
HttpSession session = request.getSession();
|
String userCode = (String) session.getAttribute(SessionKey.USERCODE);//当前登录用户
|
if (StringUtils.isBlank(userCode)) {//获取不到当前用户直接结束
|
msg.setFail("获取不到用户信息");
|
return msg;
|
}
|
if (param.get("docCode") == null) {
|
msg.setFail("邮件唯一标识docCode不能空");
|
return msg;
|
}
|
List<String> docCode = (List<String>) param.get("docCode");//待处理的单号
|
String handleTime = "";//待处理时间
|
if (param.get("handleTime") != null && !param.get("handleTime").equals("")) {
|
handleTime = (String) param.get("handleTime");
|
}
|
if (StringUtils.isNotBlank(handleTime)) {
|
// 正则表达式,用于匹配日期格式
|
String regex = "\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}";
|
Pattern pattern = Pattern.compile(regex);
|
Matcher matcher = pattern.matcher(handleTime);
|
if (!matcher.matches()) {
|
msg.setFail("待处理日期格式为:yyyy-MM-dd HH:mm(如:1900-08-01 08:00)。请检查");
|
return msg;
|
}
|
}
|
DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(request);//获取数据源信息
|
SpObserver.setDBtoInstance("_" + dataSourceEntity.getDbId());//切换数据源
|
emailIfc.updateMailHandle(handleTime, StringUtils.join(docCode, ","));
|
if(StringUtils.isBlank(handleTime)){//没值就是完成
|
msg.setOk("待处理邮件已完成");
|
}else{
|
msg.setOk("标记为待处理邮件");
|
}
|
} catch (Exception e) {
|
msg.setFail(e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
return msg;
|
}
|
|
private class ReceivingEmailsSave implements Runnable {
|
final MailServiceIfc mailServiceIfc;
|
final T482102Entity t482102;
|
final FoundationEntity foundation;
|
|
public ReceivingEmailsSave(MailServiceIfc mailServiceIfc, T482102Entity t482102, FoundationEntity foundation) {
|
this.mailServiceIfc = mailServiceIfc;
|
this.t482102 = t482102;
|
this.foundation = foundation;
|
}
|
|
@Override
|
public void run() {
|
try {
|
SpObserver.setDBtoInstance("_" + foundation.getDbId());
|
//收邮件
|
mailServiceIfc.receivingEmails(t482102, foundation);
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
}
|
}
|
|
}
|