linzhijie
2021-03-11 93af1c6ffb9ae0e894689ad3a37b548e57d54cff
src/main/java/com/ots/project/monitor/job/task/SenderTask.java
@@ -1,4 +1,5 @@
package com.ots.project.monitor.job.task;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.ots.common.enums.SenderType;
@@ -23,15 +24,21 @@
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";
@@ -45,26 +52,29 @@
    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 -> {
@@ -77,6 +87,7 @@
            log.error("记录退信信息失败:{}", e.getMessage(), e);
        }
    }
    private void bounceStatusUpdate() {
        String mailMode = configService.getKey("MailMode");
        if (Objects.equals("RushMail", mailMode)) {
@@ -123,8 +134,8 @@
            }
        } else {
            EmailUtil eu = new EmailUtil(EmailMessageImpl.userName, EmailMessageImpl.password);
            List<BouncedUser> bouncedUserList = eu.receiveMail(DefaultConfigurer.getIMAP(), "imap");
            List<BouncedUser> bouncedUserList = eu.receiveMail(DefaultConfigurer.getIMAP(), "imap");// imap收信
            //邮件退信数据入库
            mailBounceInformationStorage(bouncedUserList);
            bouncedUserList.stream().forEach(user -> {
                EntTestSendtask entTestSendtask = new EntTestSendtask();
@@ -142,11 +153,13 @@
            });
        }
    }
    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) {
@@ -168,7 +181,12 @@
            }
        }
    }
    /**
     * 发邮件
     *
     * @param testSendtask
     */
    public void sendEmail(EntTestSendtask testSendtask) {
        if (Objects.equals(EMAIL_126, testSendtask.getPlatform())) {
            RushMailResult result = emailMessage.sendEmail(testSendtask.getAddressee(), testSendtask.getTitle(), testSendtask.getContent());
@@ -192,7 +210,12 @@
        entTestMemberService.updateEntTestMember(entTestMember);
        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());