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

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

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