| | |
| | | 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.Matcher; |
| | | import java.util.regex.Pattern; |
| | | |
| | | /** |
| | |
| | | */ |
| | | @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; |
| | | } |
| | | |
| | | /** |
| | | * 左边结构下层 |
| | | * |
| | | * @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, 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); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("page", page); |
| | | map.put("limit", limit); |
| | | if (t482101HEntityList.size() > 0) { |
| | | msg.setSuccess("操作完成", t482101HEntityList); |
| | | 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.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); |
| | | 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 |
| | | */ |
| | | @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(); |
| | | } |
| | |
| | | } |
| | | |
| | | /** |
| | | * 获取邮件详情 |
| | | * 删除邮件 |
| | | * |
| | | * @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(); |
| | | } |
| | |
| | | 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); |
| | |
| | | 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(); |
| | | } |
| | |
| | | |
| | | |
| | | /** |
| | | * 接收邮件内容 |
| | | * 收邮件 |
| | | * |
| | | * @param request |
| | | * @param response |
| | |
| | | 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 |
| | | */ |
| | | @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; |
| | | } |
| | | if (param.get("handleTime") == null) { |
| | | msg.setFail("待处理时间不能空"); |
| | | return msg; |
| | | } |
| | | List<String> docCode = (List<String>) param.get("docCode"); |
| | | String handleTime = (String) param.get("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, ",")); |
| | | 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(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |