diff --git a/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/java/com/orion/ops/framework/mybatis/core/generator/CodeGenerators.java b/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/java/com/orion/ops/framework/mybatis/core/generator/CodeGenerators.java index a0ca3570..5d305447 100644 --- a/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/java/com/orion/ops/framework/mybatis/core/generator/CodeGenerators.java +++ b/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/java/com/orion/ops/framework/mybatis/core/generator/CodeGenerators.java @@ -44,20 +44,13 @@ public class CodeGenerators { // .color("blue", "gray", "red", "green", "white") // .valueUseFields() // .build(), - Template.create("exec_job", "计划任务", "exec") + // Template.create("exec_template_host", "执行模板主机", "exec") + // .disableUnitTest() + // .vue("exec", "exec-template-host") + // .build(), + Template.create("path_bookmark", "路径标签", "host") .disableUnitTest() - .vue("exec", "exec-job") - .enableDrawerForm() - .dict("execJobStatus", "status") - .comment("计划任务状态") - .field("execJobStatus") - .fields("DISABLED", "ENABLED") - .labels("禁用", "启用") - .values(0, 1) - .build(), - Template.create("exec_job_host", "计划任务主机", "exec") - .disableUnitTest() - .vue("exec", "exec-job-host") + .vue("host", "path-bookmark") .build(), }; // jdbc 配置 - 使用配置文件 diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/ExecTemplateController.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/ExecTemplateController.java index 499de9cf..a3528b31 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/ExecTemplateController.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/ExecTemplateController.java @@ -66,6 +66,15 @@ public class ExecTemplateController { return execTemplateService.getExecTemplateById(id); } + @IgnoreLog(IgnoreLogMode.RET) + @GetMapping("/get-with-authorized") + @Operation(summary = "查询执行模板 (查询认证的主机)") + @Parameter(name = "id", description = "id", required = true) + @PreAuthorize("@ss.hasPermission('asset:exec-template:query')") + public ExecTemplateVO getExecTemplateWithAuthorized(@RequestParam("id") Long id) { + return execTemplateService.getExecTemplateWithAuthorized(id); + } + @IgnoreLog(IgnoreLogMode.RET) @PostMapping("/query") @Operation(summary = "分页查询执行模板") diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/exec/ExecTemplateQueryRequest.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/exec/ExecTemplateQueryRequest.java index 65918ec4..02947382 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/exec/ExecTemplateQueryRequest.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/exec/ExecTemplateQueryRequest.java @@ -31,7 +31,4 @@ public class ExecTemplateQueryRequest extends PageRequest { @Schema(description = "命令") private String command; - @Schema(description = "是否查询模板主机") - private Boolean queryHost; - } diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/ExecTemplateService.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/ExecTemplateService.java index 49361ff1..fc57fd73 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/ExecTemplateService.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/ExecTemplateService.java @@ -39,6 +39,14 @@ public interface ExecTemplateService { */ ExecTemplateVO getExecTemplateById(Long id); + /** + * 查询执行模板 (查询认证的主机) + * + * @param id id + * @return row + */ + ExecTemplateVO getExecTemplateWithAuthorized(Long id); + /** * 分页查询执行模板 * diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/ExecTemplateServiceImpl.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/ExecTemplateServiceImpl.java index 6c442876..2e93c34b 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/ExecTemplateServiceImpl.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/ExecTemplateServiceImpl.java @@ -3,9 +3,10 @@ package com.orion.ops.module.asset.service.impl; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.orion.lang.define.wrapper.DataGrid; -import com.orion.lang.utils.Booleans; +import com.orion.lang.utils.collect.Lists; import com.orion.ops.framework.common.constant.ErrorMessage; import com.orion.ops.framework.common.utils.Valid; +import com.orion.ops.framework.security.core.utils.SecurityUtils; import com.orion.ops.module.asset.convert.ExecTemplateConvert; import com.orion.ops.module.asset.dao.ExecTemplateDAO; import com.orion.ops.module.asset.entity.domain.ExecTemplateDO; @@ -13,7 +14,9 @@ import com.orion.ops.module.asset.entity.request.exec.ExecTemplateCreateRequest; import com.orion.ops.module.asset.entity.request.exec.ExecTemplateQueryRequest; import com.orion.ops.module.asset.entity.request.exec.ExecTemplateUpdateRequest; import com.orion.ops.module.asset.entity.vo.ExecTemplateVO; +import com.orion.ops.module.asset.enums.HostConfigTypeEnum; import com.orion.ops.module.asset.enums.ScriptExecEnum; +import com.orion.ops.module.asset.service.AssetAuthorizedDataService; import com.orion.ops.module.asset.service.ExecTemplateHostService; import com.orion.ops.module.asset.service.ExecTemplateService; import lombok.extern.slf4j.Slf4j; @@ -21,9 +24,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; -import java.util.Map; import java.util.Set; -import java.util.stream.Collectors; /** * 执行模板 服务实现类 @@ -42,6 +43,9 @@ public class ExecTemplateServiceImpl implements ExecTemplateService { @Resource private ExecTemplateHostService execTemplateHostService; + @Resource + private AssetAuthorizedDataService assetAuthorizedDataService; + @Override public Long createExecTemplate(ExecTemplateCreateRequest request) { log.info("ExecTemplateService-createExecTemplate request: {}", JSON.toJSONString(request)); @@ -92,28 +96,33 @@ public class ExecTemplateServiceImpl implements ExecTemplateService { return template; } + @Override + public ExecTemplateVO getExecTemplateWithAuthorized(Long id) { + // 查询模板 + ExecTemplateDO record = execTemplateDAO.selectById(id); + Valid.notNull(record, ErrorMessage.DATA_ABSENT); + // 转换 + ExecTemplateVO template = ExecTemplateConvert.MAPPER.to(record); + // 查询模板主机 + Set hostIdList = execTemplateHostService.getHostByTemplateId(id); + if (Lists.isEmpty(hostIdList)) { + return template; + } + // 过滤认证的主机 + List authorizedHostIdList = assetAuthorizedDataService.getUserAuthorizedHostIdWithEnabledConfig(SecurityUtils.getLoginUserId(), HostConfigTypeEnum.SSH); + hostIdList.removeIf(s -> !authorizedHostIdList.contains(s)); + template.setHostIdList(hostIdList); + return template; + } + @Override public DataGrid getExecTemplatePage(ExecTemplateQueryRequest request) { // 条件 LambdaQueryWrapper wrapper = this.buildQueryWrapper(request); // 查询模板 - DataGrid templates = execTemplateDAO.of(wrapper) + return execTemplateDAO.of(wrapper) .page(request) .dataGrid(ExecTemplateConvert.MAPPER::to); - if (templates.isEmpty()) { - return templates; - } - // 查询模板主机 - if (Booleans.isTrue(request.getQueryHost())) { - List idList = templates.stream() - .map(ExecTemplateVO::getId) - .collect(Collectors.toList()); - Map> templateHosts = execTemplateHostService.getHostByTemplateIdList(idList); - for (ExecTemplateVO template : templates) { - template.setHostIdList(templateHosts.get(template.getId())); - } - } - return templates; } @Override diff --git a/orion-ops-ui/src/api/exec/exec-template.ts b/orion-ops-ui/src/api/exec/exec-template.ts index d6efe4b7..a2814ed9 100644 --- a/orion-ops-ui/src/api/exec/exec-template.ts +++ b/orion-ops-ui/src/api/exec/exec-template.ts @@ -11,6 +11,7 @@ export interface ExecTemplateCreateRequest { timeout?: number; scriptExec?: number; parameterSchema?: string; + hostIdList?: Array; } /** @@ -43,6 +44,7 @@ export interface ExecTemplateQueryResponse extends TableData { updateTime: number; creator: string; updater: string; + hostIdList?: Array; } /** @@ -66,6 +68,13 @@ export function getExecTemplate(id: number) { return axios.get('/asset/exec-template/get', { params: { id } }); } +/** + * 查询执行模板 + */ +export function getExecTemplateWithAuthorized(id: number) { + return axios.get('/asset/exec-template/get-with-authorized', { params: { id } }); +} + /** * 分页查询执行模板 */ diff --git a/orion-ops-ui/src/components/exec/log/panel-modal/index.vue b/orion-ops-ui/src/components/exec/log/panel-modal/index.vue index 7102c94a..39debb0b 100644 --- a/orion-ops-ui/src/components/exec/log/panel-modal/index.vue +++ b/orion-ops-ui/src/components/exec/log/panel-modal/index.vue @@ -1,14 +1,14 @@