Bladeren bron

feat:邮件发送功能开发

chenjianhua 1 maand geleden
bovenliggende
commit
17ab6fb6eb

+ 1 - 0
service-base/src/main/java/com/simuwang/base/common/util/EmailUtil.java

@@ -348,6 +348,7 @@ public class EmailUtil {
         message.saveChanges();
         // 发送邮件
         Transport.send(message);
+        logger.info("发送邮件结束");
     }
     public static Session getSession(MailboxInfoDTO mailboxInfoDTO){
         try{

+ 9 - 0
service-base/src/main/java/com/simuwang/base/mapper/daq/SendEmailMapper.java

@@ -0,0 +1,9 @@
+package com.simuwang.base.mapper.daq;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.simuwang.base.pojo.dos.SendEmailInfoDO;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SendEmailMapper extends BaseMapper<SendEmailInfoDO> {
+}

+ 60 - 0
service-base/src/main/java/com/simuwang/base/pojo/dos/SendEmailInfoDO.java

@@ -0,0 +1,60 @@
+package com.simuwang.base.pojo.dos;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@TableName("send_email_info")
+public class SendEmailInfoDO {
+    @TableId(type = IdType.AUTO,value = "id")
+    private Integer id;
+
+    @TableField("contract_id")
+    private Integer contractId;
+
+    @TableField("email_title")
+    private String emailTitle;
+
+    @TableField("email_body")
+    private String emailBody;
+
+    @TableField("template_code")
+    private String templateCode;
+
+
+    @TableField("file_name")
+    private String fileName;
+
+    @TableField("file_path")
+    private String filePath;
+    /**
+     * 记录的有效性;1-有效;0-无效;
+     */
+    @TableField(value = "isvalid")
+    private Integer isvalid;
+    /**
+     * 创建者Id;第一次创建时与Creator值相同,修改时与修改人值相同
+     */
+    @TableField(value = "creatorid")
+    private Integer creatorId;
+    /**
+     * 修改者Id;第一次创建时与Creator值相同,修改时与修改人值相同
+     */
+    @TableField(value = "updaterid")
+    private Integer updaterId;
+    /**
+     * 创建时间,默认第一次创建的getdate()时间
+     */
+    @TableField(value = "createtime")
+    private Date createTime;
+    /**
+     * 修改时间;第一次创建时与CreatTime值相同,修改时与修改时间相同
+     */
+    @TableField(value = "updatetime")
+    private Date updateTime;
+}

+ 16 - 2
service-manage/src/main/java/com/simuwang/manage/api/company/CompanyContactInformationController.java

@@ -131,7 +131,7 @@ public class CompanyContactInformationController{
      * @param idListVO  已选行的companyIdList
      * @return
      */
-    @SystemLog(value = "发送缺失数据")
+    @SystemLog(value = "发送净值缺失数据")
     @PostMapping("send-company-email")
     public boolean sendCompanyEmail(@RequestBody IdListVO idListVO){
         companyEmailConfigService.sendCompanyEmail(idListVO.getIdList());
@@ -143,7 +143,7 @@ public class CompanyContactInformationController{
      * @param idListVO  已选行的companyIdList
      * @return
      */
-    @SystemLog(value = "发送缺失数据")
+    @SystemLog(value = "发送分红缺失数据")
     @PostMapping("send-distribute-email")
     public boolean sendDistributeEmail(@RequestBody IdListVO idListVO){
         companyEmailConfigService.sendDistributeEmailById(idListVO.getIdList());
@@ -163,4 +163,18 @@ public class CompanyContactInformationController{
         return vo;
     }
 
+    /**
+     * 上传联系人信息
+     *
+     * @param files
+     * @return
+     */
+    @SystemLog(value = "发送邮件", type = SystemLog.Type.UPLOAD_OR_IMPORT)
+    @PostMapping("send-email")
+    public ResultVo sendEmail(@RequestPart(value = "files") List<MultipartFile> files,@RequestParam("contractId") String contractId,@RequestParam("emailTitle") String emailTitle,
+                              @RequestParam("emailBody") String emailBody,@RequestParam("templateCode") String templateCode) {
+        ResultVo vo = contactInformationService.sendEmail(files,contractId,emailTitle,templateCode,emailBody);
+        return vo;
+    }
+
 }

+ 3 - 0
service-manage/src/main/java/com/simuwang/manage/service/CompanyEmailConfigService.java

@@ -1,5 +1,6 @@
 package com.simuwang.manage.service;
 
+import com.simuwang.base.pojo.dto.MailboxInfoDTO;
 import com.simuwang.base.pojo.vo.CompanyEmailConfigVO;
 import com.smppw.common.pojo.ResultVo;
 import org.springframework.web.multipart.MultipartFile;
@@ -27,4 +28,6 @@ public interface CompanyEmailConfigService {
     void sendDistributeEmail(String companyId, String emails);
 
     void sendDistributeEmailById(List<Integer> idList);
+
+    MailboxInfoDTO getFromEmailInfo();
 }

+ 2 - 0
service-manage/src/main/java/com/simuwang/manage/service/ContactInformationService.java

@@ -23,4 +23,6 @@ public interface ContactInformationService {
     ContactInformationDO selectById(Integer id);
 
     ResultVo uploadContactInformation(MultipartFile file);
+
+    ResultVo sendEmail(List<MultipartFile> files, String contractId, String emailTitle, String templateCode, String emailBody);
 }

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

@@ -454,7 +454,7 @@ public class CompanyEmailConfigServiceImpl implements CompanyEmailConfigService
     }
 
 
-    private MailboxInfoDTO getFromEmailInfo(){
+    public MailboxInfoDTO getFromEmailInfo(){
         MailboxInfoDTO dto = new MailboxInfoDTO();
         dto.setAccount(sysConfigMapper.selectConfigByKey("sender.email"));
         dto.setProtocol(sysConfigMapper.selectConfigByKey("sender.protocol"));

+ 65 - 0
service-manage/src/main/java/com/simuwang/manage/service/impl/ContactInformationServiceImpl.java

@@ -7,13 +7,19 @@ import com.alibaba.excel.support.ExcelTypeEnum;
 import com.simuwang.base.common.conts.ExcelConst;
 import com.simuwang.base.common.support.MybatisPage;
 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.ContactInformationMapper;
+import com.simuwang.base.mapper.daq.SendEmailMapper;
+import com.simuwang.base.mapper.daq.system.SysConfigMapper;
+import com.simuwang.base.pojo.dos.SendEmailInfoDO;
 import com.simuwang.base.pojo.dto.ContactExcelData;
 import com.simuwang.base.pojo.dos.ContactInformationDO;
+import com.simuwang.base.pojo.dto.MailboxInfoDTO;
 import com.simuwang.base.pojo.dto.query.ContactQuery;
 import com.simuwang.base.pojo.vo.*;
+import com.simuwang.manage.service.CompanyEmailConfigService;
 import com.simuwang.manage.service.CompanyInformationService;
 import com.simuwang.manage.service.ContactInformationService;
 import com.simuwang.shiro.utils.UserUtils;
@@ -28,6 +34,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.File;
+import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Date;
@@ -44,6 +51,13 @@ public class ContactInformationServiceImpl implements ContactInformationService
 
     @Autowired
     private CompanyInformationService companyInformationService;
+    @Autowired
+    private CompanyEmailConfigService companyEmailConfigService;
+
+    @Autowired
+    private SysConfigMapper sysConfigMapper;
+    @Autowired
+    private SendEmailMapper sendEmailMapper;
 
     @Value("${email.file.path}")
     private String path;
@@ -120,6 +134,7 @@ public class ContactInformationServiceImpl implements ContactInformationService
             FileUtils.copyInputStreamToFile(inputStream,file);
             List<ContactExcelData> list = parseContactFile(file);
             vo.setData(parseResult(list));
+            inputStream.close();
         }catch (Exception e){
             logger.error(e.getMessage(),e);
             vo.setMsg("文件解析异常");
@@ -129,6 +144,56 @@ public class ContactInformationServiceImpl implements ContactInformationService
         return vo;
     }
 
+    @Override
+    public ResultVo sendEmail(List<MultipartFile> files, String contractId, String emailTitle, String templateCode, String emailBody) {
+        ResultVo vo = new ResultVo(ResultCode.SAVE_SUCCESS.getCode());
+        SendEmailInfoDO sendEmailInfoDO = new SendEmailInfoDO();
+        sendEmailInfoDO.setEmailTitle(emailTitle);
+        sendEmailInfoDO.setTemplateCode(templateCode);
+        sendEmailInfoDO.setEmailBody(emailBody);
+        sendEmailInfoDO.setContractId(Integer.parseInt(contractId));
+        sendEmailInfoDO.setCreateTime(new Date());
+        sendEmailInfoDO.setUpdateTime(new Date());
+        sendEmailInfoDO.setIsvalid(1);
+        sendEmailInfoDO.setCreatorId(UserUtils.getLoginUser().getUserId());
+        sendEmailInfoDO.setUpdaterId(UserUtils.getLoginUser().getUserId());
+        List<File> fileList = new ArrayList<>();
+        if(!files.isEmpty()){
+            StringBuilder filePath = new StringBuilder();
+            StringBuilder fileName = new StringBuilder();
+            for (MultipartFile file : files) {
+                InputStream inputStream = null;
+                try {
+                    inputStream = file.getInputStream();
+                    String attachmentFilePath = path+"/upload/"+ System.currentTimeMillis()+"/"+file.getOriginalFilename();
+                    File attachmentFile = new File(attachmentFilePath);
+                    FileUtils.copyInputStreamToFile(inputStream,attachmentFile);
+                    inputStream.close();
+                    filePath.append(attachmentFilePath).append(";");
+                    fileName.append(file.getOriginalFilename()).append(";");
+                    fileList.add(attachmentFile);
+                } catch (IOException e) {
+                    logger.error(e.getMessage(),e);
+                }
+            }
+            sendEmailInfoDO.setFileName(fileName.toString());
+            sendEmailInfoDO.setFilePath(filePath.toString());
+        }
+        MailboxInfoDTO mailboxInfoDTO = companyEmailConfigService.getFromEmailInfo();
+        ContactInformationDO contactInformationDO = contactInformationMapper.selectById(contractId);
+        vo.setData(true);
+        try {
+            String host = sysConfigMapper.selectConfigByKey("email.host")==null?"":sysConfigMapper.selectConfigByKey("email.host");
+            EmailUtil.senEmail(mailboxInfoDTO,contactInformationDO.getContactEmail(),fileList,emailBody,host,emailTitle);
+            sendEmailMapper.insert(sendEmailInfoDO);
+        } catch (Exception e) {
+            logger.error(e.getMessage(),e);
+            vo.setData(false);
+            vo.setMsg(e.getMessage());
+        }
+        return vo;
+    }
+
 
     private boolean saveContactInformationDO(ContactInformationDO contactInformationDO) {
         try{