Selaa lähdekoodia

feat:邮件发送功能开发

chenjianhua 1 kuukausi sitten
vanhempi
commit
b84f1d8335

+ 5 - 0
service-base/src/main/java/com/simuwang/base/pojo/dos/CompanyEmailSendHistoryDO.java

@@ -36,6 +36,10 @@ public class CompanyEmailSendHistoryDO {
      */
     private String email;
     /**
+     * 公司ID
+     */
+    private String emailTitle;
+    /**
      * 发送状态1-成功,0-失败
      */
     private Integer sendStatus;
@@ -72,6 +76,7 @@ public class CompanyEmailSendHistoryDO {
         CompanyEmailSendHistoryVO vo = new CompanyEmailSendHistoryVO();
         vo.setCompanyId(this.getCompanyId());
         vo.setEmail(this.getEmail());
+        vo.setEmailTitle(this.getEmailTitle());
         vo.setId(this.getId());
         vo.setSendRemark(this.getSendRemark());
         vo.setSendStatus(this.getSendStatus());

+ 4 - 0
service-base/src/main/java/com/simuwang/base/pojo/vo/CompanyEmailSendHistoryVO.java

@@ -33,6 +33,10 @@ public class CompanyEmailSendHistoryVO {
      */
     private String email;
     /**
+     * 邮件标题
+     */
+    private String emailTitle;
+    /**
      * 发送状态,0-失败,1-成功,-1未发送
      */
     private Integer sendStatus;

+ 10 - 8
service-base/src/main/resources/mapper/daq/CompanyEmailHistoryMapper.xml

@@ -6,6 +6,7 @@
         <result column="company_id" property="companyId"/>
         <result column="company_name" property="companyName"/>
         <result column="email" property="email"/>
+        <result column="email_title" property="emailTitle"/>
         <result column="send_status" property="sendStatus"/>
         <result column="send_time" property="sendTime"/>
         <result column="send_remark" property="sendRemark"/>
@@ -17,8 +18,8 @@
     </resultMap>
     <insert id="saveCompanyEmailSendHistory"
             parameterType="com.simuwang.base.pojo.dos.CompanyEmailSendHistoryDO">
-        insert into company_email_send_history(company_id,email,send_status,send_time,send_remark,isvalid,createtime,updatetime,creatorid,updaterid)
-        values (#{companyId},#{email},#{sendStatus},#{sendTime},#{sendRemark},#{isvalid},#{createTime},#{updateTime},#{creatorId},#{updaterId})
+        insert into company_email_send_history(company_id,email,email_title,send_status,send_time,send_remark,isvalid,createtime,updatetime,creatorid,updaterid)
+        values (#{companyId},#{email},#{emailTitle},#{sendStatus},#{sendTime},#{sendRemark},#{isvalid},#{createTime},#{updateTime},#{creatorId},#{updaterId})
     </insert>
     <update id="deleteEmailHistory">
         update company_email_send_history set isvalid =0,updatetime=now() where email=#{email} and company_id =#{companyId} and isvalid=1
@@ -138,12 +139,13 @@
     <select id="searchEmailHistory" resultMap="BaseResultMap">
         SELECT distinct
         cesh.id,
-            cec.company_id,
-            c.company_name,
-            cesh.email,
-            cesh.send_time,
-            cesh.send_remark,
-            cesh.send_status
+        cec.company_id,
+        c.company_name,
+        cesh.email,
+        cesh.email_title,
+        cesh.send_time,
+        cesh.send_remark,
+        cesh.send_status
         FROM
             company_email_send_history cesh
             JOIN contact_information cec

+ 23 - 13
service-manage/src/main/java/com/simuwang/manage/service/impl/CompanyEmailConfigServiceImpl.java

@@ -163,6 +163,8 @@ public class CompanyEmailConfigServiceImpl implements CompanyEmailConfigService
             getAssetDeletion(fundId,emailDeletionInfoDOS);
         }
         if(emailDeletionInfoDOS.size() > 0){
+            String htmlText = sysConfigMapper.selectConfigByKey("deletion_email_body");
+            String emailTitle = sysConfigMapper.selectConfigByKey("deletion_email_title");
             try {
             //将数据写入excel文件
             File file = writeExcelFile(emailDeletionInfoDOS);
@@ -170,21 +172,24 @@ public class CompanyEmailConfigServiceImpl implements CompanyEmailConfigService
             file.setReadable(true);
             file.setExecutable(true);
             MailboxInfoDTO dto = getFromEmailInfo();
-            // "<p>您好,附件为产品的数据未发送到最新,麻烦尽快发送缺失的数据。若是产品清算或者有其他原因不再发送数据,还请将产品的清算日期或者不再发送数据的原因发送给我们,非常感谢~\n</p>";
-            String htmlText = sysConfigMapper.selectConfigByKey("deletion_email_body");
-            String emailTitle = sysConfigMapper.selectConfigByKey("deletion_email_title");
-            EmailUtil.senEmail(dto,emails,List.of(file),htmlText,sysConfigMapper.selectConfigByKey("email.host")==null?"":sysConfigMapper.selectConfigByKey("email.host"),emailTitle);
+            try{
+                EmailUtil.senEmail(dto,emails,List.of(file),htmlText,sysConfigMapper.selectConfigByKey("email.host")==null?"":sysConfigMapper.selectConfigByKey("email.host"),emailTitle);
+            }catch (Exception e){
+                //有些是因为被识别为垃圾邮件导致的报错,需要在发送一次
+                logger.error(e.getMessage(),e);
+                EmailUtil.senEmail(dto,emails,List.of(file),htmlText,sysConfigMapper.selectConfigByKey("email.host")==null?"":sysConfigMapper.selectConfigByKey("email.host"),emailTitle);
+            }
             //发送成功之后修改数据为已发送
             deletionInfoMapper.updateSendStatusByFundId(fundIdList);
             //写入发送历史
             String[] emailList = emails.split(";");
             for(String email : emailList){
-                saveCompanyEmailSendHistory(companyId,email,1,ResultCode.SEND_SUCCESS.getMsg());
+                saveCompanyEmailSendHistory(companyId,email,emailTitle,1,ResultCode.SEND_SUCCESS.getMsg());
             }
             } catch (Exception e) {
                 String[] emailList = emails.split(";");
                 for(String email : emailList){
-                    saveCompanyEmailSendHistory(companyId,email,0,e.getMessage());
+                    saveCompanyEmailSendHistory(companyId,email,emailTitle,0,e.getMessage());
                 }
                 logger.error(e.getMessage(),e);
             }
@@ -396,6 +401,8 @@ public class CompanyEmailConfigServiceImpl implements CompanyEmailConfigService
             emailDeletionInfoDOS.addAll(distributeDeletionList);
         }
         if(emailDeletionInfoDOS.size() > 0){
+            String htmlText = sysConfigMapper.selectConfigByKey("deletion_distribute_email_body");
+            String emailTitle = sysConfigMapper.selectConfigByKey("deletion_distribute_email_title");
             try {
                 //将数据写入excel文件
                 File file = writeExcelFile(emailDeletionInfoDOS);
@@ -403,21 +410,23 @@ public class CompanyEmailConfigServiceImpl implements CompanyEmailConfigService
                 file.setReadable(true);
                 file.setExecutable(true);
                 MailboxInfoDTO dto = getFromEmailInfo();
-                // "<p>您好,附件为产品的数据未发送到最新,麻烦尽快发送缺失的数据。若是产品清算或者有其他原因不再发送数据,还请将产品的清算日期或者不再发送数据的原因发送给我们,非常感谢~\n</p>";
-                String htmlText = sysConfigMapper.selectConfigByKey("deletion_distribute_email_body");
-                String emailTitle = sysConfigMapper.selectConfigByKey("deletion_distribute_email_title");
-                EmailUtil.senEmail(dto,emails,List.of(file),htmlText,sysConfigMapper.selectConfigByKey("email.host")==null?"":sysConfigMapper.selectConfigByKey("email.host"),emailTitle);
+                try{
+                    EmailUtil.senEmail(dto,emails,List.of(file),htmlText,sysConfigMapper.selectConfigByKey("email.host")==null?"":sysConfigMapper.selectConfigByKey("email.host"),emailTitle);
+                }catch (Exception e){
+                    logger.error(e.getMessage(),e);
+                    EmailUtil.senEmail(dto,emails,List.of(file),htmlText,sysConfigMapper.selectConfigByKey("email.host")==null?"":sysConfigMapper.selectConfigByKey("email.host"),emailTitle);
+                }
                 //发送成功之后修改数据为已发送
                 deletionInfoMapper.updateSendStatusByFundId(fundIdList);
                 //写入发送历史
                 String[] emailList = emails.split(";");
                 for(String email : emailList){
-                    saveCompanyEmailSendHistory(companyId,email,1,ResultCode.SEND_SUCCESS.getMsg());
+                    saveCompanyEmailSendHistory(companyId,email,emailTitle,1,ResultCode.SEND_SUCCESS.getMsg());
                 }
             } catch (Exception e) {
                 String[] emailList = emails.split(";");
                 for(String email : emailList){
-                    saveCompanyEmailSendHistory(companyId,email,0,e.getMessage());
+                    saveCompanyEmailSendHistory(companyId,email,emailTitle,0,e.getMessage());
                 }
                 logger.error(e.getMessage(),e);
             }
@@ -440,12 +449,13 @@ public class CompanyEmailConfigServiceImpl implements CompanyEmailConfigService
     }
 
 
-    private void saveCompanyEmailSendHistory(String companyId, String email,Integer sendStatus,String msg) {
+    private void saveCompanyEmailSendHistory(String companyId, String email, String emailTitle,Integer sendStatus,String msg) {
         CompanyEmailSendHistoryDO historyDO = new CompanyEmailSendHistoryDO();
         historyDO.setCompanyId(companyId);
         historyDO.setEmail(email);
         historyDO.setSendStatus(sendStatus);
         historyDO.setSendRemark(msg);
+        historyDO.setEmailTitle(emailTitle);
         historyDO.setIsvalid(1);
         historyDO.setSendTime(DateUtils.getNowDate());
         historyDO.setCreateTime(DateUtils.getNowDate());

+ 26 - 1
service-manage/src/main/java/com/simuwang/manage/service/impl/ContactInformationServiceImpl.java

@@ -10,9 +10,11 @@ import com.simuwang.base.common.util.DateUtils;
 import com.simuwang.base.common.util.EmailUtil;
 import com.simuwang.base.common.util.StringUtil;
 import com.simuwang.base.mapper.daq.CompanyContactInfoMapper;
+import com.simuwang.base.mapper.daq.CompanyEmailSendHistoryMapper;
 import com.simuwang.base.mapper.daq.ContactInformationMapper;
 import com.simuwang.base.mapper.daq.SendEmailMapper;
 import com.simuwang.base.mapper.daq.system.SysConfigMapper;
+import com.simuwang.base.pojo.dos.CompanyEmailSendHistoryDO;
 import com.simuwang.base.pojo.dos.SendEmailInfoDO;
 import com.simuwang.base.pojo.dto.ContactExcelData;
 import com.simuwang.base.pojo.dos.ContactInformationDO;
@@ -55,6 +57,9 @@ public class ContactInformationServiceImpl implements ContactInformationService
     private CompanyEmailConfigService companyEmailConfigService;
 
     @Autowired
+    private CompanyEmailSendHistoryMapper companyEmailSendHistoryMapper;
+
+    @Autowired
     private SysConfigMapper sysConfigMapper;
     @Autowired
     private SendEmailMapper sendEmailMapper;
@@ -184,16 +189,36 @@ public class ContactInformationServiceImpl implements ContactInformationService
         vo.setData(true);
         try {
             String host = sysConfigMapper.selectConfigByKey("email.host")==null?"":sysConfigMapper.selectConfigByKey("email.host");
-            EmailUtil.senEmail(mailboxInfoDTO,contactInformationDO.getContactEmail(),fileList,emailBody,host,emailTitle);
+            try{
+                EmailUtil.senEmail(mailboxInfoDTO,contactInformationDO.getContactEmail(),fileList,emailBody,host,emailTitle);
+            }catch (Exception e){
+                logger.error(e.getMessage(),e);
+                EmailUtil.senEmail(mailboxInfoDTO,contactInformationDO.getContactEmail(),fileList,emailBody,host,emailTitle);
+            }
             sendEmailMapper.insert(sendEmailInfoDO);
+            saveCompanyEmailSendHistory(contactInformationDO.getCompanyId(),contactInformationDO.getContactEmail(),emailTitle,1, com.simuwang.base.common.enums.ResultCode.SEND_SUCCESS.getMsg());
         } catch (Exception e) {
             logger.error(e.getMessage(),e);
             vo.setData(false);
             vo.setMsg(e.getMessage());
+            saveCompanyEmailSendHistory(contactInformationDO.getCompanyId(),contactInformationDO.getContactEmail(),emailTitle,0, e.getMessage());
         }
         return vo;
     }
 
+    private void saveCompanyEmailSendHistory(String companyId, String email, String emailTitle,Integer sendStatus,String msg) {
+        CompanyEmailSendHistoryDO historyDO = new CompanyEmailSendHistoryDO();
+        historyDO.setCompanyId(companyId);
+        historyDO.setEmail(email);
+        historyDO.setSendStatus(sendStatus);
+        historyDO.setSendRemark(msg);
+        historyDO.setEmailTitle(emailTitle);
+        historyDO.setIsvalid(1);
+        historyDO.setSendTime(DateUtils.getNowDate());
+        historyDO.setCreateTime(DateUtils.getNowDate());
+        historyDO.setCreateTime(DateUtils.getNowDate());
+        companyEmailSendHistoryMapper.saveCompanyEmailSendHistory(historyDO);
+    }
 
     private boolean saveContactInformationDO(ContactInformationDO contactInformationDO) {
         try{