feat: There is no way the MQ conf

This commit is contained in:
super_liu
2021-09-23 16:19:19 +08:00
parent 965f518666
commit d2d509c7c8
5 changed files with 412 additions and 0 deletions
@@ -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<String> emailList = new ArrayList<>();
ResponseMessage<UserVO> 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 = "<div style=\"font-size:16px\" ><div><p>您好:</p></div>" +
"<span style=\"color:blue;\" >"+"OA请求发送失败6次,请线下协调处理"+"</span></div>";
emailUtils.sendMsgFeign(arr,title,countText);
}else {
restSendDoneTodo(object, sdf, sendTodoLog, againNumNew,operMesg);
@@ -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<UserVO> byId = lawsUserInfoService.getById("WY8J26MH23");
// 发送待办 或 发送给管理员邮箱
List<String> 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 = "<div style=\"font-size:16px\" ><div><p>您好:</p></div>" +
"<span style=\"color:blue;\" >"+"OA请求发送失败6次,请线下协调处理"+"</span></div>";
emailUtils.sendMsgFeign(arr,title,countText);
logger.info("发送失败6次,发送给管理员邮箱");
}else {
restSendTodo(object, sdf, sendTodoLog, againNumNew,operMesg);
@@ -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);
}
}
}
+26
View File
@@ -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