From d2d509c7c8e8bc117ac5279dcf83aa9e1fe589f2 Mon Sep 17 00:00:00 2001
From: super_liu <396572590@qq.com>
Date: Thu, 23 Sep 2021 16:19:19 +0800
Subject: [PATCH] feat: There is no way the MQ conf
---
pom.xml | 4 +
.../service/SendDoneMQService.java | 20 +
.../business_mq/service/SendMQService.java | 20 +
.../wkflow/business_oa/utils/EmailUtils.java | 342 ++++++++++++++++++
src/main/resources/application.yml | 26 ++
5 files changed, 412 insertions(+)
create mode 100644 src/main/java/com/ydw/bat/wkflow/business_oa/utils/EmailUtils.java
diff --git a/pom.xml b/pom.xml
index 4504c8b0..7585a56d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -29,6 +29,10 @@
fk-util
1.0.0
+
+ org.springframework.boot
+ spring-boot-starter-mail
+
org.springframework.cloud
diff --git a/src/main/java/com/ydw/bat/wkflow/business_mq/service/SendDoneMQService.java b/src/main/java/com/ydw/bat/wkflow/business_mq/service/SendDoneMQService.java
index d6951968..7abeec3d 100644
--- a/src/main/java/com/ydw/bat/wkflow/business_mq/service/SendDoneMQService.java
+++ b/src/main/java/com/ydw/bat/wkflow/business_mq/service/SendDoneMQService.java
@@ -2,8 +2,12 @@ package com.ydw.bat.wkflow.business_mq.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.rabbitmq.client.Channel;
+import com.ydw.bat.wkflow.business_auth.LawsUserInfoService;
+import com.ydw.bat.wkflow.business_main.datas.entity.ResponseMessage;
import com.ydw.bat.wkflow.business_main.datas.entity.SendTodoLog;
+import com.ydw.bat.wkflow.business_main.datas.entity.UserVO;
import com.ydw.bat.wkflow.business_main.datas.mapper.SendTodoLogMapper;
+import com.ydw.bat.wkflow.business_oa.utils.EmailUtils;
import com.ydw.bat.wkflow.business_oa.webService.service.WebServiceOAService;
import com.ydw.bat.wkflow.business_oa.webService.todoContent.NotifyTodoSendContext;
import com.ydw.bat.wkflow.business_oa.webService.todoResult.NotifyTodoAppResult;
@@ -21,6 +25,7 @@ import org.springframework.messaging.Message;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
+import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -32,12 +37,18 @@ public class SendDoneMQService {
@Autowired
private CreateMQService convertMq;
+ @Autowired
+ private EmailUtils emailUtils;
+
@Autowired
private WebServiceOAService webServiceOAService;
@Autowired
private SendTodoLogMapper sendTodoLogMapper;
+ @Autowired
+ private LawsUserInfoService lawsUserInfoService;
+
@RabbitListener(bindings = @QueueBinding(
value = @Queue(value = "createMQDone_SQ_GSAR", durable = "true"),
exchange = @Exchange(value = "sendDone-exchange_MQ_GSAR", ignoreDeclarationExceptions = "true"),
@@ -106,6 +117,15 @@ public class SendDoneMQService {
if(againNumNew >= 6){
// 发送待办 或 发送给管理员邮箱
logger.info("发送失败6次,发送给管理员邮箱");
+ List emailList = new ArrayList<>();
+ ResponseMessage byId = lawsUserInfoService.getById("WY8J26MH23");
+ // 占时指定admin用户邮箱
+ emailList.add(byId == null ? "" : (byId.getData().getEmail() != null ? byId.getData().getEmail() : ""));
+ String[] arr = emailList.toArray(new String[emailList.size()]);
+ String title = "OA请求发送失败6次";
+ String countText = "" +
+ "
"+"OA请求发送失败6次,请线下协调处理"+" ";
+ emailUtils.sendMsgFeign(arr,title,countText);
}else {
restSendDoneTodo(object, sdf, sendTodoLog, againNumNew,operMesg);
diff --git a/src/main/java/com/ydw/bat/wkflow/business_mq/service/SendMQService.java b/src/main/java/com/ydw/bat/wkflow/business_mq/service/SendMQService.java
index a67d0454..7ce1db14 100644
--- a/src/main/java/com/ydw/bat/wkflow/business_mq/service/SendMQService.java
+++ b/src/main/java/com/ydw/bat/wkflow/business_mq/service/SendMQService.java
@@ -2,9 +2,13 @@ package com.ydw.bat.wkflow.business_mq.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.rabbitmq.client.Channel;
+import com.ydw.bat.wkflow.business_auth.LawsUserInfoService;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
+import com.ydw.bat.wkflow.business_main.datas.entity.ResponseMessage;
import com.ydw.bat.wkflow.business_main.datas.entity.SendTodoLog;
+import com.ydw.bat.wkflow.business_main.datas.entity.UserVO;
import com.ydw.bat.wkflow.business_main.datas.mapper.SendTodoLogMapper;
+import com.ydw.bat.wkflow.business_oa.utils.EmailUtils;
import com.ydw.bat.wkflow.business_oa.webService.service.WebServiceOAService;
import com.ydw.bat.wkflow.business_oa.webService.todoResult.NotifyTodoAppResult;
import net.sf.json.JSONObject;
@@ -21,6 +25,7 @@ import org.springframework.messaging.Message;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
+import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -32,12 +37,18 @@ public class SendMQService {
@Autowired
private CreateMQService convertMq;
+ @Autowired
+ private EmailUtils emailUtils;
+
@Autowired
private WebServiceOAService webServiceOAService;
@Autowired
private SendTodoLogMapper sendTodoLogMapper;
+ @Autowired
+ private LawsUserInfoService lawsUserInfoService;
+
@RabbitListener(bindings = @QueueBinding(
value = @Queue(value = "createMQ_SQ_GSAR", durable = "true"),
exchange = @Exchange(value = "send-exchange_MQ_GSAR", ignoreDeclarationExceptions = "true"),
@@ -103,7 +114,16 @@ public class SendMQService {
SendTodoLog sendTodoLog = list.get(0);
int againNumNew = Integer.valueOf(sendTodoLog.getErrNum());
if(againNumNew >= 6){
+ ResponseMessage byId = lawsUserInfoService.getById("WY8J26MH23");
// 发送待办 或 发送给管理员邮箱
+ List emailList = new ArrayList<>();
+ // 占时指定admin用户邮箱
+ emailList.add(byId == null ? "" : (byId.getData().getEmail() == null ? "" : byId.getData().getEmail()));
+ String[] arr = emailList.toArray(new String[emailList.size()]);
+ String title = "OA请求发送失败6次";
+ String countText = "" +
+ "
"+"OA请求发送失败6次,请线下协调处理"+" ";
+ emailUtils.sendMsgFeign(arr,title,countText);
logger.info("发送失败6次,发送给管理员邮箱");
}else {
restSendTodo(object, sdf, sendTodoLog, againNumNew,operMesg);
diff --git a/src/main/java/com/ydw/bat/wkflow/business_oa/utils/EmailUtils.java b/src/main/java/com/ydw/bat/wkflow/business_oa/utils/EmailUtils.java
new file mode 100644
index 00000000..f14be1d7
--- /dev/null
+++ b/src/main/java/com/ydw/bat/wkflow/business_oa/utils/EmailUtils.java
@@ -0,0 +1,342 @@
+package com.ydw.bat.wkflow.business_oa.utils;
+
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.mail.MailException;
+import org.springframework.mail.SimpleMailMessage;
+import org.springframework.mail.javamail.JavaMailSenderImpl;
+import org.springframework.mail.javamail.MimeMessageHelper;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Component;
+
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeMessage;
+import java.io.File;
+import java.io.UnsupportedEncodingException;
+
+@Component
+public class EmailUtils {
+
+ private final Logger logger = LoggerFactory.getLogger(getClass());
+ /**
+ * The Mail sender.
+ */
+ @Autowired
+ JavaMailSenderImpl mailSender;
+
+ @Value("${mail.valid}")
+ private boolean mailValid;
+
+ @Value("${spring.mail.username}")
+ private String userName;
+
+ @Value("${spring.mail.password}")
+ private String mailPwd;
+
+ /**
+ * Send simple email.
+ *
+ * @param deliver the deliver
+ * @param receiver the receiver
+ * @param subject the subject
+ * @param content the content
+ * @throws ServiceException the service exception
+ */
+ public void sendSimpleEmail(String deliver,String personName, String receiver, String subject, String content) throws ServiceException {
+ if(mailValid){
+ String[] receivers = {receiver};
+ sendSimpleEmail(deliver,personName, receivers, null, subject, content);
+ }
+ }
+
+
+
+ /**
+ * Send simple email.
+ *
+ * @param deliver the deliver
+ * @param receiver the receiver
+ * @param carbonCopy the carbon copy
+ * @param subject the subject
+ * @param content the content
+ * @throws ServiceException the service exception
+ */
+ public void sendSimpleEmail(String deliver,String personName, String[] receiver, String[] carbonCopy, String subject, String content) throws ServiceException {
+
+ long startTimestamp = System.currentTimeMillis();
+ logger.info("Start send mail ... ");
+
+ try {
+ SimpleMailMessage message = new SimpleMailMessage();
+ personName=javax.mail.internet.MimeUtility.encodeText(personName);
+ message.setFrom(personName + "<"+deliver+">");
+ message.setTo(receiver);
+ if(carbonCopy!=null && carbonCopy.length>0){
+ message.setCc(carbonCopy);
+ }
+ message.setSubject(subject);
+ message.setText(content);
+ if(StringUtils.isBlank(mailPwd)){
+ mailSender.setPassword(null);
+ }
+ mailSender.send(message);
+ logger.info("Send mail success, cost {} million seconds", System.currentTimeMillis() - startTimestamp);
+ } catch (MailException e) {
+ logger.error("Send mail failed, error message is : {} \n", e.getMessage());
+ logger.error(e.getMessage(),e);
+ throw new ServiceException(e.getMessage());
+ } catch (UnsupportedEncodingException e) {
+ logger.error("Send mail failed, error message is : {} \n", e.getMessage());
+ logger.error(e.getMessage(),e);
+ throw new ServiceException(e.getMessage());
+ }
+ }
+
+
+
+ /**
+ * Send html email.
+ *
+ * @param deliver the deliver
+ * @param receiver the receiver
+ * @param subject the subject
+ * @param content the content
+ * @throws ServiceException the service exception
+ */
+ public void sendHtmlEmail(String deliver, String receiver, String subject, String content) throws ServiceException {
+ String[] receivers = {receiver};
+ sendHtmlEmail(deliver, receivers, null, subject, content, true);
+ }
+
+ /**
+ * Send html email.
+ *
+ * @param deliver the deliver
+ * @param receiver the receiver
+ * @param carbonCopy the carbon copy
+ * @param subject the subject
+ * @param content the content
+ * @param isHtml the is html
+ * @throws ServiceException the service exception
+ */
+ public void sendHtmlEmail(String deliver, String[] receiver, String[] carbonCopy, String subject, String content, boolean isHtml) throws ServiceException {
+ long startTimestamp = System.currentTimeMillis();
+ logger.info("Start send email ...");
+
+ try {
+ MimeMessage message = mailSender.createMimeMessage();
+ MimeMessageHelper messageHelper = new MimeMessageHelper(message);
+
+ messageHelper.setFrom(deliver);
+ messageHelper.setTo(receiver);
+ if (null != carbonCopy) {
+ messageHelper.setCc(carbonCopy);
+ }
+ messageHelper.setSubject(subject);
+ messageHelper.setText(content, isHtml);
+ if(StringUtils.isBlank(mailPwd)){
+ mailSender.setPassword(null);
+ }
+ mailSender.send(message);
+ logger.info("Send email success, cost {} million seconds", System.currentTimeMillis() - startTimestamp);
+ } catch (MessagingException e) {
+ logger.error("Send email failed, error message is {} \n", e.getMessage());
+ logger.error(e.getMessage(),e);
+ throw new ServiceException(e.getMessage());
+ }
+ }
+
+ /**
+ * Send attachment file email.
+ *
+ * @param deliver the deliver
+ * @param receiver the receiver
+ * @param subject the subject
+ * @param content the content
+ * @param fileName the file name
+ * @param file the file
+ * @throws ServiceException the service exception
+ */
+ public void sendAttachmentFileEmail(String deliver, String receiver, String subject, String content, String fileName, File file) throws ServiceException {
+ String[] receivers = {receiver};
+ sendAttachmentFileEmail(deliver, receivers, null, subject, content, true, fileName, file);
+ }
+
+ /**
+ * Send attachment file mail.
+ *
+ * @param deliver the deliver
+ * @param receiver the receiver
+ * @param carbonCopy the carbon copy
+ * @param subject the subject
+ * @param content the content
+ * @param isHtml the is html
+ * @param fileName the file name
+ * @param file the file
+ * @throws ServiceException the service exception
+ */
+ public void sendAttachmentFileEmail(String deliver, String[] receiver, String[] carbonCopy, String subject, String content, boolean isHtml, String fileName, File file) throws ServiceException {
+ long startTimestamp = System.currentTimeMillis();
+ logger.info("Start send mail ...");
+
+ try {
+ MimeMessage message = mailSender.createMimeMessage();
+ MimeMessageHelper messageHelper = new MimeMessageHelper(message, true);
+
+ messageHelper.setFrom(deliver);
+ messageHelper.setTo(receiver);
+ messageHelper.setCc(carbonCopy);
+ messageHelper.setSubject(subject);
+ messageHelper.setText(content, isHtml);
+ messageHelper.addAttachment(fileName, file);
+ if(StringUtils.isBlank(mailPwd)){
+ mailSender.setPassword(null);
+ }
+ mailSender.send(message);
+ logger.info("Send mail success, cost {} million seconds", System.currentTimeMillis() - startTimestamp);
+ } catch (MessagingException e) {
+ logger.error("Send mail failed, error message is {}\n", e.getMessage());
+ logger.error(e.getMessage(),e);
+ throw new ServiceException(e.getMessage());
+ }
+ }
+
+ /* *//**
+ * Send template email.
+ *
+ * @param deliver the deliver
+ * @param receiver the receiver
+ * @param subject the subject
+ * @param template the template
+ * @param context the context
+ * @throws ServiceException the service exception
+ *//*
+ public void sendTemplateEmail(String deliver, String receiver, String subject, String template, Context context) throws ServiceException {
+ String[] receivers = {receiver};
+ sendTemplateEmail(deliver, receivers, null, subject, template, context);
+ }*/
+
+ /* *//**
+ * Send template mail.
+ * @throws ServiceException the service exception
+ *//*
+ public void sendTemplateEmail(String deliver, String[] receiver, String[] carbonCopy, String subject, String template, Context context) throws ServiceException {
+ long startTimestamp = System.currentTimeMillis();
+ logger.info("Start send mail ...");
+
+ try {
+ MimeMessage message = mailSender.createMimeMessage();
+ MimeMessageHelper messageHelper = new MimeMessageHelper(message);
+
+ String content = templateEngine.process(template, context);
+ messageHelper.setFrom(deliver);
+ messageHelper.setTo(receiver);
+ messageHelper.setCc(carbonCopy);
+ messageHelper.setSubject(subject);
+ messageHelper.setText(content, true);
+
+ mailSender.send(message);
+ logger.info("Send mail success, cost {} million seconds", System.currentTimeMillis() - startTimestamp);
+ } catch (MessagingException e) {
+ logger.error("Send mail failed, error message is {} \n", e.getMessage());
+ e.printStackTrace();
+ throw new ServiceException(e.getMessage());
+ }
+ }*/
+
+ @Async
+ public void sendMsg(String[] tos,String msg){
+ //创建简单邮件消息
+ SimpleMailMessage message = new SimpleMailMessage();
+ //谁发的
+ message.setFrom(userName);
+ //谁要接收
+ message.setTo(tos);
+ //邮件标题
+ message.setSubject(msg);
+ //邮件内容
+ message.setText(msg);
+ try {
+ if(StringUtils.isBlank(mailPwd)){
+ mailSender.setPassword(null);
+ }
+ mailSender.send(message);
+ } catch (MailException e) {
+ logger.error(e.getMessage(),e);
+ }
+ }
+
+ @Async
+ public void sendMsgNew(String[] tos,String msg,String title){
+ //创建简单邮件消息
+ SimpleMailMessage message = new SimpleMailMessage();
+ //谁发的
+ message.setFrom(userName);
+ //谁要接收
+ message.setTo(tos);
+ //邮件标题
+ message.setSubject(title);
+ //邮件内容
+ message.setText(msg);
+ try {
+ if(StringUtils.isBlank(mailPwd)){
+ mailSender.setPassword(null);
+ }
+ mailSender.send(message);
+ } catch (MailException e) {
+ logger.error(e.getMessage(),e);
+ }
+ }
+
+ @Async
+ public void sendMsgFeign(String[] tos,String title, String msg){
+ //创建简单邮件消息
+ SimpleMailMessage message = new SimpleMailMessage();
+ //谁发的
+ message.setFrom(userName);
+ //谁要接收
+ message.setTo(tos);
+ //邮件标题
+ message.setSubject(title);
+ //邮件内容
+ message.setText(msg);
+ try {
+ if (null != tos){
+ for (String to :tos){
+ sendHtmlEmail( userName, to, title, msg);
+ }
+ }
+
+ } catch (ServiceException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Async
+ public void sendMsgWithCC(String[] tos,String[] cc,String msg){
+ //创建简单邮件消息
+ SimpleMailMessage message = new SimpleMailMessage();
+ //谁发的
+ message.setFrom(userName);
+ //谁要接收
+ message.setTo(tos);
+ //抄送
+ message.setCc(cc);
+ //邮件标题
+ message.setSubject(msg);
+ //邮件内容
+ message.setText(msg);
+ try {
+ if(StringUtils.isBlank(mailPwd)){
+ mailSender.setPassword(null);
+ }
+ mailSender.send(message);
+ } catch (MailException e) {
+ logger.error(e.getMessage(),e);
+ }
+ }
+}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index eebfe46d..0d6128d0 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -59,6 +59,32 @@ spring:
enabled: true
#最大重试9次
max-attempts: 6
+
+# =============================================================================
+# 邮箱配置-1
+# =============================================================================
+ mail:
+ host: smtp.163.com
+ protocol: smtp
+ username: foton_admin@163.com
+ password: QDQMXXMCKFARNDEI
+ properties:
+ smtp:
+ auth: true
+ starttls:
+ enable: true
+ required: true
+ mail:
+ smtp:
+ ssl:
+ enable: true
+ port: 465
+# =============================================================================
+# 邮箱配置-2
+# =============================================================================
+mail:
+ valid: true
+
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl