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