diff --git a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/service/license/LicenseTask.java b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/service/license/LicenseTask.java index 8e09625..c6854e4 100644 --- a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/service/license/LicenseTask.java +++ b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/service/license/LicenseTask.java @@ -5,9 +5,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; 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.project.ProjectDO; 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.project.ProjectMapper; import org.agt.module.license.enums.LicenseStatusEnum; @@ -20,6 +22,7 @@ import org.springframework.stereotype.Component; import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; +import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -48,6 +51,9 @@ public class LicenseTask { @Resource private ProjectMapper projectMapper; + @Resource + private CustomerMapper customerMapper; + @Resource private MailSendApi mailSendApi; @@ -74,9 +80,11 @@ public class LicenseTask { .eq(LicenseDO::getStatus, LicenseStatusEnum.COMPLETED.getCode()) .gt(LicenseDO::getExpiryDate, LocalDateTime.now())); + Map>> userMap = new HashMap<>(); for (LicenseDO licenseDO : licenseList) { ProjectDO projectDO = projectMapper.selectById(licenseDO.getProjectId()); + CustomerDO customerDO = customerMapper.selectById(projectDO.getCustomerId()); Set users = new HashSet<>(); if (projectDO.getBusinessOwner() != null) { users.add(projectDO.getBusinessOwner()); @@ -96,10 +104,17 @@ public class LicenseTask { templateParams.put("sn", licenseDO.getSerialNo()); templateParams.put("days", day); + templateParams.put("customer", customerDO.getName()); + templateParams.put("project", projectDO.getName()); log.info("已发送到期提醒邮件:{}", licenseDO.getSerialNo()); - // 2. 发送邮件 - mailSendApi.sendSingleMailToAdmin(new MailSendSingleToUserReqDTO() - .setUserId(userId).setTemplateCode(templateCode).setTemplateParams(templateParams)); + + if (userMap.containsKey(userId)) { + userMap.get(userId).add(templateParams); + } else { + List> userList = new ArrayList<>(); + userList.add(templateParams); + userMap.put(userId, userList); + } // 发送站内信 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();