Commit 6b9db412 authored by Data-王博's avatar Data-王博

湖北消金 - 邮件服务切换 基本完成 自测完成。提前运行试验

parent 48cb4dd7
......@@ -31,6 +31,11 @@
</parent>
<dependencies>
<dependency>
<groupId>cn.quantgroup</groupId>
<artifactId>quantgroup-sms-sdk</artifactId>
<version>1.0.6.3</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
......@@ -103,7 +108,13 @@
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.3.3</version>
<version>4.4.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpmime -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5.2</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
......
......@@ -13,6 +13,7 @@ import org.xml.sax.SAXException;
import javax.activation.DataSource;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerException;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
......@@ -56,14 +57,14 @@ public interface IHuBeiService {
* @param hubeiCFCDataType
* @param attachedBytes
*/
void sendMailAttachment(HubeiCFCDataType hubeiCFCDataType, ArrayList<DataSource> attachedBytes);
void sendMailAttachment(HubeiCFCDataType hubeiCFCDataType, ArrayList<File> attachedBytes);
/**
*
* @param attachedBytes
* @param toUserArray
*/
void sendErrorMailAttachment(ArrayList<DataSource> attachedBytes, String[] toUserArray, String text, String subject);
void sendErrorMailAttachment(ArrayList<File> attachedBytes, String[] toUserArray, String text, String subject);
HuBeiDocName generateHuBeiDoc(HubeiCFCDataType hubeiCFCDataType,Byte seqNo);
}
......@@ -11,12 +11,13 @@ import cn.quantgroup.financial.model.huibeicfc.*;
import cn.quantgroup.financial.service.IApiCommonService;
import cn.quantgroup.financial.service.IHuBeiService;
import cn.quantgroup.financial.service.sys.ICompensationDayService;
import cn.quantgroup.financial.service.sys.IMailSendCallback;
import cn.quantgroup.financial.service.sys.IMailService;
import cn.quantgroup.financial.service.sys.IScheduledJudgeService;
import cn.quantgroup.financial.util.DateUtil;
import cn.quantgroup.financial.util.HubeiCFCUtil;
import cn.quantgroup.financial.util.NetUtil;
import cn.quantgroup.sms.IMailSendCallback;
import cn.quantgroup.sms.MailSendBean;
import com.alibaba.fastjson.JSON;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.collections.CollectionUtils;
......@@ -31,15 +32,11 @@ import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.xml.sax.SAXException;
import javax.activation.DataSource;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerException;
import java.io.*;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.*;
import java.util.stream.Collectors;
......@@ -136,14 +133,13 @@ public class HuBeiServiceImpl implements IHuBeiService {
public void returnMailDisc(HuBeiCFCRequest huBeiCFCRequest){
try {
HubeiCFCDataType dataType = huBeiCFCRequest.getHubeiCFCDataType();
DataSource dataSource = null;
switch (dataType){
case RETURN_ADVANCE_REPAYMENT:
case RETURN_BATCH_DEBIT:
case RETURN_BATCH_COMPENSATION:
//发送回盘 邮件
dataSource = iMailService.getDataSource(new String(Base64.decodeBase64(huBeiCFCRequest.getFileConent())),huBeiCFCRequest.getFileName());
sendMailAttachment(dataType,new ArrayList<DataSource>(Arrays.asList(dataSource)));
File file = iMailService.createAttachMailFile(new String(Base64.decodeBase64(huBeiCFCRequest.getFileConent())),huBeiCFCRequest.getFileName());
sendMailAttachment(dataType,new ArrayList<File>(Arrays.asList(file)));
break;
default:
}
......@@ -228,14 +224,13 @@ public class HuBeiServiceImpl implements IHuBeiService {
logger.info("do not need save data");
}
}
DataSource dataSource = null;
switch (dataType){
case SEND_DEBIT:
case SEND_ADVANCE_REPAYMENT_CHECK:
if(response!=null&&HubeiCFCField.EC_SUCCESS_CODE.equals(response.getEc())){
//发送送盘文件 邮件
dataSource = iMailService.getDataSource(new String(Base64.decodeBase64(response.getFileConent())),response.getFileName());
sendMailAttachment(dataType,new ArrayList<DataSource>(Arrays.asList(dataSource)));
File file = iMailService.createAttachMailFile(new String(Base64.decodeBase64(response.getFileConent())),response.getFileName());
sendMailAttachment(dataType,new ArrayList<File>(Arrays.asList(file)));
response.setFileConent(null);
}
break;
......@@ -760,17 +755,27 @@ public class HuBeiServiceImpl implements IHuBeiService {
StringBuilder sb= new StringBuilder();
sb.append(messageString);
message.setText(sb.toString());
iMailService.sendMailAsync(message, new IMailSendCallback() {
@Override
public void onError(Throwable e) {
logger.error("发送通知邮件失败,to-->{}", Arrays.toString(toUserArray));
logger.error("发送邮件失败", e);
}
@Override
public void onSuccess() {
logger.info("发送邮件成功,to-->{}",Arrays.toString(toUserArray));
}
});
for(String to: toUserArray){
MailSendBean mailSendBean = MailSendBean.newDefaultBuilder()
.to(to)
.from(sender)
.fromName("财务系统")
.subject("湖北消金送回盘文件接口失败")
.plain(sb.toString())
.build();
iMailService.sendMailAsync(mailSendBean,new IMailSendCallback() {
@Override
public void onError(Throwable e) {
logger.error("发送通知邮件失败,to-->{}", Arrays.toString(toUserArray));
logger.error("发送邮件失败", e);
}
@Override
public void onSuccess() {
logger.info("发送邮件成功,to-->{}",Arrays.toString(toUserArray));
}
});
}
} catch (Exception e1) {
logger.error(e1.getMessage(),e1);
}
......@@ -797,8 +802,8 @@ public class HuBeiServiceImpl implements IHuBeiService {
}
String message = errorStringBuilder.toString();
if(!StringUtils.isEmpty(message)){
DataSource dataSource = iMailService.getDataSource(message,"exception_file.txt");
sendErrorMailAttachment(new ArrayList<DataSource>(Arrays.asList(dataSource)),toUserArray,noticeMessage,"湖北消金送回盘文件异常数据");
File file = iMailService.createAttachMailFile(message,"exception_file.txt");
sendErrorMailAttachment(new ArrayList<File>(Arrays.asList(file)),toUserArray,noticeMessage,"湖北消金送回盘文件异常数据");
}
} catch (Exception e) {
logger.error(e.getMessage(),e);
......@@ -821,22 +826,24 @@ public class HuBeiServiceImpl implements IHuBeiService {
@Async
@Override
public void sendErrorMailAttachment(ArrayList<DataSource> attachedBytes, String[] toUserArray, String text, String subject){
public void sendErrorMailAttachment(ArrayList<File> attachedBytes, String[] toUserArray, String text, String subject){
try {
if(toUserArray==null||toUserArray.length==0){
return;
}
iMailService.sendAttachmentMailWithBytesAsync(sender, toUserArray,null,subject,text,attachedBytes, new IMailSendCallback() {
@Override
public void onError(Throwable e) {
logger.error("发送通知邮件失败,to-->{}", Arrays.toString(toUserArray));
logger.error("发送邮件失败", e);
}
@Override
public void onSuccess() {
logger.info("发送邮件成功,to-->{}",Arrays.toString(toUserArray));
}
});
for(String to: toUserArray){
iMailService.sendAttachmentMailAsync(sender,to,null,subject,text,attachedBytes,new IMailSendCallback() {
@Override
public void onError(Throwable e) {
logger.error("发送通知邮件失败,to-->{}", Arrays.toString(toUserArray));
logger.error("发送邮件失败", e);
}
@Override
public void onSuccess() {
logger.info("发送邮件成功,to-->{}",Arrays.toString(toUserArray));
}
});
}
} catch (Exception e1) {
logger.error(e1.getMessage(),e1);
}
......@@ -845,7 +852,7 @@ public class HuBeiServiceImpl implements IHuBeiService {
@Async
@Override
public void sendMailAttachment(HubeiCFCDataType hubeiCFCDataType, ArrayList<DataSource> attachedBytes){
public void sendMailAttachment(HubeiCFCDataType hubeiCFCDataType, ArrayList<File> attachedBytes){
try {
String[] toUserArray = getMailListByType(SysConstant.MailType.HUBEI_FILE);
if(toUserArray==null||toUserArray.length==0){
......
package cn.quantgroup.financial.service.sys;
public interface IMailSendCallback {
default void doWhenMailSendComplete(Throwable e) {
if (e != null) {
onError(e);
} else {
onSuccess();
}
}
default void onError(Throwable e) {
}
default void onSuccess() {
}
}
package cn.quantgroup.financial.service.sys;
import cn.quantgroup.financial.model.MailInfo;
import org.springframework.mail.MailException;
import cn.quantgroup.sms.IMailSendCallback;
import cn.quantgroup.sms.MailSendBean;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.MimeMessagePreparator;
import javax.activation.DataSource;
import javax.mail.internet.MimeMessage;
import java.io.InputStream;
import java.io.File;
import java.util.ArrayList;
public interface IMailService {
void sendAttachmentMailAsync(String from, String sendTo, String ccTo, String subject, String text,
ArrayList<String> attachedFileList, IMailSendCallback mailSendCallback);
void sendAttachmentMailAsync(String from, String[] sendTo, String[] ccTo, String subject, String text,
ArrayList<String> attachedFileList, IMailSendCallback mailSendCallback);
void sendAttachmentMailWithBytesAsync(String from,String sendTo,String ccTo,String subject,String text,
ArrayList<DataSource> attachedBytes ,IMailSendCallback mailSendCallback);
void sendAttachmentMailWithBytesAsync(String from,String[] sendTo,String[] ccTo,String subject,String text,
ArrayList<DataSource> attachedBytes ,IMailSendCallback mailSendCallback);
void sendSimpleMailAsync(String from, String sendTo, String ccTo, String subject, String text);
void sendSimpleMailAsync(String from, String[] sendTo, String[] ccTo, String subject, String text);
void sendMailAsync(SimpleMailMessage[] simpleMailMessages, IMailSendCallback... callbacks);
void sendMailAsync(SimpleMailMessage simpleMailMessage, IMailSendCallback... callbacks);
void sendMailAsync(MimeMessage mimeMessage, IMailSendCallback... callbacks);
void sendMailAsync(MimeMessage[] mimeMessages, IMailSendCallback... callbacks);
void sendMailAsync(MimeMessagePreparator message, IMailSendCallback... callbacks);
void sendMailAsync(MimeMessagePreparator[] messages, IMailSendCallback... callbacks);
void sendMail(SimpleMailMessage... simpleMailMessages);
void sendMail(SimpleMailMessage simpleMailMessage);
void sendMail(MimeMessage mimeMessage);
void sendMail(MimeMessage... mimeMessages);
void sendMail(MimeMessagePreparator message);
void sendMail(MimeMessagePreparator... messages);
void sendSimpleMail(SimpleMailMessage message);
void sendMailQuietly(SimpleMailMessage... simpleMailMessages);
void sendMailQuietly(SimpleMailMessage simpleMailMessage);
void sendMailQuietly(MimeMessage mimeMessage);
void sendMailQuietly(MimeMessage... mimeMessages);
void sendMailQuietly(MimeMessagePreparator message);
void sendMailQuietly(MimeMessagePreparator... messages);
MimeMessage createMimeMessage();
MimeMessage createMimeMessage(InputStream var1) throws MailException;
void sendAttachmentMailAsync(String from, String sendTo, String[] ccTo, String subject, String text, ArrayList<File> attachedFileList, IMailSendCallback mailSendCallback);
void sendMailAsync(MailSendBean mailSendBean, IMailSendCallback... callbacks);
DataSource getDataSource(String content,String fileName);
Long saveMailInfo(MailInfo mailInfo);
File createAttachMailFile(String fileContent, String fileName);
Integer deleteMailInfo(Long id);
}
......@@ -20,7 +20,7 @@ import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import javax.activation.DataSource;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
......@@ -168,8 +168,8 @@ public class HuBeiServiceTest {
@Test
public void testSendAttachmentMail(){
DataSource dataSource = iMailService.getDataSource("lkdjflajdlfkajd;fajl","aaa.txt");
ArrayList<DataSource> dataSourceList = new ArrayList<>();
File dataSource = iMailService.createAttachMailFile("lkdjflajdlfkajd;fajl","aaa.txt");
ArrayList<File> dataSourceList = new ArrayList<>();
dataSourceList.add(dataSource);
huBeiService.sendMailAttachment( HubeiCFCDataType.RETURN_ADVANCE_REPAYMENT,dataSourceList);
synchronized (lock) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment