From 5f58cf9d2e984cfdd8c0629aa569a2e7f56d0164 Mon Sep 17 00:00:00 2001
From: "1437892690@qq.com" <1437892690@qq.com>
Date: Tue, 20 May 2025 15:52:36 +0800
Subject: [PATCH] =?UTF-8?q?[=E4=BF=AE=E5=A4=8D]=20=E5=8F=91=E5=B8=83?=
=?UTF-8?q?=E4=BD=9C=E4=B8=9A=E9=BB=98=E8=AE=A4=E9=80=9A=E7=9F=A5=E7=AD=96?=
=?UTF-8?q?=E7=95=A5=E6=B2=A1=E6=9C=89=E7=94=9F=E6=95=88?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
关联 #[1425371126267904]发布作业默认通知策略没有生效 http://192.168.0.96:8090/demo/rdm.html#/bug-detail/939050947543040/939050947543057/1425371126267904
---
.../api/job/SaveDeployJobNotifyPolicyApi.java | 28 +++--
.../dao/mapper/DeployAppConfigMapper.java | 2 +
.../dao/mapper/DeployAppConfigMapper.xml | 17 +++
...otifyPolicyDeployJobDependencyHandler.java | 111 ++++++++++--------
.../DeployJobNotifyCallbackHandler.java | 110 ++++++++---------
5 files changed, 155 insertions(+), 113 deletions(-)
diff --git a/src/main/java/neatlogic/module/deploy/api/job/SaveDeployJobNotifyPolicyApi.java b/src/main/java/neatlogic/module/deploy/api/job/SaveDeployJobNotifyPolicyApi.java
index a04f1294..98314dc7 100644
--- a/src/main/java/neatlogic/module/deploy/api/job/SaveDeployJobNotifyPolicyApi.java
+++ b/src/main/java/neatlogic/module/deploy/api/job/SaveDeployJobNotifyPolicyApi.java
@@ -14,7 +14,6 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .*/
package neatlogic.module.deploy.api.job;
-import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import neatlogic.framework.auth.core.AuthAction;
import neatlogic.framework.common.constvalue.ApiParamType;
@@ -27,6 +26,7 @@ import neatlogic.framework.notify.dto.InvokeNotifyPolicyConfigVo;
import neatlogic.framework.restful.annotation.*;
import neatlogic.framework.restful.constvalue.OperationTypeEnum;
import neatlogic.framework.restful.core.privateapi.PrivateApiComponentBase;
+import neatlogic.module.deploy.dao.mapper.DeployAppConfigMapper;
import neatlogic.module.deploy.dependency.handler.NotifyPolicyDeployJobDependencyHandler;
import neatlogic.module.deploy.notify.handler.DeployJobNotifyPolicyHandler;
import neatlogic.module.deploy.service.DeployAppAuthorityService;
@@ -34,6 +34,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
+import java.util.Objects;
/**
* @author longrf
@@ -58,10 +59,13 @@ public class SaveDeployJobNotifyPolicyApi extends PrivateApiComponentBase {
@Resource
DeployAppAuthorityService deployAppAuthorityService;
+ @Resource
+ private DeployAppConfigMapper deployAppConfigMapper;
+
@Input({
@Param(name = "appSystemId", type = ApiParamType.LONG, isRequired = true, desc = "应用系统id"),
@Param(name = "policyId", type = ApiParamType.LONG, desc = "通知策略id"),
- @Param(name = "isCustom", type = ApiParamType.ENUM, rule = "0,1", desc = "通知策略id"),
+ @Param(name = "isCustom", type = ApiParamType.ENUM, rule = "0,1", isRequired = true, desc = "通知策略id"),
@Param(name = "paramMappingList", type = ApiParamType.JSONARRAY, desc = "参数映射列表"),
@Param(name = "excludeTriggerList", type = ApiParamType.JSONARRAY, desc = "排除的触发点列表")
})
@@ -73,17 +77,19 @@ public class SaveDeployJobNotifyPolicyApi extends PrivateApiComponentBase {
Long appSystemId = paramObj.getLong("appSystemId");
deployAppAuthorityService.checkOperationAuth(appSystemId, DeployAppConfigAction.EDIT);
DependencyManager.delete(NotifyPolicyDeployJobDependencyHandler.class, appSystemId);
+ Integer isCustom = paramObj.getInteger("isCustom");
Long policyId = paramObj.getLong("policyId");
- if (policyId != null) {
- INotifyServiceCrossoverService notifyServiceCrossoverService = CrossoverServiceFactory.getApi(INotifyServiceCrossoverService.class);
- InvokeNotifyPolicyConfigVo invokeNotifyPolicyConfigVo = paramObj.toJavaObject(InvokeNotifyPolicyConfigVo.class);
- invokeNotifyPolicyConfigVo.setHandler(DeployJobNotifyPolicyHandler.class.getName());
- invokeNotifyPolicyConfigVo = notifyServiceCrossoverService.regulateNotifyPolicyConfig(invokeNotifyPolicyConfigVo);
- JSONArray to = new JSONArray();
- to.add(appSystemId);
- to.add(JSONObject.toJSONString(invokeNotifyPolicyConfigVo));
- DependencyManager.insert(NotifyPolicyDeployJobDependencyHandler.class, policyId, to);
+ if (Objects.equals(isCustom, 1)) {
+ DependencyManager.insert(NotifyPolicyDeployJobDependencyHandler.class, policyId, appSystemId);
+ } else {
+ policyId = -1L;
}
+ INotifyServiceCrossoverService notifyServiceCrossoverService = CrossoverServiceFactory.getApi(INotifyServiceCrossoverService.class);
+ InvokeNotifyPolicyConfigVo invokeNotifyPolicyConfigVo = paramObj.toJavaObject(InvokeNotifyPolicyConfigVo.class);
+ invokeNotifyPolicyConfigVo.setHandler(DeployJobNotifyPolicyHandler.class.getName());
+ invokeNotifyPolicyConfigVo = notifyServiceCrossoverService.regulateNotifyPolicyConfig(invokeNotifyPolicyConfigVo);
+ String configStr = JSONObject.toJSONString(invokeNotifyPolicyConfigVo);
+ deployAppConfigMapper.saveDeloyJobNotifyPolicy(appSystemId, policyId, configStr);
return null;
}
diff --git a/src/main/java/neatlogic/module/deploy/dao/mapper/DeployAppConfigMapper.java b/src/main/java/neatlogic/module/deploy/dao/mapper/DeployAppConfigMapper.java
index f1834bd6..7f4967df 100644
--- a/src/main/java/neatlogic/module/deploy/dao/mapper/DeployAppConfigMapper.java
+++ b/src/main/java/neatlogic/module/deploy/dao/mapper/DeployAppConfigMapper.java
@@ -166,6 +166,8 @@ public interface DeployAppConfigMapper extends IDeployAppConfigCrossoverMapper {
void insertBatchAppConfigEnvDBConfig(@Param("dbConfigVoList") List dbConfigVoList);
+ int saveDeloyJobNotifyPolicy(@Param("appSystemId") Long appSystemId, @Param("notifyPolicyId") Long notifyPolicyId, @Param("configStr") String configStr);
+
Integer updateAppConfig(DeployAppConfigVo deployAppConfigVo);
Integer updateAppConfigDraft(DeployAppConfigVo deployAppConfigDraftVo);
diff --git a/src/main/java/neatlogic/module/deploy/dao/mapper/DeployAppConfigMapper.xml b/src/main/java/neatlogic/module/deploy/dao/mapper/DeployAppConfigMapper.xml
index 42115139..45c6459a 100644
--- a/src/main/java/neatlogic/module/deploy/dao/mapper/DeployAppConfigMapper.xml
+++ b/src/main/java/neatlogic/module/deploy/dao/mapper/DeployAppConfigMapper.xml
@@ -1711,6 +1711,23 @@ along with this program. If not, see .-->
`config` = VALUES ( config )
+
+ INSERT INTO `deploy_job_notify_policy` (
+ `app_system_id`,
+ `notify_policy_id`,
+ `config`
+ )
+ VALUES
+ (
+ #{appSystemId},
+ #{notifyPolicyId},
+ #{configStr, typeHandler=CompressHandler}
+ )
+ ON DUPLICATE KEY UPDATE
+ `notify_policy_id` = #{notifyPolicyId},
+ `config` = #{configStr, typeHandler=CompressHandler}
+
+
UPDATE `deploy_app_config`
SET `config` = #{configStr},
diff --git a/src/main/java/neatlogic/module/deploy/dependency/handler/NotifyPolicyDeployJobDependencyHandler.java b/src/main/java/neatlogic/module/deploy/dependency/handler/NotifyPolicyDeployJobDependencyHandler.java
index b72a9c6c..0757d3ed 100644
--- a/src/main/java/neatlogic/module/deploy/dependency/handler/NotifyPolicyDeployJobDependencyHandler.java
+++ b/src/main/java/neatlogic/module/deploy/dependency/handler/NotifyPolicyDeployJobDependencyHandler.java
@@ -20,75 +20,88 @@ import neatlogic.framework.cmdb.crossover.IAppSystemMapper;
import neatlogic.framework.cmdb.dto.resourcecenter.entity.AppSystemVo;
import neatlogic.framework.crossover.CrossoverServiceFactory;
import neatlogic.framework.dependency.constvalue.FrameworkFromType;
-import neatlogic.framework.dependency.core.CustomDependencyHandlerBase;
+import neatlogic.framework.dependency.core.DefaultDependencyHandlerBase;
import neatlogic.framework.dependency.core.IFromType;
import neatlogic.framework.dependency.dto.DependencyInfoVo;
-import neatlogic.framework.deploy.dto.app.DeployAppConfigVo;
-import neatlogic.module.deploy.dao.mapper.DeployAppConfigMapper;
+import neatlogic.framework.dependency.dto.DependencyVo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
-import javax.annotation.Resource;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
-import java.util.Map;
/**
* @author longrf
* @date 2022/12/29 16:36
*/
@Service
-public class NotifyPolicyDeployJobDependencyHandler extends CustomDependencyHandlerBase {
+public class NotifyPolicyDeployJobDependencyHandler extends DefaultDependencyHandlerBase {
- @Resource
- DeployAppConfigMapper deployAppConfigMapper;
+// @Resource
+// DeployAppConfigMapper deployAppConfigMapper;
+//
+// @Override
+// protected String getTableName() {
+// return "deploy_job_notify_policy";
+// }
+//
+// @Override
+// protected String getFromField() {
+// return "notify_policy_id";
+// }
+//
+// @Override
+// protected String getToField() {
+// return "app_system_id";
+// }
+//
+// @Override
+// protected List getToFieldList() {
+// return Arrays.asList("app_system_id", "config");
+// }
+//
+// @Override
+// protected DependencyInfoVo parse(Object dependencyObj) {
+// if (dependencyObj instanceof Map) {
+// Map map = (Map) dependencyObj;
+// Long appSystemId = (Long) map.get("app_system_id");
+// DeployAppConfigVo appConfigVo = deployAppConfigMapper.getAppConfigVo(new DeployAppConfigVo(appSystemId));
+// if (appConfigVo != null) {
+// IAppSystemMapper iAppSystemMapper = CrossoverServiceFactory.getApi(IAppSystemMapper.class);
+// AppSystemVo appSystemVo = iAppSystemMapper.getAppSystemById(appSystemId);
+// if (appSystemVo != null) {
+// String lastName = appSystemVo.getAbbrName() + (StringUtils.isNotEmpty(appSystemVo.getName()) ? "(" + appSystemVo.getName() + ")" : "");
+// JSONObject dependencyInfoConfig = new JSONObject();
+// dependencyInfoConfig.put("appSystemId", appConfigVo.getAppSystemId());
+// List pathList = new ArrayList<>();
+// pathList.add("应用配置");
+// String urlFormat = "/" + TenantContext.get().getTenantUuid() + "/deploy.html#/application-config-manage?appSystemId=${DATA.appSystemId}";
+// return new DependencyInfoVo(appConfigVo.getAppSystemId(), dependencyInfoConfig, lastName, pathList, urlFormat, this.getGroupName());
+// }
+// }
+// }
+// return null;
+// }
@Override
- protected String getTableName() {
- return "deploy_job_notify_policy";
- }
-
- @Override
- protected String getFromField() {
- return "notify_policy_id";
- }
-
- @Override
- protected String getToField() {
- return "app_system_id";
- }
-
- @Override
- protected List getToFieldList() {
- return Arrays.asList("app_system_id", "config");
+ public IFromType getFromType() {
+ return FrameworkFromType.NOTIFY_POLICY;
}
@Override
- protected DependencyInfoVo parse(Object dependencyObj) {
- if (dependencyObj instanceof Map) {
- Map map = (Map) dependencyObj;
- Long appSystemId = (Long) map.get("app_system_id");
- DeployAppConfigVo appConfigVo = deployAppConfigMapper.getAppConfigVo(new DeployAppConfigVo(appSystemId));
- if (appConfigVo != null) {
- IAppSystemMapper iAppSystemMapper = CrossoverServiceFactory.getApi(IAppSystemMapper.class);
- AppSystemVo appSystemVo = iAppSystemMapper.getAppSystemById(appSystemId);
- if (appSystemVo != null) {
- String lastName = appSystemVo.getAbbrName() + (StringUtils.isNotEmpty(appSystemVo.getName()) ? "(" + appSystemVo.getName() + ")" : "");
- JSONObject dependencyInfoConfig = new JSONObject();
- dependencyInfoConfig.put("appSystemId", appConfigVo.getAppSystemId());
- List pathList = new ArrayList<>();
- pathList.add("应用配置");
- String urlFormat = "/" + TenantContext.get().getTenantUuid() + "/deploy.html#/application-config-manage?appSystemId=${DATA.appSystemId}";
- return new DependencyInfoVo(appConfigVo.getAppSystemId(), dependencyInfoConfig, lastName, pathList, urlFormat, this.getGroupName());
- }
- }
+ protected DependencyInfoVo parse(DependencyVo dependencyVo) {
+ Long appSystemId = Long.valueOf(dependencyVo.getTo());
+ IAppSystemMapper iAppSystemMapper = CrossoverServiceFactory.getApi(IAppSystemMapper.class);
+ AppSystemVo appSystemVo = iAppSystemMapper.getAppSystemById(appSystemId);
+ if (appSystemVo != null) {
+ String lastName = appSystemVo.getAbbrName() + (StringUtils.isNotEmpty(appSystemVo.getName()) ? "(" + appSystemVo.getName() + ")" : "");
+ JSONObject dependencyInfoConfig = new JSONObject();
+ dependencyInfoConfig.put("appSystemId", appSystemId);
+ List pathList = new ArrayList<>();
+ pathList.add("应用配置");
+ String urlFormat = "/" + TenantContext.get().getTenantUuid() + "/deploy.html#/application-config-manage?appSystemId=${DATA.appSystemId}";
+ return new DependencyInfoVo(appSystemId, dependencyInfoConfig, lastName, pathList, urlFormat, this.getGroupName());
}
return null;
}
-
- @Override
- public IFromType getFromType() {
- return FrameworkFromType.NOTIFY_POLICY;
- }
}
diff --git a/src/main/java/neatlogic/module/deploy/job/callback/DeployJobNotifyCallbackHandler.java b/src/main/java/neatlogic/module/deploy/job/callback/DeployJobNotifyCallbackHandler.java
index 6f2c4f77..9cdd1386 100644
--- a/src/main/java/neatlogic/module/deploy/job/callback/DeployJobNotifyCallbackHandler.java
+++ b/src/main/java/neatlogic/module/deploy/job/callback/DeployJobNotifyCallbackHandler.java
@@ -36,6 +36,7 @@ import neatlogic.framework.util.NotifyPolicyUtil;
import neatlogic.module.deploy.dao.mapper.DeployAppConfigMapper;
import neatlogic.module.deploy.dao.mapper.DeployJobMapper;
import neatlogic.module.deploy.handler.DeployJobMessageHandler;
+import neatlogic.module.deploy.notify.handler.DeployJobNotifyPolicyHandler;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
@@ -144,72 +145,75 @@ public class DeployJobNotifyCallbackHandler extends AutoexecJobCallbackBase {
}
notifyAuditMessageStringBuilder.append("(").append(envId).append(")");
}
+ InvokeNotifyPolicyConfigVo invokeNotifyPolicyConfigVo = null;
String configStr = deployAppConfigMapper.getAppSystemNotifyPolicyConfigByAppSystemId(appSystemId);
if (StringUtils.isNotBlank(configStr)) {
- InvokeNotifyPolicyConfigVo invokeNotifyPolicyConfigVo = JSONObject.parseObject(configStr, InvokeNotifyPolicyConfigVo.class);
- // 触发点被排除,不用发送邮件
- List excludeTriggerList = invokeNotifyPolicyConfigVo.getExcludeTriggerList();
- if (CollectionUtils.isNotEmpty(excludeTriggerList) && excludeTriggerList.contains(notifyTriggerType.getTrigger())) {
- notifyAuditMessageStringBuilder.append(" 通知策略设置触发时机中排除了触发点").append(notifyTriggerType.getTrigger()).append("(").append(notifyTriggerType.getText()).append(")");
- } else {
- NotifyPolicyVo notifyPolicyVo = null;
- if (invokeNotifyPolicyConfigVo.getIsCustom() == 1) {
- notifyAuditMessageStringBuilder.append(" 设置通知策略ID为 ");
- if (invokeNotifyPolicyConfigVo.getPolicyId() != null) {
- notifyAuditMessageStringBuilder.append(invokeNotifyPolicyConfigVo.getPolicyId());
- notifyPolicyVo = notifyMapper.getNotifyPolicyById(invokeNotifyPolicyConfigVo.getPolicyId());
- if (notifyPolicyVo == null) {
- notifyAuditMessageStringBuilder.append(",但是该通知策略不存在");
- } else {
- notifyAuditMessageStringBuilder.append(",找到默认通知策略").append(notifyPolicyVo.getName()).append("(").append(notifyPolicyVo.getId()).append(")");
- }
+ invokeNotifyPolicyConfigVo = JSONObject.parseObject(configStr, InvokeNotifyPolicyConfigVo.class);
+ } else {
+// notifyAuditMessageStringBuilder.append(" 在deploy_job_notify_policy表中找不到的该应用系统的通知策略数据").append(",无法触发通知");
+ invokeNotifyPolicyConfigVo = new InvokeNotifyPolicyConfigVo();
+ invokeNotifyPolicyConfigVo.setHandler(DeployJobNotifyPolicyHandler.class.getName());
+ }
+ // 触发点被排除,不用发送邮件
+ List excludeTriggerList = invokeNotifyPolicyConfigVo.getExcludeTriggerList();
+ if (CollectionUtils.isNotEmpty(excludeTriggerList) && excludeTriggerList.contains(notifyTriggerType.getTrigger())) {
+ notifyAuditMessageStringBuilder.append(" 通知策略设置触发时机中排除了触发点").append(notifyTriggerType.getTrigger()).append("(").append(notifyTriggerType.getText()).append(")");
+ } else {
+ NotifyPolicyVo notifyPolicyVo = null;
+ if (invokeNotifyPolicyConfigVo.getIsCustom() == 1) {
+ notifyAuditMessageStringBuilder.append(" 设置通知策略ID为 ");
+ if (invokeNotifyPolicyConfigVo.getPolicyId() != null) {
+ notifyAuditMessageStringBuilder.append(invokeNotifyPolicyConfigVo.getPolicyId());
+ notifyPolicyVo = notifyMapper.getNotifyPolicyById(invokeNotifyPolicyConfigVo.getPolicyId());
+ if (notifyPolicyVo == null) {
+ notifyAuditMessageStringBuilder.append(",但是该通知策略不存在");
} else {
- notifyAuditMessageStringBuilder.append("null");
+ notifyAuditMessageStringBuilder.append(",找到默认通知策略").append(notifyPolicyVo.getName()).append("(").append(notifyPolicyVo.getId()).append(")");
}
} else {
- notifyAuditMessageStringBuilder.append(" 没有设置通知策略 ");
- if (invokeNotifyPolicyConfigVo.getHandler() != null) {
- notifyAuditMessageStringBuilder.append(" 通过通知策略handler=").append(invokeNotifyPolicyConfigVo.getHandler());
- notifyPolicyVo = notifyMapper.getDefaultNotifyPolicyByHandler(invokeNotifyPolicyConfigVo.getHandler());
- if (notifyPolicyVo == null) {
- notifyAuditMessageStringBuilder.append(" ,找不到默认通知策略");
- } else {
- notifyAuditMessageStringBuilder.append(" ,找到默认通知策略 ").append(notifyPolicyVo.getName()).append("(").append(notifyPolicyVo.getId()).append(")");
- }
+ notifyAuditMessageStringBuilder.append("null");
+ }
+ } else {
+ notifyAuditMessageStringBuilder.append(" 没有设置通知策略 ");
+ if (invokeNotifyPolicyConfigVo.getHandler() != null) {
+ notifyAuditMessageStringBuilder.append(" 通过通知策略handler=").append(invokeNotifyPolicyConfigVo.getHandler());
+ notifyPolicyVo = notifyMapper.getDefaultNotifyPolicyByHandler(invokeNotifyPolicyConfigVo.getHandler());
+ if (notifyPolicyVo == null) {
+ notifyAuditMessageStringBuilder.append(" ,找不到默认通知策略");
} else {
- notifyAuditMessageStringBuilder.append(" 由于通知策略handler为null,无法找到默认通知策略");
+ notifyAuditMessageStringBuilder.append(" ,找到默认通知策略 ").append(notifyPolicyVo.getName()).append("(").append(notifyPolicyVo.getId()).append(")");
}
+ } else {
+ notifyAuditMessageStringBuilder.append(" 由于通知策略handler为null,无法找到默认通知策略");
}
- if (notifyPolicyVo != null) {
- if (notifyPolicyVo.getConfig() != null) {
- Map> receiverMap = new HashMap<>();
- if (!Objects.equals(jobInfo.getExecUser(), SystemUser.SYSTEM.getUserUuid())) {
- receiverMap.computeIfAbsent(JobUserType.EXEC_USER.getValue(), k -> new ArrayList<>())
- .add(new NotifyReceiverVo(GroupSearch.USER.getValue(), jobInfo.getExecUser()));
- }
- flag = true;
- NotifyPolicyUtil.execute(
- notifyPolicyVo.getHandler(),
- notifyTriggerType,
- DeployJobMessageHandler.class,
- notifyPolicyVo,
- null,
- null,
- receiverMap,
- jobInfo,
- null,
- notifyAuditMessageStringBuilder.toString()
- );
- } else {
- notifyAuditMessageStringBuilder.append(" 通知策略config为null,不触发通知");
+ }
+ if (notifyPolicyVo != null) {
+ if (notifyPolicyVo.getConfig() != null) {
+ Map> receiverMap = new HashMap<>();
+ if (!Objects.equals(jobInfo.getExecUser(), SystemUser.SYSTEM.getUserUuid())) {
+ receiverMap.computeIfAbsent(JobUserType.EXEC_USER.getValue(), k -> new ArrayList<>())
+ .add(new NotifyReceiverVo(GroupSearch.USER.getValue(), jobInfo.getExecUser()));
}
+ flag = true;
+ NotifyPolicyUtil.execute(
+ notifyPolicyVo.getHandler(),
+ notifyTriggerType,
+ DeployJobMessageHandler.class,
+ notifyPolicyVo,
+ null,
+ null,
+ receiverMap,
+ jobInfo,
+ null,
+ notifyAuditMessageStringBuilder.toString()
+ );
+ } else {
+ notifyAuditMessageStringBuilder.append(" 通知策略config为null,不触发通知");
}
}
- } else {
- notifyAuditMessageStringBuilder.append(" 在deploy_job_notify_policy表中找不到的该应用系统的通知策略数据").append(",无法触发通知");
}
} else {
- notifyAuditMessageStringBuilder.append(" 在deploy_job表中该作业的app_system_id").append(",无法触发通知");
+ notifyAuditMessageStringBuilder.append(" 在deploy_job表中该作业的app_system_id为null").append(",无法触发通知");
}
} else {
notifyAuditMessageStringBuilder
--
Gitee