From 97237ac538bf05a27ab869c99ba7338dc4fbcd4f Mon Sep 17 00:00:00 2001 From: opensnail <598092184@qq.com> Date: Sun, 5 May 2024 09:19:39 +0800 Subject: [PATCH] =?UTF-8?q?feat(sj=5F1.0.0):=20=E9=80=9A=E7=9F=A5=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E6=B7=BB=E5=8A=A0=E5=88=A0=E9=99=A4=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/alarm/strategy/EmailAlarm.java | 1 + .../snailjob/common/core/util/MailUtils.java | 20 ++++++++++++------- .../task/dto/NotifyConfigPartitionTask.java | 5 +---- .../RetryErrorMoreThresholdAlarmSchedule.java | 4 ++-- .../RetryTaskMoreThresholdAlarmSchedule.java | 7 ++++--- .../controller/NotifyConfigController.java | 8 +++++++- .../controller/NotifyRecipientController.java | 7 +++++++ .../web/service/NotifyConfigService.java | 2 ++ .../web/service/NotifyRecipientService.java | 2 ++ .../service/impl/NotifyConfigServiceImpl.java | 6 ++++++ .../impl/NotifyRecipientServiceImpl.java | 10 +++++++++- 11 files changed, 54 insertions(+), 18 deletions(-) diff --git a/snail-job-common/snail-job-common-core/src/main/java/com/aizuda/snailjob/common/core/alarm/strategy/EmailAlarm.java b/snail-job-common/snail-job-common-core/src/main/java/com/aizuda/snailjob/common/core/alarm/strategy/EmailAlarm.java index 90091c42..4809a95a 100644 --- a/snail-job-common/snail-job-common-core/src/main/java/com/aizuda/snailjob/common/core/alarm/strategy/EmailAlarm.java +++ b/snail-job-common/snail-job-common-core/src/main/java/com/aizuda/snailjob/common/core/alarm/strategy/EmailAlarm.java @@ -78,6 +78,7 @@ public class EmailAlarm extends AbstractAlarm { } mailAccount = initMailAccount(mailProperties); + MailUtils.setMailAccount(mailAccount); } private MailAccount initMailAccount(MailProperties mailProperties) { diff --git a/snail-job-common/snail-job-common-core/src/main/java/com/aizuda/snailjob/common/core/util/MailUtils.java b/snail-job-common/snail-job-common-core/src/main/java/com/aizuda/snailjob/common/core/util/MailUtils.java index fb54eb7e..d1b6e1f1 100644 --- a/snail-job-common/snail-job-common-core/src/main/java/com/aizuda/snailjob/common/core/util/MailUtils.java +++ b/snail-job-common/snail-job-common-core/src/main/java/com/aizuda/snailjob/common/core/util/MailUtils.java @@ -5,7 +5,6 @@ import cn.hutool.core.io.IoUtil; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.CharUtil; import cn.hutool.core.util.StrUtil; -import com.aizuda.snailjob.common.core.context.SpringContext; import com.aizuda.snailjob.common.core.alarm.email.Mail; import com.aizuda.snailjob.common.core.alarm.email.MailAccount; import com.aizuda.snailjob.common.core.alarm.email.UserPassAuthenticator; @@ -27,13 +26,20 @@ import java.util.Map; @NoArgsConstructor(access = AccessLevel.PRIVATE) public class MailUtils { - private static final MailAccount ACCOUNT = SpringContext.getBean(MailAccount.class); + private static MailAccount account; /** * 获取邮件发送实例 */ public static MailAccount getMailAccount() { - return ACCOUNT; + return account; + } + + /** + * 获取邮件发送实例 + */ + public static void setMailAccount(MailAccount account) { + MailUtils.account = account; } /** @@ -43,10 +49,10 @@ public class MailUtils { * @param pass 授权码 */ public static MailAccount getMailAccount(String from, String user, String pass) { - ACCOUNT.setFrom(StrUtil.blankToDefault(from, ACCOUNT.getFrom())); - ACCOUNT.setUser(StrUtil.blankToDefault(user, ACCOUNT.getUser())); - ACCOUNT.setPass(StrUtil.blankToDefault(pass, ACCOUNT.getPass())); - return ACCOUNT; + account.setFrom(StrUtil.blankToDefault(from, account.getFrom())); + account.setUser(StrUtil.blankToDefault(user, account.getUser())); + account.setPass(StrUtil.blankToDefault(pass, account.getPass())); + return account; } /** diff --git a/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/dto/NotifyConfigPartitionTask.java b/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/dto/NotifyConfigPartitionTask.java index fd60a78d..b007da0a 100644 --- a/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/dto/NotifyConfigPartitionTask.java +++ b/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/dto/NotifyConfigPartitionTask.java @@ -1,7 +1,5 @@ package com.aizuda.snailjob.server.retry.task.dto; -import com.aizuda.snailjob.server.common.dto.NotifyConfigInfo; -import com.aizuda.snailjob.server.common.dto.NotifyConfigInfo.RecipientInfo; import com.aizuda.snailjob.server.common.dto.PartitionTask; import lombok.Data; import lombok.EqualsAndHashCode; @@ -18,12 +16,11 @@ import java.util.Set; @Data public class NotifyConfigPartitionTask extends PartitionTask { - private String namespaceId; private String groupName; - private String sceneName; + private String businessId; private Set recipientIds; diff --git a/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/support/schedule/RetryErrorMoreThresholdAlarmSchedule.java b/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/support/schedule/RetryErrorMoreThresholdAlarmSchedule.java index bb1ff0d3..68024bcf 100644 --- a/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/support/schedule/RetryErrorMoreThresholdAlarmSchedule.java +++ b/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/support/schedule/RetryErrorMoreThresholdAlarmSchedule.java @@ -96,7 +96,7 @@ public class RetryErrorMoreThresholdAlarmSchedule extends AbstractSchedule imple new LambdaQueryWrapper(). between(RetryDeadLetter::getCreateDt, now.minusMinutes(30), now) .eq(RetryDeadLetter::getGroupName, partitionTask.getGroupName()) - .eq(RetryDeadLetter::getSceneName, partitionTask.getSceneName())); + .eq(RetryDeadLetter::getSceneName, partitionTask.getBusinessId())); if (count >= partitionTask.getNotifyThreshold()) { List recipientInfos = partitionTask.getRecipientInfos(); for (final RecipientInfo recipientInfo : recipientInfos) { @@ -110,7 +110,7 @@ public class RetryErrorMoreThresholdAlarmSchedule extends AbstractSchedule imple count, partitionTask.getNamespaceId(), partitionTask.getGroupName(), - partitionTask.getSceneName(), + partitionTask.getBusinessId(), DateUtils.format(now.minusMinutes(30), DateUtils.NORM_DATETIME_PATTERN), DateUtils.toNowFormat(DateUtils.NORM_DATETIME_PATTERN), count) diff --git a/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/support/schedule/RetryTaskMoreThresholdAlarmSchedule.java b/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/support/schedule/RetryTaskMoreThresholdAlarmSchedule.java index 2cdda241..b18e2c4b 100644 --- a/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/support/schedule/RetryTaskMoreThresholdAlarmSchedule.java +++ b/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/support/schedule/RetryTaskMoreThresholdAlarmSchedule.java @@ -1,6 +1,5 @@ package com.aizuda.snailjob.server.retry.task.support.schedule; -import com.aizuda.snailjob.common.core.alarm.Alarm; import com.aizuda.snailjob.common.core.alarm.AlarmContext; import com.aizuda.snailjob.common.core.alarm.SnailJobAlarmFactory; import com.aizuda.snailjob.common.core.enums.RetryNotifySceneEnum; @@ -10,6 +9,7 @@ import com.aizuda.snailjob.common.core.util.JsonUtil; import com.aizuda.snailjob.common.core.util.EnvironmentUtils; import com.aizuda.snailjob.server.common.Lifecycle; import com.aizuda.snailjob.server.common.dto.PartitionTask; +import com.aizuda.snailjob.server.common.enums.SyetemTaskTypeEnum; import com.aizuda.snailjob.server.common.schedule.AbstractSchedule; import com.aizuda.snailjob.server.common.util.DateUtils; import com.aizuda.snailjob.server.common.util.PartitionTaskUtils; @@ -89,7 +89,7 @@ public class RetryTaskMoreThresholdAlarmSchedule extends AbstractSchedule implem new LambdaQueryWrapper() .eq(RetryTask::getNamespaceId, partitionTask.getNamespaceId()) .eq(RetryTask::getGroupName, partitionTask.getGroupName()) - .eq(RetryTask::getSceneName, partitionTask.getSceneName()) + .eq(RetryTask::getSceneName, partitionTask.getBusinessId()) .eq(RetryTask::getRetryStatus, RetryStatusEnum.RUNNING.getStatus())); if (count >= partitionTask.getNotifyThreshold()) { @@ -105,7 +105,7 @@ public class RetryTaskMoreThresholdAlarmSchedule extends AbstractSchedule implem count, partitionTask.getNamespaceId(), partitionTask.getGroupName(), - partitionTask.getSceneName(), + partitionTask.getBusinessId(), DateUtils.toNowFormat(DateUtils.NORM_DATETIME_PATTERN), count) .title("{}环境 场景重试数量超过阈值", EnvironmentUtils.getActiveProfile()) @@ -123,6 +123,7 @@ public class RetryTaskMoreThresholdAlarmSchedule extends AbstractSchedule implem List notifyConfigs = accessTemplate.getNotifyConfigAccess() .listPage(new PageDTO<>(startId, 1000), new LambdaQueryWrapper() .eq(NotifyConfig::getNotifyStatus, StatusEnum.YES.getStatus()) + .eq(NotifyConfig::getSystemTaskType, SyetemTaskTypeEnum.RETRY.getType()) .eq(NotifyConfig::getNotifyScene, RetryNotifySceneEnum.MAX_RETRY.getNotifyScene()) .orderByDesc(NotifyConfig::getId)) // SQLServer 分页必须 ORDER BY .getRecords(); diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/NotifyConfigController.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/NotifyConfigController.java index 62ce3550..78f0aab7 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/NotifyConfigController.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/NotifyConfigController.java @@ -11,6 +11,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; +import java.util.Set; /** * 通知配置接口 @@ -36,7 +37,6 @@ public class NotifyConfigController { return notifyConfigService.getNotifyConfigDetail(id); } - @LoginRequired @PostMapping public Boolean saveNotify(@RequestBody @Validated NotifyConfigRequestVO requestVO) { @@ -54,4 +54,10 @@ public class NotifyConfigController { public Boolean updateStatus(@PathVariable("id") Long id, @PathVariable("status") Integer status) { return notifyConfigService.updateStatus(id, status); } + + @LoginRequired + @DeleteMapping("ids") + public Boolean batchDeleteNotify(@RequestBody Set ids) { + return notifyConfigService.batchDeleteNotify(ids); + } } diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/NotifyRecipientController.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/NotifyRecipientController.java index eae51589..73c3a9d4 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/NotifyRecipientController.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/NotifyRecipientController.java @@ -12,6 +12,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; +import java.util.Set; /** *

@@ -50,4 +51,10 @@ public class NotifyRecipientController { public List getNotifyRecipientList() { return notifyRecipientService.getNotifyRecipientList(); } + + @DeleteMapping("/ids") + @LoginRequired + public Boolean batchDeleteByIds(@RequestBody Set ids) { + return notifyRecipientService.batchDeleteByIds(ids); + } } diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/NotifyConfigService.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/NotifyConfigService.java index bc893dd2..b491e74c 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/NotifyConfigService.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/NotifyConfigService.java @@ -10,6 +10,7 @@ import com.aizuda.snailjob.server.web.model.request.NotifyConfigRequestVO; import com.aizuda.snailjob.server.web.model.response.NotifyConfigResponseVO; import java.util.List; +import java.util.Set; /** * @author: opensnail @@ -27,4 +28,5 @@ public interface NotifyConfigService { Boolean updateStatus(Long id, Integer status); + Boolean batchDeleteNotify(Set ids); } diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/NotifyRecipientService.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/NotifyRecipientService.java index c78514b3..fc45510d 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/NotifyRecipientService.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/NotifyRecipientService.java @@ -7,6 +7,7 @@ import com.aizuda.snailjob.server.web.model.response.CommonLabelValueResponseVO; import com.aizuda.snailjob.server.web.model.response.NotifyRecipientResponseVO; import java.util.List; +import java.util.Set; /** * @author opensnail @@ -23,4 +24,5 @@ public interface NotifyRecipientService { List getNotifyRecipientList(); + Boolean batchDeleteByIds(Set ids); } diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/NotifyConfigServiceImpl.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/NotifyConfigServiceImpl.java index 3fc0315e..2a67dee1 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/NotifyConfigServiceImpl.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/NotifyConfigServiceImpl.java @@ -196,4 +196,10 @@ public class NotifyConfigServiceImpl implements NotifyConfigService { .eq(NotifyConfig::getId, id) ); } + + @Override + public Boolean batchDeleteNotify(final Set ids) { + return ids.size() == accessTemplate.getNotifyConfigAccess() + .delete(new LambdaQueryWrapper().in(NotifyConfig::getId, ids)); + } } diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/NotifyRecipientServiceImpl.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/NotifyRecipientServiceImpl.java index 486fb936..87c03f3f 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/NotifyRecipientServiceImpl.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/NotifyRecipientServiceImpl.java @@ -18,6 +18,7 @@ import org.springframework.stereotype.Service; import java.util.List; import java.util.Objects; +import java.util.Set; /** * @author opensnail @@ -27,6 +28,7 @@ import java.util.Objects; @Service @RequiredArgsConstructor public class NotifyRecipientServiceImpl implements NotifyRecipientService { + private final NotifyRecipientMapper notifyRecipientMapper; @Override @@ -44,7 +46,8 @@ public class NotifyRecipientServiceImpl implements NotifyRecipientService { queryWrapper.orderByDesc(NotifyRecipient::getCreateDt); PageDTO notifyRecipientPageDTO = notifyRecipientMapper.selectPage(pageDTO, queryWrapper); - return new PageResult<>(pageDTO, NotifyRecipientConverter.INSTANCE.toNotifyRecipientResponseVOs(notifyRecipientPageDTO.getRecords())); + return new PageResult<>(pageDTO, + NotifyRecipientConverter.INSTANCE.toNotifyRecipientResponseVOs(notifyRecipientPageDTO.getRecords())); } @Override @@ -71,4 +74,9 @@ public class NotifyRecipientServiceImpl implements NotifyRecipientService { List notifyRecipients = notifyRecipientMapper.selectList(queryWrapper); return NotifyRecipientConverter.INSTANCE.toCommonLabelValueResponseVOs(notifyRecipients); } + + @Override + public Boolean batchDeleteByIds(final Set ids) { + return ids.size() == notifyRecipientMapper.deleteBatchIds(ids); + } }