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 d137abb..b46199e 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 @@ -3,6 +3,7 @@ package org.agt.module.license.service.license; import cn.hutool.core.date.LocalDateTimeUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import jakarta.annotation.Resource; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.agt.framework.common.pojo.CommonResult; import org.agt.module.license.dal.dataobject.alert.AlertDO; @@ -20,6 +21,7 @@ import org.agt.module.system.api.notify.NotifyMessageSendApi; import org.agt.module.system.api.notify.dto.NotifySendSingleToUserReqDTO; import org.agt.module.system.api.user.AdminUserApi; import org.agt.module.system.api.user.dto.AdminUserRespDTO; +import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @@ -27,6 +29,7 @@ import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; import java.util.ArrayList; +import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -67,6 +70,13 @@ public class LicenseTask { @Resource private AdminUserApi adminUserApi; + /** + * 邮件的开关,默认为 true + */ + @Value("${agt.domain:http://192.168.9.50}") + @Setter + private String domain; + @Scheduled(cron = "*/5 * * * * ?") public void task() { licenseService.genLicenseTask(); @@ -111,6 +121,7 @@ public class LicenseTask { templateParams.put("sn", licenseDO.getSerialNo()); templateParams.put("days", day); templateParams.put("url", "http://192.168.9.50#/license"); + templateParams.put("id", licenseDO.getId()); try { templateParams.put("expiryDate", licenseDO.getExpiryDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); @@ -148,12 +159,45 @@ public class LicenseTask { } } + String text = " \n" + + " %s\n" + + " %s\n" + + " %s\n" + + " %s\n" + + " %s\n" + + " %s\n" + + " %s天\n" + + " "; + userMap.forEach((k, v) -> { + v.sort(Comparator.comparingInt(c -> Integer.parseInt(c.get("days").toString()))); + + StringBuilder stringBuilder = new StringBuilder("\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " "); + for (Map map : v) { + String formatText = String.format(text, map.get("customer"), map.get("project"), map.get("id"), map.get("sn"), map.get("expiryDate"), map.get("businessOwner"), map.get("technicalOwnerA"), map.get("days")); + stringBuilder.append(formatText); + } + stringBuilder.append(" \n" + + "
客户项目SN到期时间业务负责人技术负责人1距离到期
"); + mailSendApi.sendSingleMailToAdmins(new MailSendSingleToUserReqDTO() - .setUserId(k).setTemplateCode(templateCode).setTemplateParamsList(v)); + .setUserId(k).setTemplateCode(templateCode).setContent(stringBuilder.toString())); }); } licenseService.genLicenseTask(); } + } diff --git a/agt-server/src/main/resources/application-local.yaml b/agt-server/src/main/resources/application-local.yaml index 9d8c812..cd62d97 100644 --- a/agt-server/src/main/resources/application-local.yaml +++ b/agt-server/src/main/resources/application-local.yaml @@ -205,6 +205,7 @@ agt: enable: false # 本地环境,暂时关闭图片验证码,方便登录等接口的测试; mail: enable: false # 本地环境,暂时关闭邮件发送; + domain: http://localhost:5666 security: mock-enable: true pay: diff --git a/agt-server/src/main/resources/application-test.yaml b/agt-server/src/main/resources/application-test.yaml index 146707c..600b603 100644 --- a/agt-server/src/main/resources/application-test.yaml +++ b/agt-server/src/main/resources/application-test.yaml @@ -203,6 +203,7 @@ wx: agt: captcha: enable: false # 本地环境,暂时关闭图片验证码,方便登录等接口的测试; + domain: http://192.168.9.50 security: mock-enable: true pay: