xinyb
2024-09-19 1956855b43808d81f246d9570d477ac1cbc404b7
src/com/yc/crm/mail/action/MailController.java
@@ -1,22 +1,31 @@
package com.yc.crm.mail.action;
import com.yc.crm.mail.entity.T482102Entity;
import com.yc.crm.mail.entity.t482101HEntity;
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.Pattern;
/**
@@ -28,16 +37,50 @@
 */
@CrossOrigin
@RestController
@RequestMapping("/crm/mail/")
@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;
    }
    /**
     * 获取邮件列表(包括草稿箱,收件箱)
@@ -45,29 +88,66 @@
     * @return
     */
    @GetMapping("/getMailList.do")
    public AllBackMsg getMailList(String mail, @RequestParam(defaultValue = "1") Integer mailType, boolean isNoRead, HttpServletRequest request, HttpServletResponse response) throws Exception {
    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 {
//            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;
                }
            }
            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<t482101HEntity> t482101HEntityList = emailIfc.getReceivingMailList(mail, mailType, isNoRead);
            List<t482101HList> t482101HEntityList = emailIfc.getReceivingMailList(mail, mailType, isNoRead, userCode,page,limit);
            if (t482101HEntityList.size() > 0) {
                msg.setSuccess("操作完成", t482101HEntityList);
                msg.setSuccess("执行完成", t482101HEntityList);
            }
        } catch (Exception e) {
            msg.setError("执行出错", e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
            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);
            if (t482101HEntityList.size() > 0) {
                msg.setSuccess("执行完成", t482101HEntityList);
            }
        } catch (Exception e) {
            msg.setFail(e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
        } finally {
            SpObserver.setDBtoInstance();
        }
@@ -80,33 +160,32 @@
     * @return
     */
    @GetMapping("/getMailInfo.do")
    public AllBackMsg getMailInfo(String mail, String docCode, HttpServletRequest request, HttpServletResponse response) throws Exception {
    public AllBackMsg getMailInfo(String docCode, 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.isBlank(docCode)) {//获取不到当前用户直接结束
                msg.setFail("缺少邮箱唯一码docCode,请检查");
                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());//切换数据源
            t482101HEntity t482101HEntity = emailIfc.getReceivingMailInfo(mail, docCode);
            t482101HEntity t482101HEntity = emailIfc.getReceivingMailInfo(docCode);
            if (t482101HEntity != null) {
                msg.setSuccess("操作完成", t482101HEntity);
                if (StringUtils.isNotBlank(t482101HEntity.getAttachmentList())) {//附件的处理
                    //获取到附件内容
                    List<AttachmentEntity> attachmentEntities = mailFileIfc.getAttachmentEntityList(t482101HEntity.getAttachmentList());
                    List<String> list = new ArrayList<>();
                    if (attachmentEntities.size() > 0) {
                        for (AttachmentEntity a : attachmentEntities) {
                            list.add(shoppingImageServer + "/uploads/email/" + dataSourceEntity.getDbId() + "/482101/" + a.getUnid() + "@p@" + a.getPhysicalFile());
                        }
                        t482101HEntity.setAttachmentPath(list);
                    }
                }
                msg.setSuccess("执行完成", t482101HEntity);
            }
        } catch (Exception e) {
            msg.setError("执行出错", e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
            msg.setFail(e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
        } finally {
            SpObserver.setDBtoInstance();
        }
@@ -114,26 +193,79 @@
    }
    /**
     * 获取邮件详情
     * 删除邮件
     *
     * @return
     */
    @GetMapping("/deleteReceivingMail.do")
    public AllBackMsg deleteReceivingMail(String docCode, HttpServletRequest request, HttpServletResponse response) throws Exception {
    @PostMapping("/deleteEmail.do")
    public AllBackMsg deleteEmail(@RequestBody List<String> docCode, HttpServletRequest request, HttpServletResponse response) throws Exception {
        AllBackMsg msg = new AllBackMsg();
        try {
            if (StringUtils.isBlank(docCode)) {//获取不到当前用户直接结束
                msg.setFail("缺少邮箱唯一码docCode,请检查");
            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.deleteReceivingMail(docCode);
            Integer cont = emailIfc.deleteEmail(userCode, arrayCode);
            if (cont > 0) {
                msg.setSuccess("操作完成", "邮件已删除");
                msg.setOk("已删除");
            }
        } catch (Exception e) {
            msg.setError("执行出错", e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
            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();
        }
@@ -161,11 +293,14 @@
                    return msg;
                }
            }
            if (StringUtils.isNotBlank(t482101H.getReceiver())) {
                if (!EMAIL_PATTERN.matcher(t482101H.getReceiver()).matches()) {
                    msg.setFail("收件人邮箱:" + t482101H.getReceiver() + "的格式不正确");
                    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);
@@ -175,91 +310,16 @@
            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);
            msg.setSuccess("操作完成", "执行成功");
            Map<String, Object> map = new HashMap<>();
            map.put("docCode", t482101H.getDocCode());
            msg.setSuccess("执行成功", map);
        } catch (Exception e) {
            msg.setError("执行出错", e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
        } finally {
            SpObserver.setDBtoInstance();
        }
        return msg;
    }
    /**
     * 删除草稿箱
     *
     * @return
     */
    @GetMapping("/deleteMailDrafts.do")
    public AllBackMsg deleteMailDrafts(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());//切换数据源
            int cont = emailIfc.deleteMailDrafts(docCode);
            if (cont > 0) {
                msg.setSuccess("操作完成", "删除成功");
            }
        } catch (Exception e) {
            msg.setError("执行出错", 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 (StringUtils.isNotBlank(t482101H.getReceiver())) {
                if (!EMAIL_PATTERN.matcher(t482101H.getReceiver()).matches()) {
                    msg.setFail("收件人邮箱:" + t482101H.getReceiver() + "的格式不正确");
                    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);//发件
            DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(request);//获取数据源信息
            SpObserver.setDBtoInstance("_" + dataSourceEntity.getDbId());//切换数据源
            //有发送的邮件保存到后台数据库
            t482101H = emailIfc.saveReceivingMail(t482101H);
            //发送
            emailIfc.sendingMail(t482101H, request);
            msg.setSuccess("执行成功", "发送成功");
        } catch (Exception e) {
            msg.setError("执行出错", e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
            msg.setFail(e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
        } finally {
            SpObserver.setDBtoInstance();
        }
@@ -268,7 +328,7 @@
    /**
     * 接收邮件内容
     * 收邮件
     *
     * @param request
     * @param response
@@ -293,21 +353,202 @@
            DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(request);//获取数据源信息
            SpObserver.setDBtoInstance("_" + dataSourceEntity.getDbId());//切换数据源
            //根据当前用户查询绑定的邮箱信息
            List<T482102Entity> emailEntities = emailAccountIfc.getAccount(userCode, mail);//返回邮箱的账号信息
            if (emailEntities.size() > 0) {
                for (T482102Entity e : emailEntities) {//遍历用户绑定邮箱
                    List<t482101HEntity> mails = emailIfc.getMailReceiving(e, request);
                    emailIfc.saveReceivingMailList(mails);//保存
            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);
                }
                msg.setSuccess("操作完成", "保存成功");
            }
            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.setError("执行出错", e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
            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
     */
    @GetMapping("/updateHandle.do")
    public AllBackMsg updateHandle(String handleTime, String docCode, 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.isBlank(docCode)) {
                msg.setFail("邮件唯一标识docCode不能空");
                return msg;
            }
            DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(request);//获取数据源信息
            SpObserver.setDBtoInstance("_" + dataSourceEntity.getDbId());//切换数据源
            emailIfc.updateMailHandle(handleTime, docCode);
            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();
            }
        }
    }
}