From 6c60756e54be19258d7fd1a3cc520c66f7aa6c7d Mon Sep 17 00:00:00 2001 From: lijiahang Date: Mon, 26 Aug 2024 13:57:18 +0800 Subject: [PATCH 1/4] =?UTF-8?q?:zap:=20=E7=A6=81=E7=94=A8=20demo=20api.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/e2e/testsuite.yaml | 4 ++-- .../controller/AssetDataGrantServiceController.java | 4 ++++ .../module/asset/controller/ExecTemplateController.java | 5 +++++ .../module/infra/controller/SystemRoleController.java | 3 +++ .../module/infra/controller/SystemUserController.java | 3 +++ .../module/infra/service/impl/TagRelServiceImpl.java | 9 --------- 6 files changed, 17 insertions(+), 11 deletions(-) diff --git a/docker/e2e/testsuite.yaml b/docker/e2e/testsuite.yaml index 8554d5e6..e35d3c2c 100644 --- a/docker/e2e/testsuite.yaml +++ b/docker/e2e/testsuite.yaml @@ -17,7 +17,7 @@ items: code: 200 - name: userPermission request: - api: /orion-visor/api/infra/permission/user + api: /orion-visor/api/infra/user-permission/user header: Authorization: Bearer {{.login.data.token}} expect: @@ -26,7 +26,7 @@ items: msg: "success" - name: menu request: - api: /orion-visor/api/infra/permission/menu + api: /orion-visor/api/infra/user-permission/menu header: Authorization: Bearer {{.login.data.token}} expect: diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/controller/AssetDataGrantServiceController.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/controller/AssetDataGrantServiceController.java index f935335a..600c6041 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/controller/AssetDataGrantServiceController.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/controller/AssetDataGrantServiceController.java @@ -3,6 +3,7 @@ package com.orion.visor.module.asset.controller; import com.orion.visor.framework.biz.operator.log.core.annotation.OperatorLog; import com.orion.visor.framework.log.core.annotation.IgnoreLog; import com.orion.visor.framework.log.core.enums.IgnoreLogMode; +import com.orion.visor.framework.web.core.annotation.DemoDisableApi; import com.orion.visor.framework.web.core.annotation.RestWrapper; import com.orion.visor.module.asset.define.operator.HostGroupOperatorType; import com.orion.visor.module.asset.define.operator.HostIdentityOperatorType; @@ -43,6 +44,7 @@ public class AssetDataGrantServiceController { @Resource private AssetAuthorizedDataService assetAuthorizedDataService; + @DemoDisableApi @OperatorLog(HostGroupOperatorType.GRANT) @PutMapping("/grant-host-group") @Operation(summary = "主机分组授权") @@ -60,6 +62,7 @@ public class AssetDataGrantServiceController { return assetAuthorizedDataService.getAuthorizedDataRelId(DataPermissionTypeEnum.HOST_GROUP, request); } + @DemoDisableApi @OperatorLog(HostKeyOperatorType.GRANT) @PutMapping("/grant-host-key") @Operation(summary = "主机密钥授权") @@ -77,6 +80,7 @@ public class AssetDataGrantServiceController { return assetAuthorizedDataService.getAuthorizedDataRelId(DataPermissionTypeEnum.HOST_KEY, request); } + @DemoDisableApi @OperatorLog(HostIdentityOperatorType.GRANT) @PutMapping("/grant-host-identity") @Operation(summary = "主机身份授权") diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/controller/ExecTemplateController.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/controller/ExecTemplateController.java index d4aa49f4..6e58c6b6 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/controller/ExecTemplateController.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/controller/ExecTemplateController.java @@ -5,6 +5,7 @@ import com.orion.visor.framework.biz.operator.log.core.annotation.OperatorLog; import com.orion.visor.framework.common.validator.group.Page; import com.orion.visor.framework.log.core.annotation.IgnoreLog; import com.orion.visor.framework.log.core.enums.IgnoreLogMode; +import com.orion.visor.framework.web.core.annotation.DemoDisableApi; import com.orion.visor.framework.web.core.annotation.RestWrapper; import com.orion.visor.module.asset.define.operator.ExecTemplateOperatorType; import com.orion.visor.module.asset.entity.request.exec.ExecTemplateCreateRequest; @@ -41,6 +42,7 @@ public class ExecTemplateController { @Resource private ExecTemplateService execTemplateService; + @DemoDisableApi @OperatorLog(ExecTemplateOperatorType.CREATE) @PostMapping("/create") @Operation(summary = "创建执行模板") @@ -49,6 +51,7 @@ public class ExecTemplateController { return execTemplateService.createExecTemplate(request); } + @DemoDisableApi @OperatorLog(ExecTemplateOperatorType.UPDATE) @PutMapping("/update") @Operation(summary = "更新执行模板") @@ -83,6 +86,7 @@ public class ExecTemplateController { return execTemplateService.getExecTemplatePage(request); } + @DemoDisableApi @OperatorLog(ExecTemplateOperatorType.DELETE) @DeleteMapping("/delete") @Operation(summary = "删除执行模板") @@ -92,6 +96,7 @@ public class ExecTemplateController { return execTemplateService.deleteExecTemplateById(id); } + @DemoDisableApi @OperatorLog(ExecTemplateOperatorType.DELETE) @DeleteMapping("/batch-delete") @Operation(summary = "批量删除执行模板") diff --git a/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/controller/SystemRoleController.java b/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/controller/SystemRoleController.java index 806be479..213c1a3e 100644 --- a/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/controller/SystemRoleController.java +++ b/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/controller/SystemRoleController.java @@ -48,6 +48,7 @@ public class SystemRoleController { @Resource private SystemRoleMenuService systemRoleMenuService; + @DemoDisableApi @OperatorLog(SystemRoleOperatorType.CREATE) @PostMapping("/create") @Operation(summary = "创建角色") @@ -56,6 +57,7 @@ public class SystemRoleController { return systemRoleService.createSystemRole(request); } + @DemoDisableApi @OperatorLog(SystemRoleOperatorType.UPDATE) @PutMapping("/update") @Operation(summary = "通过 id 更新角色") @@ -116,6 +118,7 @@ public class SystemRoleController { return systemRoleService.deleteSystemRoleById(id); } + @DemoDisableApi @OperatorLog(SystemRoleOperatorType.GRANT_MENU) @PutMapping("/grant-menu") @Operation(summary = "分配角色菜单") diff --git a/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/controller/SystemUserController.java b/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/controller/SystemUserController.java index 7eeb31d4..1dd06e34 100644 --- a/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/controller/SystemUserController.java +++ b/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/controller/SystemUserController.java @@ -55,6 +55,7 @@ public class SystemUserController { @Resource private OperatorLogService operatorLogService; + @DemoDisableApi @OperatorLog(SystemUserOperatorType.CREATE) @PostMapping("/create") @Operation(summary = "创建用户") @@ -63,6 +64,7 @@ public class SystemUserController { return systemUserService.createSystemUser(request); } + @DemoDisableApi @OperatorLog(SystemUserOperatorType.UPDATE) @PutMapping("/update") @Operation(summary = "通过 id 更新用户") @@ -82,6 +84,7 @@ public class SystemUserController { return systemUserService.updateUserStatus(request); } + @DemoDisableApi @OperatorLog(SystemUserOperatorType.GRANT_ROLE) @PutMapping("/grant-role") @Operation(summary = "分配用户角色") diff --git a/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/service/impl/TagRelServiceImpl.java b/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/service/impl/TagRelServiceImpl.java index 6812baa9..9915cd16 100644 --- a/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/service/impl/TagRelServiceImpl.java +++ b/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/service/impl/TagRelServiceImpl.java @@ -45,12 +45,6 @@ public class TagRelServiceImpl implements TagRelService { @Override public void addTagRel(String type, Long relId, List tagIdList) { - // 删除引用 - TagRelQueryRequest deleteRequest = new TagRelQueryRequest(); - deleteRequest.setTagType(type); - deleteRequest.setRelId(relId); - LambdaQueryWrapper deleteWrapper = this.buildQueryWrapper(deleteRequest); - tagRelDAO.delete(deleteWrapper); // 查询 tag List tagList = tagDAO.selectBatchIds(tagIdList); // 插入引用 @@ -63,9 +57,6 @@ public class TagRelServiceImpl implements TagRelService { .build()) .collect(Collectors.toList()); tagRelDAO.insertBatch(tagRelList); - // 设置缓存 - String cacheKey = TagCacheKeyDefine.TAG_REL.format(type, relId); - RedisStrings.setJson(cacheKey, TagCacheKeyDefine.TAG_REL, TagRelConvert.MAPPER.toCacheList(tagRelList)); } @Override From a0adb415fa9fd99be4370b83fbf483bce3089698 Mon Sep 17 00:00:00 2001 From: lijiahang Date: Mon, 26 Aug 2024 17:10:40 +0800 Subject: [PATCH 2/4] =?UTF-8?q?:hammer:=20=E6=95=B0=E6=8D=AE=E6=B8=85?= =?UTF-8?q?=E7=90=86=E6=97=B6=E6=B7=BB=E5=8A=A0=E6=9D=A1=E6=95=B0=E9=99=90?= =?UTF-8?q?=E5=88=B6.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/common/entity/PageRequest.java | 10 +++-- .../framework/common/utils/SqlUtils.java | 38 +++++++++++++++++++ .../common/validator/group/Batch.java | 4 +- .../common/validator/group/Clear.java | 11 ++++++ .../common/validator/group/Export.java | 11 ++++++ .../framework/common/validator/group/Id.java | 4 +- .../common/validator/group/Import.java | 11 ++++++ .../common/validator/group/Page.java | 4 +- .../mybatis/core/query/DataQuery.java | 5 ++- .../controller/ExecCommandLogController.java | 4 +- .../controller/ExecJobLogController.java | 4 +- .../controller/HostConnectLogController.java | 3 +- .../controller/UploadTaskController.java | 3 +- .../request/exec/ExecLogQueryRequest.java | 17 +++++++++ .../host/HostConnectLogQueryRequest.java | 19 ++++++++++ .../request/host/HostCreateRequest.java | 6 ++- .../request/host/HostUpdateRequest.java | 9 ++--- .../upload/UploadTaskQueryRequest.java | 17 +++++++++ .../host/config/model/HostSshConfigModel.java | 8 ++-- .../service/impl/ExecLogServiceImpl.java | 4 +- .../impl/HostConnectLogServiceImpl.java | 9 ++++- .../service/impl/UploadTaskServiceImpl.java | 4 +- .../controller/OperatorLogController.java | 3 +- .../request/exoression/CronNextRequest.java | 6 ++- .../operator/OperatorLogQueryRequest.java | 17 +++++++++ .../service/impl/OperatorLogServiceImpl.java | 5 ++- .../src/api/asset/host-connect-log.ts | 1 + orion-visor-ui/src/api/exec/exec-log.ts | 1 + orion-visor-ui/src/api/exec/upload-task.ts | 1 + orion-visor-ui/src/api/user/operator-log.ts | 1 + .../components/exec/log/panel/log-item.vue | 2 +- .../components/connect-log-clear-modal.vue | 18 ++++++++- .../asset-audit/connect-log/types/const.ts | 3 ++ .../exec-command-log-clear-modal.vue | 19 +++++++++- .../exec/exec-command-log/types/const.ts | 2 + .../components/upload-task-clear-modal.vue | 17 ++++++++- .../src/views/exec/upload-task/types/const.ts | 3 ++ .../components/exec-job-log-clear-modal.vue | 19 +++++++++- .../src/views/job/exec-job-log/types/const.ts | 2 + .../components/operator-log-clear-modal.vue | 18 ++++++++- .../views/user/operator-log/types/const.ts | 3 ++ 41 files changed, 295 insertions(+), 51 deletions(-) create mode 100644 orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/utils/SqlUtils.java create mode 100644 orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/validator/group/Clear.java create mode 100644 orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/validator/group/Export.java create mode 100644 orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/validator/group/Import.java diff --git a/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/entity/PageRequest.java b/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/entity/PageRequest.java index b9670b72..a7284fdf 100644 --- a/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/entity/PageRequest.java +++ b/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/entity/PageRequest.java @@ -4,7 +4,9 @@ import com.orion.lang.define.wrapper.IPageRequest; import com.orion.visor.framework.common.validator.group.Page; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import org.hibernate.validator.constraints.Range; + +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; /** * 公共页码请求 @@ -17,11 +19,13 @@ import org.hibernate.validator.constraints.Range; @Schema(description = "公共页码请求") public class PageRequest implements IPageRequest { - @Range(min = 1, max = 10000, groups = Page.class) + @Min(value = 1, groups = Page.class) + @Max(value = 10000, groups = Page.class) @Schema(description = "页码") private int page; - @Range(min = 1, max = 200, groups = Page.class) + @Min(value = 1, groups = Page.class) + @Max(value = 200, groups = Page.class) @Schema(description = "大小") private int limit; diff --git a/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/utils/SqlUtils.java b/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/utils/SqlUtils.java new file mode 100644 index 00000000..adb3d446 --- /dev/null +++ b/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/utils/SqlUtils.java @@ -0,0 +1,38 @@ +package com.orion.visor.framework.common.utils; + +import com.orion.visor.framework.common.constant.Const; + +/** + * sql 工具类 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2024/8/26 16:03 + */ +public class SqlUtils { + + private SqlUtils() { + } + + /** + * limit n + * + * @param limit limit + * @return limit + */ + public static String limit(Integer limit) { + return Const.LIMIT + Const.SPACE + limit; + } + + /** + * limit offset limit + * + * @param offset offset + * @param limit limit + * @return limit + */ + public static String limit(int offset, Integer limit) { + return Const.LIMIT + Const.SPACE + offset + Const.COMMA + limit; + } + +} diff --git a/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/validator/group/Batch.java b/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/validator/group/Batch.java index c1955512..16aa11ab 100644 --- a/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/validator/group/Batch.java +++ b/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/validator/group/Batch.java @@ -1,7 +1,5 @@ package com.orion.visor.framework.common.validator.group; -import javax.validation.groups.Default; - /** * 批量验证分组 * @@ -9,5 +7,5 @@ import javax.validation.groups.Default; * @version 1.0.0 * @since 2023/9/1 19:13 */ -public interface Batch extends Default { +public interface Batch { } diff --git a/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/validator/group/Clear.java b/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/validator/group/Clear.java new file mode 100644 index 00000000..d5b6a285 --- /dev/null +++ b/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/validator/group/Clear.java @@ -0,0 +1,11 @@ +package com.orion.visor.framework.common.validator.group; + +/** + * 清理验证分组 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023/9/1 19:13 + */ +public interface Clear { +} diff --git a/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/validator/group/Export.java b/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/validator/group/Export.java new file mode 100644 index 00000000..17c681e8 --- /dev/null +++ b/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/validator/group/Export.java @@ -0,0 +1,11 @@ +package com.orion.visor.framework.common.validator.group; + +/** + * 导出验证分组 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023/9/1 19:13 + */ +public interface Export { +} diff --git a/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/validator/group/Id.java b/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/validator/group/Id.java index 675eeaf6..07e07a05 100644 --- a/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/validator/group/Id.java +++ b/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/validator/group/Id.java @@ -1,7 +1,5 @@ package com.orion.visor.framework.common.validator.group; -import javax.validation.groups.Default; - /** * 分页验证分组 * @@ -9,5 +7,5 @@ import javax.validation.groups.Default; * @version 1.0.0 * @since 2023/9/1 19:13 */ -public interface Id extends Default { +public interface Id { } diff --git a/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/validator/group/Import.java b/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/validator/group/Import.java new file mode 100644 index 00000000..de59d240 --- /dev/null +++ b/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/validator/group/Import.java @@ -0,0 +1,11 @@ +package com.orion.visor.framework.common.validator.group; + +/** + * 导出验证分组 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023/9/1 19:13 + */ +public interface Import { +} diff --git a/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/validator/group/Page.java b/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/validator/group/Page.java index 8d1722d7..7fc444a3 100644 --- a/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/validator/group/Page.java +++ b/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/validator/group/Page.java @@ -1,7 +1,5 @@ package com.orion.visor.framework.common.validator.group; -import javax.validation.groups.Default; - /** * 分页验证分组 * @@ -9,5 +7,5 @@ import javax.validation.groups.Default; * @version 1.0.0 * @since 2023/9/1 19:13 */ -public interface Page extends Default { +public interface Page { } diff --git a/orion-visor-framework/orion-visor-spring-boot-starter-mybatis/src/main/java/com/orion/visor/framework/mybatis/core/query/DataQuery.java b/orion-visor-framework/orion-visor-spring-boot-starter-mybatis/src/main/java/com/orion/visor/framework/mybatis/core/query/DataQuery.java index 37dcef6c..025072a5 100644 --- a/orion-visor-framework/orion-visor-spring-boot-starter-mybatis/src/main/java/com/orion/visor/framework/mybatis/core/query/DataQuery.java +++ b/orion-visor-framework/orion-visor-spring-boot-starter-mybatis/src/main/java/com/orion/visor/framework/mybatis/core/query/DataQuery.java @@ -16,6 +16,7 @@ import com.orion.lang.utils.collect.Lists; import com.orion.lang.utils.reflect.Classes; import com.orion.spring.SpringHolder; import com.orion.visor.framework.common.constant.Const; +import com.orion.visor.framework.common.utils.SqlUtils; import com.orion.visor.framework.mybatis.core.domain.BaseDO; import java.io.Serializable; @@ -111,11 +112,11 @@ public class DataQuery { } public DataQuery limit(int limit) { - return this.last(Const.LIMIT + Const.SPACE + limit); + return this.last(SqlUtils.limit(limit)); } public DataQuery limit(int offset, int limit) { - return this.last(Const.LIMIT + Const.SPACE + offset + Const.COMMA + limit); + return this.last(SqlUtils.limit(offset, limit)); } public DataQuery only() { diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/controller/ExecCommandLogController.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/controller/ExecCommandLogController.java index 6130c44c..ee2f5b4d 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/controller/ExecCommandLogController.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/controller/ExecCommandLogController.java @@ -3,6 +3,7 @@ package com.orion.visor.module.asset.controller; import com.orion.lang.define.wrapper.DataGrid; import com.orion.visor.framework.biz.operator.log.core.annotation.OperatorLog; import com.orion.visor.framework.common.utils.Valid; +import com.orion.visor.framework.common.validator.group.Clear; import com.orion.visor.framework.common.validator.group.Page; import com.orion.visor.framework.log.core.annotation.IgnoreLog; import com.orion.visor.framework.log.core.enums.IgnoreLogMode; @@ -136,7 +137,7 @@ public class ExecCommandLogController { @PostMapping("/clear") @Operation(summary = "清空批量执行日志") @PreAuthorize("@ss.hasPermission('asset:exec-command-log:management:clear')") - public Integer clearExecCommandLog(@RequestBody ExecLogQueryRequest request) { + public Integer clearExecCommandLog(@Validated(Clear.class) @RequestBody ExecLogQueryRequest request) { request.setSource(SOURCE); return execLogService.clearExecLog(request); } @@ -178,4 +179,3 @@ public class ExecCommandLogController { } } - diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/controller/ExecJobLogController.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/controller/ExecJobLogController.java index 892d5ab9..0a3d30b3 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/controller/ExecJobLogController.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/controller/ExecJobLogController.java @@ -3,6 +3,7 @@ package com.orion.visor.module.asset.controller; import com.orion.lang.define.wrapper.DataGrid; import com.orion.visor.framework.biz.operator.log.core.annotation.OperatorLog; import com.orion.visor.framework.common.utils.Valid; +import com.orion.visor.framework.common.validator.group.Clear; import com.orion.visor.framework.common.validator.group.Page; import com.orion.visor.framework.log.core.annotation.IgnoreLog; import com.orion.visor.framework.log.core.enums.IgnoreLogMode; @@ -125,7 +126,7 @@ public class ExecJobLogController { @PostMapping("/clear") @Operation(summary = "清空计划任务日志") @PreAuthorize("@ss.hasPermission('asset:exec-job-log:management:clear')") - public Integer clearExecJobLog(@RequestBody ExecLogQueryRequest request) { + public Integer clearExecJobLog(@Validated(Clear.class) @RequestBody ExecLogQueryRequest request) { request.setSource(SOURCE); return execLogService.clearExecLog(request); } @@ -167,4 +168,3 @@ public class ExecJobLogController { } } - diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/controller/HostConnectLogController.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/controller/HostConnectLogController.java index 85198450..81103519 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/controller/HostConnectLogController.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/controller/HostConnectLogController.java @@ -2,6 +2,7 @@ package com.orion.visor.module.asset.controller; import com.orion.lang.define.wrapper.DataGrid; import com.orion.visor.framework.biz.operator.log.core.annotation.OperatorLog; +import com.orion.visor.framework.common.validator.group.Clear; import com.orion.visor.framework.common.validator.group.Id; import com.orion.visor.framework.common.validator.group.Page; import com.orion.visor.framework.log.core.annotation.IgnoreLog; @@ -84,7 +85,7 @@ public class HostConnectLogController { @PostMapping("/clear") @Operation(summary = "清空主机连接日志") @PreAuthorize("@ss.hasPermission('asset:host-connect-log:management:clear')") - public Integer clearHostConnectLog(@RequestBody HostConnectLogQueryRequest request) { + public Integer clearHostConnectLog(@Validated(Clear.class) @RequestBody HostConnectLogQueryRequest request) { return hostConnectLogService.clearHostConnectLog(request); } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/controller/UploadTaskController.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/controller/UploadTaskController.java index 37e4796e..93bdb447 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/controller/UploadTaskController.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/controller/UploadTaskController.java @@ -2,6 +2,7 @@ package com.orion.visor.module.asset.controller; import com.orion.lang.define.wrapper.DataGrid; import com.orion.visor.framework.biz.operator.log.core.annotation.OperatorLog; +import com.orion.visor.framework.common.validator.group.Clear; import com.orion.visor.framework.common.validator.group.Page; import com.orion.visor.framework.log.core.annotation.IgnoreLog; import com.orion.visor.framework.log.core.enums.IgnoreLogMode; @@ -123,7 +124,7 @@ public class UploadTaskController { @PostMapping("/clear") @Operation(summary = "清空上传任务") @PreAuthorize("@ss.hasPermission('asset:upload-task:management:clear')") - public Integer clearUploadTask(@RequestBody UploadTaskQueryRequest request) { + public Integer clearUploadTask(@Validated(Clear.class) @RequestBody UploadTaskQueryRequest request) { return uploadTaskService.clearUploadTask(request); } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/exec/ExecLogQueryRequest.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/exec/ExecLogQueryRequest.java index 4e42d0d3..66bb8d60 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/exec/ExecLogQueryRequest.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/exec/ExecLogQueryRequest.java @@ -1,10 +1,15 @@ package com.orion.visor.module.asset.entity.request.exec; import com.fasterxml.jackson.annotation.JsonFormat; +import com.orion.visor.framework.common.constant.Const; import com.orion.visor.framework.common.entity.PageRequest; +import com.orion.visor.framework.common.validator.group.Clear; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import java.util.Date; import java.util.List; @@ -62,4 +67,16 @@ public class ExecLogQueryRequest extends PageRequest { @Schema(description = "状态") private List statusList; + @NotNull(groups = Clear.class) + @Min(value = 1, groups = Clear.class) + @Max(value = 1000, groups = Clear.class) + @Schema(description = "清理数量限制") + private Integer clearLimit; + + public void setClearLimit(Integer clearLimit) { + this.clearLimit = clearLimit; + this.setPage(Const.N_1); + this.setLimit(clearLimit); + } + } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/host/HostConnectLogQueryRequest.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/host/HostConnectLogQueryRequest.java index 5d33a3b6..077b9825 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/host/HostConnectLogQueryRequest.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/host/HostConnectLogQueryRequest.java @@ -1,10 +1,16 @@ package com.orion.visor.module.asset.entity.request.host; import com.fasterxml.jackson.annotation.JsonFormat; +import com.orion.visor.framework.common.constant.Const; import com.orion.visor.framework.common.entity.PageRequest; +import com.orion.visor.framework.common.validator.group.Clear; +import com.orion.visor.framework.common.validator.group.Id; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import java.util.Date; import java.util.List; @@ -24,6 +30,7 @@ import java.util.List; @Schema(name = "HostConnectLogQueryRequest", description = "主机连接日志 查询请求对象") public class HostConnectLogQueryRequest extends PageRequest { + @NotNull(groups = Id.class) @Schema(description = "id") private Long id; @@ -63,4 +70,16 @@ public class HostConnectLogQueryRequest extends PageRequest { @Schema(description = "状态") private List statusList; + @NotNull(groups = Clear.class) + @Min(value = 1, groups = Clear.class) + @Max(value = 2000, groups = Clear.class) + @Schema(description = "清理数量限制") + private Integer clearLimit; + + public void setClearLimit(Integer clearLimit) { + this.clearLimit = clearLimit; + this.setPage(Const.N_1); + this.setLimit(clearLimit); + } + } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/host/HostCreateRequest.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/host/HostCreateRequest.java index 15527c51..af781b15 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/host/HostCreateRequest.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/host/HostCreateRequest.java @@ -5,8 +5,9 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.hibernate.validator.constraints.Range; +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Size; import java.io.Serializable; @@ -45,7 +46,8 @@ public class HostCreateRequest implements Serializable { @Schema(description = "主机地址") private String address; - @Range(min = 1, max = 65535) + @Min(value = 1) + @Max(value = 65535) @Schema(description = "主机端口") private Integer port; diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/host/HostUpdateRequest.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/host/HostUpdateRequest.java index 7b7e3b35..e282e0a5 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/host/HostUpdateRequest.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/host/HostUpdateRequest.java @@ -5,11 +5,8 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.hibernate.validator.constraints.Range; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; +import javax.validation.constraints.*; import java.io.Serializable; import java.util.List; @@ -46,7 +43,9 @@ public class HostUpdateRequest implements Serializable { @Schema(description = "主机地址") private String address; - @Range(min = 1, max = 65535) + @NotNull + @Min(value = 1) + @Max(value = 65535) @Schema(description = "主机端口") private Integer port; diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/upload/UploadTaskQueryRequest.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/upload/UploadTaskQueryRequest.java index ab77d3b4..f572606f 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/upload/UploadTaskQueryRequest.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/upload/UploadTaskQueryRequest.java @@ -1,10 +1,15 @@ package com.orion.visor.module.asset.entity.request.upload; import com.fasterxml.jackson.annotation.JsonFormat; +import com.orion.visor.framework.common.constant.Const; import com.orion.visor.framework.common.entity.PageRequest; +import com.orion.visor.framework.common.validator.group.Clear; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import java.util.Date; @@ -44,4 +49,16 @@ public class UploadTaskQueryRequest extends PageRequest { @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date[] createTimeRange; + @NotNull(groups = Clear.class) + @Min(value = 1, groups = Clear.class) + @Max(value = 2000, groups = Clear.class) + @Schema(description = "清理数量限制") + private Integer clearLimit; + + public void setClearLimit(Integer clearLimit) { + this.clearLimit = clearLimit; + this.setPage(Const.N_1); + this.setLimit(clearLimit); + } + } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/config/model/HostSshConfigModel.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/config/model/HostSshConfigModel.java index 485c8cb3..a55bcaa6 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/config/model/HostSshConfigModel.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/config/model/HostSshConfigModel.java @@ -6,11 +6,8 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.hibernate.validator.constraints.Range; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; +import javax.validation.constraints.*; /** * 主机 SSH 配置 @@ -64,7 +61,8 @@ public class HostSshConfigModel implements GenericsDataModel, UpdatePasswordActi * 连接超时时间 */ @NotNull - @Range(min = 0, max = 100000) + @Min(value = 1) + @Max(value = 100000) private Integer connectTimeout; /** diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/ExecLogServiceImpl.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/ExecLogServiceImpl.java index 835ce5a3..4b36f730 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/ExecLogServiceImpl.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/ExecLogServiceImpl.java @@ -18,6 +18,7 @@ import com.orion.visor.framework.common.constant.ErrorMessage; import com.orion.visor.framework.common.constant.FileConst; import com.orion.visor.framework.common.enums.EndpointDefine; import com.orion.visor.framework.common.file.FileClient; +import com.orion.visor.framework.common.utils.SqlUtils; import com.orion.visor.framework.common.utils.Valid; import com.orion.visor.framework.redis.core.utils.RedisStrings; import com.orion.visor.framework.security.core.utils.SecurityUtils; @@ -227,7 +228,8 @@ public class ExecLogServiceImpl implements ExecLogService { log.info("ExecLogService.clearExecLog start {}", JSON.toJSONString(request)); // 查询 LambdaQueryWrapper wrapper = this.buildQueryWrapper(request) - .select(ExecLogDO::getId); + .select(ExecLogDO::getId) + .last(SqlUtils.limit(request.getClearLimit())); List idList = execLogDAO.selectList(wrapper) .stream() .map(ExecLogDO::getId) diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/HostConnectLogServiceImpl.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/HostConnectLogServiceImpl.java index bac1b741..0fd59a57 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/HostConnectLogServiceImpl.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/HostConnectLogServiceImpl.java @@ -8,6 +8,7 @@ import com.orion.lang.utils.collect.Lists; import com.orion.visor.framework.biz.operator.log.core.utils.OperatorLogs; import com.orion.visor.framework.common.constant.Const; import com.orion.visor.framework.common.constant.ErrorMessage; +import com.orion.visor.framework.common.utils.SqlUtils; import com.orion.visor.framework.common.utils.Valid; import com.orion.visor.framework.security.core.utils.SecurityUtils; import com.orion.visor.module.asset.convert.HostConnectLogConvert; @@ -26,6 +27,7 @@ import com.orion.visor.module.asset.service.HostConnectLogService; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.*; @@ -167,13 +169,14 @@ public class HostConnectLogServiceImpl implements HostConnectLogService { } @Override + @Transactional(rollbackFor = Exception.class) public Integer deleteHostConnectLog(List idList) { log.info("HostConnectLogService.deleteHostConnectLog start {}", JSON.toJSONString(idList)); if (Lists.isEmpty(idList)) { OperatorLogs.add(OperatorLogs.COUNT, Const.N_0); return Const.N_0; } - // 删除 + // 删除日志表 int effect = hostConnectLogDAO.deleteBatchIds(idList); log.info("HostConnectLogService.deleteHostConnectLog finish {}", effect); // 设置日志参数 @@ -187,11 +190,13 @@ public class HostConnectLogServiceImpl implements HostConnectLogService { } @Override + @Transactional(rollbackFor = Exception.class) public Integer clearHostConnectLog(HostConnectLogQueryRequest request) { log.info("HostConnectLogService.clearHostConnectLog start {}", JSON.toJSONString(request)); // 查询 LambdaQueryWrapper wrapper = this.buildQueryWrapper(request) - .select(HostConnectLogDO::getId); + .select(HostConnectLogDO::getId) + .last(SqlUtils.limit(request.getClearLimit())); List list = hostConnectLogDAO.selectList(wrapper); if (list.isEmpty()) { log.info("HostConnectLogService.clearHostConnectLog empty"); diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/UploadTaskServiceImpl.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/UploadTaskServiceImpl.java index c9cb2353..6c1964e1 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/UploadTaskServiceImpl.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/UploadTaskServiceImpl.java @@ -18,6 +18,7 @@ import com.orion.visor.framework.common.constant.ErrorMessage; import com.orion.visor.framework.common.enums.EndpointDefine; import com.orion.visor.framework.common.file.FileClient; import com.orion.visor.framework.common.security.LoginUser; +import com.orion.visor.framework.common.utils.SqlUtils; import com.orion.visor.framework.common.utils.Valid; import com.orion.visor.framework.mybatis.core.query.Conditions; import com.orion.visor.framework.security.core.utils.SecurityUtils; @@ -226,7 +227,8 @@ public class UploadTaskServiceImpl implements UploadTaskService { public Integer clearUploadTask(UploadTaskQueryRequest request) { // 查询id LambdaQueryWrapper wrapper = this.buildQueryWrapper(request) - .select(UploadTaskDO::getId); + .select(UploadTaskDO::getId) + .last(SqlUtils.limit(request.getClearLimit())); List idList = uploadTaskDAO.of(wrapper) .list(UploadTaskDO::getId); // 删除 diff --git a/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/controller/OperatorLogController.java b/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/controller/OperatorLogController.java index f9e72eb4..1970a1cb 100644 --- a/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/controller/OperatorLogController.java +++ b/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/controller/OperatorLogController.java @@ -2,6 +2,7 @@ package com.orion.visor.module.infra.controller; import com.orion.lang.define.wrapper.DataGrid; import com.orion.visor.framework.biz.operator.log.core.annotation.OperatorLog; +import com.orion.visor.framework.common.validator.group.Clear; import com.orion.visor.framework.common.validator.group.Page; import com.orion.visor.framework.log.core.annotation.IgnoreLog; import com.orion.visor.framework.log.core.enums.IgnoreLogMode; @@ -67,7 +68,7 @@ public class OperatorLogController { @PostMapping("/clear") @Operation(summary = "清空操作日志") @PreAuthorize("@ss.hasPermission('infra:operator-log:management:clear')") - public Integer clearOperatorLog(@RequestBody OperatorLogQueryRequest request) { + public Integer clearOperatorLog(@Validated(Clear.class) @RequestBody OperatorLogQueryRequest request) { return operatorLogService.clearOperatorLog(request); } diff --git a/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/entity/request/exoression/CronNextRequest.java b/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/entity/request/exoression/CronNextRequest.java index a8c2e093..35bf2c83 100644 --- a/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/entity/request/exoression/CronNextRequest.java +++ b/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/entity/request/exoression/CronNextRequest.java @@ -5,8 +5,9 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.hibernate.validator.constraints.Range; +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.io.Serializable; @@ -30,7 +31,8 @@ public class CronNextRequest implements Serializable { private String expression; @NotNull - @Range(min = 1, max = 100) + @Min(value = 1) + @Max(value = 100) @Schema(description = "次数") private Integer times; diff --git a/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/entity/request/operator/OperatorLogQueryRequest.java b/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/entity/request/operator/OperatorLogQueryRequest.java index c8466c76..6176ef5b 100644 --- a/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/entity/request/operator/OperatorLogQueryRequest.java +++ b/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/entity/request/operator/OperatorLogQueryRequest.java @@ -1,10 +1,15 @@ package com.orion.visor.module.infra.entity.request.operator; import com.fasterxml.jackson.annotation.JsonFormat; +import com.orion.visor.framework.common.constant.Const; import com.orion.visor.framework.common.entity.PageRequest; +import com.orion.visor.framework.common.validator.group.Clear; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import java.util.Date; @@ -48,4 +53,16 @@ public class OperatorLogQueryRequest extends PageRequest { @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date[] startTimeRange; + @NotNull(groups = Clear.class) + @Min(value = 1, groups = Clear.class) + @Max(value = 2000, groups = Clear.class) + @Schema(description = "清理数量限制") + private Integer clearLimit; + + public void setClearLimit(Integer clearLimit) { + this.clearLimit = clearLimit; + this.setPage(Const.N_1); + this.setLimit(clearLimit); + } + } diff --git a/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/service/impl/OperatorLogServiceImpl.java b/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/service/impl/OperatorLogServiceImpl.java index 37fe8062..7dedd02c 100644 --- a/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/service/impl/OperatorLogServiceImpl.java +++ b/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/service/impl/OperatorLogServiceImpl.java @@ -8,6 +8,7 @@ import com.orion.lang.utils.Valid; import com.orion.visor.framework.biz.operator.log.core.model.OperatorLogModel; import com.orion.visor.framework.biz.operator.log.core.utils.OperatorLogs; import com.orion.visor.framework.common.constant.ErrorMessage; +import com.orion.visor.framework.common.utils.SqlUtils; import com.orion.visor.module.infra.convert.OperatorLogConvert; import com.orion.visor.module.infra.dao.OperatorLogDAO; import com.orion.visor.module.infra.define.operator.AuthenticationOperatorType; @@ -72,8 +73,10 @@ public class OperatorLogServiceImpl implements OperatorLogService { @Override public Integer clearOperatorLog(OperatorLogQueryRequest request) { log.info("OperatorLogService.clearOperatorLog start {}", JSON.toJSONString(request)); - // 删除 + // 删除参数 LambdaQueryWrapper wrapper = this.buildQueryWrapper(request); + wrapper.last(SqlUtils.limit(request.getClearLimit())); + // 删除 int effect = operatorLogDAO.delete(wrapper); log.info("OperatorLogService.clearOperatorLog finish {}", effect); // 设置日志参数 diff --git a/orion-visor-ui/src/api/asset/host-connect-log.ts b/orion-visor-ui/src/api/asset/host-connect-log.ts index 38f2d4d9..6b14c528 100644 --- a/orion-visor-ui/src/api/asset/host-connect-log.ts +++ b/orion-visor-ui/src/api/asset/host-connect-log.ts @@ -15,6 +15,7 @@ export interface HostConnectLogQueryRequest extends Pagination { token?: string; status?: string; startTimeRange?: string[]; + clearLimit?: number; } /** diff --git a/orion-visor-ui/src/api/exec/exec-log.ts b/orion-visor-ui/src/api/exec/exec-log.ts index bd15063b..39fcca37 100644 --- a/orion-visor-ui/src/api/exec/exec-log.ts +++ b/orion-visor-ui/src/api/exec/exec-log.ts @@ -13,6 +13,7 @@ export interface ExecLogQueryRequest extends Pagination { command?: string; status?: string; startTimeRange?: string[]; + clearLimit?: number; } /** diff --git a/orion-visor-ui/src/api/exec/upload-task.ts b/orion-visor-ui/src/api/exec/upload-task.ts index 6801b6ce..1eecc851 100644 --- a/orion-visor-ui/src/api/exec/upload-task.ts +++ b/orion-visor-ui/src/api/exec/upload-task.ts @@ -40,6 +40,7 @@ export interface UploadTaskQueryRequest extends Pagination { description?: string; status?: string; createTimeRange?: string[]; + clearLimit?: number; } /** diff --git a/orion-visor-ui/src/api/user/operator-log.ts b/orion-visor-ui/src/api/user/operator-log.ts index a1e652d7..850792b5 100644 --- a/orion-visor-ui/src/api/user/operator-log.ts +++ b/orion-visor-ui/src/api/user/operator-log.ts @@ -13,6 +13,7 @@ export interface OperatorLogQueryRequest extends Pagination { riskLevel?: string; result?: number; startTimeRange?: string[]; + clearLimit?: number; } /** diff --git a/orion-visor-ui/src/components/exec/log/panel/log-item.vue b/orion-visor-ui/src/components/exec/log/panel/log-item.vue index 4ea0ff37..a9d809a9 100644 --- a/orion-visor-ui/src/components/exec/log/panel/log-item.vue +++ b/orion-visor-ui/src/components/exec/log/panel/log-item.vue @@ -222,7 +222,7 @@ // 下载计划任务日志 fileGetter = downloadExecJobLogFile(id); } - // 瞎子啊 + // 下载 const data = await fileGetter; downloadFile(data); }; diff --git a/orion-visor-ui/src/views/asset-audit/connect-log/components/connect-log-clear-modal.vue b/orion-visor-ui/src/views/asset-audit/connect-log/components/connect-log-clear-modal.vue index f2a2060d..c04f6e33 100644 --- a/orion-visor-ui/src/views/asset-audit/connect-log/components/connect-log-clear-modal.vue +++ b/orion-visor-ui/src/views/asset-audit/connect-log/components/connect-log-clear-modal.vue @@ -55,6 +55,15 @@ :options="toOptions(connectTypeKey)" allow-clear /> + + + + @@ -71,7 +80,7 @@ import { ref } from 'vue'; import useLoading from '@/hooks/loading'; import useVisible from '@/hooks/visible'; - import { connectStatusKey, connectTypeKey } from '../types/const'; + import { connectStatusKey, connectTypeKey, clearLimit } from '../types/const'; import { getHostConnectLogCount, clearHostConnectLog } from '@/api/asset/host-connect-log'; import { Message, Modal } from '@arco-design/web-vue'; import { useDictStore } from '@/store'; @@ -92,6 +101,7 @@ type: undefined, status: undefined, startTimeRange: undefined, + clearLimit, }; }; @@ -112,6 +122,10 @@ // 确定 const handlerOk = async () => { + if (!formModel.value.clearLimit) { + Message.error('请输入清理数量'); + return false; + } setLoading(true); try { // 获取总数量 @@ -134,7 +148,7 @@ const doClear = (count: number) => { Modal.confirm({ title: '删除清空', - content: `确定要删除 ${count} 条数据吗? 确定后将立即删除且无法恢复!`, + content: `确定要删除 ${Math.min(count, formModel.value.clearLimit || 0)} 条数据吗? 确定后将立即删除且无法恢复!`, onOk: async () => { setLoading(true); try { diff --git a/orion-visor-ui/src/views/asset-audit/connect-log/types/const.ts b/orion-visor-ui/src/views/asset-audit/connect-log/types/const.ts index e7fff782..69be99e0 100644 --- a/orion-visor-ui/src/views/asset-audit/connect-log/types/const.ts +++ b/orion-visor-ui/src/views/asset-audit/connect-log/types/const.ts @@ -12,6 +12,9 @@ export const HostConnectStatus = { FORCE_OFFLINE: 'FORCE_OFFLINE', }; +// 清理数量 +export const clearLimit = 2000; + // 主机连接状态 字典项 export const connectStatusKey = 'hostConnectStatus'; diff --git a/orion-visor-ui/src/views/exec/exec-command-log/components/exec-command-log-clear-modal.vue b/orion-visor-ui/src/views/exec/exec-command-log/components/exec-command-log-clear-modal.vue index d1c4842f..026cebb1 100644 --- a/orion-visor-ui/src/views/exec/exec-command-log/components/exec-command-log-clear-modal.vue +++ b/orion-visor-ui/src/views/exec/exec-command-log/components/exec-command-log-clear-modal.vue @@ -48,6 +48,15 @@ :options="toOptions(execStatusKey)" placeholder="请选择执行状态" /> + + + + @@ -68,6 +77,7 @@ import { getExecCommandLogCount, clearExecCommandLog } from '@/api/exec/exec-command-log'; import { Message, Modal } from '@arco-design/web-vue'; import { useDictStore } from '@/store'; + import { clearLimit } from '../types/const'; import UserSelector from '@/components/user/user/selector/index.vue'; const emits = defineEmits(['clear']); @@ -86,7 +96,8 @@ description: undefined, command: undefined, status: undefined, - startTimeRange: undefined + startTimeRange: undefined, + clearLimit, }; }; @@ -105,6 +116,10 @@ // 确定 const handlerOk = async () => { + if (!formModel.value.clearLimit) { + Message.error('请输入清理数量'); + return false; + } setLoading(true); try { // 获取总数量 @@ -127,7 +142,7 @@ const doClear = (count: number) => { Modal.confirm({ title: '删除清空', - content: `确定要删除 ${count} 条数据吗? 确定后将立即删除且无法恢复!`, + content: `确定要删除 ${Math.min(count, formModel.value.clearLimit || 0)} 条数据吗? 确定后将立即删除且无法恢复!`, onOk: async () => { setLoading(true); try { diff --git a/orion-visor-ui/src/views/exec/exec-command-log/types/const.ts b/orion-visor-ui/src/views/exec/exec-command-log/types/const.ts index e69de29b..b5aa01d8 100644 --- a/orion-visor-ui/src/views/exec/exec-command-log/types/const.ts +++ b/orion-visor-ui/src/views/exec/exec-command-log/types/const.ts @@ -0,0 +1,2 @@ +// 清理数量 +export const clearLimit = 1000; diff --git a/orion-visor-ui/src/views/exec/upload-task/components/upload-task-clear-modal.vue b/orion-visor-ui/src/views/exec/upload-task/components/upload-task-clear-modal.vue index 56249106..70d2191e 100644 --- a/orion-visor-ui/src/views/exec/upload-task/components/upload-task-clear-modal.vue +++ b/orion-visor-ui/src/views/exec/upload-task/components/upload-task-clear-modal.vue @@ -49,6 +49,15 @@ placeholder="请选择状态" allow-clear /> + + + + @@ -65,7 +74,7 @@ import { ref } from 'vue'; import useLoading from '@/hooks/loading'; import useVisible from '@/hooks/visible'; - import { uploadTaskStatusKey } from '../types/const'; + import { clearLimit, uploadTaskStatusKey } from '../types/const'; import { getUploadTaskCount, clearUploadTask } from '@/api/exec/upload-task'; import { Message, Modal } from '@arco-design/web-vue'; import { useDictStore } from '@/store'; @@ -105,6 +114,10 @@ // 确定 const handlerOk = async () => { + if (!formModel.value.clearLimit) { + Message.error('请输入清理数量'); + return false; + } setLoading(true); try { // 获取总数量 @@ -127,7 +140,7 @@ const doClear = (count: number) => { Modal.confirm({ title: '删除清空', - content: `确定要删除 ${count} 条数据吗? 确定后将立即删除且无法恢复!`, + content: `确定要删除 ${Math.min(count, formModel.value.clearLimit || 0)} 条数据吗? 确定后将立即删除且无法恢复!`, onOk: async () => { setLoading(true); try { diff --git a/orion-visor-ui/src/views/exec/upload-task/types/const.ts b/orion-visor-ui/src/views/exec/upload-task/types/const.ts index eb24662c..94cab063 100644 --- a/orion-visor-ui/src/views/exec/upload-task/types/const.ts +++ b/orion-visor-ui/src/views/exec/upload-task/types/const.ts @@ -26,6 +26,9 @@ export const UploadTaskFileStatus = { CANCELED: 'CANCELED', }; +// 清理数量 +export const clearLimit = 2000; + // 上传任务状态 字典项 export const uploadTaskStatusKey = 'uploadTaskStatus'; diff --git a/orion-visor-ui/src/views/job/exec-job-log/components/exec-job-log-clear-modal.vue b/orion-visor-ui/src/views/job/exec-job-log/components/exec-job-log-clear-modal.vue index 055d42e7..af839ae7 100644 --- a/orion-visor-ui/src/views/job/exec-job-log/components/exec-job-log-clear-modal.vue +++ b/orion-visor-ui/src/views/job/exec-job-log/components/exec-job-log-clear-modal.vue @@ -43,6 +43,15 @@ :options="toOptions(execStatusKey)" placeholder="请选择执行状态" /> + + + + @@ -63,6 +72,7 @@ import { getExecJobLogCount, clearExecJobLog } from '@/api/job/exec-job-log'; import { Message, Modal } from '@arco-design/web-vue'; import { useDictStore } from '@/store'; + import { clearLimit } from '../types/const'; import ExecJobSelector from '@/components/exec/job/selector/index.vue'; const emits = defineEmits(['clear']); @@ -81,7 +91,8 @@ description: undefined, command: undefined, status: undefined, - startTimeRange: undefined + startTimeRange: undefined, + clearLimit, }; }; @@ -100,6 +111,10 @@ // 确定 const handlerOk = async () => { + if (!formModel.value.clearLimit) { + Message.error('请输入清理数量'); + return false; + } setLoading(true); try { // 获取总数量 @@ -122,7 +137,7 @@ const doClear = (count: number) => { Modal.confirm({ title: '删除清空', - content: `确定要删除 ${count} 条数据吗? 确定后将立即删除且无法恢复!`, + content: `确定要删除 ${Math.min(count, formModel.value.clearLimit || 0)} 条数据吗? 确定后将立即删除且无法恢复!`, onOk: async () => { setLoading(true); try { diff --git a/orion-visor-ui/src/views/job/exec-job-log/types/const.ts b/orion-visor-ui/src/views/job/exec-job-log/types/const.ts index e69de29b..b5aa01d8 100644 --- a/orion-visor-ui/src/views/job/exec-job-log/types/const.ts +++ b/orion-visor-ui/src/views/job/exec-job-log/types/const.ts @@ -0,0 +1,2 @@ +// 清理数量 +export const clearLimit = 1000; diff --git a/orion-visor-ui/src/views/user/operator-log/components/operator-log-clear-modal.vue b/orion-visor-ui/src/views/user/operator-log/components/operator-log-clear-modal.vue index 8d4af630..0c97e97a 100644 --- a/orion-visor-ui/src/views/user/operator-log/components/operator-log-clear-modal.vue +++ b/orion-visor-ui/src/views/user/operator-log/components/operator-log-clear-modal.vue @@ -61,6 +61,15 @@ placeholder="请选择执行结果" allow-clear /> + + + + @@ -81,7 +90,7 @@ import { getOperatorLogCount, clearOperatorLog } from '@/api/user/operator-log'; import { Message, Modal } from '@arco-design/web-vue'; import { useDictStore } from '@/store'; - import { operatorLogModuleKey, operatorLogResultKey, operatorLogTypeKey, operatorRiskLevelKey } from '@/views/user/operator-log/types/const'; + import { operatorLogModuleKey, operatorLogResultKey, operatorLogTypeKey, operatorRiskLevelKey, clearLimit } from '../types/const'; import { labelFilter } from '@/types/form'; import UserSelector from '@/components/user/user/selector/index.vue'; @@ -96,6 +105,7 @@ riskLevel: undefined, result: undefined, startTimeRange: undefined, + clearLimit, }; }; @@ -136,6 +146,10 @@ // 确定 const handlerOk = async () => { + if (!formModel.value.clearLimit) { + Message.error('请输入清理数量'); + return false; + } setLoading(true); try { // 获取总数量 @@ -158,7 +172,7 @@ const doClear = (count: number) => { Modal.confirm({ title: '删除清空', - content: `确定要删除 ${count} 条数据吗? 确定后将立即删除且无法恢复!`, + content: `确定要删除 ${Math.min(count, formModel.value.clearLimit || 0)} 条数据吗? 确定后将立即删除且无法恢复!`, onOk: async () => { setLoading(true); try { diff --git a/orion-visor-ui/src/views/user/operator-log/types/const.ts b/orion-visor-ui/src/views/user/operator-log/types/const.ts index f37780b4..63247bdd 100644 --- a/orion-visor-ui/src/views/user/operator-log/types/const.ts +++ b/orion-visor-ui/src/views/user/operator-log/types/const.ts @@ -27,6 +27,9 @@ export const getLogDetail = (record: OperatorLogQueryResponse): Record Date: Wed, 28 Aug 2024 10:46:06 +0800 Subject: [PATCH 3/4] =?UTF-8?q?:bug:=20=E4=BF=AE=E5=A4=8D=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD=E7=BC=93=E5=AD=98=E6=97=B6=E6=8A=A5=E9=94=99.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- orion-visor-ui/src/directive/focus/index.ts | 6 ++ orion-visor-ui/src/directive/index.ts | 2 + .../src/store/modules/cache/index.ts | 57 ++++++++++++------- 3 files changed, 46 insertions(+), 19 deletions(-) create mode 100644 orion-visor-ui/src/directive/focus/index.ts diff --git a/orion-visor-ui/src/directive/focus/index.ts b/orion-visor-ui/src/directive/focus/index.ts new file mode 100644 index 00000000..81daf0b7 --- /dev/null +++ b/orion-visor-ui/src/directive/focus/index.ts @@ -0,0 +1,6 @@ +export default { + mounted(el: HTMLElement) { + // 聚焦元素 + el.focus(); + }, +}; diff --git a/orion-visor-ui/src/directive/index.ts b/orion-visor-ui/src/directive/index.ts index a5a849b0..edb6b9a1 100644 --- a/orion-visor-ui/src/directive/index.ts +++ b/orion-visor-ui/src/directive/index.ts @@ -1,8 +1,10 @@ import type { App } from 'vue'; import permission from './permission'; +import focus from './focus'; export default { install(Vue: App) { Vue.directive('permission', permission); + Vue.directive('focus', focus); }, }; diff --git a/orion-visor-ui/src/store/modules/cache/index.ts b/orion-visor-ui/src/store/modules/cache/index.ts index 038de5fd..d35568a1 100644 --- a/orion-visor-ui/src/store/modules/cache/index.ts +++ b/orion-visor-ui/src/store/modules/cache/index.ts @@ -6,6 +6,7 @@ import type { HostType } from '@/api/asset/host'; import { getHostList } from '@/api/asset/host'; import type { PreferenceType } from '@/api/user/preference'; import { getPreference } from '@/api/user/preference'; +import usePermission from '@/hooks/permission'; import { defineStore } from 'pinia'; import { getUserList } from '@/api/user/user'; import { getRoleList } from '@/api/user/role'; @@ -43,7 +44,25 @@ export default defineStore('cache', { }, // 加载数据 - async load(name: CacheType, loader: () => Promise>, force = false, onErrorValue = []) { + async load(name: CacheType, + loader: () => Promise>, + permissions: Array | undefined = undefined, + force = false, + onErrorValue: any = []) { + // 权限检查 + const len = permissions?.length; + if (len) { + const { hasPermission, hasAnyPermission } = usePermission(); + if (len === 1) { + if (!hasPermission(permissions[0])) { + return onErrorValue as T; + } + } else { + if (!hasAnyPermission(permissions)) { + return onErrorValue as T; + } + } + } // 尝试直接从缓存中获取数据 if (this[name] && !force) { return this[name] as T; @@ -60,92 +79,92 @@ export default defineStore('cache', { // 获取用户列表 async loadUsers(force = false) { - return await this.load('users', getUserList, force); + return await this.load('users', getUserList, ['infra:system-user:query'], force); }, // 获取角色列表 async loadRoles(force = false) { - return await this.load('roles', getRoleList, force); + return await this.load('roles', getRoleList, ['infra:system-role:query'], force); }, // 获取菜单列表 async loadMenus(force = false) { - return await this.load('menus', () => getMenuList({}), force); + return await this.load('menus', () => getMenuList({}), ['infra:system-menu:query'], force); }, // 获取主机分组列表 async loadHostGroups(force = false) { - return await this.load('hostGroups', getHostGroupTree, force); + return await this.load('hostGroups', getHostGroupTree, ['asset:host-group:update'], force); }, // 获取主机列表 async loadHosts(type: HostType, force = false) { - return await this.load(`host_${type}`, () => getHostList(type), force); + return await this.load(`host_${type}`, () => getHostList(type), ['asset:host:query'], force); }, // 获取主机密钥列表 async loadHostKeys(force = false) { - return await this.load('hostKeys', getHostKeyList, force); + return await this.load('hostKeys', getHostKeyList, ['asset:host-key:query'], force); }, // 获取主机身份列表 async loadHostIdentities(force = false) { - return await this.load('hostIdentities', getHostIdentityList, force); + return await this.load('hostIdentities', getHostIdentityList, ['asset:host-identity:query'], force); }, // 获取字典配置项列表 async loadDictKeys(force = false) { - return await this.load('dictKeys', getDictKeyList, force); + return await this.load('dictKeys', getDictKeyList, undefined, force); }, // 加载 tags async loadTags(type: TagType, force = false) { - return await this.load(`${type}_Tags`, () => getTagList(type), force); + return await this.load(`${type}_Tags`, () => getTagList(type), undefined, force); }, // 获取已授权的主机密钥列表 async loadAuthorizedHostKeys(force = false) { - return await this.load('authorizedHostKeys', getCurrentAuthorizedHostKey, force); + return await this.load('authorizedHostKeys', getCurrentAuthorizedHostKey, undefined, force); }, // 获取已授权的主机身份列表 async loadAuthorizedHostIdentities(force = false) { - return await this.load('authorizedHostIdentities', getCurrentAuthorizedHostIdentity, force); + return await this.load('authorizedHostIdentities', getCurrentAuthorizedHostIdentity, undefined, force); }, // 获取命令片段分组 async loadCommandSnippetGroups(force = false) { - return await this.load('commandSnippetGroups', getCommandSnippetGroupList, force); + return await this.load('commandSnippetGroups', getCommandSnippetGroupList, undefined, force); }, // 获取路径书签分组 async loadPathBookmarkGroups(force = false) { - return await this.load('pathBookmarkGroups', getPathBookmarkGroupList, force); + return await this.load('pathBookmarkGroups', getPathBookmarkGroupList, undefined, force); }, // 获取命令片段列表 async loadCommandSnippets(force = false) { - return await this.load('commandSnippets', getCommandSnippetList, force); + return await this.load('commandSnippets', getCommandSnippetList, undefined, force, {}); }, // 获取路径书签列表 async loadPathBookmarks(force = false) { - return await this.load('pathBookmarks', getPathBookmarkList, force); + return await this.load('pathBookmarks', getPathBookmarkList, undefined, force, {}); }, // 获取执行计划列表 async loadExecJobs(force = false) { - return await this.load('execJob', getExecJobList, force); + return await this.load('execJob', getExecJobList, ['asset:exec-job:query'], force); }, // 加载偏好 async loadPreference(type: PreferenceType, force = false) { - return await this.load(`preference_${type}`, () => getPreference(type), force); + return await this.load(`preference_${type}`, () => getPreference(type), undefined, force, {}); }, // 加载偏好项 async loadPreferenceItem(type: PreferenceType, item: string, force = false) { - return await this.load(`preference_${type}_${item}`, () => getPreference(type, [item]), force); + return await this.load(`preference_${type}_${item}`, () => getPreference(type, [item]), undefined, force, {}); }, } From e0dca7336914a0fe03c1ff7f07753b4b13565a68 Mon Sep 17 00:00:00 2001 From: lijiahang Date: Wed, 28 Aug 2024 17:14:18 +0800 Subject: [PATCH 4/4] =?UTF-8?q?:pencil:=20=E4=BF=AE=E6=94=B9=E6=96=87?= =?UTF-8?q?=E6=A1=A3.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 10 +++++----- orion-visor-ui/src/api/system/setting.ts | 3 +-- orion-visor-ui/src/components/app/app-footer/index.vue | 2 +- .../src/views/dashboard/workplace/components/docs.vue | 4 ++-- sql/init-4-data.sql | 2 +- 5 files changed, 10 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 9707e752..f31f46c2 100644 --- a/README.md +++ b/README.md @@ -72,11 +72,11 @@ docker compose up -d ## 项目文档 -* [文档地址](https://lijiahangmax.github.io/open-orion/orion-visor/) -* [安装文档](https://lijiahangmax.github.io/open-orion/orion-visor/quickstart/docker.html) -* [更新日志](https://lijiahangmax.github.io/open-orion/orion-visor/update/change-log.html) -* [操作手册](https://lijiahangmax.github.io/open-orion/orion-visor/operator/asset.html) -* [常见问题](https://lijiahangmax.github.io/open-orion/orion-visor/support/faq.html) +* [文档地址](https://visor.orionsec.cn/) +* [安装文档](https://visor.orionsec.cn/quickstart/docker.html) +* [更新日志](https://visor.orionsec.cn/update/change-log.html) +* [操作手册](https://visor.orionsec.cn/operator/asset.html) +* [常见问题](https://visor.orionsec.cn/support/faq.html) ## 技术栈 diff --git a/orion-visor-ui/src/api/system/setting.ts b/orion-visor-ui/src/api/system/setting.ts index 36a8e66d..eb7e359d 100644 --- a/orion-visor-ui/src/api/system/setting.ts +++ b/orion-visor-ui/src/api/system/setting.ts @@ -27,8 +27,7 @@ export function getSystemAppInfo() { * 获取仓库最后版本信息 */ export function getRepoLatestRelease() { - // return axios.get('https://gitee.com/api/v5/repos/dromara/orion-visor/releases/latest', { - return axios.get('https://lijiahangmax.github.io/open-orion/orion-visor/releases-latest.json', { + return axios.get('https://visor.orionsec.cn/releases-latest.json', { // 不添加请求头 否则会报 401 setAuthorization: false, // 返回原始输出 diff --git a/orion-visor-ui/src/components/app/app-footer/index.vue b/orion-visor-ui/src/components/app/app-footer/index.vue index d1279776..1a36f496 100644 --- a/orion-visor-ui/src/components/app/app-footer/index.vue +++ b/orion-visor-ui/src/components/app/app-footer/index.vue @@ -4,7 +4,7 @@ github gitee - 文档 + 文档 License v{{ version }} {{ release }} diff --git a/orion-visor-ui/src/views/dashboard/workplace/components/docs.vue b/orion-visor-ui/src/views/dashboard/workplace/components/docs.vue index 65738d64..993d4491 100644 --- a/orion-visor-ui/src/views/dashboard/workplace/components/docs.vue +++ b/orion-visor-ui/src/views/dashboard/workplace/components/docs.vue @@ -17,10 +17,10 @@ 上报 bug - 操作手册 + 操作手册 - 更新日志 + 更新日志 diff --git a/sql/init-4-data.sql b/sql/init-4-data.sql index e79455b3..d19ed505 100644 --- a/sql/init-4-data.sql +++ b/sql/init-4-data.sql @@ -318,7 +318,7 @@ INSERT INTO `dict_value` VALUES (405, 53, 'terminalTheme', '{\"background\":\"#1 -- 菜单配置 INSERT INTO `system_menu` VALUES (1, 0, '工作台', NULL, 1, 10, 1, 1, 1, 0, 'IconComputer', NULL, 'workplace', '2023-07-28 10:51:50', '2023-09-11 15:27:52', '1', '1', 0); INSERT INTO `system_menu` VALUES (5, 0, '用户管理', NULL, 1, 700, 1, 1, 1, 0, 'icon-user', NULL, 'userModule', '2023-07-28 10:55:38', '2024-06-17 20:45:29', '1', '1', 0); -INSERT INTO `system_menu` VALUES (8, 0, '项目地址', NULL, 1, 1000, 1, 1, 1, 0, 'icon-link', 'https://lijiahangmax.github.io/open-orion/orion-visor', '', '2023-07-28 11:04:59', '2024-05-31 17:13:12', '1', '1', 0); +INSERT INTO `system_menu` VALUES (8, 0, '项目地址', NULL, 1, 1000, 1, 1, 1, 0, 'icon-link', 'https://visor.orionsec.cn', '', '2023-07-28 11:04:59', '2024-05-31 17:13:12', '1', '1', 0); INSERT INTO `system_menu` VALUES (10, 5, '角色管理', NULL, 2, 10, 1, 1, 1, 0, 'IconUserGroup', '', 'role', '2023-07-28 10:55:52', '2024-03-07 19:10:13', '1', '1', 0); INSERT INTO `system_menu` VALUES (12, 0, '系统管理', NULL, 1, 800, 1, 1, 1, 0, 'icon-tool', NULL, 'systemModule', '2023-08-02 18:24:24', '2024-06-17 20:45:39', '1', '1', 0); INSERT INTO `system_menu` VALUES (13, 12, '系统菜单', '', 2, 10, 1, 1, 1, 0, 'icon-menu', NULL, 'systemMenu', '2023-08-02 18:29:01', '2024-03-07 22:25:00', '1', '1', 0);