feat: 到期提醒补充内容且同一个人邮件组合

This commit is contained in:
caiyuchao
2025-09-02 19:34:16 +08:00
parent c787cc08b4
commit 97b9177049

View File

@@ -5,9 +5,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.agt.module.license.dal.dataobject.alert.AlertDO; import org.agt.module.license.dal.dataobject.alert.AlertDO;
import org.agt.module.license.dal.dataobject.customer.CustomerDO;
import org.agt.module.license.dal.dataobject.license.LicenseDO; import org.agt.module.license.dal.dataobject.license.LicenseDO;
import org.agt.module.license.dal.dataobject.project.ProjectDO; import org.agt.module.license.dal.dataobject.project.ProjectDO;
import org.agt.module.license.dal.mysql.alert.AlertMapper; import org.agt.module.license.dal.mysql.alert.AlertMapper;
import org.agt.module.license.dal.mysql.customer.CustomerMapper;
import org.agt.module.license.dal.mysql.license.LicenseMapper; import org.agt.module.license.dal.mysql.license.LicenseMapper;
import org.agt.module.license.dal.mysql.project.ProjectMapper; import org.agt.module.license.dal.mysql.project.ProjectMapper;
import org.agt.module.license.enums.LicenseStatusEnum; import org.agt.module.license.enums.LicenseStatusEnum;
@@ -20,6 +22,7 @@ import org.springframework.stereotype.Component;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
@@ -48,6 +51,9 @@ public class LicenseTask {
@Resource @Resource
private ProjectMapper projectMapper; private ProjectMapper projectMapper;
@Resource
private CustomerMapper customerMapper;
@Resource @Resource
private MailSendApi mailSendApi; private MailSendApi mailSendApi;
@@ -74,9 +80,11 @@ public class LicenseTask {
.eq(LicenseDO::getStatus, LicenseStatusEnum.COMPLETED.getCode()) .eq(LicenseDO::getStatus, LicenseStatusEnum.COMPLETED.getCode())
.gt(LicenseDO::getExpiryDate, LocalDateTime.now())); .gt(LicenseDO::getExpiryDate, LocalDateTime.now()));
Map<Long, List<Map<String, Object>>> userMap = new HashMap<>();
for (LicenseDO licenseDO : licenseList) { for (LicenseDO licenseDO : licenseList) {
ProjectDO projectDO = projectMapper.selectById(licenseDO.getProjectId()); ProjectDO projectDO = projectMapper.selectById(licenseDO.getProjectId());
CustomerDO customerDO = customerMapper.selectById(projectDO.getCustomerId());
Set<Long> users = new HashSet<>(); Set<Long> users = new HashSet<>();
if (projectDO.getBusinessOwner() != null) { if (projectDO.getBusinessOwner() != null) {
users.add(projectDO.getBusinessOwner()); users.add(projectDO.getBusinessOwner());
@@ -96,10 +104,17 @@ public class LicenseTask {
templateParams.put("sn", licenseDO.getSerialNo()); templateParams.put("sn", licenseDO.getSerialNo());
templateParams.put("days", day); templateParams.put("days", day);
templateParams.put("customer", customerDO.getName());
templateParams.put("project", projectDO.getName());
log.info("已发送到期提醒邮件:{}", licenseDO.getSerialNo()); log.info("已发送到期提醒邮件:{}", licenseDO.getSerialNo());
// 2. 发送邮件
mailSendApi.sendSingleMailToAdmin(new MailSendSingleToUserReqDTO() if (userMap.containsKey(userId)) {
.setUserId(userId).setTemplateCode(templateCode).setTemplateParams(templateParams)); userMap.get(userId).add(templateParams);
} else {
List<Map<String, Object>> userList = new ArrayList<>();
userList.add(templateParams);
userMap.put(userId, userList);
}
// 发送站内信 // 发送站内信
notifySendApi.sendSingleMessageToAdmin(new NotifySendSingleToUserReqDTO() notifySendApi.sendSingleMessageToAdmin(new NotifySendSingleToUserReqDTO()
@@ -110,6 +125,11 @@ public class LicenseTask {
} }
} }
userMap.forEach((k, v) -> {
mailSendApi.sendSingleMailToAdmins(new MailSendSingleToUserReqDTO()
.setUserId(k).setTemplateCode(templateCode).setTemplateParamsList(v));
});
} }
licenseService.genLicenseTask(); licenseService.genLicenseTask();