| | |
| | | package com.ots.project.monitor.job.task; |
| | | |
| | | import cn.hutool.core.date.DateUtil; |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.ots.common.enums.SenderType; |
| | |
| | | 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"; |
| | |
| | | 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 -> { |
| | |
| | | log.error("记录退信信息失败:{}", e.getMessage(), e); |
| | | } |
| | | } |
| | | |
| | | private void bounceStatusUpdate() { |
| | | String mailMode = configService.getKey("MailMode"); |
| | | if (Objects.equals("RushMail", mailMode)) { |
| | |
| | | } |
| | | } 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(); |
| | |
| | | }); |
| | | } |
| | | } |
| | | |
| | | 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) { |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 发邮件 |
| | | * |
| | | * @param testSendtask |
| | | */ |
| | | public void sendEmail(EntTestSendtask testSendtask) { |
| | | if (Objects.equals(EMAIL_126, testSendtask.getPlatform())) { |
| | | RushMailResult result = emailMessage.sendEmail(testSendtask.getAddressee(), testSendtask.getTitle(), testSendtask.getContent()); |
| | |
| | | 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()); |