linzhijie
2021-04-12 3a8e1524dcf0eeb610d38123d5f0a3ef838379cd
src/main/java/com/ots/project/monitor/job/task/SenderTask.java
@@ -1,5 +1,4 @@
package com.ots.project.monitor.job.task;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.ots.common.enums.SenderType;
@@ -24,21 +23,15 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import static com.ots.common.enums.SmsStatusEnum.*;
/**
 * 邮件短信发送任务
 */
@Component("senderTask")
@Slf4j
public class SenderTask {
    private static final String SMS_ZJCM = "SMS_ZJCM";
    private static final String SMS_ZJCM_INTERNATIONAL = "SMS_ZJCM_INTERNATIONAL";
    private static final String EMAIL_126 = "EMAIL_126";
@@ -52,29 +45,26 @@
    EmailMessage emailMessage;
    @Autowired
    IEntTestSendtaskMailService entTestSendtaskMailService;
    @Autowired
    private ConfigService configService;
    public void senderTask(String type) {
        EntTestSendtask testSendtask = new EntTestSendtask();
        testSendtask.setStatus(SendtaskStatus.Untreated.getStatus());
        testSendtask.setType(type);
        List<EntTestSendtask> entTestSendtasks = entTestSendtaskService.selectEntTestSendtaskList(testSendtask);
        if (SenderType.email.getType().equals(type)) {
            //发送邮件
            entTestSendtasks.stream().forEach(p -> sendEmail(p));
            //邮件退信情况处理 异步
            bounceStatusUpdate();
        }
        if (SenderType.sms.getType().equals(type)) {
            //发送短信
            entTestSendtasks.stream().forEach(p -> sendSms(p));
            //短信下发状态跟进 异步
            smsDeliveryStatus();
        }
    }
    private void mailBounceInformationStorage(List<BouncedUser> bouncedUserList) {
        try {
            bouncedUserList.stream().forEach(user -> {
@@ -87,7 +77,6 @@
            log.error("记录退信信息失败:{}", e.getMessage(), e);
        }
    }
    private void bounceStatusUpdate() {
        String mailMode = configService.getKey("MailMode");
        if (Objects.equals("RushMail", mailMode)) {
@@ -134,8 +123,8 @@
            }
        } else {
            EmailUtil eu = new EmailUtil(EmailMessageImpl.userName, EmailMessageImpl.password);
            List<BouncedUser> bouncedUserList = eu.receiveMail(DefaultConfigurer.getIMAP(), "imap");// imap收信
            //邮件退信数据入库
            List<BouncedUser> bouncedUserList = eu.receiveMail(DefaultConfigurer.getIMAP(), "imap");
            mailBounceInformationStorage(bouncedUserList);
            bouncedUserList.stream().forEach(user -> {
                EntTestSendtask entTestSendtask = new EntTestSendtask();
@@ -153,13 +142,11 @@
            });
        }
    }
    public static void main(String[] args) {
        String str = "12321231232131 nihaodfdfdl 收件人邮件地址(ljhua@bydq.com.cn)不存在,邮件无法送达。 ";
        String substring = str.substring(str.indexOf("收件人邮件地址(") + "收件人邮件地址(".length(), str.indexOf(")不存在,邮件无法送达"));
        System.out.println(substring);
    }
    private void smsDeliveryStatus() {
        List<Statusbox> statusboxList = shortMessage.getReport();
        if (Objects.isNull(statusboxList) || statusboxList.size() == 0) {
@@ -182,11 +169,6 @@
        }
    }
    /**
     * 发邮件
     *
     * @param testSendtask
     */
    public void sendEmail(EntTestSendtask testSendtask) {
        if (Objects.equals(EMAIL_126, testSendtask.getPlatform())) {
            RushMailResult result = emailMessage.sendEmail(testSendtask.getAddressee(), testSendtask.getTitle(), testSendtask.getContent());
@@ -211,11 +193,6 @@
        entTestSendtaskService.updateEntTestSendtask(testSendtask);
    }
    /**
     * 发短信
     *
     * @param testSendtask
     */
    public void sendSms(EntTestSendtask testSendtask) {
        if (Objects.equals(SMS_ZJCM, testSendtask.getPlatform())) {
            Returnsms returnsms = shortMessage.sendSms(Arrays.asList(testSendtask.getAddressee()), "【TAI测评】", testSendtask.getContent());