Compare commits
24 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b3daacbd8f | ||
|
|
37fc271741 | ||
|
|
bd76eb255d | ||
|
|
0810de23ea | ||
|
|
9f2e4582cc | ||
|
|
8e52631b46 | ||
|
|
7cd885a050 | ||
|
|
3045512320 | ||
|
|
55c2199c3f | ||
|
|
963cd0b227 | ||
|
|
1d5c579e64 | ||
|
|
773d95207f | ||
|
|
2103698417 | ||
|
|
25082b9ea1 | ||
|
|
cb20d56a7b | ||
|
|
d58d46ca8c | ||
|
|
29e6db75ca | ||
|
|
86abf4f634 | ||
|
|
876e763fcc | ||
|
|
32d60a4d43 | ||
|
|
6ffc5d27b5 | ||
|
|
ac412b0dde | ||
|
|
4bdb61870a | ||
|
|
24ad1f64df |
7
.github/workflows/e2e.yaml
vendored
7
.github/workflows/e2e.yaml
vendored
@@ -1,9 +1,10 @@
|
||||
name: E2E
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
workflow_dispatch:
|
||||
# pull_request:
|
||||
# branches:
|
||||
# - main
|
||||
|
||||
concurrency:
|
||||
group: ${{github.workflow}} - ${{github.ref}}
|
||||
|
||||
@@ -19,6 +19,10 @@ services:
|
||||
DEMO_MODE: false
|
||||
volumes:
|
||||
- /data/orion-visor-space/docker-volumes/service/root-orion:/root/orion
|
||||
ulimits:
|
||||
nofile:
|
||||
soft: 65536
|
||||
hard: 65536
|
||||
healthcheck:
|
||||
test: [ "CMD", "curl", "http://127.0.0.1:9200/orion-visor/api/server/bootstrap/health" ]
|
||||
interval: 15s
|
||||
@@ -87,4 +91,4 @@ services:
|
||||
|
||||
networks:
|
||||
orion-visor-net:
|
||||
driver: bridge
|
||||
driver: bridge
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
version: '3.3'
|
||||
|
||||
# latest = 2.5.1
|
||||
# latest = 2.5.3
|
||||
|
||||
# 支持以下源
|
||||
# lijiahangmax/*
|
||||
@@ -53,6 +53,10 @@ services:
|
||||
DEMO_MODE: ${DEMO_MODE:-false}
|
||||
volumes:
|
||||
- ${VOLUME_BASE:-/data/orion-visor-space/docker-volumes}/service/root-orion:/root/orion
|
||||
ulimits:
|
||||
nofile:
|
||||
soft: 65536
|
||||
hard: 65536
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: [ "CMD", "curl", "http://127.0.0.1:9200/orion-visor/api/server/bootstrap/health" ]
|
||||
@@ -174,4 +178,4 @@ services:
|
||||
|
||||
networks:
|
||||
orion-visor-net:
|
||||
driver: bridge
|
||||
driver: bridge
|
||||
|
||||
@@ -41,7 +41,7 @@ if [ "$DEMO_MODE" = true ]; then
|
||||
echo "Starting services for demo mode..."
|
||||
|
||||
# 启动指定的服务
|
||||
docker compose up -d --remove-orphans mysql redis ui service guacd adminer
|
||||
docker compose up -d --remove-orphans mysql redis ui service guacd influxdb adminer
|
||||
echo "Started services for demo mode..."
|
||||
else
|
||||
# 启动所有服务
|
||||
|
||||
@@ -7,7 +7,7 @@ set -e
|
||||
source ./project-build.sh "$@"
|
||||
|
||||
# 版本号
|
||||
version=2.5.1
|
||||
version=2.5.3
|
||||
# 是否推送镜像
|
||||
push_image=false
|
||||
# 是否构建 latest
|
||||
|
||||
@@ -4,7 +4,7 @@ set -e
|
||||
# DockerContext: orion-visor
|
||||
|
||||
# 版本号
|
||||
version=2.5.1
|
||||
version=2.5.3
|
||||
# 是否构建 service
|
||||
export build_service=false
|
||||
# 是否构建 ui
|
||||
|
||||
@@ -36,7 +36,7 @@ public interface AppConst extends OrionConst {
|
||||
/**
|
||||
* 同 ${orion.version} 迭代时候需要手动更改
|
||||
*/
|
||||
String VERSION = "2.5.1";
|
||||
String VERSION = "2.5.3";
|
||||
|
||||
/**
|
||||
* 同 ${spring.application.name}
|
||||
|
||||
@@ -33,6 +33,8 @@ package org.dromara.visor.common.constant;
|
||||
*/
|
||||
public interface AutoConfigureOrderConst {
|
||||
|
||||
int FRAMEWORK_EXECUTOR = Integer.MIN_VALUE + 1000;
|
||||
|
||||
int FRAMEWORK_WEB = Integer.MIN_VALUE + 1100;
|
||||
|
||||
int FRAMEWORK_SECURITY = Integer.MIN_VALUE + 1200;
|
||||
@@ -65,8 +67,6 @@ public interface AutoConfigureOrderConst {
|
||||
|
||||
int FRAMEWORK_JOB_QUARTZ = Integer.MIN_VALUE + 2610;
|
||||
|
||||
int FRAMEWORK_JOB_ASYNC = Integer.MIN_VALUE + 2620;
|
||||
|
||||
int FRAMEWORK_BIZ_PUSH = Integer.MIN_VALUE + 2700;
|
||||
|
||||
int FRAMEWORK_BIZ_OPERATOR_LOG = Integer.MIN_VALUE + 7000;
|
||||
|
||||
@@ -37,13 +37,13 @@ import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
|
||||
/**
|
||||
* 验证器
|
||||
* 断言
|
||||
*
|
||||
* @author Jiahang Li
|
||||
* @version 1.0.0
|
||||
* @since 2023/7/18 11:23
|
||||
*/
|
||||
public class Valid extends cn.orionsec.kit.lang.utils.Valid {
|
||||
public class Assert extends cn.orionsec.kit.lang.utils.Assert {
|
||||
|
||||
private static final Validator validator = SpringHolder.getBean(Validator.class);
|
||||
|
||||
@@ -155,8 +155,8 @@ public class Valid extends cn.orionsec.kit.lang.utils.Valid {
|
||||
* @param path path
|
||||
*/
|
||||
public static String checkNormalize(String path) {
|
||||
Valid.notBlank(path);
|
||||
Valid.isTrue(Files1.isNormalize(path), ErrorMessage.PATH_NOT_NORMALIZE);
|
||||
Assert.notBlank(path);
|
||||
Assert.isTrue(Files1.isNormalize(path), ErrorMessage.PATH_NOT_NORMALIZE);
|
||||
return Files1.getPath(path);
|
||||
}
|
||||
|
||||
@@ -168,8 +168,8 @@ public class Valid extends cn.orionsec.kit.lang.utils.Valid {
|
||||
* @return file
|
||||
*/
|
||||
public static String checkSuffix(String file, String suffix) {
|
||||
Valid.notBlank(file);
|
||||
Valid.isTrue(file.toLowerCase().endsWith(Const.DOT + suffix), ErrorMessage.PLEASE_SELECT_SUFFIX_FILE, suffix);
|
||||
Assert.notBlank(file);
|
||||
Assert.isTrue(file.toLowerCase().endsWith(Const.DOT + suffix), ErrorMessage.PLEASE_SELECT_SUFFIX_FILE, suffix);
|
||||
return file;
|
||||
}
|
||||
|
||||
@@ -14,11 +14,11 @@
|
||||
<url>https://github.com/dromara/orion-visor</url>
|
||||
|
||||
<properties>
|
||||
<revision>2.5.1</revision>
|
||||
<revision>2.5.3</revision>
|
||||
<spring.boot.version>2.7.17</spring.boot.version>
|
||||
<spring.boot.admin.version>2.7.15</spring.boot.admin.version>
|
||||
<flatten.maven.plugin.version>1.5.0</flatten.maven.plugin.version>
|
||||
<orion.kit.version>2.0.3</orion.kit.version>
|
||||
<orion.kit.version>2.0.4</orion.kit.version>
|
||||
<aspectj.version>1.9.7</aspectj.version>
|
||||
<lombok.version>1.18.26</lombok.version>
|
||||
<springdoc.version>1.6.15</springdoc.version>
|
||||
@@ -106,6 +106,11 @@
|
||||
<artifactId>orion-visor-spring-boot-starter-job</artifactId>
|
||||
<version>${revision}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.dromara.visor</groupId>
|
||||
<artifactId>orion-visor-spring-boot-starter-executor</artifactId>
|
||||
<version>${revision}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.dromara.visor</groupId>
|
||||
<artifactId>orion-visor-spring-boot-starter-websocket</artifactId>
|
||||
|
||||
@@ -48,8 +48,7 @@ public class PushMessageEventListener implements ApplicationListener<PushMessage
|
||||
this.pushServiceMap = pushServiceMap;
|
||||
}
|
||||
|
||||
// FIXME
|
||||
@Async("asyncExecutor")
|
||||
@Async("pushExecutor")
|
||||
@Override
|
||||
public void onApplicationEvent(PushMessageEvent event) {
|
||||
try {
|
||||
@@ -68,4 +67,4 @@ public class PushMessageEventListener implements ApplicationListener<PushMessage
|
||||
return (IPushService<T>) pushServiceMap.get(message.getChannel());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ import com.alibaba.fastjson.JSON;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.visor.common.constant.Const;
|
||||
import org.dromara.visor.common.entity.PushUser;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.framework.biz.push.core.message.PushMessage;
|
||||
|
||||
import java.util.stream.Collectors;
|
||||
@@ -67,7 +67,7 @@ public abstract class BasePushService<Message extends PushMessage> implements IP
|
||||
*/
|
||||
protected void validateMessage(Message message) {
|
||||
// 验证消息
|
||||
Valid.valid(message);
|
||||
Assert.valid(message);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -25,9 +25,9 @@ package org.dromara.visor.framework.biz.push.core.service;
|
||||
import cn.orionsec.kit.http.ok.OkRequests;
|
||||
import cn.orionsec.kit.http.ok.OkResponse;
|
||||
import cn.orionsec.kit.lang.constant.StandardContentType;
|
||||
import cn.orionsec.kit.lang.utils.Assert;
|
||||
import cn.orionsec.kit.lang.utils.Exceptions;
|
||||
import cn.orionsec.kit.lang.utils.Strings;
|
||||
import cn.orionsec.kit.lang.utils.Valid;
|
||||
import cn.orionsec.kit.lang.utils.codec.Base64s;
|
||||
import cn.orionsec.kit.lang.utils.crypto.Signatures;
|
||||
import cn.orionsec.kit.lang.utils.math.Hex;
|
||||
@@ -108,7 +108,7 @@ public class DingPushService extends BasePushService<DingPushMessage> {
|
||||
OkResponse response = OkRequests.post(url, StandardContentType.APPLICATION_JSON_UTF8, body);
|
||||
DingResponseBody responseBody = JSON.parseObject(response.getBodyString(), DingResponseBody.class);
|
||||
// 验证发送结果
|
||||
Valid.eq(responseBody.getErrCode(), SUCCESS_CODE, responseBody.getErrMsg());
|
||||
Assert.eq(responseBody.getErrCode(), SUCCESS_CODE, responseBody.getErrMsg());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -27,12 +27,12 @@ import cn.orionsec.kit.http.ok.OkResponse;
|
||||
import cn.orionsec.kit.lang.constant.Const;
|
||||
import cn.orionsec.kit.lang.constant.StandardContentType;
|
||||
import cn.orionsec.kit.lang.utils.Strings;
|
||||
import cn.orionsec.kit.lang.utils.Valid;
|
||||
import cn.orionsec.kit.lang.utils.codec.Base64s;
|
||||
import cn.orionsec.kit.lang.utils.crypto.Signatures;
|
||||
import cn.orionsec.kit.lang.utils.crypto.enums.SecretKeySpecMode;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.framework.biz.push.core.annotation.MessageChannel;
|
||||
import org.dromara.visor.framework.biz.push.core.entity.FeiShuRequestBody;
|
||||
import org.dromara.visor.framework.biz.push.core.entity.FeiShuResponseBody;
|
||||
@@ -112,7 +112,7 @@ public class FeiShuPushService extends BasePushService<FeiShuPushMessage> {
|
||||
OkResponse response = OkRequests.post(url, StandardContentType.APPLICATION_JSON_UTF8, body);
|
||||
FeiShuResponseBody responseBody = JSON.parseObject(response.getBodyString(), FeiShuResponseBody.class);
|
||||
// 验证发送结果
|
||||
Valid.eq(responseBody.getCode(), SUCCESS_CODE, responseBody.getMsg());
|
||||
Assert.eq(responseBody.getCode(), SUCCESS_CODE, responseBody.getMsg());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -27,7 +27,7 @@ import cn.orionsec.kit.http.ok.OkResponse;
|
||||
import cn.orionsec.kit.lang.constant.StandardContentType;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.framework.biz.push.core.annotation.MessageChannel;
|
||||
import org.dromara.visor.framework.biz.push.core.entity.WeComRequestBody;
|
||||
import org.dromara.visor.framework.biz.push.core.entity.WeComResponseBody;
|
||||
@@ -79,7 +79,7 @@ public class WeComPushService extends BasePushService<WeComPushMessage> {
|
||||
OkResponse response = OkRequests.post(url, StandardContentType.APPLICATION_JSON_UTF8, body);
|
||||
WeComResponseBody responseBody = JSON.parseObject(response.getBodyString(), WeComResponseBody.class);
|
||||
// 验证发送结果
|
||||
Valid.eq(responseBody.getErrCode(), SUCCESS_CODE, responseBody.getErrMsg());
|
||||
Assert.eq(responseBody.getErrCode(), SUCCESS_CODE, responseBody.getErrMsg());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<groupId>org.dromara.visor</groupId>
|
||||
<artifactId>orion-visor-framework</artifactId>
|
||||
<version>${revision}</version>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>orion-visor-spring-boot-starter-executor</artifactId>
|
||||
<name>${project.artifactId}</name>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<description>项目线程池配置包</description>
|
||||
<url>https://github.com/dromara/orion-visor</url>
|
||||
|
||||
<dependencies>
|
||||
<!-- common -->
|
||||
<dependency>
|
||||
<groupId>org.dromara.visor</groupId>
|
||||
<artifactId>orion-visor-common</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
@@ -0,0 +1,70 @@
|
||||
/*
|
||||
* Copyright (c) 2023 - present Dromara, All rights reserved.
|
||||
*
|
||||
* https://visor.dromara.org
|
||||
* https://visor.dromara.org.cn
|
||||
* https://visor.orionsec.cn
|
||||
*
|
||||
* Members:
|
||||
* Jiahang Li - ljh1553488six@139.com - author
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.dromara.visor.framework.executor.configuration;
|
||||
|
||||
import org.dromara.visor.common.constant.AutoConfigureOrderConst;
|
||||
import org.dromara.visor.framework.executor.configuration.config.ExecutorsConfig;
|
||||
import org.dromara.visor.framework.executor.core.context.ExecutorContext;
|
||||
import org.dromara.visor.framework.executor.core.utils.ExecutorUtils;
|
||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigureOrder;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.scheduling.annotation.EnableAsync;
|
||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 项目线程池配置
|
||||
*
|
||||
* @author Jiahang Li
|
||||
* @version 1.0.0
|
||||
* @since 2025/9/16 14:34
|
||||
*/
|
||||
@EnableAsync
|
||||
@AutoConfiguration
|
||||
@EnableConfigurationProperties({ExecutorsConfig.class})
|
||||
@AutoConfigureOrder(AutoConfigureOrderConst.FRAMEWORK_EXECUTOR)
|
||||
public class OrionExecutorAutoConfiguration {
|
||||
|
||||
/**
|
||||
* 创建线程池上下文
|
||||
*
|
||||
* @param executorsConfig executorsConfig
|
||||
* @param beanFactory beanFactory
|
||||
* @return 线程池上下文
|
||||
*/
|
||||
@Bean
|
||||
public ExecutorContext executorContext(ExecutorsConfig executorsConfig,
|
||||
ConfigurableBeanFactory beanFactory) {
|
||||
// 创建上下文
|
||||
ExecutorContext context = new ExecutorContext(executorsConfig, beanFactory);
|
||||
Map<String, ThreadPoolTaskExecutor> executorMap = context.init();
|
||||
// 获取线程池列表
|
||||
ExecutorUtils.setExecutors(executorMap);
|
||||
return context;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,102 @@
|
||||
/*
|
||||
* Copyright (c) 2023 - present Dromara, All rights reserved.
|
||||
*
|
||||
* https://visor.dromara.org
|
||||
* https://visor.dromara.org.cn
|
||||
* https://visor.orionsec.cn
|
||||
*
|
||||
* Members:
|
||||
* Jiahang Li - ljh1553488six@139.com - author
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.dromara.visor.framework.executor.configuration.config;
|
||||
|
||||
import cn.orionsec.kit.lang.define.thread.RejectPolicy;
|
||||
import cn.orionsec.kit.lang.utils.Systems;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 线程池配置
|
||||
*
|
||||
* @author Jiahang Li
|
||||
* @version 1.0.0
|
||||
* @since 2025/9/16 10:51
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
public class ExecutorConfig {
|
||||
|
||||
/**
|
||||
* 是否启用
|
||||
*/
|
||||
private boolean enabled;
|
||||
|
||||
/**
|
||||
* 是否使用 MDC
|
||||
*/
|
||||
private boolean mdc;
|
||||
|
||||
/**
|
||||
* 核心线程数
|
||||
*/
|
||||
private int corePoolSize;
|
||||
|
||||
/**
|
||||
* 最大线程数
|
||||
*/
|
||||
private int maxPoolSize;
|
||||
|
||||
/**
|
||||
* 队列容量
|
||||
*/
|
||||
private int queueCapacity;
|
||||
|
||||
/**
|
||||
* 空闲线程存活时间
|
||||
*/
|
||||
private int keepAliveSeconds;
|
||||
|
||||
/**
|
||||
* 是否允许核心线程超时
|
||||
*/
|
||||
private boolean allowCoreTimeout;
|
||||
|
||||
/**
|
||||
* 是否使用同步队列
|
||||
*/
|
||||
private boolean synchronousQueue;
|
||||
|
||||
/**
|
||||
* 线程名称前缀
|
||||
*/
|
||||
private String threadNamePrefix;
|
||||
|
||||
/**
|
||||
* 拒绝策略
|
||||
*/
|
||||
private RejectPolicy rejectPolicy;
|
||||
|
||||
public ExecutorConfig() {
|
||||
this.enabled = true;
|
||||
this.corePoolSize = Systems.PROCESS_NUM;
|
||||
this.maxPoolSize = Systems.PROCESS_NUM;
|
||||
this.queueCapacity = 100;
|
||||
this.keepAliveSeconds = 300;
|
||||
this.rejectPolicy = RejectPolicy.CALLER_RUNS;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -20,47 +20,27 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.dromara.visor.framework.job.configuration.config;
|
||||
package org.dromara.visor.framework.executor.configuration.config;
|
||||
|
||||
import lombok.Data;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 线程池配置类
|
||||
* 线程池配置
|
||||
*
|
||||
* @author Jiahang Li
|
||||
* @version 1.0.0
|
||||
* @since 2023/7/10 15:49
|
||||
* @since 2025/9/16 16:21
|
||||
*/
|
||||
@Data
|
||||
@ConfigurationProperties(prefix = "orion.async.executor")
|
||||
public class AsyncExecutorConfig {
|
||||
@ConfigurationProperties(prefix = "app")
|
||||
public class ExecutorsConfig {
|
||||
|
||||
/**
|
||||
* 核心线程数量
|
||||
* 线程池配置
|
||||
*/
|
||||
private int corePoolSize;
|
||||
|
||||
/**
|
||||
* 最大线程数量
|
||||
*/
|
||||
private int maxPoolSize;
|
||||
|
||||
/**
|
||||
* 队列容量
|
||||
*/
|
||||
private int queueCapacity;
|
||||
|
||||
/**
|
||||
* 活跃时间
|
||||
*/
|
||||
private int keepAliveSeconds;
|
||||
|
||||
public AsyncExecutorConfig() {
|
||||
this.corePoolSize = 8;
|
||||
this.maxPoolSize = 16;
|
||||
this.queueCapacity = 200;
|
||||
this.keepAliveSeconds = 300;
|
||||
}
|
||||
private Map<String, ExecutorConfig> executors;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,119 @@
|
||||
/*
|
||||
* Copyright (c) 2023 - present Dromara, All rights reserved.
|
||||
*
|
||||
* https://visor.dromara.org
|
||||
* https://visor.dromara.org.cn
|
||||
* https://visor.orionsec.cn
|
||||
*
|
||||
* Members:
|
||||
* Jiahang Li - ljh1553488six@139.com - author
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.dromara.visor.framework.executor.core.context;
|
||||
|
||||
import cn.orionsec.kit.lang.define.thread.RejectPolicy;
|
||||
import cn.orionsec.kit.lang.utils.Strings;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.visor.common.thread.ThreadPoolMdcTaskExecutor;
|
||||
import org.dromara.visor.framework.executor.configuration.config.ExecutorConfig;
|
||||
import org.dromara.visor.framework.executor.configuration.config.ExecutorsConfig;
|
||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 执行器上下文
|
||||
*
|
||||
* @author Jiahang Li
|
||||
* @version 1.0.0
|
||||
* @since 2025/9/16 16:28
|
||||
*/
|
||||
@Slf4j
|
||||
public class ExecutorContext {
|
||||
|
||||
private final ExecutorsConfig executorsConfig;
|
||||
|
||||
private final ConfigurableBeanFactory beanFactory;
|
||||
|
||||
public ExecutorContext(ExecutorsConfig executorsConfig, ConfigurableBeanFactory beanFactory) {
|
||||
this.executorsConfig = executorsConfig;
|
||||
this.beanFactory = beanFactory;
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化
|
||||
*
|
||||
* @return executorMap
|
||||
*/
|
||||
public Map<String, ThreadPoolTaskExecutor> init() {
|
||||
log.info("--------- Executors init start --------- ");
|
||||
Map<String, ThreadPoolTaskExecutor> executorMap = new HashMap<>();
|
||||
executorsConfig.getExecutors().forEach((beanName, config) -> {
|
||||
String executorName = Strings.leftPad(beanName, 30);
|
||||
// 是否启用
|
||||
if (!config.isEnabled()) {
|
||||
log.info("Executor [{}] is disabled.", executorName);
|
||||
return;
|
||||
}
|
||||
// 创建线程池
|
||||
ThreadPoolTaskExecutor executor = this.createTaskExecutor(config);
|
||||
// 注册到容器中
|
||||
beanFactory.registerSingleton(beanName, executor);
|
||||
executorMap.put(beanName, executor);
|
||||
log.info("Executor [{}] init success. {}", executorName, JSON.toJSONString(config));
|
||||
});
|
||||
log.info("--------- Executors init end --------- ");
|
||||
return executorMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建线程池
|
||||
*
|
||||
* @param config config
|
||||
*/
|
||||
private ThreadPoolTaskExecutor createTaskExecutor(ExecutorConfig config) {
|
||||
// 创建线程池
|
||||
ThreadPoolTaskExecutor executor;
|
||||
if (config.isMdc()) {
|
||||
executor = new ThreadPoolMdcTaskExecutor();
|
||||
} else {
|
||||
executor = new ThreadPoolTaskExecutor();
|
||||
}
|
||||
// 同步队列
|
||||
if (config.isSynchronousQueue()) {
|
||||
config.setCorePoolSize(0);
|
||||
config.setMaxPoolSize(Integer.MAX_VALUE);
|
||||
config.setQueueCapacity(0);
|
||||
config.setRejectPolicy(RejectPolicy.ABORT);
|
||||
}
|
||||
// 设置参数
|
||||
executor.setCorePoolSize(config.getCorePoolSize());
|
||||
executor.setMaxPoolSize(config.getMaxPoolSize());
|
||||
executor.setQueueCapacity(config.getQueueCapacity());
|
||||
executor.setThreadNamePrefix(config.getThreadNamePrefix());
|
||||
executor.setKeepAliveSeconds(config.getKeepAliveSeconds());
|
||||
executor.setAllowCoreThreadTimeOut(config.isAllowCoreTimeout());
|
||||
executor.setRejectedExecutionHandler(config.getRejectPolicy().getHandler());
|
||||
// 设置等待所有任务执行结束再关闭线程池
|
||||
executor.setWaitForTasksToCompleteOnShutdown(true);
|
||||
executor.setAwaitTerminationSeconds(60);
|
||||
// 初始化
|
||||
executor.initialize();
|
||||
return executor;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
/*
|
||||
* Copyright (c) 2023 - present Dromara, All rights reserved.
|
||||
*
|
||||
* https://visor.dromara.org
|
||||
* https://visor.dromara.org.cn
|
||||
* https://visor.orionsec.cn
|
||||
*
|
||||
* Members:
|
||||
* Jiahang Li - ljh1553488six@139.com - author
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.dromara.visor.framework.executor.core.utils;
|
||||
|
||||
import cn.orionsec.kit.lang.able.Executable;
|
||||
import cn.orionsec.kit.lang.utils.Exceptions;
|
||||
import cn.orionsec.kit.lang.utils.collect.Maps;
|
||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 线程池工具类
|
||||
*
|
||||
* @author Jiahang Li
|
||||
* @version 1.0.0
|
||||
* @since 2025/9/16 16:34
|
||||
*/
|
||||
public class ExecutorUtils {
|
||||
|
||||
private static Map<String, ThreadPoolTaskExecutor> executorMap;
|
||||
|
||||
private ExecutorUtils() {
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取线程池
|
||||
*
|
||||
* @param name name
|
||||
* @return executor
|
||||
*/
|
||||
public static ThreadPoolTaskExecutor getExecutor(String name) {
|
||||
return executorMap.get(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行
|
||||
*
|
||||
* @param name name
|
||||
* @param runnable runnable
|
||||
*/
|
||||
public static void execute(String name, Runnable runnable) {
|
||||
getExecutor(name).execute(runnable);
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行
|
||||
*
|
||||
* @param name name
|
||||
* @param executable executable
|
||||
*/
|
||||
public static void execute(String name, Executable executable) {
|
||||
getExecutor(name).execute(executable::exec);
|
||||
}
|
||||
|
||||
public static void setExecutors(Map<String, ThreadPoolTaskExecutor> executorMap) {
|
||||
if (ExecutorUtils.executorMap != null) {
|
||||
// unmodified
|
||||
throw Exceptions.state();
|
||||
}
|
||||
ExecutorUtils.executorMap = Maps.unmodified(executorMap);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
{
|
||||
"groups": [
|
||||
{
|
||||
"name": "orion.executors.*",
|
||||
"type": "org.dromara.visor.framework.executor.configuration.config.ExecutorConfig",
|
||||
"sourceType": "org.dromara.visor.framework.executor.configuration.config.ExecutorConfig",
|
||||
"description": "线程池配置项."
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"name": "orion.executors",
|
||||
"type": "java.util.Map<java.lang.String,org.dromara.visor.framework.executor.configuration.config.ExecutorConfig>",
|
||||
"description": "线程池配置.",
|
||||
"defaultValue": "{}"
|
||||
},
|
||||
{
|
||||
"name": "orion.executors.*.enabled",
|
||||
"type": "java.lang.Boolean",
|
||||
"description": "是否启用.",
|
||||
"defaultValue": false
|
||||
},
|
||||
{
|
||||
"name": "orion.executors.*.corePoolSize",
|
||||
"type": "java.lang.Integer",
|
||||
"description": "核心线程数.",
|
||||
"defaultValue": "CPU_NUM"
|
||||
},
|
||||
{
|
||||
"name": "orion.executors.*.maxPoolSize",
|
||||
"type": "java.lang.Integer",
|
||||
"description": "最大线程数.",
|
||||
"defaultValue": "CPU_NUM"
|
||||
},
|
||||
{
|
||||
"name": "orion.executors.*.queueCapacity",
|
||||
"type": "java.lang.Integer",
|
||||
"description": "任务队列容量.",
|
||||
"defaultValue": 100
|
||||
},
|
||||
{
|
||||
"name": "orion.executors.*.keepAliveSeconds",
|
||||
"type": "java.lang.Integer",
|
||||
"description": "空闲线程存活时间.",
|
||||
"defaultValue": 60
|
||||
},
|
||||
{
|
||||
"name": "orion.executors.*.allowCoreTimeout",
|
||||
"type": "java.lang.Boolean",
|
||||
"description": "是否允许核心线程超时回收.",
|
||||
"defaultValue": false
|
||||
},
|
||||
{
|
||||
"name": "orion.executors.*.synchronousQueue",
|
||||
"type": "java.lang.Boolean",
|
||||
"description": "是否启用同步队列模式.",
|
||||
"defaultValue": false
|
||||
},
|
||||
{
|
||||
"name": "orion.executors.*.mdc",
|
||||
"type": "java.lang.Boolean",
|
||||
"description": "是否启用 MDC 上下文传递.",
|
||||
"defaultValue": false
|
||||
},
|
||||
{
|
||||
"name": "orion.executors.*.threadNamePrefix",
|
||||
"type": "java.lang.String",
|
||||
"description": "线程名称前缀."
|
||||
},
|
||||
{
|
||||
"name": "orion.executors.*.rejectPolicy",
|
||||
"type": "cn.orionsec.kit.lang.define.thread.RejectPolicy",
|
||||
"description": "拒绝策略.",
|
||||
"defaultValue": "CALLER_RUNS"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
org.dromara.visor.framework.executor.configuration.OrionExecutorAutoConfiguration
|
||||
@@ -24,6 +24,7 @@ package org.dromara.visor.framework.influxdb.core.query;
|
||||
|
||||
import cn.orionsec.kit.lang.utils.collect.Collections;
|
||||
import cn.orionsec.kit.lang.utils.collect.Lists;
|
||||
import cn.orionsec.kit.lang.utils.collect.Maps;
|
||||
import org.dromara.visor.common.constant.Const;
|
||||
|
||||
import java.time.Instant;
|
||||
@@ -194,7 +195,7 @@ public class FluxQueryBuilder {
|
||||
if (values.size() == 1) {
|
||||
return this.tag(key, Collections.first(values));
|
||||
}
|
||||
//
|
||||
// 使用 or 拼接
|
||||
Collection<String> conditions = values.stream()
|
||||
.map(value -> String.format("r[\"%s\"] == \"%s\"", key, value))
|
||||
.collect(Collectors.toList());
|
||||
@@ -204,33 +205,18 @@ public class FluxQueryBuilder {
|
||||
}
|
||||
|
||||
/**
|
||||
* 过滤多个 tag
|
||||
* tag 使用 and
|
||||
* value 使用 or
|
||||
* 过滤 tag
|
||||
*
|
||||
* @param tags tags
|
||||
* @return this
|
||||
*/
|
||||
public FluxQueryBuilder tags(Map<String, ? extends Collection<String>> tags) {
|
||||
for (Map.Entry<String, ? extends Collection<String>> entry : tags.entrySet()) {
|
||||
String key = entry.getKey();
|
||||
Collection<String> values = entry.getValue();
|
||||
if (Collections.isEmpty(values)) {
|
||||
continue;
|
||||
}
|
||||
if (values.size() == 1) {
|
||||
// 单值直接用等号
|
||||
String singleValue = values.iterator().next();
|
||||
this.appendFilter(String.format("r[\"%s\"] == \"%s\"", key, singleValue));
|
||||
} else {
|
||||
// 多值用 OR
|
||||
Collection<String> conditions = values.stream()
|
||||
.map(v -> String.format("r[\"%s\"] == \"%s\"", key, v))
|
||||
.collect(Collectors.toList());
|
||||
this.appendFilter("(" + String.join(" or ", conditions) + ")");
|
||||
}
|
||||
if (Maps.isEmpty(tags)) {
|
||||
return this;
|
||||
}
|
||||
for (Map.Entry<String, ? extends Collection<String>> entry : tags.entrySet()) {
|
||||
this.tag(entry.getKey(), entry.getValue());
|
||||
}
|
||||
this.closeFilter();
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,96 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2023 - present Dromara, All rights reserved.
|
||||
*
|
||||
* https://visor.dromara.org
|
||||
* https://visor.dromara.org.cn
|
||||
* https://visor.orionsec.cn
|
||||
*
|
||||
* Members:
|
||||
* Jiahang Li - ljh1553488six@139.com - author
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.dromara.visor.framework.job.configuration;
|
||||
|
||||
import org.dromara.visor.common.constant.AutoConfigureOrderConst;
|
||||
import org.dromara.visor.common.constant.Const;
|
||||
import org.dromara.visor.common.thread.ThreadPoolMdcTaskExecutor;
|
||||
import org.dromara.visor.framework.job.configuration.config.AsyncExecutorConfig;
|
||||
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigureOrder;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.core.task.TaskExecutor;
|
||||
import org.springframework.scheduling.annotation.EnableAsync;
|
||||
|
||||
import java.util.concurrent.ThreadPoolExecutor;
|
||||
|
||||
/**
|
||||
* async 异步任务
|
||||
*
|
||||
* @author Jiahang Li
|
||||
* @version 1.0.0
|
||||
* @since 2023/6/20 10:34
|
||||
*/
|
||||
@EnableAsync
|
||||
@AutoConfiguration
|
||||
@AutoConfigureOrder(AutoConfigureOrderConst.FRAMEWORK_JOB_ASYNC)
|
||||
@EnableConfigurationProperties(AsyncExecutorConfig.class)
|
||||
public class OrionAsyncAutoConfiguration {
|
||||
|
||||
/**
|
||||
* {@code @Async("asyncExecutor")}
|
||||
*
|
||||
* @return 支持 MDC 的异步线程池
|
||||
*/
|
||||
@Bean(name = "asyncExecutor")
|
||||
public TaskExecutor asyncExecutor(AsyncExecutorConfig config) {
|
||||
ThreadPoolMdcTaskExecutor executor = new ThreadPoolMdcTaskExecutor();
|
||||
executor.setCorePoolSize(config.getCorePoolSize());
|
||||
executor.setMaxPoolSize(config.getMaxPoolSize());
|
||||
executor.setQueueCapacity(config.getQueueCapacity());
|
||||
executor.setKeepAliveSeconds(config.getKeepAliveSeconds());
|
||||
executor.setAllowCoreThreadTimeOut(true);
|
||||
executor.setThreadNamePrefix("async-task-");
|
||||
// 设置等待所有任务执行结束再关闭线程池
|
||||
executor.setWaitForTasksToCompleteOnShutdown(true);
|
||||
// 以确保应用最后能够被关闭
|
||||
executor.setAwaitTerminationSeconds(60);
|
||||
// 调用者调用拒绝策略
|
||||
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
|
||||
executor.initialize();
|
||||
return executor;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@code @Async("metricsExecutor")}
|
||||
*
|
||||
* @return 指标线程池
|
||||
*/
|
||||
@Bean(name = "metricsExecutor")
|
||||
public TaskExecutor metricsExecutor() {
|
||||
ThreadPoolMdcTaskExecutor executor = new ThreadPoolMdcTaskExecutor();
|
||||
executor.setCorePoolSize(4);
|
||||
executor.setMaxPoolSize(8);
|
||||
executor.setQueueCapacity(1000);
|
||||
executor.setKeepAliveSeconds(Const.MS_S_60);
|
||||
executor.setAllowCoreThreadTimeOut(true);
|
||||
executor.setThreadNamePrefix("metrics-task-");
|
||||
executor.setWaitForTasksToCompleteOnShutdown(true);
|
||||
executor.setAwaitTerminationSeconds(60);
|
||||
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
|
||||
executor.initialize();
|
||||
return executor;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -25,6 +25,8 @@ package org.dromara.visor.framework.job.configuration;
|
||||
import org.dromara.visor.common.constant.AutoConfigureOrderConst;
|
||||
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigureOrder;
|
||||
import org.springframework.boot.autoconfigure.task.TaskSchedulingProperties;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.scheduling.TaskScheduler;
|
||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||
@@ -40,17 +42,18 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
|
||||
@EnableScheduling
|
||||
@AutoConfiguration
|
||||
@AutoConfigureOrder(AutoConfigureOrderConst.FRAMEWORK_JOB)
|
||||
@EnableConfigurationProperties(TaskSchedulingProperties.class)
|
||||
public class OrionSchedulerAutoConfiguration {
|
||||
|
||||
/**
|
||||
* @return 任务调度器
|
||||
*/
|
||||
@Bean
|
||||
public TaskScheduler taskScheduler() {
|
||||
public TaskScheduler taskScheduler(TaskSchedulingProperties properties) {
|
||||
ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
|
||||
scheduler.setPoolSize(4);
|
||||
scheduler.setRemoveOnCancelPolicy(true);
|
||||
scheduler.setThreadNamePrefix("scheduling-task-");
|
||||
scheduler.setPoolSize(properties.getPool().getSize());
|
||||
scheduler.setThreadNamePrefix(properties.getThreadNamePrefix());
|
||||
return scheduler;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
{
|
||||
"groups": [
|
||||
{
|
||||
"name": "orion.async.executor",
|
||||
"type": "org.dromara.visor.framework.job.configuration.config.AsyncExecutorConfig",
|
||||
"sourceType": "org.dromara.visor.framework.job.configuration.config.AsyncExecutorConfig"
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"name": "orion.async.executor.core-pool-size",
|
||||
"type": "java.lang.Integer",
|
||||
"description": "核心线程数量.",
|
||||
"defaultValue": "8"
|
||||
},
|
||||
{
|
||||
"name": "orion.async.executor.max-pool-size",
|
||||
"type": "java.lang.Integer",
|
||||
"description": "最大线程数量.",
|
||||
"defaultValue": "16"
|
||||
},
|
||||
{
|
||||
"name": "orion.async.executor.queue-capacity",
|
||||
"type": "java.lang.Integer",
|
||||
"description": "队列容量.",
|
||||
"defaultValue": "200"
|
||||
},
|
||||
{
|
||||
"name": "orion.async.executor.keep-alive-seconds",
|
||||
"type": "java.lang.Integer",
|
||||
"description": "活跃时间.",
|
||||
"defaultValue": "300"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,3 +1,2 @@
|
||||
org.dromara.visor.framework.job.configuration.OrionSchedulerAutoConfiguration
|
||||
org.dromara.visor.framework.job.configuration.OrionQuartzAutoConfiguration
|
||||
org.dromara.visor.framework.job.configuration.OrionAsyncAutoConfiguration
|
||||
@@ -38,7 +38,7 @@ import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
|
||||
import org.dromara.visor.framework.mybatis.core.generator.template.Table;
|
||||
import org.dromara.visor.framework.mybatis.core.mapper.IMapper;
|
||||
@@ -101,7 +101,7 @@ public class CodeGenerator implements Executable {
|
||||
*/
|
||||
@Override
|
||||
public void exec() {
|
||||
Valid.notEmpty(tables, "请先配置需要生成的表");
|
||||
Assert.notEmpty(tables, "请先配置需要生成的表");
|
||||
|
||||
// 创建引擎
|
||||
VelocityTemplateEngine engine = this.getEngine(tables);
|
||||
|
||||
@@ -25,7 +25,7 @@ package org.dromara.visor.framework.mybatis.core.query;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
|
||||
import org.dromara.visor.common.constant.ErrorMessage;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
@@ -81,7 +81,7 @@ public class Conditions {
|
||||
* @return wrapper
|
||||
*/
|
||||
public static <T, E> LambdaQueryWrapper<T> eq(SFunction<T, E> mapping, E e) {
|
||||
Valid.notNull(e, ErrorMessage.INVALID_PARAM);
|
||||
Assert.notNull(e, ErrorMessage.INVALID_PARAM);
|
||||
return new LambdaQueryWrapper<T>().eq(mapping, e);
|
||||
}
|
||||
|
||||
@@ -95,7 +95,7 @@ public class Conditions {
|
||||
* @return wrapper
|
||||
*/
|
||||
public static <T, E> LambdaQueryWrapper<T> in(SFunction<T, E> mapping, Collection<E> es) {
|
||||
Valid.notEmpty(es, ErrorMessage.INVALID_PARAM);
|
||||
Assert.notEmpty(es, ErrorMessage.INVALID_PARAM);
|
||||
return new LambdaQueryWrapper<T>().in(mapping, es);
|
||||
}
|
||||
|
||||
|
||||
@@ -27,7 +27,6 @@ import cn.orionsec.kit.lang.define.wrapper.PageRequest;
|
||||
import cn.orionsec.kit.lang.define.wrapper.Pager;
|
||||
import cn.orionsec.kit.lang.utils.Exceptions;
|
||||
import cn.orionsec.kit.lang.utils.Objects1;
|
||||
import cn.orionsec.kit.lang.utils.Valid;
|
||||
import cn.orionsec.kit.lang.utils.collect.Lists;
|
||||
import cn.orionsec.kit.lang.utils.reflect.Classes;
|
||||
import cn.orionsec.kit.spring.SpringHolder;
|
||||
@@ -42,6 +41,7 @@ import org.dromara.visor.common.constant.Const;
|
||||
import org.dromara.visor.common.entity.IOrderRequest;
|
||||
import org.dromara.visor.common.entity.IPageRequest;
|
||||
import org.dromara.visor.common.enums.BooleanBit;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.common.utils.SqlUtils;
|
||||
import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
|
||||
|
||||
@@ -85,23 +85,23 @@ public class DataQuery<T> {
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <T extends BaseDO> DataQuery<T> create(Class<T> entityClass) {
|
||||
TableInfo table = Valid.notNull(TableInfoHelper.getTableInfo(entityClass), "notfound mapper class");
|
||||
TableInfo table = Assert.notNull(TableInfoHelper.getTableInfo(entityClass), "notfound mapper class");
|
||||
Class<BaseMapper<T>> mapperClass = (Class<BaseMapper<T>>) Classes.loadClass(table.getCurrentNamespace());
|
||||
return new DataQuery<T>(SpringHolder.getBean(mapperClass));
|
||||
}
|
||||
|
||||
public static <T> DataQuery<T> of(BaseMapper<T> dao) {
|
||||
Valid.notNull(dao, "dao is null");
|
||||
Assert.notNull(dao, "dao is null");
|
||||
return new DataQuery<>(dao);
|
||||
}
|
||||
|
||||
public static <T> DataQuery<T> of(BaseMapper<T> dao, Wrapper<T> wrapper) {
|
||||
Valid.notNull(dao, "dao is null");
|
||||
Assert.notNull(dao, "dao is null");
|
||||
return new DataQuery<>(dao, wrapper);
|
||||
}
|
||||
|
||||
public DataQuery<T> page(IPageRequest request) {
|
||||
Valid.notNull(request, "page is null");
|
||||
Assert.notNull(request, "page is null");
|
||||
this.page = new PageRequest(request.getPage(), request.getLimit());
|
||||
return this;
|
||||
}
|
||||
@@ -112,7 +112,7 @@ public class DataQuery<T> {
|
||||
}
|
||||
|
||||
public DataQuery<T> wrapper(Wrapper<T> wrapper) {
|
||||
this.wrapper = Valid.notNull(wrapper, "wrapper is null");
|
||||
this.wrapper = Assert.notNull(wrapper, "wrapper is null");
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -177,18 +177,18 @@ public class DataQuery<T> {
|
||||
// -------------------- id --------------------
|
||||
|
||||
public T get(Serializable id) {
|
||||
Valid.notNull(id, "id is null");
|
||||
Assert.notNull(id, "id is null");
|
||||
return dao.selectById(id);
|
||||
}
|
||||
|
||||
public <R> R get(Serializable id, Function<T, R> mapper) {
|
||||
Valid.notNull(id, "id is null");
|
||||
Valid.notNull(mapper, "convert function is null");
|
||||
Assert.notNull(id, "id is null");
|
||||
Assert.notNull(mapper, "convert function is null");
|
||||
return Objects1.map(dao.selectById(id), mapper);
|
||||
}
|
||||
|
||||
public Optional<T> optional(Serializable id) {
|
||||
Valid.notNull(id, "id is null");
|
||||
Assert.notNull(id, "id is null");
|
||||
return Optional.ofNullable(dao.selectById(id));
|
||||
}
|
||||
|
||||
@@ -213,7 +213,7 @@ public class DataQuery<T> {
|
||||
}
|
||||
|
||||
public <R> R get(Function<T, R> mapper) {
|
||||
Valid.notNull(mapper, "convert function is null");
|
||||
Assert.notNull(mapper, "convert function is null");
|
||||
return Objects1.map(dao.selectOne(wrapper), mapper);
|
||||
}
|
||||
|
||||
@@ -228,7 +228,7 @@ public class DataQuery<T> {
|
||||
}
|
||||
|
||||
public <R> List<R> list(Function<T, R> mapper) {
|
||||
Valid.notNull(mapper, "convert function is null");
|
||||
Assert.notNull(mapper, "convert function is null");
|
||||
return Lists.map(dao.selectList(wrapper), mapper);
|
||||
}
|
||||
|
||||
@@ -277,10 +277,10 @@ public class DataQuery<T> {
|
||||
}
|
||||
|
||||
public <R> DataGrid<R> dataGrid(Wrapper<T> countWrapper, Function<T, R> mapper) {
|
||||
Valid.notNull(page, "page is null");
|
||||
Valid.notNull(wrapper, "wrapper is null");
|
||||
Valid.notNull(countWrapper, "count wrapper is null");
|
||||
Valid.notNull(mapper, "convert function is null");
|
||||
Assert.notNull(page, "page is null");
|
||||
Assert.notNull(wrapper, "wrapper is null");
|
||||
Assert.notNull(countWrapper, "count wrapper is null");
|
||||
Assert.notNull(mapper, "convert function is null");
|
||||
Long count = dao.selectCount(countWrapper);
|
||||
Pager<R> pager = new Pager<>(page);
|
||||
pager.setTotal(count.intValue());
|
||||
|
||||
@@ -29,7 +29,7 @@ import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.visor.common.constant.ErrorMessage;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
#if($meta.enableCache)
|
||||
import org.dromara.visor.framework.redis.core.utils.RedisMaps;
|
||||
import org.dromara.visor.framework.redis.core.utils.barrier.CacheBarriers;
|
||||
@@ -84,11 +84,11 @@ public class ${table.serviceImplName} implements ${table.serviceName} {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Integer update${type}ById(${type}UpdateRequest request) {
|
||||
Long id = Valid.notNull(request.getId(), ErrorMessage.ID_MISSING);
|
||||
Long id = Assert.notNull(request.getId(), ErrorMessage.ID_MISSING);
|
||||
log.info("${type}Service-update${type}ById id: {}, request: {}", id, JSON.toJSONString(request));
|
||||
// 查询
|
||||
${type}DO record = ${typeLower}DAO.selectById(id);
|
||||
Valid.notNull(record, ErrorMessage.DATA_ABSENT);
|
||||
Assert.notNull(record, ErrorMessage.DATA_ABSENT);
|
||||
// 转换
|
||||
${type}DO updateRecord = ${type}Convert.MAPPER.to(request);
|
||||
// 查询数据是否冲突
|
||||
@@ -125,7 +125,7 @@ public class ${table.serviceImplName} implements ${table.serviceName} {
|
||||
public ${type}VO get${type}ById(Long id) {
|
||||
// 查询
|
||||
${type}DO record = ${typeLower}DAO.selectById(id);
|
||||
Valid.notNull(record, ErrorMessage.DATA_ABSENT);
|
||||
Assert.notNull(record, ErrorMessage.DATA_ABSENT);
|
||||
// 转换
|
||||
return ${type}Convert.MAPPER.to(record);
|
||||
}
|
||||
@@ -202,7 +202,7 @@ public class ${table.serviceImplName} implements ${table.serviceName} {
|
||||
log.info("${type}Service-delete${type}ById id: {}", id);
|
||||
// 检查数据是否存在
|
||||
${type}DO record = ${typeLower}DAO.selectById(id);
|
||||
Valid.notNull(record, ErrorMessage.DATA_ABSENT);
|
||||
Assert.notNull(record, ErrorMessage.DATA_ABSENT);
|
||||
// 删除
|
||||
int effect = ${typeLower}DAO.deleteById(id);
|
||||
log.info("${type}Service-delete${type}ById id: {}, effect: {}", id, effect);
|
||||
@@ -260,7 +260,7 @@ public class ${table.serviceImplName} implements ${table.serviceName} {
|
||||
#end
|
||||
// 检查是否存在
|
||||
boolean present = ${typeLower}DAO.of(wrapper).present();
|
||||
Valid.isFalse(present, ErrorMessage.DATA_PRESENT);
|
||||
Assert.isFalse(present, ErrorMessage.DATA_PRESENT);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -27,7 +27,7 @@ import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.visor.common.constant.ErrorMessage;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
#foreach($pkg in ${customModuleFilePackages})
|
||||
import ${pkg}.*;
|
||||
#end
|
||||
@@ -64,7 +64,7 @@ public class ${type}ApiImpl implements ${type}Api {
|
||||
@Override
|
||||
public Long create${type}(${type}CreateDTO dto) {
|
||||
log.info("${type}Api.create${type} dto: {}", JSON.toJSONString(dto));
|
||||
Valid.valid(dto);
|
||||
Assert.valid(dto);
|
||||
// 转换
|
||||
${type}CreateRequest request = ${type}ProviderConvert.MAPPER.toRequest(dto);
|
||||
// 创建
|
||||
@@ -74,7 +74,7 @@ public class ${type}ApiImpl implements ${type}Api {
|
||||
@Override
|
||||
public Integer update${type}ById(${type}UpdateDTO dto) {
|
||||
log.info("${type}Api.update${type}ById dto: {}", JSON.toJSONString(dto));
|
||||
Valid.valid(dto);
|
||||
Assert.valid(dto);
|
||||
// 转换
|
||||
${type}UpdateRequest request = ${type}ProviderConvert.MAPPER.toRequest(dto);
|
||||
// 修改
|
||||
@@ -84,8 +84,8 @@ public class ${type}ApiImpl implements ${type}Api {
|
||||
@Override
|
||||
public Integer update${type}(${type}QueryDTO query, ${type}UpdateDTO update) {
|
||||
log.info("${type}Api.update${type} query: {}, update: {}", JSON.toJSONString(query), JSON.toJSONString(update));
|
||||
Valid.valid(query);
|
||||
Valid.valid(update);
|
||||
Assert.valid(query);
|
||||
Assert.valid(update);
|
||||
// 更新
|
||||
int effect = ${typeLower}Service.update${type}(${type}ProviderConvert.MAPPER.toRequest(query),
|
||||
${type}ProviderConvert.MAPPER.toRequest(update));
|
||||
@@ -96,7 +96,7 @@ public class ${type}ApiImpl implements ${type}Api {
|
||||
@Override
|
||||
public ${type}DTO get${type}ById(Long id) {
|
||||
log.info("${type}Api.get${type}ById id: {}", id);
|
||||
Valid.notNull(id, ErrorMessage.ID_MISSING);
|
||||
Assert.notNull(id, ErrorMessage.ID_MISSING);
|
||||
// 修改
|
||||
${type}DO record = ${typeLower}DAO.selectById(id);
|
||||
if (record == null) {
|
||||
@@ -121,7 +121,7 @@ public class ${type}ApiImpl implements ${type}Api {
|
||||
@Override
|
||||
public List<${type}DTO> get${type}List(${type}QueryDTO dto) {
|
||||
log.info("${type}Api.get${type}List dto: {}", JSON.toJSONString(dto));
|
||||
Valid.valid(dto);
|
||||
Assert.valid(dto);
|
||||
// 条件
|
||||
LambdaQueryWrapper<${type}DO> wrapper = this.buildQueryWrapper(dto);
|
||||
// 查询
|
||||
@@ -142,7 +142,7 @@ public class ${type}ApiImpl implements ${type}Api {
|
||||
@Override
|
||||
public Long get${type}Count(${type}QueryDTO dto) {
|
||||
log.info("${type}Api.get${type}Count dto: {}", JSON.toJSONString(dto));
|
||||
Valid.valid(dto);
|
||||
Assert.valid(dto);
|
||||
// 条件
|
||||
LambdaQueryWrapper<${type}DO> wrapper = this.buildQueryWrapper(dto);
|
||||
// 查询
|
||||
@@ -152,7 +152,7 @@ public class ${type}ApiImpl implements ${type}Api {
|
||||
@Override
|
||||
public Integer delete${type}ById(Long id) {
|
||||
log.info("${type}Api.delete${type}ById id: {}", id);
|
||||
Valid.notNull(id, ErrorMessage.ID_MISSING);
|
||||
Assert.notNull(id, ErrorMessage.ID_MISSING);
|
||||
// 删除
|
||||
Integer effect = ${typeLower}Service.delete${type}ById(id);
|
||||
log.info("${type}Api.delete${type}ById id: {}, effect: {}", id, effect);
|
||||
@@ -162,7 +162,7 @@ public class ${type}ApiImpl implements ${type}Api {
|
||||
@Override
|
||||
public Integer delete${type}ByIdList(List<Long> idList) {
|
||||
log.info("${type}Api.delete${type}ByIdList idList: {}", idList);
|
||||
Valid.notEmpty(idList, ErrorMessage.ID_MISSING);
|
||||
Assert.notEmpty(idList, ErrorMessage.ID_MISSING);
|
||||
// 删除
|
||||
Integer effect = ${typeLower}Service.delete${type}ByIdList(idList);
|
||||
log.info("${type}Api.delete${type}ByIdList effect: {}", effect);
|
||||
@@ -172,7 +172,7 @@ public class ${type}ApiImpl implements ${type}Api {
|
||||
@Override
|
||||
public Integer delete${type}(${type}QueryDTO dto) {
|
||||
log.info("${type}Api.delete${type} dto: {}", JSON.toJSONString(dto));
|
||||
Valid.valid(dto);
|
||||
Assert.valid(dto);
|
||||
// 删除
|
||||
Integer effect = ${typeLower}Service.delete${type}(${type}ProviderConvert.MAPPER.toRequest(dto));
|
||||
log.info("${type}Api.delete${type} effect: {}", effect);
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
:unmount-on-close="true"
|
||||
:ok-button-props="{ disabled: loading }"
|
||||
:cancel-button-props="{ disabled: loading }"
|
||||
:on-before-ok="handlerOk"
|
||||
:on-before-ok="handleOk"
|
||||
@cancel="handleClose">
|
||||
<a-spin class="full drawer-form-small" :loading="loading">
|
||||
<a-form :model="formModel"
|
||||
@@ -114,7 +114,7 @@
|
||||
defineExpose({ openAdd, openUpdate });
|
||||
|
||||
// 确定
|
||||
const handlerOk = async () => {
|
||||
const handleOk = async () => {
|
||||
setLoading(true);
|
||||
try {
|
||||
// 验证参数
|
||||
@@ -133,8 +133,8 @@
|
||||
Message.success('修改成功');
|
||||
emits('updated');
|
||||
}
|
||||
// 清空
|
||||
handlerClear();
|
||||
handleClose();
|
||||
return true;
|
||||
} catch (e) {
|
||||
return false;
|
||||
} finally {
|
||||
@@ -144,11 +144,12 @@
|
||||
|
||||
// 关闭
|
||||
const handleClose = () => {
|
||||
handlerClear();
|
||||
handleClear();
|
||||
setVisible(false);
|
||||
};
|
||||
|
||||
// 清空
|
||||
const handlerClear = () => {
|
||||
const handleClear = () => {
|
||||
setLoading(false);
|
||||
};
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
:unmount-on-close="true"
|
||||
:ok-button-props="{ disabled: loading }"
|
||||
:cancel-button-props="{ disabled: loading }"
|
||||
:on-before-ok="handlerOk"
|
||||
:on-before-ok="handleOk"
|
||||
@close="handleClose">
|
||||
<a-spin class="full" :loading="loading">
|
||||
<a-form :model="formModel"
|
||||
@@ -118,7 +118,7 @@
|
||||
defineExpose({ openAdd, openUpdate });
|
||||
|
||||
// 确定
|
||||
const handlerOk = async () => {
|
||||
const handleOk = async () => {
|
||||
setLoading(true);
|
||||
try {
|
||||
// 验证参数
|
||||
@@ -137,8 +137,8 @@
|
||||
Message.success('修改成功');
|
||||
emits('updated');
|
||||
}
|
||||
// 清空
|
||||
handlerClear();
|
||||
handleClose();
|
||||
return true;
|
||||
} catch (e) {
|
||||
return false;
|
||||
} finally {
|
||||
@@ -148,11 +148,12 @@
|
||||
|
||||
// 关闭
|
||||
const handleClose = () => {
|
||||
handlerClear();
|
||||
handleClear();
|
||||
setVisible(false);
|
||||
};
|
||||
|
||||
// 清空
|
||||
const handlerClear = () => {
|
||||
const handleClear = () => {
|
||||
setLoading(false);
|
||||
};
|
||||
|
||||
|
||||
@@ -312,6 +312,19 @@ public class RedisMaps extends RedisUtils {
|
||||
return getJson(key.getKey(), hashKey, (Class<V>) key.getType());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取值 json
|
||||
*
|
||||
* @param define define
|
||||
* @param key key
|
||||
* @param hashKey hashKey
|
||||
* @param <V> V
|
||||
* @return value
|
||||
*/
|
||||
public static <V> V getJson(String key, CacheKeyDefine define, Object hashKey) {
|
||||
return getJson(key, hashKey, (Class<V>) define.getType());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取值 json
|
||||
*
|
||||
@@ -355,9 +368,9 @@ public class RedisMaps extends RedisUtils {
|
||||
/**
|
||||
* 获取值 json
|
||||
*
|
||||
* @param key key
|
||||
* @param hashKeys hashKeys
|
||||
* @param <V> V
|
||||
* @param key key
|
||||
* @param hashKeys hashKeys
|
||||
* @param <V> V
|
||||
* @return values
|
||||
*/
|
||||
public static <V> List<V> multiGetJson(CacheKeyDefine key, List<?> hashKeys) {
|
||||
@@ -367,10 +380,10 @@ public class RedisMaps extends RedisUtils {
|
||||
/**
|
||||
* 获取值 json
|
||||
*
|
||||
* @param key key
|
||||
* @param hashKeys hashKeys
|
||||
* @param clazz clazz
|
||||
* @param <V> V
|
||||
* @param key key
|
||||
* @param hashKeys hashKeys
|
||||
* @param clazz clazz
|
||||
* @param <V> V
|
||||
* @return values
|
||||
*/
|
||||
public static <V> List<V> multiGetJson(String key, List<?> hashKeys, Class<V> clazz) {
|
||||
|
||||
@@ -22,8 +22,8 @@
|
||||
*/
|
||||
package org.dromara.visor.framework.security.core.context;
|
||||
|
||||
import cn.orionsec.kit.lang.utils.Valid;
|
||||
import com.alibaba.ttl.TransmittableThreadLocal;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.springframework.security.core.context.SecurityContext;
|
||||
import org.springframework.security.core.context.SecurityContextHolderStrategy;
|
||||
import org.springframework.security.core.context.SecurityContextImpl;
|
||||
@@ -60,7 +60,7 @@ public class TransmittableThreadLocalSecurityContextHolderStrategy implements Se
|
||||
|
||||
@Override
|
||||
public void setContext(SecurityContext context) {
|
||||
Valid.notNull(context, "only non-null SecurityContext instances are permitted");
|
||||
Assert.notNull(context, "only non-null SecurityContext instances are permitted");
|
||||
CONTEXT_HOLDER.set(context);
|
||||
}
|
||||
|
||||
|
||||
@@ -42,6 +42,7 @@ import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.boot.web.servlet.FilterRegistrationBean;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.DependsOn;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.converter.ByteArrayHttpMessageConverter;
|
||||
import org.springframework.http.converter.HttpMessageConverter;
|
||||
@@ -67,6 +68,7 @@ import java.util.List;
|
||||
* @version 1.0.0
|
||||
* @since 2023/6/16 16:26
|
||||
*/
|
||||
@DependsOn({"executorContext"})
|
||||
@AutoConfiguration
|
||||
@AutoConfigureOrder(AutoConfigureOrderConst.FRAMEWORK_WEB)
|
||||
@EnableConfigurationProperties(ExposeApiConfig.class)
|
||||
|
||||
@@ -28,8 +28,8 @@ import com.fasterxml.jackson.databind.DeserializationContext;
|
||||
import com.fasterxml.jackson.databind.JsonDeserializer;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import org.dromara.visor.common.constant.ErrorMessage;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.common.utils.RsaParamDecryptUtils;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
@@ -52,7 +52,7 @@ public class ParamDecryptDeserializer extends JsonDeserializer<String> {
|
||||
}
|
||||
// 解密参数
|
||||
String decrypt = RsaParamDecryptUtils.decrypt(value);
|
||||
return Valid.notNull(decrypt, ErrorMessage.DECRYPT_ERROR);
|
||||
return Assert.notNull(decrypt, ErrorMessage.DECRYPT_ERROR);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -24,6 +24,7 @@
|
||||
<module>orion-visor-spring-boot-starter-cipher</module>
|
||||
<module>orion-visor-spring-boot-starter-config</module>
|
||||
<module>orion-visor-spring-boot-starter-job</module>
|
||||
<module>orion-visor-spring-boot-starter-executor</module>
|
||||
<module>orion-visor-spring-boot-starter-websocket</module>
|
||||
<module>orion-visor-spring-boot-starter-redis</module>
|
||||
<module>orion-visor-spring-boot-starter-desensitize</module>
|
||||
@@ -37,4 +38,4 @@
|
||||
<module>orion-visor-spring-boot-starter-biz-operator-log</module>
|
||||
</modules>
|
||||
|
||||
</project>
|
||||
</project>
|
||||
|
||||
@@ -102,6 +102,10 @@
|
||||
<groupId>org.dromara.visor</groupId>
|
||||
<artifactId>orion-visor-spring-boot-starter-job</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.dromara.visor</groupId>
|
||||
<artifactId>orion-visor-spring-boot-starter-executor</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.dromara.visor</groupId>
|
||||
<artifactId>orion-visor-spring-boot-starter-websocket</artifactId>
|
||||
@@ -199,4 +203,4 @@
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
||||
</project>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
spring:
|
||||
datasource:
|
||||
druid:
|
||||
url: jdbc:mysql://${MYSQL_HOST:127.0.0.1}:${MYSQL_PORT:3306}/${MYSQL_DATABASE:orion_visor}?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=Asia/Shanghai&autoReconnect=true
|
||||
url: jdbc:mysql://${MYSQL_HOST:127.0.0.1}:${MYSQL_PORT:3306}/${MYSQL_DATABASE:orion_visor}?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=Asia/Shanghai&autoReconnect=true&rewriteBatchedStatements=true&useServerPrepStmts=false
|
||||
username: ${MYSQL_USER:root}
|
||||
password: ${MYSQL_PASSWORD:Data@123456}
|
||||
initial-size: 0
|
||||
@@ -49,3 +49,84 @@ mybatis-plus:
|
||||
configuration:
|
||||
# 日志打印
|
||||
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
|
||||
|
||||
app:
|
||||
executors:
|
||||
# 默认异步线程池
|
||||
asyncExecutor:
|
||||
mdc: true
|
||||
core-pool-size: 2
|
||||
max-pool-size: 4
|
||||
queue-capacity: 30
|
||||
allow-core-timeout: false
|
||||
thread-name-prefix: async-executor-
|
||||
# 指标存储异步线程池
|
||||
metricsExecutor:
|
||||
mdc: true
|
||||
core-pool-size: 2
|
||||
max-pool-size: 2
|
||||
queue-capacity: 1000
|
||||
allow-core-timeout: true
|
||||
thread-name-prefix: metrics-task-
|
||||
# 推送异步线程池
|
||||
pushExecutor:
|
||||
mdc: true
|
||||
core-pool-size: 1
|
||||
max-pool-size: 1
|
||||
queue-capacity: 1000
|
||||
allow-core-timeout: true
|
||||
thread-name-prefix: message-push-
|
||||
# 探针安装线程池
|
||||
agentInstallExecutor:
|
||||
core-pool-size: 2
|
||||
max-pool-size: 2
|
||||
queue-capacity: 200
|
||||
allow-core-timeout: true
|
||||
thread-name-prefix: agent-install-
|
||||
# 终端标准输出线程池
|
||||
terminalStdoutExecutor:
|
||||
synchronous-queue: true
|
||||
allow-core-timeout: true
|
||||
thread-name-prefix: terminal-stdout-
|
||||
# 终端操作线程池
|
||||
terminalOperatorExecutor:
|
||||
synchronous-queue: true
|
||||
allow-core-timeout: true
|
||||
thread-name-prefix: terminal-operator-
|
||||
# 终端异步保存线程池
|
||||
terminalAsyncSaverExecutor:
|
||||
core-pool-size: 1
|
||||
max-pool-size: 1
|
||||
queue-capacity: 1000
|
||||
allow-core-timeout: true
|
||||
thread-name-prefix: terminal-watcher-
|
||||
# 批量执行超时检查线程池
|
||||
execTimeoutCheckExecutor:
|
||||
synchronous-queue: true
|
||||
allow-core-timeout: true
|
||||
thread-name-prefix: timeout-check-
|
||||
# 批量执行任务线程池
|
||||
execTaskExecutor:
|
||||
synchronous-queue: true
|
||||
allow-core-timeout: true
|
||||
thread-name-prefix: exec-task-
|
||||
# 批量执行主机命令线程池
|
||||
execHostCommandExecutor:
|
||||
synchronous-queue: true
|
||||
allow-core-timeout: true
|
||||
thread-name-prefix: exec-host-
|
||||
# 批量执行日志查看线程池
|
||||
execLogViewExecutor:
|
||||
synchronous-queue: true
|
||||
allow-core-timeout: true
|
||||
thread-name-prefix: exec-log-
|
||||
# 批量上传任务线程池
|
||||
uploadTaskExecutor:
|
||||
synchronous-queue: true
|
||||
allow-core-timeout: true
|
||||
thread-name-prefix: upload-task-
|
||||
# 批量上传主机线程池
|
||||
uploadHostExecutor:
|
||||
synchronous-queue: true
|
||||
allow-core-timeout: true
|
||||
thread-name-prefix: upload-host-
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
spring:
|
||||
datasource:
|
||||
druid:
|
||||
url: jdbc:mysql://${MYSQL_HOST:127.0.0.1}:${MYSQL_PORT:3306}/${MYSQL_DATABASE:orion_visor}?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=Asia/Shanghai&autoReconnect=true
|
||||
url: jdbc:mysql://${MYSQL_HOST:127.0.0.1}:${MYSQL_PORT:3306}/${MYSQL_DATABASE:orion_visor}?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=Asia/Shanghai&autoReconnect=true&rewriteBatchedStatements=true&useServerPrepStmts=false
|
||||
username: ${MYSQL_USER:root}
|
||||
password: ${MYSQL_PASSWORD:Data@123456}
|
||||
# 初始连接数
|
||||
@@ -84,9 +84,81 @@ orion:
|
||||
aes:
|
||||
# 加密密钥
|
||||
secret-key: ${SECRET_KEY:uQeacXV8b3isvKLK}
|
||||
async:
|
||||
executor:
|
||||
|
||||
app:
|
||||
executors:
|
||||
# 默认异步线程池
|
||||
asyncExecutor:
|
||||
mdc: true
|
||||
core-pool-size: 8
|
||||
max-pool-size: 16
|
||||
queue-capacity: 200
|
||||
keep-alive-seconds: 300
|
||||
queue-capacity: 100
|
||||
allow-core-timeout: false
|
||||
thread-name-prefix: async-executor-
|
||||
# 指标存储异步线程池
|
||||
metricsExecutor:
|
||||
mdc: true
|
||||
core-pool-size: 4
|
||||
max-pool-size: 4
|
||||
queue-capacity: 1000
|
||||
allow-core-timeout: true
|
||||
thread-name-prefix: metrics-task-
|
||||
# 推送异步线程池
|
||||
pushExecutor:
|
||||
mdc: true
|
||||
core-pool-size: 4
|
||||
max-pool-size: 4
|
||||
queue-capacity: 1000
|
||||
allow-core-timeout: true
|
||||
thread-name-prefix: message-push-
|
||||
# 探针安装线程池
|
||||
agentInstallExecutor:
|
||||
allow-core-timeout: true
|
||||
thread-name-prefix: agent-install-
|
||||
# 终端标准输出线程池
|
||||
terminalStdoutExecutor:
|
||||
synchronous-queue: true
|
||||
allow-core-timeout: true
|
||||
thread-name-prefix: terminal-stdout-
|
||||
# 终端操作线程池
|
||||
terminalOperatorExecutor:
|
||||
synchronous-queue: true
|
||||
allow-core-timeout: true
|
||||
thread-name-prefix: terminal-operator-
|
||||
# 终端异步保存线程池
|
||||
terminalAsyncSaverExecutor:
|
||||
core-pool-size: 1
|
||||
max-pool-size: 1
|
||||
queue-capacity: 1000
|
||||
allow-core-timeout: true
|
||||
thread-name-prefix: terminal-watcher-
|
||||
# 批量执行超时检查线程池
|
||||
execTimeoutCheckExecutor:
|
||||
synchronous-queue: true
|
||||
allow-core-timeout: true
|
||||
thread-name-prefix: timeout-check-
|
||||
# 批量执行任务线程池
|
||||
execTaskExecutor:
|
||||
synchronous-queue: true
|
||||
allow-core-timeout: true
|
||||
thread-name-prefix: exec-task-
|
||||
# 批量执行主机命令线程池
|
||||
execHostCommandExecutor:
|
||||
synchronous-queue: true
|
||||
allow-core-timeout: true
|
||||
thread-name-prefix: exec-host-
|
||||
# 批量执行日志查看线程池
|
||||
execLogViewExecutor:
|
||||
synchronous-queue: true
|
||||
allow-core-timeout: true
|
||||
thread-name-prefix: exec-log-
|
||||
# 批量上传任务线程池
|
||||
uploadTaskExecutor:
|
||||
synchronous-queue: true
|
||||
allow-core-timeout: true
|
||||
thread-name-prefix: upload-task-
|
||||
# 批量上传主机线程池
|
||||
uploadHostExecutor:
|
||||
synchronous-queue: true
|
||||
allow-core-timeout: true
|
||||
thread-name-prefix: upload-host-
|
||||
|
||||
@@ -22,6 +22,11 @@ spring:
|
||||
async:
|
||||
# 异步请求时间 30min
|
||||
request-timeout: 1800000
|
||||
task:
|
||||
scheduling:
|
||||
thread-name-prefix: scheduling-task-
|
||||
pool:
|
||||
size: 4
|
||||
datasource:
|
||||
druid:
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
@@ -255,13 +260,6 @@ orion:
|
||||
secret-key: I66AndrKWrwXjtBL
|
||||
use-generator-key: true
|
||||
generator-key-length: 128
|
||||
async:
|
||||
# 线程池配置
|
||||
executor:
|
||||
core-pool-size: 2
|
||||
max-pool-size: 4
|
||||
queue-capacity: 30
|
||||
keep-alive-seconds: 180
|
||||
operator-log:
|
||||
error-message-length: 255
|
||||
user-agent-length: 128
|
||||
|
||||
@@ -39,9 +39,9 @@ import java.util.function.Function;
|
||||
*/
|
||||
public class ReplaceVersion {
|
||||
|
||||
private static final String TARGET_VERSION = "2.5.0";
|
||||
private static final String TARGET_VERSION = "2.5.2";
|
||||
|
||||
private static final String REPLACE_VERSION = "2.5.1";
|
||||
private static final String REPLACE_VERSION = "2.5.3";
|
||||
|
||||
private static final String PATH = new File("").getAbsolutePath();
|
||||
|
||||
|
||||
@@ -48,10 +48,10 @@ public interface HostAgentApi {
|
||||
/**
|
||||
* 获取缓存名称
|
||||
*
|
||||
* @param agentKeyList agentKeyList
|
||||
* @param agentKeys agentKeys
|
||||
* @return nameMap
|
||||
*/
|
||||
Map<String, String> getNameCacheByAgentKey(List<String> agentKeyList);
|
||||
Map<String, String> getNameCacheByAgentKey(List<String> agentKeys);
|
||||
|
||||
/**
|
||||
* 获取缓存名称
|
||||
|
||||
@@ -88,6 +88,10 @@
|
||||
<groupId>org.dromara.visor</groupId>
|
||||
<artifactId>orion-visor-spring-boot-starter-job</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.dromara.visor</groupId>
|
||||
<artifactId>orion-visor-spring-boot-starter-executor</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.dromara.visor</groupId>
|
||||
<artifactId>orion-visor-spring-boot-starter-test</artifactId>
|
||||
@@ -102,4 +106,4 @@
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
</project>
|
||||
|
||||
@@ -103,11 +103,11 @@ public class HostAgentApiImpl implements HostAgentApi {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, String> getNameCacheByAgentKey(List<String> agentKeyList) {
|
||||
public Map<String, String> getNameCacheByAgentKey(List<String> agentKeys) {
|
||||
Map<String, String> result = new HashMap<>();
|
||||
List<String> queryList = new ArrayList<>();
|
||||
// 查询缓存
|
||||
for (String agentKey : agentKeyList) {
|
||||
for (String agentKey : agentKeys) {
|
||||
HostBaseDTO host = AGENT_HOST_CACHE.get(agentKey);
|
||||
if (host != null) {
|
||||
result.put(agentKey, host.getName());
|
||||
|
||||
@@ -27,7 +27,7 @@ import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.visor.common.constant.ErrorMessage;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.framework.log.core.annotation.IgnoreLog;
|
||||
import org.dromara.visor.framework.log.core.enums.IgnoreLogMode;
|
||||
import org.dromara.visor.framework.web.core.annotation.RestWrapper;
|
||||
@@ -70,8 +70,8 @@ public class HostExtraController {
|
||||
@PutMapping("/update")
|
||||
@Operation(summary = "修改主机拓展信息")
|
||||
public Integer updateHostExtra(@Validated @RequestBody HostExtraUpdateRequest request) {
|
||||
HostExtraItemEnum item = Valid.valid(HostExtraItemEnum::of, request.getItem());
|
||||
Valid.isTrue(item.isUserExtra(), ErrorMessage.PARAM_ERROR);
|
||||
HostExtraItemEnum item = Assert.valid(HostExtraItemEnum::of, request.getItem());
|
||||
Assert.isTrue(item.isUserExtra(), ErrorMessage.PARAM_ERROR);
|
||||
return hostExtraService.updateHostExtra(request);
|
||||
}
|
||||
|
||||
|
||||
@@ -92,14 +92,14 @@ public interface HostDAO extends IMapper<HostDO> {
|
||||
/**
|
||||
* 更新探针信息
|
||||
*
|
||||
* @param keys agentKeyList
|
||||
* @param update update
|
||||
* @param agentKeys agentKeys
|
||||
* @param update update
|
||||
* @return effect
|
||||
*/
|
||||
default int updateByAgentKeys(List<String> keys, HostDO update) {
|
||||
default int updateByAgentKeys(List<String> agentKeys, HostDO update) {
|
||||
update.setUpdateTime(new Date());
|
||||
// 更新
|
||||
return this.update(update, Conditions.in(HostDO::getAgentKey, keys));
|
||||
return this.update(update, Conditions.in(HostDO::getAgentKey, agentKeys));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -22,12 +22,9 @@
|
||||
*/
|
||||
package org.dromara.visor.module.asset.define;
|
||||
|
||||
import cn.orionsec.kit.lang.define.thread.ExecutorBuilder;
|
||||
import cn.orionsec.kit.lang.utils.Systems;
|
||||
import org.dromara.visor.common.constant.Const;
|
||||
import org.dromara.visor.framework.executor.core.utils.ExecutorUtils;
|
||||
|
||||
import java.util.concurrent.LinkedBlockingQueue;
|
||||
import java.util.concurrent.ThreadPoolExecutor;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
/**
|
||||
* 执行线程池
|
||||
@@ -41,13 +38,6 @@ public interface AssetThreadPools {
|
||||
/**
|
||||
* 批量执行主机命令线程池
|
||||
*/
|
||||
ThreadPoolExecutor AGENT_INSTALL = ExecutorBuilder.create()
|
||||
.namedThreadFactory("agent-install-")
|
||||
.corePoolSize(Systems.PROCESS_NUM)
|
||||
.maxPoolSize(Systems.PROCESS_NUM)
|
||||
.keepAliveTime(Const.MS_S_60)
|
||||
.workQueue(new LinkedBlockingQueue<>())
|
||||
.allowCoreThreadTimeout(true)
|
||||
.build();
|
||||
Executor AGENT_INSTALL = ExecutorUtils.getExecutor("agentInstallExecutor");
|
||||
|
||||
}
|
||||
|
||||
@@ -87,6 +87,9 @@ public class HostVO implements Serializable {
|
||||
@Schema(description = "探针在线状态")
|
||||
private Integer agentOnlineStatus;
|
||||
|
||||
@Schema(description = "探针切换在线状态时间")
|
||||
private Date agentOnlineChangeTime;
|
||||
|
||||
@Schema(description = "描述")
|
||||
private String description;
|
||||
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
package org.dromara.visor.module.asset.handler.agent.intstall;
|
||||
|
||||
import cn.orionsec.kit.lang.utils.Strings;
|
||||
import cn.orionsec.kit.lang.utils.Valid;
|
||||
import cn.orionsec.kit.lang.utils.io.FileReaders;
|
||||
import cn.orionsec.kit.lang.utils.io.Streams;
|
||||
import cn.orionsec.kit.net.host.SessionStore;
|
||||
@@ -36,6 +35,7 @@ import org.dromara.visor.common.constant.ErrorMessage;
|
||||
import org.dromara.visor.common.constant.FileConst;
|
||||
import org.dromara.visor.common.session.config.SshConnectConfig;
|
||||
import org.dromara.visor.common.session.ssh.SessionStores;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.common.utils.PathUtils;
|
||||
import org.dromara.visor.module.asset.entity.domain.HostAgentLogDO;
|
||||
import org.dromara.visor.module.asset.enums.AgentLogStatusEnum;
|
||||
@@ -94,8 +94,8 @@ public abstract class AbstractAgentInstaller implements AgentInstaller {
|
||||
log.info("AgentInstaller install start {}", logId);
|
||||
// 查询记录
|
||||
this.record = hostAgentLogService.selectById(logId);
|
||||
Valid.notNull(record, "AgentInstaller record is null {}", logId);
|
||||
Valid.eq(record.getStatus(), AgentLogStatusEnum.WAIT.name(), "AgentInstaller record status is not WAIT {}", logId);
|
||||
Assert.notNull(record, "AgentInstaller record is null {}", logId);
|
||||
Assert.eq(record.getStatus(), AgentLogStatusEnum.WAIT.name(), "AgentInstaller record status is not WAIT {}", logId);
|
||||
try {
|
||||
// 更新状态
|
||||
this.updateStatus(AgentLogStatusEnum.RUNNING, null);
|
||||
|
||||
@@ -29,8 +29,8 @@ import org.dromara.visor.common.handler.data.model.GenericsDataModel;
|
||||
import org.dromara.visor.common.handler.data.strategy.AbstractGenericsDataStrategy;
|
||||
import org.dromara.visor.common.security.UpdatePasswordAction;
|
||||
import org.dromara.visor.common.utils.AesEncryptUtils;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.common.utils.RsaParamDecryptUtils;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.module.asset.enums.HostAuthTypeEnum;
|
||||
|
||||
/**
|
||||
@@ -61,10 +61,10 @@ public abstract class AbstractHostConfigStrategy<T extends GenericsDataModel> ex
|
||||
return;
|
||||
}
|
||||
// 检查新密码
|
||||
String newPassword = Valid.notBlank(after.getPassword(), ErrorMessage.PASSWORD_MISSING);
|
||||
String newPassword = Assert.notBlank(after.getPassword(), ErrorMessage.PASSWORD_MISSING);
|
||||
// 解密密码
|
||||
newPassword = RsaParamDecryptUtils.decrypt(newPassword);
|
||||
Valid.notBlank(newPassword, ErrorMessage.DECRYPT_ERROR);
|
||||
Assert.notBlank(newPassword, ErrorMessage.DECRYPT_ERROR);
|
||||
// 设置密码
|
||||
after.setPassword(AesEncryptUtils.encryptAsString(newPassword));
|
||||
}
|
||||
@@ -75,7 +75,7 @@ public abstract class AbstractHostConfigStrategy<T extends GenericsDataModel> ex
|
||||
* @param charset charset
|
||||
*/
|
||||
protected void validCharset(String charset) {
|
||||
Valid.isTrue(Charsets.isSupported(charset), ErrorMessage.UNSUPPORTED_CHARSET, charset);
|
||||
Assert.isTrue(Charsets.isSupported(charset), ErrorMessage.UNSUPPORTED_CHARSET, charset);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ package org.dromara.visor.module.asset.handler.host.config;
|
||||
import cn.orionsec.kit.lang.utils.Strings;
|
||||
import org.dromara.visor.common.constant.Const;
|
||||
import org.dromara.visor.common.constant.ErrorMessage;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.module.asset.dao.HostIdentityDAO;
|
||||
import org.dromara.visor.module.asset.entity.domain.HostIdentityDO;
|
||||
import org.dromara.visor.module.asset.entity.dto.host.HostRdpConfigDTO;
|
||||
@@ -71,15 +71,15 @@ public class HostRdpConfigStrategy extends AbstractHostConfigStrategy<HostRdpCon
|
||||
// 检查主机身份是否存在
|
||||
Long identityId = model.getIdentityId();
|
||||
if (identityId != null) {
|
||||
HostIdentityDO identity = Valid.notNull(hostIdentityDAO.selectById(identityId), ErrorMessage.IDENTITY_ABSENT);
|
||||
Valid.eq(HostIdentityTypeEnum.PASSWORD.name(), identity.getType(), ErrorMessage.CHECK_IDENTITY_PASSWORD);
|
||||
HostIdentityDO identity = Assert.notNull(hostIdentityDAO.selectById(identityId), ErrorMessage.IDENTITY_ABSENT);
|
||||
Assert.eq(HostIdentityTypeEnum.PASSWORD.name(), identity.getType(), ErrorMessage.CHECK_IDENTITY_PASSWORD);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void valid(HostRdpConfigDTO model) {
|
||||
// 验证填充后的参数
|
||||
Valid.valid(model);
|
||||
Assert.valid(model);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -25,7 +25,7 @@ package org.dromara.visor.module.asset.handler.host.config;
|
||||
import cn.orionsec.kit.lang.utils.Strings;
|
||||
import org.dromara.visor.common.constant.Const;
|
||||
import org.dromara.visor.common.constant.ErrorMessage;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.module.asset.dao.HostIdentityDAO;
|
||||
import org.dromara.visor.module.asset.dao.HostKeyDAO;
|
||||
import org.dromara.visor.module.asset.entity.dto.host.HostSshConfigDTO;
|
||||
@@ -77,19 +77,19 @@ public class HostSshConfigStrategy extends AbstractHostConfigStrategy<HostSshCon
|
||||
// 检查主机密钥是否存在
|
||||
Long keyId = model.getKeyId();
|
||||
if (keyId != null) {
|
||||
Valid.notNull(hostKeyDAO.selectById(keyId), ErrorMessage.KEY_ABSENT);
|
||||
Assert.notNull(hostKeyDAO.selectById(keyId), ErrorMessage.KEY_ABSENT);
|
||||
}
|
||||
// 检查主机身份是否存在
|
||||
Long identityId = model.getIdentityId();
|
||||
if (identityId != null) {
|
||||
Valid.notNull(hostIdentityDAO.selectById(identityId), ErrorMessage.IDENTITY_ABSENT);
|
||||
Assert.notNull(hostIdentityDAO.selectById(identityId), ErrorMessage.IDENTITY_ABSENT);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void valid(HostSshConfigDTO model) {
|
||||
// 验证填充后的参数
|
||||
Valid.valid(model);
|
||||
Assert.valid(model);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -26,7 +26,7 @@ import cn.orionsec.kit.lang.utils.Booleans;
|
||||
import cn.orionsec.kit.lang.utils.Strings;
|
||||
import org.dromara.visor.common.constant.Const;
|
||||
import org.dromara.visor.common.constant.ErrorMessage;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.module.asset.dao.HostIdentityDAO;
|
||||
import org.dromara.visor.module.asset.entity.domain.HostIdentityDO;
|
||||
import org.dromara.visor.module.asset.entity.dto.host.HostVncConfigDTO;
|
||||
@@ -77,15 +77,15 @@ public class HostVncConfigStrategy extends AbstractHostConfigStrategy<HostVncCon
|
||||
// 检查主机身份是否存在
|
||||
Long identityId = model.getIdentityId();
|
||||
if (identityId != null) {
|
||||
HostIdentityDO identity = Valid.notNull(hostIdentityDAO.selectById(identityId), ErrorMessage.IDENTITY_ABSENT);
|
||||
Valid.eq(HostIdentityTypeEnum.PASSWORD.name(), identity.getType(), ErrorMessage.CHECK_IDENTITY_PASSWORD);
|
||||
HostIdentityDO identity = Assert.notNull(hostIdentityDAO.selectById(identityId), ErrorMessage.IDENTITY_ABSENT);
|
||||
Assert.eq(HostIdentityTypeEnum.PASSWORD.name(), identity.getType(), ErrorMessage.CHECK_IDENTITY_PASSWORD);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void valid(HostVncConfigDTO model) {
|
||||
// 验证填充后的参数
|
||||
Valid.valid(model);
|
||||
Assert.valid(model);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -24,7 +24,7 @@ package org.dromara.visor.module.asset.handler.host.extra.strategy;
|
||||
|
||||
import org.dromara.visor.common.constant.ErrorMessage;
|
||||
import org.dromara.visor.common.handler.data.strategy.AbstractGenericsDataStrategy;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.framework.security.core.utils.SecurityUtils;
|
||||
import org.dromara.visor.module.asset.dao.HostIdentityDAO;
|
||||
import org.dromara.visor.module.asset.enums.HostExtraAuthTypeEnum;
|
||||
@@ -65,17 +65,17 @@ public class HostRdpExtraStrategy extends AbstractGenericsDataStrategy<HostRdpEx
|
||||
|
||||
@Override
|
||||
public void preValid(HostRdpExtraModel model) {
|
||||
HostExtraAuthTypeEnum authType = Valid.valid(HostExtraAuthTypeEnum::of, model.getAuthType());
|
||||
HostExtraAuthTypeEnum authType = Assert.valid(HostExtraAuthTypeEnum::of, model.getAuthType());
|
||||
model.setAuthType(authType.name());
|
||||
Long identityId = model.getIdentityId();
|
||||
Long userId = SecurityUtils.getLoginUserId();
|
||||
// 必填验证
|
||||
if (HostExtraAuthTypeEnum.CUSTOM_IDENTITY.equals(authType)) {
|
||||
Valid.notNull(identityId);
|
||||
Assert.notNull(identityId);
|
||||
// 验证主机身份是否存在
|
||||
Valid.notNull(hostIdentityDAO.selectById(identityId), ErrorMessage.IDENTITY_ABSENT);
|
||||
Assert.notNull(hostIdentityDAO.selectById(identityId), ErrorMessage.IDENTITY_ABSENT);
|
||||
// 验证主机身份是否有权限
|
||||
Valid.isTrue(dataPermissionApi.hasPermission(DataPermissionTypeEnum.HOST_IDENTITY, userId, identityId),
|
||||
Assert.isTrue(dataPermissionApi.hasPermission(DataPermissionTypeEnum.HOST_IDENTITY, userId, identityId),
|
||||
ErrorMessage.ANY_NO_PERMISSION,
|
||||
DataPermissionTypeEnum.HOST_IDENTITY.getPermissionName());
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ package org.dromara.visor.module.asset.handler.host.extra.strategy;
|
||||
|
||||
import org.dromara.visor.common.constant.ErrorMessage;
|
||||
import org.dromara.visor.common.handler.data.strategy.AbstractGenericsDataStrategy;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.framework.security.core.utils.SecurityUtils;
|
||||
import org.dromara.visor.module.asset.dao.HostIdentityDAO;
|
||||
import org.dromara.visor.module.asset.dao.HostKeyDAO;
|
||||
@@ -68,34 +68,34 @@ public class HostSshExtraStrategy extends AbstractGenericsDataStrategy<HostSshEx
|
||||
|
||||
@Override
|
||||
public void preValid(HostSshExtraModel model) {
|
||||
HostExtraAuthTypeEnum authType = Valid.valid(HostExtraAuthTypeEnum::of, model.getAuthType());
|
||||
HostExtraAuthTypeEnum authType = Assert.valid(HostExtraAuthTypeEnum::of, model.getAuthType());
|
||||
model.setAuthType(authType.name());
|
||||
Long keyId = model.getKeyId();
|
||||
Long identityId = model.getIdentityId();
|
||||
// 必填验证
|
||||
if (HostExtraAuthTypeEnum.CUSTOM_KEY.equals(authType)) {
|
||||
Valid.notNull(keyId);
|
||||
Assert.notNull(keyId);
|
||||
} else if (HostExtraAuthTypeEnum.CUSTOM_IDENTITY.equals(authType)) {
|
||||
Valid.notNull(identityId);
|
||||
Assert.notNull(identityId);
|
||||
}
|
||||
// 验证主机密钥是否存在
|
||||
if (keyId != null) {
|
||||
Valid.notNull(hostKeyDAO.selectById(keyId), ErrorMessage.KEY_ABSENT);
|
||||
Assert.notNull(hostKeyDAO.selectById(keyId), ErrorMessage.KEY_ABSENT);
|
||||
}
|
||||
// 验证主机身份是否存在
|
||||
if (identityId != null) {
|
||||
Valid.notNull(hostIdentityDAO.selectById(identityId), ErrorMessage.IDENTITY_ABSENT);
|
||||
Assert.notNull(hostIdentityDAO.selectById(identityId), ErrorMessage.IDENTITY_ABSENT);
|
||||
}
|
||||
Long userId = SecurityUtils.getLoginUserId();
|
||||
// 验证主机密钥是否有权限
|
||||
if (keyId != null) {
|
||||
Valid.isTrue(dataPermissionApi.hasPermission(DataPermissionTypeEnum.HOST_KEY, userId, keyId),
|
||||
Assert.isTrue(dataPermissionApi.hasPermission(DataPermissionTypeEnum.HOST_KEY, userId, keyId),
|
||||
ErrorMessage.ANY_NO_PERMISSION,
|
||||
DataPermissionTypeEnum.HOST_KEY.getPermissionName());
|
||||
}
|
||||
// 验证主机身份是否有权限
|
||||
if (identityId != null) {
|
||||
Valid.isTrue(dataPermissionApi.hasPermission(DataPermissionTypeEnum.HOST_IDENTITY, userId, identityId),
|
||||
Assert.isTrue(dataPermissionApi.hasPermission(DataPermissionTypeEnum.HOST_IDENTITY, userId, identityId),
|
||||
ErrorMessage.ANY_NO_PERMISSION,
|
||||
DataPermissionTypeEnum.HOST_IDENTITY.getPermissionName());
|
||||
}
|
||||
|
||||
@@ -28,8 +28,8 @@ import cn.orionsec.kit.lang.utils.collect.Maps;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.visor.common.constant.Const;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.common.utils.TreeUtils;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.module.asset.convert.HostGroupConvert;
|
||||
import org.dromara.visor.module.asset.dao.HostDAO;
|
||||
import org.dromara.visor.module.asset.entity.request.asset.AssetAuthorizedDataQueryRequest;
|
||||
@@ -98,7 +98,7 @@ public class AssetAuthorizedDataServiceImpl implements AssetAuthorizedDataServic
|
||||
public List<Long> getAuthorizedDataRelId(DataPermissionTypeEnum type, AssetAuthorizedDataQueryRequest request) {
|
||||
Long userId = request.getUserId();
|
||||
Long roleId = request.getRoleId();
|
||||
Valid.isTrue(userId != null || roleId != null);
|
||||
Assert.isTrue(userId != null || roleId != null);
|
||||
if (userId != null) {
|
||||
// 查询用户数据
|
||||
return dataPermissionApi.getRelIdListByUserId(type, userId);
|
||||
|
||||
@@ -27,7 +27,7 @@ import cn.orionsec.kit.spring.SpringHolder;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.visor.common.constant.Const;
|
||||
import org.dromara.visor.common.constant.ErrorMessage;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.framework.biz.operator.log.core.utils.OperatorLogs;
|
||||
import org.dromara.visor.module.asset.dao.HostIdentityDAO;
|
||||
import org.dromara.visor.module.asset.dao.HostKeyDAO;
|
||||
@@ -150,18 +150,18 @@ public class AssetDataGrantServiceImpl implements AssetDataGrantService {
|
||||
private void checkGrantIdentity(AssetDataGrantRequest request) {
|
||||
Long userId = request.getUserId();
|
||||
Long roleId = request.getRoleId();
|
||||
Valid.isTrue(userId != null || roleId != null);
|
||||
Assert.isTrue(userId != null || roleId != null);
|
||||
if (userId != null) {
|
||||
// 检测用户是否存在
|
||||
SystemUserDTO user = systemUserApi.getUserById(userId);
|
||||
Valid.notNull(user, ErrorMessage.USER_ABSENT);
|
||||
Assert.notNull(user, ErrorMessage.USER_ABSENT);
|
||||
OperatorLogs.add(OperatorLogs.GRANT_TYPE, Const.CN_USER);
|
||||
OperatorLogs.add(OperatorLogs.GRANT_NAME, user.getNickname() + "(" + user.getUsername() + ")");
|
||||
}
|
||||
if (roleId != null) {
|
||||
// 检测角色是否存在
|
||||
SystemRoleDTO role = systemRoleApi.getRoleById(roleId);
|
||||
Valid.notNull(role, ErrorMessage.ROLE_ABSENT);
|
||||
Assert.notNull(role, ErrorMessage.ROLE_ABSENT);
|
||||
OperatorLogs.add(OperatorLogs.GRANT_TYPE, Const.CN_ROLE);
|
||||
OperatorLogs.add(OperatorLogs.GRANT_NAME, role.getName() + "(" + role.getCode() + ")");
|
||||
}
|
||||
|
||||
@@ -23,12 +23,12 @@
|
||||
package org.dromara.visor.module.asset.service.impl;
|
||||
|
||||
import cn.orionsec.kit.lang.utils.Booleans;
|
||||
import cn.orionsec.kit.lang.utils.Valid;
|
||||
import cn.orionsec.kit.lang.utils.collect.Lists;
|
||||
import cn.orionsec.kit.spring.SpringHolder;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.visor.common.constant.Const;
|
||||
import org.dromara.visor.common.constant.ErrorMessage;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.module.asset.dao.HostAgentLogDAO;
|
||||
import org.dromara.visor.module.asset.dao.HostDAO;
|
||||
import org.dromara.visor.module.asset.entity.domain.HostAgentLogDO;
|
||||
@@ -106,7 +106,7 @@ public class HostAgentEndpointServiceImpl implements HostAgentEndpointService {
|
||||
try {
|
||||
// 查询主机信息
|
||||
Long hostId = hostDAO.selectIdByAgentKey(agentKey);
|
||||
Valid.notNull(hostId, ErrorMessage.HOST_ABSENT);
|
||||
Assert.notNull(hostId, ErrorMessage.HOST_ABSENT);
|
||||
// 查询主机规格信息
|
||||
HostSpecExtraModel spec = hostExtraService.getHostExtra(Const.SYSTEM_USER_ID, hostId, HostExtraItemEnum.SPEC);
|
||||
Boolean synced = Optional.ofNullable(spec)
|
||||
@@ -149,7 +149,7 @@ public class HostAgentEndpointServiceImpl implements HostAgentEndpointService {
|
||||
log.info("HostAgentEndpointService setAgentOffline agentKey: {}", agentKey);
|
||||
// 查询主机信息
|
||||
Long hostId = hostDAO.selectIdByAgentKey(agentKey);
|
||||
Valid.notNull(hostId, ErrorMessage.HOST_ABSENT);
|
||||
Assert.notNull(hostId, ErrorMessage.HOST_ABSENT);
|
||||
// 修改缓存
|
||||
ONLINE_STATUS_CACHE.put(agentKey, AgentOnlineStatusEnum.OFFLINE.getValue());
|
||||
HEARTBEAT_RECV_CACHE.put(agentKey, 0L);
|
||||
@@ -212,25 +212,25 @@ public class HostAgentEndpointServiceImpl implements HostAgentEndpointService {
|
||||
/**
|
||||
* 标记在线状态
|
||||
*
|
||||
* @param agentKeyList agentKeyList
|
||||
* @param status status
|
||||
* @param agentKeys agentKeys
|
||||
* @param status status
|
||||
*/
|
||||
private void markOnlineStatus(List<String> agentKeyList, AgentOnlineStatusEnum status) {
|
||||
if (Lists.isEmpty(agentKeyList)) {
|
||||
private void markOnlineStatus(List<String> agentKeys, AgentOnlineStatusEnum status) {
|
||||
if (Lists.isEmpty(agentKeys)) {
|
||||
return;
|
||||
}
|
||||
log.info("HostAgentEndpointService mark {}. count: {}, keys: {}", status, agentKeyList.size(), agentKeyList);
|
||||
log.info("HostAgentEndpointService mark {}. count: {}, keys: {}", status, agentKeys.size(), agentKeys);
|
||||
// 更新数据
|
||||
HostDO update = HostDO.builder()
|
||||
.agentOnlineStatus(status.getValue())
|
||||
.agentOnlineChangeTime(new Date())
|
||||
.build();
|
||||
int effect = hostDAO.updateByAgentKeys(agentKeyList, update);
|
||||
int effect = hostDAO.updateByAgentKeys(agentKeys, update);
|
||||
// 更新缓存
|
||||
agentKeyList.forEach(s -> ONLINE_STATUS_CACHE.put(s, status.getValue()));
|
||||
agentKeys.forEach(s -> ONLINE_STATUS_CACHE.put(s, status.getValue()));
|
||||
log.info("HostAgentEndpointService mark {}. effect: {}", status, effect);
|
||||
// 插入日志
|
||||
List<HostAgentLogDO> logList = hostDAO.selectIdByAgentKeys(agentKeyList)
|
||||
List<HostAgentLogDO> logList = hostDAO.selectIdByAgentKeys(agentKeys)
|
||||
.stream()
|
||||
.map(s -> {
|
||||
HostAgentLogDO agentLog = HostAgentLogDO.builder()
|
||||
@@ -250,7 +250,7 @@ public class HostAgentEndpointServiceImpl implements HostAgentEndpointService {
|
||||
}
|
||||
// 发送已下线事件
|
||||
if (AgentOnlineStatusEnum.OFFLINE.equals(status)) {
|
||||
SpringHolder.publishEvent(new AgentOfflineEvent(agentKeyList));
|
||||
SpringHolder.publishEvent(new AgentOfflineEvent(agentKeys));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -37,8 +37,8 @@ import org.dromara.visor.common.constant.Const;
|
||||
import org.dromara.visor.common.constant.ErrorMessage;
|
||||
import org.dromara.visor.common.constant.ExtraFieldConst;
|
||||
import org.dromara.visor.common.constant.FileConst;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.common.utils.PathUtils;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.framework.biz.operator.log.core.utils.OperatorLogs;
|
||||
import org.dromara.visor.framework.redis.core.utils.RedisStrings;
|
||||
import org.dromara.visor.module.asset.convert.HostConvert;
|
||||
@@ -133,7 +133,7 @@ public class HostAgentServiceImpl implements HostAgentService {
|
||||
// 查询主机信息
|
||||
List<Long> idList = request.getIdList();
|
||||
List<HostDO> hosts = hostDAO.selectBatchIds(idList);
|
||||
Valid.eq(hosts.size(), idList.size(), ErrorMessage.HOST_ABSENT);
|
||||
Assert.eq(hosts.size(), idList.size(), ErrorMessage.HOST_ABSENT);
|
||||
|
||||
// 检查并创建安装任务参数
|
||||
List<AgentInstallParams> installTaskParams = this.createInstallTaskParams(hosts);
|
||||
@@ -146,7 +146,7 @@ public class HostAgentServiceImpl implements HostAgentService {
|
||||
.in(HostAgentLogDO::getStatus, AgentLogStatusEnum.WAIT.name(), AgentLogStatusEnum.RUNNING.name())
|
||||
.then()
|
||||
.present();
|
||||
Valid.isFalse(hasRunning, ErrorMessage.ILLEGAL_STATUS);
|
||||
Assert.isFalse(hasRunning, ErrorMessage.ILLEGAL_STATUS);
|
||||
|
||||
// 创建日志记录
|
||||
List<HostAgentLogDO> agentLogs = hosts.stream()
|
||||
@@ -186,8 +186,8 @@ public class HostAgentServiceImpl implements HostAgentService {
|
||||
.map(MultipartFile::getOriginalFilename)
|
||||
.map(String::toLowerCase)
|
||||
.orElse(Const.EMPTY);
|
||||
Valid.notBlank(fileName, ErrorMessage.FILE_EXTENSION_TYPE);
|
||||
Valid.isTrue(fileName.endsWith(Const.SUFFIX_TAR_GZ), ErrorMessage.FILE_EXTENSION_TYPE);
|
||||
Assert.notBlank(fileName, ErrorMessage.FILE_EXTENSION_TYPE);
|
||||
Assert.isTrue(fileName.endsWith(Const.SUFFIX_TAR_GZ), ErrorMessage.FILE_EXTENSION_TYPE);
|
||||
// 保存文件
|
||||
String releaseDir = PathUtils.getOrionPath(FileConst.INSTANCE_AGENT_RELEASE);
|
||||
String releaseTempDir = PathUtils.getOrionPath(FileConst.INSTANCE_AGENT_RELEASE_TEMP);
|
||||
@@ -227,7 +227,7 @@ public class HostAgentServiceImpl implements HostAgentService {
|
||||
log.info("HostAgentService.installAgent decompressFiles: {}", Lists.map(decompressFiles, File::getName));
|
||||
// 检查版本文件
|
||||
String versionFile = releaseTempDir + Const.SLASH + FileConst.VERSION;
|
||||
Valid.isTrue(Files1.isFile(versionFile), ErrorMessage.DECOMPRESS_FILE_ABSENT + Const.SPACE + FileConst.VERSION);
|
||||
Assert.isTrue(Files1.isFile(versionFile), ErrorMessage.DECOMPRESS_FILE_ABSENT + Const.SPACE + FileConst.VERSION);
|
||||
// 移动文件
|
||||
for (File decompressFile : decompressFiles) {
|
||||
String releaseFile = releaseDir + Const.SLASH + decompressFile.getName();
|
||||
@@ -261,10 +261,10 @@ public class HostAgentServiceImpl implements HostAgentService {
|
||||
// 任务参数
|
||||
for (HostDO host : hosts) {
|
||||
// 是否启用
|
||||
Valid.eq(HostStatusEnum.ENABLED.name(), host.getStatus(), ErrorMessage.HOST_NOT_ENABLED, host.getName());
|
||||
Assert.eq(HostStatusEnum.ENABLED.name(), host.getStatus(), ErrorMessage.HOST_NOT_ENABLED, host.getName());
|
||||
// 是否支持 ssh
|
||||
boolean supportSsh = HostTypeEnum.SSH.contains(host.getTypes());
|
||||
Valid.isTrue(supportSsh, ErrorMessage.PLEASE_CHECK_HOST_SSH, host.getName());
|
||||
Assert.isTrue(supportSsh, ErrorMessage.PLEASE_CHECK_HOST_SSH, host.getName());
|
||||
// 文件名称
|
||||
HostOsTypeEnum os = HostOsTypeEnum.of(host.getOsType());
|
||||
String agentFileName = Strings.format(FileConst.INSTANCE_AGENT_FILE_FORMAT,
|
||||
@@ -289,7 +289,7 @@ public class HostAgentServiceImpl implements HostAgentService {
|
||||
|
||||
// 检查文件是否存在
|
||||
for (String file : checkFileList) {
|
||||
Valid.isTrue(Files1.isFile(file), ErrorMessage.FILE_ABSENT + Const.SPACE + file);
|
||||
Assert.isTrue(Files1.isFile(file), ErrorMessage.FILE_ABSENT + Const.SPACE + file);
|
||||
}
|
||||
return taskParams;
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ import org.dromara.visor.common.constant.ErrorMessage;
|
||||
import org.dromara.visor.common.constant.ExtraFieldConst;
|
||||
import org.dromara.visor.common.enums.EnableStatus;
|
||||
import org.dromara.visor.common.handler.data.model.GenericsDataModel;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.framework.biz.operator.log.core.utils.OperatorLogs;
|
||||
import org.dromara.visor.module.asset.dao.HostConfigDAO;
|
||||
import org.dromara.visor.module.asset.dao.HostDAO;
|
||||
@@ -104,7 +104,7 @@ public class HostConfigServiceImpl implements HostConfigService {
|
||||
OperatorLogs.add(ExtraFieldConst.CONFIG, param);
|
||||
// 查询主机
|
||||
HostDO host = hostDAO.selectById(hostId);
|
||||
Valid.notNull(host, ErrorMessage.HOST_ABSENT);
|
||||
Assert.notNull(host, ErrorMessage.HOST_ABSENT);
|
||||
OperatorLogs.add(OperatorLogs.NAME, host.getName());
|
||||
// 获取处理策略
|
||||
HostConfigStrategyEnum strategy = HostConfigStrategyEnum.of(type);
|
||||
@@ -169,12 +169,12 @@ public class HostConfigServiceImpl implements HostConfigService {
|
||||
public <T extends GenericsDataModel> T getHostConfig(Long hostId, String type) {
|
||||
// 查询配置信息
|
||||
HostConfigDO config = hostConfigDAO.selectByHostIdType(hostId, type);
|
||||
Valid.notNull(config, ErrorMessage.CONFIG_ABSENT);
|
||||
Assert.notNull(config, ErrorMessage.CONFIG_ABSENT);
|
||||
// 检查配置状态
|
||||
Valid.isTrue(HostStatusEnum.ENABLED.name().equals(config.getStatus()), ErrorMessage.CONFIG_NOT_ENABLED);
|
||||
Assert.isTrue(HostStatusEnum.ENABLED.name().equals(config.getStatus()), ErrorMessage.CONFIG_NOT_ENABLED);
|
||||
// 解析配置
|
||||
T model = HostTypeEnum.of(type).parse(config.getConfig());
|
||||
Valid.notNull(model, ErrorMessage.CONFIG_ABSENT);
|
||||
Assert.notNull(model, ErrorMessage.CONFIG_ABSENT);
|
||||
return model;
|
||||
}
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ import org.dromara.visor.common.session.config.RdpConnectConfig;
|
||||
import org.dromara.visor.common.session.config.SshConnectConfig;
|
||||
import org.dromara.visor.common.session.config.VncConnectConfig;
|
||||
import org.dromara.visor.common.session.ssh.SessionStores;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.module.asset.dao.HostDAO;
|
||||
import org.dromara.visor.module.asset.dao.HostIdentityDAO;
|
||||
import org.dromara.visor.module.asset.dao.HostKeyDAO;
|
||||
@@ -129,7 +129,7 @@ public class HostConnectServiceImpl implements HostConnectService {
|
||||
public SshConnectConfig getSshConnectConfig(Long hostId, Long userId) {
|
||||
// 查询主机
|
||||
HostDO host = hostDAO.selectById(hostId);
|
||||
Valid.notNull(host, ErrorMessage.HOST_ABSENT);
|
||||
Assert.notNull(host, ErrorMessage.HOST_ABSENT);
|
||||
// 获取配置
|
||||
return this.getSshConnectConfig(host, userId);
|
||||
}
|
||||
@@ -142,7 +142,7 @@ public class HostConnectServiceImpl implements HostConnectService {
|
||||
this.validHostAuthorized(userId, hostId);
|
||||
// 获取主机配置
|
||||
HostSshConfigDTO config = hostConfigService.getHostConfig(hostId, HostTypeEnum.SSH.name());
|
||||
Valid.notNull(config, ErrorMessage.CONFIG_ABSENT);
|
||||
Assert.notNull(config, ErrorMessage.CONFIG_ABSENT);
|
||||
// 查询主机额外配置
|
||||
HostSshExtraModel extra = hostExtraService.getHostExtra(userId, hostId, HostExtraItemEnum.SSH);
|
||||
if (extra != null) {
|
||||
@@ -168,7 +168,7 @@ public class HostConnectServiceImpl implements HostConnectService {
|
||||
public RdpConnectConfig getRdpConnectConfig(Long hostId, Long userId) {
|
||||
// 查询主机
|
||||
HostDO host = hostDAO.selectById(hostId);
|
||||
Valid.notNull(host, ErrorMessage.HOST_ABSENT);
|
||||
Assert.notNull(host, ErrorMessage.HOST_ABSENT);
|
||||
// 获取配置
|
||||
return this.getRdpConnectConfig(host, userId);
|
||||
}
|
||||
@@ -181,7 +181,7 @@ public class HostConnectServiceImpl implements HostConnectService {
|
||||
this.validHostAuthorized(userId, hostId);
|
||||
// 获取主机配置
|
||||
HostRdpConfigDTO config = hostConfigService.getHostConfig(hostId, HostTypeEnum.RDP.name());
|
||||
Valid.notNull(config, ErrorMessage.CONFIG_ABSENT);
|
||||
Assert.notNull(config, ErrorMessage.CONFIG_ABSENT);
|
||||
// 查询主机额外配置
|
||||
HostRdpExtraModel extra = hostExtraService.getHostExtra(userId, hostId, HostExtraItemEnum.RDP);
|
||||
if (extra != null) {
|
||||
@@ -207,7 +207,7 @@ public class HostConnectServiceImpl implements HostConnectService {
|
||||
public VncConnectConfig getVncConnectConfig(Long hostId, Long userId) {
|
||||
// 查询主机
|
||||
HostDO host = hostDAO.selectById(hostId);
|
||||
Valid.notNull(host, ErrorMessage.HOST_ABSENT);
|
||||
Assert.notNull(host, ErrorMessage.HOST_ABSENT);
|
||||
// 获取配置
|
||||
return this.getVncConnectConfig(host, userId);
|
||||
}
|
||||
@@ -220,7 +220,7 @@ public class HostConnectServiceImpl implements HostConnectService {
|
||||
this.validHostAuthorized(userId, hostId);
|
||||
// 获取主机配置
|
||||
HostVncConfigDTO config = hostConfigService.getHostConfig(hostId, HostTypeEnum.VNC.name());
|
||||
Valid.notNull(config, ErrorMessage.CONFIG_ABSENT);
|
||||
Assert.notNull(config, ErrorMessage.CONFIG_ABSENT);
|
||||
// 查询主机额外配置
|
||||
HostVncExtraModel extra = hostExtraService.getHostExtra(userId, hostId, HostExtraItemEnum.VNC);
|
||||
// 获取连接配置
|
||||
@@ -269,9 +269,9 @@ public class HostConnectServiceImpl implements HostConnectService {
|
||||
HostAuthTypeEnum authType = HostAuthTypeEnum.of(config.getAuthType());
|
||||
if (HostAuthTypeEnum.IDENTITY.equals(authType)) {
|
||||
// 身份认证
|
||||
Valid.notNull(config.getIdentityId(), ErrorMessage.IDENTITY_ABSENT);
|
||||
Assert.notNull(config.getIdentityId(), ErrorMessage.IDENTITY_ABSENT);
|
||||
HostIdentityDO identity = hostIdentityDAO.selectById(config.getIdentityId());
|
||||
Valid.notNull(identity, ErrorMessage.IDENTITY_ABSENT);
|
||||
Assert.notNull(identity, ErrorMessage.IDENTITY_ABSENT);
|
||||
config.setUsername(identity.getUsername());
|
||||
HostIdentityTypeEnum identityType = HostIdentityTypeEnum.of(identity.getType());
|
||||
if (HostIdentityTypeEnum.PASSWORD.equals(identityType)) {
|
||||
@@ -398,7 +398,7 @@ public class HostConnectServiceImpl implements HostConnectService {
|
||||
private void validHostAuthorized(Long userId, Long hostId) {
|
||||
// 验证主机是否有权限
|
||||
List<Long> hostIdList = assetAuthorizedDataService.getUserAuthorizedHostId(userId);
|
||||
Valid.isTrue(hostIdList.contains(hostId),
|
||||
Assert.isTrue(hostIdList.contains(hostId),
|
||||
ErrorMessage.ANY_NO_PERMISSION,
|
||||
DataPermissionTypeEnum.HOST_GROUP.getPermissionName());
|
||||
}
|
||||
@@ -415,14 +415,14 @@ public class HostConnectServiceImpl implements HostConnectService {
|
||||
HostExtraAuthTypeEnum extraAuthType = HostExtraAuthTypeEnum.of(authType);
|
||||
if (HostExtraAuthTypeEnum.CUSTOM_KEY.equals(extraAuthType)) {
|
||||
// 验证主机密钥是否有权限
|
||||
Valid.notNull(keyId, ErrorMessage.KEY_ABSENT);
|
||||
Valid.isTrue(dataPermissionApi.hasPermission(DataPermissionTypeEnum.HOST_KEY, userId, keyId),
|
||||
Assert.notNull(keyId, ErrorMessage.KEY_ABSENT);
|
||||
Assert.isTrue(dataPermissionApi.hasPermission(DataPermissionTypeEnum.HOST_KEY, userId, keyId),
|
||||
ErrorMessage.ANY_NO_PERMISSION,
|
||||
DataPermissionTypeEnum.HOST_KEY.getPermissionName());
|
||||
} else if (HostExtraAuthTypeEnum.CUSTOM_IDENTITY.equals(extraAuthType)) {
|
||||
// 验证主机身份是否有权限
|
||||
Valid.notNull(identityId, ErrorMessage.IDENTITY_ABSENT);
|
||||
Valid.isTrue(dataPermissionApi.hasPermission(DataPermissionTypeEnum.HOST_IDENTITY, userId, identityId),
|
||||
Assert.notNull(identityId, ErrorMessage.IDENTITY_ABSENT);
|
||||
Assert.isTrue(dataPermissionApi.hasPermission(DataPermissionTypeEnum.HOST_IDENTITY, userId, identityId),
|
||||
ErrorMessage.ANY_NO_PERMISSION,
|
||||
DataPermissionTypeEnum.HOST_IDENTITY.getPermissionName());
|
||||
}
|
||||
@@ -440,7 +440,7 @@ public class HostConnectServiceImpl implements HostConnectService {
|
||||
}
|
||||
// 查询身份信息
|
||||
HostIdentityDO identity = hostIdentityDAO.selectById(identityId);
|
||||
Valid.notNull(identity, ErrorMessage.IDENTITY_ABSENT);
|
||||
Assert.notNull(identity, ErrorMessage.IDENTITY_ABSENT);
|
||||
// 设置身份信息
|
||||
connectConfig.setUsername(identity.getUsername());
|
||||
connectConfig.setPassword(identity.getPassword());
|
||||
@@ -453,10 +453,10 @@ public class HostConnectServiceImpl implements HostConnectService {
|
||||
* @param connectConfig connectConfig
|
||||
*/
|
||||
private void setSshKey(Long keyId, SshConnectConfig connectConfig) {
|
||||
Valid.notNull(keyId, ErrorMessage.KEY_ABSENT);
|
||||
Assert.notNull(keyId, ErrorMessage.KEY_ABSENT);
|
||||
// 查询密钥信息
|
||||
HostKeyDO key = hostKeyDAO.selectById(keyId);
|
||||
Valid.notNull(key, ErrorMessage.KEY_ABSENT);
|
||||
Assert.notNull(key, ErrorMessage.KEY_ABSENT);
|
||||
connectConfig.setKeyId(keyId);
|
||||
connectConfig.setPublicKey(key.getPublicKey());
|
||||
connectConfig.setPrivateKey(key.getPrivateKey());
|
||||
|
||||
@@ -29,7 +29,7 @@ import com.alibaba.fastjson.JSONObject;
|
||||
import org.dromara.visor.common.constant.Const;
|
||||
import org.dromara.visor.common.constant.ErrorMessage;
|
||||
import org.dromara.visor.common.handler.data.model.GenericsDataModel;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.framework.security.core.utils.SecurityUtils;
|
||||
import org.dromara.visor.module.asset.dao.HostDAO;
|
||||
import org.dromara.visor.module.asset.entity.request.host.HostExtraUpdateRequest;
|
||||
@@ -66,7 +66,7 @@ public class HostExtraServiceImpl implements HostExtraService {
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getHostExtraView(Long hostId, String item) {
|
||||
HostExtraItemEnum extraItem = Valid.valid(HostExtraItemEnum::of, item);
|
||||
HostExtraItemEnum extraItem = Assert.valid(HostExtraItemEnum::of, item);
|
||||
Long userId = this.getExtraUserId(extraItem);
|
||||
// 查询配置项
|
||||
DataExtraQueryDTO query = DataExtraQueryDTO.builder()
|
||||
@@ -108,7 +108,7 @@ public class HostExtraServiceImpl implements HostExtraService {
|
||||
|
||||
@Override
|
||||
public Integer updateHostExtra(HostExtraUpdateRequest request) {
|
||||
HostExtraItemEnum item = Valid.valid(HostExtraItemEnum::of, request.getItem());
|
||||
HostExtraItemEnum item = Assert.valid(HostExtraItemEnum::of, request.getItem());
|
||||
Long hostId = request.getHostId();
|
||||
Long userId = this.getExtraUserId(item);
|
||||
// 查询原始配置
|
||||
@@ -159,7 +159,7 @@ public class HostExtraServiceImpl implements HostExtraService {
|
||||
try {
|
||||
// 查询主机id
|
||||
Long id = hostDAO.selectIdByAgentKey(key);
|
||||
Valid.notNull(id, ErrorMessage.HOST_ABSENT);
|
||||
Assert.notNull(id, ErrorMessage.HOST_ABSENT);
|
||||
// 设置已同步标识
|
||||
spec.put(Const.SYNCED, true);
|
||||
// 查询配置信息
|
||||
|
||||
@@ -34,7 +34,7 @@ import org.dromara.visor.common.constant.Const;
|
||||
import org.dromara.visor.common.constant.ErrorMessage;
|
||||
import org.dromara.visor.common.security.PasswordModifier;
|
||||
import org.dromara.visor.common.utils.AesEncryptUtils;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.framework.biz.operator.log.core.utils.OperatorLogs;
|
||||
import org.dromara.visor.framework.redis.core.utils.RedisMaps;
|
||||
import org.dromara.visor.framework.redis.core.utils.RedisUtils;
|
||||
@@ -118,15 +118,15 @@ public class HostIdentityServiceImpl implements HostIdentityService {
|
||||
public Integer updateHostIdentityById(HostIdentityUpdateRequest request) {
|
||||
log.info("HostIdentityService-updateHostIdentityById request: {}", JSON.toJSONString(request));
|
||||
// 验证参数
|
||||
Long id = Valid.notNull(request.getId(), ErrorMessage.ID_MISSING);
|
||||
HostIdentityTypeEnum type = Valid.valid(HostIdentityTypeEnum::of, request.getType());
|
||||
Long id = Assert.notNull(request.getId(), ErrorMessage.ID_MISSING);
|
||||
HostIdentityTypeEnum type = Assert.valid(HostIdentityTypeEnum::of, request.getType());
|
||||
if (HostIdentityTypeEnum.KEY.equals(type)) {
|
||||
// 密钥认证
|
||||
this.checkKeyId(request.getKeyId());
|
||||
}
|
||||
// 查询主机身份
|
||||
HostIdentityDO record = hostIdentityDAO.selectById(id);
|
||||
Valid.notNull(record, ErrorMessage.DATA_ABSENT);
|
||||
Assert.notNull(record, ErrorMessage.DATA_ABSENT);
|
||||
// 转换
|
||||
HostIdentityDO updateRecord = HostIdentityConvert.MAPPER.to(request);
|
||||
// 查询数据是否冲突
|
||||
@@ -151,7 +151,7 @@ public class HostIdentityServiceImpl implements HostIdentityService {
|
||||
public HostIdentityVO getHostIdentityById(Long id) {
|
||||
// 查询
|
||||
HostIdentityDO record = hostIdentityDAO.selectById(id);
|
||||
Valid.notNull(record, ErrorMessage.DATA_ABSENT);
|
||||
Assert.notNull(record, ErrorMessage.DATA_ABSENT);
|
||||
// 转换
|
||||
return HostIdentityConvert.MAPPER.to(record);
|
||||
}
|
||||
@@ -224,7 +224,7 @@ public class HostIdentityServiceImpl implements HostIdentityService {
|
||||
log.info("HostIdentityService-deleteHostIdentityByIdList idList: {}", idList);
|
||||
// 检查数据是否存在
|
||||
List<HostIdentityDO> list = hostIdentityDAO.selectBatchIds(idList);
|
||||
Valid.notEmpty(list, ErrorMessage.DATA_ABSENT);
|
||||
Assert.notEmpty(list, ErrorMessage.DATA_ABSENT);
|
||||
// 添加日志参数
|
||||
String name = list.stream()
|
||||
.map(HostIdentityDO::getName)
|
||||
@@ -258,7 +258,7 @@ public class HostIdentityServiceImpl implements HostIdentityService {
|
||||
.eq(HostIdentityDO::getName, domain.getName());
|
||||
// 检查是否存在
|
||||
boolean present = hostIdentityDAO.of(wrapper).present();
|
||||
Valid.isFalse(present, ErrorMessage.DATA_PRESENT);
|
||||
Assert.isFalse(present, ErrorMessage.DATA_PRESENT);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -267,10 +267,10 @@ public class HostIdentityServiceImpl implements HostIdentityService {
|
||||
* @param request request
|
||||
*/
|
||||
private void checkCreateParams(HostIdentityCreateRequest request) {
|
||||
HostIdentityTypeEnum type = Valid.valid(HostIdentityTypeEnum::of, request.getType());
|
||||
HostIdentityTypeEnum type = Assert.valid(HostIdentityTypeEnum::of, request.getType());
|
||||
if (HostIdentityTypeEnum.PASSWORD.equals(type)) {
|
||||
// 密码认证
|
||||
Valid.notBlank(request.getPassword(), ErrorMessage.PARAM_MISSING);
|
||||
Assert.notBlank(request.getPassword(), ErrorMessage.PARAM_MISSING);
|
||||
} else if (HostIdentityTypeEnum.KEY.equals(type)) {
|
||||
// 密钥认证
|
||||
this.checkKeyId(request.getKeyId());
|
||||
@@ -283,8 +283,8 @@ public class HostIdentityServiceImpl implements HostIdentityService {
|
||||
* @param keyId keyId
|
||||
*/
|
||||
private void checkKeyId(Long keyId) {
|
||||
Valid.notNull(keyId, ErrorMessage.PARAM_MISSING);
|
||||
Valid.notNull(hostKeyDAO.selectById(keyId), ErrorMessage.KEY_ABSENT);
|
||||
Assert.notNull(keyId, ErrorMessage.PARAM_MISSING);
|
||||
Assert.notNull(hostKeyDAO.selectById(keyId), ErrorMessage.KEY_ABSENT);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -32,7 +32,7 @@ import org.dromara.visor.common.constant.Const;
|
||||
import org.dromara.visor.common.constant.ErrorMessage;
|
||||
import org.dromara.visor.common.security.PasswordModifier;
|
||||
import org.dromara.visor.common.utils.AesEncryptUtils;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.framework.biz.operator.log.core.utils.OperatorLogs;
|
||||
import org.dromara.visor.framework.redis.core.utils.RedisMaps;
|
||||
import org.dromara.visor.framework.redis.core.utils.RedisUtils;
|
||||
@@ -112,9 +112,9 @@ public class HostKeyServiceImpl implements HostKeyService {
|
||||
public Integer updateHostKeyById(HostKeyUpdateRequest request) {
|
||||
log.info("HostKeyService-updateHostKeyById request: {}", JSON.toJSONString(request));
|
||||
// 查询
|
||||
Long id = Valid.notNull(request.getId(), ErrorMessage.ID_MISSING);
|
||||
Long id = Assert.notNull(request.getId(), ErrorMessage.ID_MISSING);
|
||||
HostKeyDO record = hostKeyDAO.selectById(id);
|
||||
Valid.notNull(record, ErrorMessage.DATA_ABSENT);
|
||||
Assert.notNull(record, ErrorMessage.DATA_ABSENT);
|
||||
// 转换
|
||||
HostKeyDO updateRecord = HostKeyConvert.MAPPER.to(request);
|
||||
// 查询数据是否冲突
|
||||
@@ -138,7 +138,7 @@ public class HostKeyServiceImpl implements HostKeyService {
|
||||
public HostKeyVO getHostKeyById(Long id) {
|
||||
// 查询
|
||||
HostKeyDO record = hostKeyDAO.selectById(id);
|
||||
Valid.notNull(record, ErrorMessage.DATA_ABSENT);
|
||||
Assert.notNull(record, ErrorMessage.DATA_ABSENT);
|
||||
// 解密密钥
|
||||
this.decryptKey(record);
|
||||
// 转换
|
||||
@@ -148,7 +148,7 @@ public class HostKeyServiceImpl implements HostKeyService {
|
||||
@Override
|
||||
public HostKeyDO getHostKey(Long id) {
|
||||
HostKeyDO record = hostKeyDAO.selectById(id);
|
||||
Valid.notNull(record, ErrorMessage.DATA_ABSENT);
|
||||
Assert.notNull(record, ErrorMessage.DATA_ABSENT);
|
||||
// 解密密钥
|
||||
this.decryptKey(record);
|
||||
// 解密密码
|
||||
@@ -206,7 +206,7 @@ public class HostKeyServiceImpl implements HostKeyService {
|
||||
log.info("HostKeyService-deleteHostKeyById idList: {}", idList);
|
||||
// 检查数据是否存在
|
||||
List<HostKeyDO> list = hostKeyDAO.selectBatchIds(idList);
|
||||
Valid.notEmpty(list, ErrorMessage.DATA_ABSENT);
|
||||
Assert.notEmpty(list, ErrorMessage.DATA_ABSENT);
|
||||
// 添加日志参数
|
||||
String name = list.stream()
|
||||
.map(HostKeyDO::getName)
|
||||
@@ -242,7 +242,7 @@ public class HostKeyServiceImpl implements HostKeyService {
|
||||
.eq(HostKeyDO::getName, domain.getName());
|
||||
// 检查是否存在
|
||||
boolean present = hostKeyDAO.of(wrapper).present();
|
||||
Valid.isFalse(present, ErrorMessage.DATA_PRESENT);
|
||||
Assert.isFalse(present, ErrorMessage.DATA_PRESENT);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -35,7 +35,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.visor.common.constant.Const;
|
||||
import org.dromara.visor.common.constant.ErrorMessage;
|
||||
import org.dromara.visor.common.enums.EnableStatus;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.framework.biz.operator.log.core.utils.OperatorLogs;
|
||||
import org.dromara.visor.framework.mybatis.core.query.DataQuery;
|
||||
import org.dromara.visor.framework.redis.core.utils.RedisMaps;
|
||||
@@ -160,7 +160,7 @@ public class HostServiceImpl implements HostService {
|
||||
log.info("HostService-copyHost originId: {}, request: {}", originId, JSON.toJSONString(request));
|
||||
// 查询原始主机
|
||||
HostDO originHost = hostDAO.selectById(originId);
|
||||
Valid.notNull(originHost, ErrorMessage.HOST_ABSENT);
|
||||
Assert.notNull(originHost, ErrorMessage.HOST_ABSENT);
|
||||
// 创建主机
|
||||
Long newId = SpringHolder.getBean(HostService.class)
|
||||
.createHost(HostConvert.MAPPER.toCreate(request));
|
||||
@@ -177,9 +177,9 @@ public class HostServiceImpl implements HostService {
|
||||
log.info("HostService-updateHostById request: {}", JSON.toJSONString(request));
|
||||
List<String> types = request.getTypes();
|
||||
// 查询
|
||||
Long id = Valid.notNull(request.getId(), ErrorMessage.ID_MISSING);
|
||||
Long id = Assert.notNull(request.getId(), ErrorMessage.ID_MISSING);
|
||||
HostDO record = hostDAO.selectById(id);
|
||||
Valid.notNull(record, ErrorMessage.HOST_ABSENT);
|
||||
Assert.notNull(record, ErrorMessage.HOST_ABSENT);
|
||||
// 转换
|
||||
HostDO updateRecord = HostConvert.MAPPER.to(request);
|
||||
// 查询数据是否冲突
|
||||
@@ -207,10 +207,10 @@ public class HostServiceImpl implements HostService {
|
||||
public Integer updateHostStatus(HostUpdateStatusRequest request) {
|
||||
log.info("HostService-updateHostStatus request: {}", JSON.toJSONString(request));
|
||||
Long id = request.getId();
|
||||
String status = Valid.valid(HostStatusEnum::of, request.getStatus()).name();
|
||||
String status = Assert.valid(HostStatusEnum::of, request.getStatus()).name();
|
||||
// 查询主机
|
||||
HostDO record = hostDAO.selectById(id);
|
||||
Valid.notNull(record, ErrorMessage.HOST_ABSENT);
|
||||
Assert.notNull(record, ErrorMessage.HOST_ABSENT);
|
||||
// 更新
|
||||
HostDO update = HostDO.builder()
|
||||
.id(id)
|
||||
@@ -230,7 +230,7 @@ public class HostServiceImpl implements HostService {
|
||||
log.info("HostService-updateHostSpec request: {}", JSON.toJSONString(request));
|
||||
// 查询主机
|
||||
HostDO record = hostDAO.selectById(request.getHostId());
|
||||
Valid.notNull(record, ErrorMessage.HOST_ABSENT);
|
||||
Assert.notNull(record, ErrorMessage.HOST_ABSENT);
|
||||
// 设置日志参数
|
||||
OperatorLogs.add(OperatorLogs.NAME, record.getName());
|
||||
// 更新
|
||||
@@ -244,7 +244,7 @@ public class HostServiceImpl implements HostService {
|
||||
// 查询主机基础信息
|
||||
if (Booleans.isTrue(base)) {
|
||||
HostDO record = hostDAO.selectById(id);
|
||||
Valid.notNull(record, ErrorMessage.HOST_ABSENT);
|
||||
Assert.notNull(record, ErrorMessage.HOST_ABSENT);
|
||||
return HostConvert.MAPPER.to(record);
|
||||
}
|
||||
// 查询 tag 信息
|
||||
@@ -253,7 +253,7 @@ public class HostServiceImpl implements HostService {
|
||||
Future<Set<Long>> groupIdFuture = dataGroupRelApi.getGroupIdByRelIdAsync(DataGroupTypeEnum.HOST, id);
|
||||
// 查询主机
|
||||
HostDO record = hostDAO.selectById(id);
|
||||
Valid.notNull(record, ErrorMessage.HOST_ABSENT);
|
||||
Assert.notNull(record, ErrorMessage.HOST_ABSENT);
|
||||
// 查询规格
|
||||
HostSpecExtraModel spec = hostExtraService.getHostExtra(Const.SYSTEM_USER_ID, id, HostExtraItemEnum.SPEC);
|
||||
// 转换
|
||||
@@ -392,7 +392,7 @@ public class HostServiceImpl implements HostService {
|
||||
.eq(HostDO::getName, domain.getName());
|
||||
// 检查是否存在
|
||||
boolean present = hostDAO.of(wrapper).present();
|
||||
Valid.isFalse(present, ErrorMessage.NAME_PRESENT);
|
||||
Assert.isFalse(present, ErrorMessage.NAME_PRESENT);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -408,7 +408,7 @@ public class HostServiceImpl implements HostService {
|
||||
.eq(HostDO::getCode, domain.getCode());
|
||||
// 检查是否存在
|
||||
boolean present = hostDAO.of(wrapper).present();
|
||||
Valid.isFalse(present, ErrorMessage.CODE_PRESENT);
|
||||
Assert.isFalse(present, ErrorMessage.CODE_PRESENT);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -87,10 +87,14 @@
|
||||
<groupId>org.dromara.visor</groupId>
|
||||
<artifactId>orion-visor-spring-boot-starter-job</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.dromara.visor</groupId>
|
||||
<artifactId>orion-visor-spring-boot-starter-executor</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.dromara.visor</groupId>
|
||||
<artifactId>orion-visor-spring-boot-starter-test</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
</project>
|
||||
|
||||
@@ -27,7 +27,7 @@ import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.common.validator.group.Page;
|
||||
import org.dromara.visor.framework.biz.operator.log.core.annotation.OperatorLog;
|
||||
import org.dromara.visor.framework.log.core.annotation.IgnoreLog;
|
||||
@@ -192,7 +192,7 @@ public class ExecCommandLogController {
|
||||
@Operation(summary = "中断批量执行命令")
|
||||
@PreAuthorize("@ss.hasPermission('exec:exec-command-log:interrupt')")
|
||||
public Boolean interruptExecCommand(@RequestBody ExecInterruptRequest request) {
|
||||
Long logId = Valid.notNull(request.getLogId());
|
||||
Long logId = Assert.notNull(request.getLogId());
|
||||
execLogService.interruptExec(logId, SOURCE);
|
||||
return true;
|
||||
}
|
||||
@@ -202,7 +202,7 @@ public class ExecCommandLogController {
|
||||
@Operation(summary = "中断批量执行主机命令")
|
||||
@PreAuthorize("@ss.hasPermission('exec:exec-command-log:interrupt')")
|
||||
public Boolean interruptHostExecCommand(@RequestBody ExecInterruptRequest request) {
|
||||
Long hostLogId = Valid.notNull(request.getHostLogId());
|
||||
Long hostLogId = Assert.notNull(request.getHostLogId());
|
||||
execLogService.interruptHostExec(hostLogId, SOURCE);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.common.validator.group.Page;
|
||||
import org.dromara.visor.framework.biz.operator.log.core.annotation.OperatorLog;
|
||||
import org.dromara.visor.framework.log.core.annotation.IgnoreLog;
|
||||
@@ -181,7 +181,7 @@ public class ExecJobLogController {
|
||||
@Operation(summary = "中断计划任务命令")
|
||||
@PreAuthorize("@ss.hasPermission('exec:exec-job-log:interrupt')")
|
||||
public Boolean interruptExecCommand(@RequestBody ExecInterruptRequest request) {
|
||||
Long logId = Valid.notNull(request.getLogId());
|
||||
Long logId = Assert.notNull(request.getLogId());
|
||||
execLogService.interruptExec(logId, SOURCE);
|
||||
return true;
|
||||
}
|
||||
@@ -191,7 +191,7 @@ public class ExecJobLogController {
|
||||
@Operation(summary = "中断计划任务主机命令")
|
||||
@PreAuthorize("@ss.hasPermission('exec:exec-job-log:interrupt')")
|
||||
public Boolean interruptHostExecCommand(@RequestBody ExecInterruptRequest request) {
|
||||
Long hostLogId = Valid.notNull(request.getHostLogId());
|
||||
Long hostLogId = Assert.notNull(request.getHostLogId());
|
||||
execLogService.interruptHostExec(hostLogId, SOURCE);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -22,11 +22,9 @@
|
||||
*/
|
||||
package org.dromara.visor.module.exec.define;
|
||||
|
||||
import cn.orionsec.kit.lang.define.thread.ExecutorBuilder;
|
||||
import org.dromara.visor.common.constant.Const;
|
||||
import org.dromara.visor.framework.executor.core.utils.ExecutorUtils;
|
||||
|
||||
import java.util.concurrent.SynchronousQueue;
|
||||
import java.util.concurrent.ThreadPoolExecutor;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
/**
|
||||
* 执行线程池
|
||||
@@ -40,73 +38,31 @@ public interface ExecThreadPools {
|
||||
/**
|
||||
* 超时检查线程池
|
||||
*/
|
||||
ThreadPoolExecutor TIMEOUT_CHECK = ExecutorBuilder.create()
|
||||
.namedThreadFactory("timeout-check-")
|
||||
.corePoolSize(1)
|
||||
.maxPoolSize(Integer.MAX_VALUE)
|
||||
.keepAliveTime(Const.MS_S_60)
|
||||
.workQueue(new SynchronousQueue<>())
|
||||
.allowCoreThreadTimeout(true)
|
||||
.build();
|
||||
Executor TIMEOUT_CHECK = ExecutorUtils.getExecutor("execTimeoutCheckExecutor");
|
||||
|
||||
/**
|
||||
* 批量执行任务线程池
|
||||
*/
|
||||
ThreadPoolExecutor EXEC_TASK = ExecutorBuilder.create()
|
||||
.namedThreadFactory("exec-task-")
|
||||
.corePoolSize(1)
|
||||
.maxPoolSize(Integer.MAX_VALUE)
|
||||
.keepAliveTime(Const.MS_S_60)
|
||||
.workQueue(new SynchronousQueue<>())
|
||||
.allowCoreThreadTimeout(true)
|
||||
.build();
|
||||
Executor EXEC_TASK = ExecutorUtils.getExecutor("execTaskExecutor");
|
||||
|
||||
/**
|
||||
* 批量执行主机命令线程池
|
||||
*/
|
||||
ThreadPoolExecutor EXEC_HOST = ExecutorBuilder.create()
|
||||
.namedThreadFactory("exec-host-")
|
||||
.corePoolSize(1)
|
||||
.maxPoolSize(Integer.MAX_VALUE)
|
||||
.keepAliveTime(Const.MS_S_60)
|
||||
.workQueue(new SynchronousQueue<>())
|
||||
.allowCoreThreadTimeout(true)
|
||||
.build();
|
||||
Executor EXEC_HOST = ExecutorUtils.getExecutor("execHostCommandExecutor");
|
||||
|
||||
/**
|
||||
* 批量执行日志查看线程池
|
||||
*/
|
||||
ThreadPoolExecutor EXEC_LOG = ExecutorBuilder.create()
|
||||
.namedThreadFactory("exec-log-")
|
||||
.corePoolSize(1)
|
||||
.maxPoolSize(Integer.MAX_VALUE)
|
||||
.keepAliveTime(Const.MS_S_60)
|
||||
.workQueue(new SynchronousQueue<>())
|
||||
.allowCoreThreadTimeout(true)
|
||||
.build();
|
||||
Executor EXEC_LOG = ExecutorUtils.getExecutor("execLogViewExecutor");
|
||||
|
||||
/**
|
||||
* 批量上传任务线程池
|
||||
*/
|
||||
ThreadPoolExecutor UPLOAD_TASK = ExecutorBuilder.create()
|
||||
.namedThreadFactory("upload-task-")
|
||||
.corePoolSize(1)
|
||||
.maxPoolSize(Integer.MAX_VALUE)
|
||||
.keepAliveTime(Const.MS_S_60)
|
||||
.workQueue(new SynchronousQueue<>())
|
||||
.allowCoreThreadTimeout(true)
|
||||
.build();
|
||||
Executor UPLOAD_TASK = ExecutorUtils.getExecutor("uploadTaskExecutor");
|
||||
|
||||
/**
|
||||
* 批量上传主机线程池
|
||||
*/
|
||||
ThreadPoolExecutor UPLOAD_HOST = ExecutorBuilder.create()
|
||||
.namedThreadFactory("upload-host-")
|
||||
.corePoolSize(1)
|
||||
.maxPoolSize(Integer.MAX_VALUE)
|
||||
.keepAliveTime(Const.MS_S_60)
|
||||
.workQueue(new SynchronousQueue<>())
|
||||
.allowCoreThreadTimeout(true)
|
||||
.build();
|
||||
Executor UPLOAD_HOST = ExecutorUtils.getExecutor("uploadHostExecutor");
|
||||
|
||||
}
|
||||
|
||||
@@ -47,8 +47,8 @@ import org.dromara.visor.common.enums.EndpointDefine;
|
||||
import org.dromara.visor.common.file.FileClient;
|
||||
import org.dromara.visor.common.session.config.SshConnectConfig;
|
||||
import org.dromara.visor.common.session.ssh.SessionStores;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.common.utils.PathUtils;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.module.asset.api.HostConnectApi;
|
||||
import org.dromara.visor.module.asset.enums.HostOsTypeEnum;
|
||||
import org.dromara.visor.module.exec.dao.ExecHostLogDAO;
|
||||
@@ -161,10 +161,10 @@ public abstract class BaseExecCommandHandler implements IExecCommandHandler {
|
||||
try {
|
||||
// 查询任务
|
||||
this.execHostLog = execHostLogDAO.selectById(id);
|
||||
Valid.notNull(this.execHostLog, ErrorMessage.TASK_ABSENT);
|
||||
Assert.notNull(this.execHostLog, ErrorMessage.TASK_ABSENT);
|
||||
// 检查任务状态
|
||||
this.status = ExecHostStatusEnum.of(execHostLog.getStatus());
|
||||
Valid.eq(this.status, ExecHostStatusEnum.WAITING, ErrorMessage.TASK_ABSENT, ErrorMessage.ILLEGAL_STATUS);
|
||||
Assert.eq(this.status, ExecHostStatusEnum.WAITING, ErrorMessage.TASK_ABSENT, ErrorMessage.ILLEGAL_STATUS);
|
||||
// 获取主机会话
|
||||
this.connectConfig = hostConnectApi.getSshConnectConfig(execHostLog.getHostId(), execLog.getUserId());
|
||||
// 设置日志路径
|
||||
|
||||
@@ -29,7 +29,6 @@ import cn.orionsec.kit.lang.support.timeout.TimeoutEndpoint;
|
||||
import cn.orionsec.kit.lang.utils.Booleans;
|
||||
import cn.orionsec.kit.lang.utils.Strings;
|
||||
import cn.orionsec.kit.lang.utils.Threads;
|
||||
import cn.orionsec.kit.lang.utils.Valid;
|
||||
import cn.orionsec.kit.lang.utils.collect.Lists;
|
||||
import cn.orionsec.kit.lang.utils.io.Streams;
|
||||
import cn.orionsec.kit.lang.utils.time.Dates;
|
||||
@@ -39,6 +38,7 @@ import lombok.Getter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.visor.common.constant.ErrorMessage;
|
||||
import org.dromara.visor.common.constant.ExtraFieldConst;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.module.common.config.AppLogConfig;
|
||||
import org.dromara.visor.module.exec.dao.ExecLogDAO;
|
||||
import org.dromara.visor.module.exec.define.ExecThreadPools;
|
||||
@@ -149,8 +149,8 @@ public class ExecTaskHandler implements IExecTaskHandler {
|
||||
try {
|
||||
// 查询任务
|
||||
this.execLog = execLogDAO.selectById(id);
|
||||
Valid.notNull(execLog, ErrorMessage.TASK_ABSENT);
|
||||
Valid.eq(execLog.getStatus(), ExecStatusEnum.WAITING.name(), ErrorMessage.ILLEGAL_STATUS);
|
||||
Assert.notNull(execLog, ErrorMessage.TASK_ABSENT);
|
||||
Assert.eq(execLog.getStatus(), ExecStatusEnum.WAITING.name(), ErrorMessage.ILLEGAL_STATUS);
|
||||
// 获取内置变量
|
||||
this.builtParams = this.getBaseBuiltinParams();
|
||||
return true;
|
||||
|
||||
@@ -39,7 +39,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.visor.common.constant.Const;
|
||||
import org.dromara.visor.common.constant.ErrorMessage;
|
||||
import org.dromara.visor.common.file.FileClient;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.framework.websocket.core.utils.WebSockets;
|
||||
import org.dromara.visor.module.common.config.AppLogConfig;
|
||||
import org.dromara.visor.module.exec.dao.ExecHostLogDAO;
|
||||
@@ -128,12 +128,12 @@ public class ExecLogTracker implements IExecLogTracker {
|
||||
private void initData() {
|
||||
// 读取数据
|
||||
this.execHostLog = execHostLogDAO.selectByIdAndLogId(execHostId, execId);
|
||||
Valid.notNull(execHostLog, ErrorMessage.DATA_ABSENT);
|
||||
Assert.notNull(execHostLog, ErrorMessage.DATA_ABSENT);
|
||||
// 检查任务状态
|
||||
Valid.neq(execHostLog.getStatus(), ExecHostStatusEnum.WAITING.name(), ErrorMessage.ILLEGAL_STATUS);
|
||||
Assert.neq(execHostLog.getStatus(), ExecHostStatusEnum.WAITING.name(), ErrorMessage.ILLEGAL_STATUS);
|
||||
// 获取文件路径
|
||||
this.absolutePath = localFileClient.getAbsolutePath(execHostLog.getLogPath());
|
||||
Valid.isTrue(Files1.isFile(absolutePath), ErrorMessage.FILE_ABSENT);
|
||||
Assert.isTrue(Files1.isFile(absolutePath), ErrorMessage.FILE_ABSENT);
|
||||
// 获取编码集
|
||||
this.charset = Charsets.of(this.getCharset());
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.visor.common.constant.Const;
|
||||
import org.dromara.visor.common.constant.ErrorMessage;
|
||||
import org.dromara.visor.common.security.LoginUser;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.framework.biz.operator.log.core.utils.OperatorLogs;
|
||||
import org.dromara.visor.framework.security.core.utils.SecurityUtils;
|
||||
import org.dromara.visor.module.asset.api.AssetAuthorizedDataApi;
|
||||
@@ -97,7 +97,7 @@ public class ExecCommandServiceImpl implements ExecCommandService {
|
||||
List<Long> authorizedHostIdList = assetAuthorizedDataApi.getUserAuthorizedEnabledHostId(userId, HostTypeEnum.SSH);
|
||||
hostIdList.removeIf(s -> !authorizedHostIdList.contains(s));
|
||||
log.info("ExecService.startExecCommand host hostList: {}", hostIdList);
|
||||
Valid.notEmpty(hostIdList, ErrorMessage.CHECK_AUTHORIZED_HOST);
|
||||
Assert.notEmpty(hostIdList, ErrorMessage.CHECK_AUTHORIZED_HOST);
|
||||
// 创建命令
|
||||
ExecCommandExecDTO execRequest = ExecConvert.MAPPER.to(request);
|
||||
execRequest.setUserId(userId);
|
||||
@@ -113,10 +113,10 @@ public class ExecCommandServiceImpl implements ExecCommandService {
|
||||
log.info("ExecService.reExecCommand start logId: {}", logId);
|
||||
// 获取执行记录
|
||||
ExecLogDO execLog = execLogDAO.selectByIdSource(logId, ExecSourceEnum.BATCH.name());
|
||||
Valid.notNull(execLog, ErrorMessage.DATA_ABSENT);
|
||||
Assert.notNull(execLog, ErrorMessage.DATA_ABSENT);
|
||||
// 获取执行主机
|
||||
List<ExecHostLogDO> hostLogs = execHostLogDAO.selectByLogId(logId);
|
||||
Valid.notEmpty(hostLogs, ErrorMessage.DATA_ABSENT);
|
||||
Assert.notEmpty(hostLogs, ErrorMessage.DATA_ABSENT);
|
||||
List<Long> hostIdList = hostLogs.stream()
|
||||
.map(ExecHostLogDO::getHostId)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
@@ -26,7 +26,7 @@ import cn.orionsec.kit.lang.utils.collect.Lists;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.visor.common.constant.ErrorMessage;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.framework.biz.operator.log.core.utils.OperatorLogs;
|
||||
import org.dromara.visor.module.exec.convert.ExecHostLogConvert;
|
||||
import org.dromara.visor.module.exec.dao.ExecHostLogDAO;
|
||||
@@ -63,7 +63,7 @@ public class ExecHostLogServiceImpl implements ExecHostLogService {
|
||||
@Override
|
||||
public ExecHostLogVO getExecHostLog(Long id) {
|
||||
ExecHostLogDO record = execHostLogDAO.selectById(id);
|
||||
Valid.notNull(record, ErrorMessage.DATA_ABSENT);
|
||||
Assert.notNull(record, ErrorMessage.DATA_ABSENT);
|
||||
return ExecHostLogConvert.MAPPER.to(record);
|
||||
}
|
||||
|
||||
@@ -100,7 +100,7 @@ public class ExecHostLogServiceImpl implements ExecHostLogService {
|
||||
log.info("ExecHostLogService-deleteExecHostLogById id: {}", id);
|
||||
// 检查数据是否存在
|
||||
ExecHostLogDO record = execHostLogDAO.selectById(id);
|
||||
Valid.notNull(record, ErrorMessage.DATA_ABSENT);
|
||||
Assert.notNull(record, ErrorMessage.DATA_ABSENT);
|
||||
// 中断
|
||||
Optional.ofNullable(record.getLogId())
|
||||
.map(execTaskManager::getTask)
|
||||
|
||||
@@ -34,7 +34,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.visor.common.constant.Const;
|
||||
import org.dromara.visor.common.constant.ErrorMessage;
|
||||
import org.dromara.visor.common.security.LoginUser;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.framework.biz.operator.log.core.utils.OperatorLogs;
|
||||
import org.dromara.visor.framework.job.core.utils.QuartzUtils;
|
||||
import org.dromara.visor.framework.security.core.utils.SecurityUtils;
|
||||
@@ -134,13 +134,13 @@ public class ExecJobServiceImpl implements ExecJobService {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Integer updateExecJobById(ExecJobUpdateRequest request) {
|
||||
Long id = Valid.notNull(request.getId(), ErrorMessage.ID_MISSING);
|
||||
Long id = Assert.notNull(request.getId(), ErrorMessage.ID_MISSING);
|
||||
log.info("ExecJobService-updateExecJobById id: {}, request: {}", id, JSON.toJSONString(request));
|
||||
// 验证表达式是否正确
|
||||
Cron.of(request.getExpression());
|
||||
// 查询
|
||||
ExecJobDO record = execJobDAO.selectById(id);
|
||||
Valid.notNull(record, ErrorMessage.DATA_ABSENT);
|
||||
Assert.notNull(record, ErrorMessage.DATA_ABSENT);
|
||||
// 转换
|
||||
ExecJobDO updateRecord = ExecJobConvert.MAPPER.to(request);
|
||||
// 查询数据是否冲突
|
||||
@@ -167,7 +167,7 @@ public class ExecJobServiceImpl implements ExecJobService {
|
||||
log.info("ExecJobService-updateExecJobStatus id: {}, status: {}", id, status);
|
||||
// 查询任务
|
||||
ExecJobDO record = execJobDAO.selectById(id);
|
||||
Valid.notNull(record, ErrorMessage.DATA_ABSENT);
|
||||
Assert.notNull(record, ErrorMessage.DATA_ABSENT);
|
||||
// 更新状态
|
||||
ExecJobDO update = new ExecJobDO();
|
||||
update.setId(id);
|
||||
@@ -189,10 +189,10 @@ public class ExecJobServiceImpl implements ExecJobService {
|
||||
log.info("ExecJobService-updateExecJobExecUser id: {}, userId: {}", id, userId);
|
||||
// 查询任务
|
||||
ExecJobDO job = execJobDAO.selectById(id);
|
||||
Valid.notNull(job, ErrorMessage.DATA_ABSENT);
|
||||
Assert.notNull(job, ErrorMessage.DATA_ABSENT);
|
||||
// 查询用户
|
||||
String username = systemUserApi.getUsernameById(userId);
|
||||
Valid.notNull(username, ErrorMessage.USER_ABSENT);
|
||||
Assert.notNull(username, ErrorMessage.USER_ABSENT);
|
||||
// 修改任务
|
||||
ExecJobDO update = new ExecJobDO();
|
||||
update.setId(id);
|
||||
@@ -210,7 +210,7 @@ public class ExecJobServiceImpl implements ExecJobService {
|
||||
public ExecJobVO getExecJobById(Long id) {
|
||||
// 查询任务
|
||||
ExecJobDO record = execJobDAO.selectById(id);
|
||||
Valid.notNull(record, ErrorMessage.DATA_ABSENT);
|
||||
Assert.notNull(record, ErrorMessage.DATA_ABSENT);
|
||||
// 转换
|
||||
ExecJobVO vo = ExecJobConvert.MAPPER.to(record);
|
||||
// 查询任务主机
|
||||
@@ -309,7 +309,7 @@ public class ExecJobServiceImpl implements ExecJobService {
|
||||
log.info("ExecJobService-deleteExecJobByIdList idList: {}", idList);
|
||||
// 检查数据是否存在
|
||||
List<ExecJobDO> jobList = execJobDAO.selectBatchIds(idList);
|
||||
Valid.notEmpty(jobList, ErrorMessage.DATA_ABSENT);
|
||||
Assert.notEmpty(jobList, ErrorMessage.DATA_ABSENT);
|
||||
// 删除任务
|
||||
int effect = execJobDAO.deleteBatchIds(idList);
|
||||
// 删除任务主机
|
||||
@@ -332,7 +332,7 @@ public class ExecJobServiceImpl implements ExecJobService {
|
||||
log.info("ExecJobService.manualTriggerExecJob start id: {}", id);
|
||||
// 查询任务
|
||||
ExecJobDO job = execJobDAO.selectById(id);
|
||||
Valid.notNull(job, ErrorMessage.DATA_ABSENT);
|
||||
Assert.notNull(job, ErrorMessage.DATA_ABSENT);
|
||||
// 触发请求
|
||||
ExecJobTriggerRequest request = new ExecJobTriggerRequest();
|
||||
request.setId(id);
|
||||
@@ -408,7 +408,7 @@ public class ExecJobServiceImpl implements ExecJobService {
|
||||
.eq(ExecJobDO::getName, domain.getName());
|
||||
// 检查是否存在
|
||||
boolean present = execJobDAO.of(wrapper).present();
|
||||
Valid.isFalse(present, ErrorMessage.DATA_PRESENT);
|
||||
Assert.isFalse(present, ErrorMessage.DATA_PRESENT);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -439,7 +439,7 @@ public class ExecJobServiceImpl implements ExecJobService {
|
||||
// 查询有权限的主机
|
||||
List<Long> authorizedHostIdList = assetAuthorizedDataApi.getUserAuthorizedEnabledHostId(SecurityUtils.getLoginUserId(), HostTypeEnum.SSH);
|
||||
for (Long hostId : hostIdList) {
|
||||
Valid.isTrue(authorizedHostIdList.contains(hostId), Strings.format(ErrorMessage.PLEASE_CHECK_HOST_SSH, hostId));
|
||||
Assert.isTrue(authorizedHostIdList.contains(hostId), Strings.format(ErrorMessage.PLEASE_CHECK_HOST_SSH, hostId));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -40,8 +40,8 @@ import org.dromara.visor.common.constant.ErrorMessage;
|
||||
import org.dromara.visor.common.constant.FileConst;
|
||||
import org.dromara.visor.common.enums.EndpointDefine;
|
||||
import org.dromara.visor.common.file.FileClient;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.common.utils.SqlUtils;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.framework.biz.operator.log.core.utils.OperatorLogs;
|
||||
import org.dromara.visor.framework.redis.core.utils.RedisStrings;
|
||||
import org.dromara.visor.framework.security.core.utils.SecurityUtils;
|
||||
@@ -122,7 +122,7 @@ public class ExecLogServiceImpl implements ExecLogService {
|
||||
public ExecLogVO getExecLog(Long id, String source) {
|
||||
// 查询执行日志
|
||||
ExecLogDO row = execLogDAO.selectByIdSource(id, source);
|
||||
Valid.notNull(row, ErrorMessage.LOG_ABSENT);
|
||||
Assert.notNull(row, ErrorMessage.LOG_ABSENT);
|
||||
// 查询执行主机
|
||||
List<ExecHostLogDO> hosts = execHostLogDAO.selectByLogId(id);
|
||||
// 返回
|
||||
@@ -210,7 +210,7 @@ public class ExecLogServiceImpl implements ExecLogService {
|
||||
.then()
|
||||
.count()
|
||||
.intValue();
|
||||
Valid.isTrue(idList.size() == count, ErrorMessage.DATA_MODIFIED);
|
||||
Assert.isTrue(idList.size() == count, ErrorMessage.DATA_MODIFIED);
|
||||
// 删除
|
||||
return this.deleteExecLogByIdList(idList);
|
||||
}
|
||||
@@ -269,7 +269,7 @@ public class ExecLogServiceImpl implements ExecLogService {
|
||||
log.info("ExecLogService.interruptExec start logId: {}, source: {}", logId, source);
|
||||
// 获取执行记录
|
||||
ExecLogDO execLog = execLogDAO.selectByIdSource(logId, source);
|
||||
Valid.notNull(execLog, ErrorMessage.DATA_ABSENT);
|
||||
Assert.notNull(execLog, ErrorMessage.DATA_ABSENT);
|
||||
// 检查状态
|
||||
if (!ExecStatusEnum.of(execLog.getStatus()).isCloseable()) {
|
||||
return;
|
||||
@@ -306,10 +306,10 @@ public class ExecLogServiceImpl implements ExecLogService {
|
||||
log.info("ExecLogService.interruptHostExec start hostLogId: {}, source: {}", hostLogId, source);
|
||||
// 获取执行记录
|
||||
ExecHostLogDO hostLog = execHostLogDAO.selectById(hostLogId);
|
||||
Valid.notNull(hostLog, ErrorMessage.DATA_ABSENT);
|
||||
Assert.notNull(hostLog, ErrorMessage.DATA_ABSENT);
|
||||
Long logId = hostLog.getLogId();
|
||||
ExecLogDO execLog = execLogDAO.selectByIdSource(logId, source);
|
||||
Valid.notNull(execLog, ErrorMessage.DATA_ABSENT);
|
||||
Assert.notNull(execLog, ErrorMessage.DATA_ABSENT);
|
||||
// 添加日志参数
|
||||
OperatorLogs.add(OperatorLogs.LOG_ID, logId);
|
||||
OperatorLogs.add(OperatorLogs.HOST_NAME, hostLog.getHostName());
|
||||
@@ -394,11 +394,11 @@ public class ExecLogServiceImpl implements ExecLogService {
|
||||
try {
|
||||
// 获取主机执行日志
|
||||
ExecHostLogDO hostLog = execHostLogDAO.selectById(id);
|
||||
Valid.notNull(hostLog, ErrorMessage.LOG_ABSENT);
|
||||
Assert.notNull(hostLog, ErrorMessage.LOG_ABSENT);
|
||||
String logPath = hostLog.getLogPath();
|
||||
Valid.notNull(logPath, ErrorMessage.LOG_ABSENT);
|
||||
Assert.notNull(logPath, ErrorMessage.LOG_ABSENT);
|
||||
ExecLogDO execLog = execLogDAO.selectByIdSource(hostLog.getLogId(), source);
|
||||
Valid.notNull(execLog, ErrorMessage.LOG_ABSENT);
|
||||
Assert.notNull(execLog, ErrorMessage.LOG_ABSENT);
|
||||
// 设置日志参数
|
||||
OperatorLogs.add(OperatorLogs.LOG_ID, hostLog.getLogId());
|
||||
OperatorLogs.add(OperatorLogs.HOST_ID, hostLog.getHostId());
|
||||
|
||||
@@ -29,7 +29,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.visor.common.constant.Const;
|
||||
import org.dromara.visor.common.constant.ErrorMessage;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.framework.biz.operator.log.core.utils.OperatorLogs;
|
||||
import org.dromara.visor.framework.security.core.utils.SecurityUtils;
|
||||
import org.dromara.visor.module.asset.api.AssetAuthorizedDataApi;
|
||||
@@ -89,11 +89,11 @@ public class ExecTemplateServiceImpl implements ExecTemplateService {
|
||||
|
||||
@Override
|
||||
public Integer updateExecTemplateById(ExecTemplateUpdateRequest request) {
|
||||
Long id = Valid.notNull(request.getId(), ErrorMessage.ID_MISSING);
|
||||
Long id = Assert.notNull(request.getId(), ErrorMessage.ID_MISSING);
|
||||
log.info("ExecTemplateService-updateExecTemplateById id: {}, request: {}", id, JSON.toJSONString(request));
|
||||
// 查询
|
||||
ExecTemplateDO record = execTemplateDAO.selectById(id);
|
||||
Valid.notNull(record, ErrorMessage.DATA_ABSENT);
|
||||
Assert.notNull(record, ErrorMessage.DATA_ABSENT);
|
||||
// 转换
|
||||
ExecTemplateDO updateRecord = ExecTemplateConvert.MAPPER.to(request);
|
||||
// 查询数据是否冲突
|
||||
@@ -110,7 +110,7 @@ public class ExecTemplateServiceImpl implements ExecTemplateService {
|
||||
public ExecTemplateVO getExecTemplateById(Long id) {
|
||||
// 查询模板
|
||||
ExecTemplateDO record = execTemplateDAO.selectById(id);
|
||||
Valid.notNull(record, ErrorMessage.DATA_ABSENT);
|
||||
Assert.notNull(record, ErrorMessage.DATA_ABSENT);
|
||||
// 转换
|
||||
ExecTemplateVO template = ExecTemplateConvert.MAPPER.to(record);
|
||||
// 查询模板主机
|
||||
@@ -123,7 +123,7 @@ public class ExecTemplateServiceImpl implements ExecTemplateService {
|
||||
public ExecTemplateVO getExecTemplateWithAuthorized(Long id) {
|
||||
// 查询模板
|
||||
ExecTemplateDO record = execTemplateDAO.selectById(id);
|
||||
Valid.notNull(record, ErrorMessage.DATA_ABSENT);
|
||||
Assert.notNull(record, ErrorMessage.DATA_ABSENT);
|
||||
// 转换
|
||||
ExecTemplateVO template = ExecTemplateConvert.MAPPER.to(record);
|
||||
// 查询模板主机
|
||||
@@ -172,7 +172,7 @@ public class ExecTemplateServiceImpl implements ExecTemplateService {
|
||||
log.info("ExecTemplateService-deleteExecTemplateByIdList idList: {}", idList);
|
||||
// 检查数据是否存在
|
||||
List<ExecTemplateDO> recordList = execTemplateDAO.selectBatchIds(idList);
|
||||
Valid.notEmpty(recordList, ErrorMessage.DATA_ABSENT);
|
||||
Assert.notEmpty(recordList, ErrorMessage.DATA_ABSENT);
|
||||
// 设置日志参数
|
||||
String name = recordList.stream()
|
||||
.map(ExecTemplateDO::getName)
|
||||
@@ -208,7 +208,7 @@ public class ExecTemplateServiceImpl implements ExecTemplateService {
|
||||
.eq(ExecTemplateDO::getName, domain.getName());
|
||||
// 检查是否存在
|
||||
boolean present = execTemplateDAO.of(wrapper).present();
|
||||
Valid.isFalse(present, ErrorMessage.DATA_PRESENT);
|
||||
Assert.isFalse(present, ErrorMessage.DATA_PRESENT);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -170,7 +170,7 @@ public class UploadTaskServiceImpl implements UploadTaskService {
|
||||
public UploadTaskVO getUploadTask(Long id) {
|
||||
// 查询任务
|
||||
UploadTaskDO record = uploadTaskDAO.selectById(id);
|
||||
Valid.notNull(record, ErrorMessage.DATA_ABSENT);
|
||||
Assert.notNull(record, ErrorMessage.DATA_ABSENT);
|
||||
// 查询任务文件
|
||||
List<UploadTaskFileVO> files = uploadTaskFileService.getFileByTaskId(id);
|
||||
// 返回
|
||||
@@ -291,9 +291,9 @@ public class UploadTaskServiceImpl implements UploadTaskService {
|
||||
public void startUploadTask(Long id) {
|
||||
// 查询任务
|
||||
UploadTaskDO record = uploadTaskDAO.selectById(id);
|
||||
Valid.notNull(record, ErrorMessage.TASK_ABSENT);
|
||||
Assert.notNull(record, ErrorMessage.TASK_ABSENT);
|
||||
// 检查任务状态
|
||||
Valid.eq(record.getStatus(), UploadTaskStatusEnum.WAITING.name(), ErrorMessage.ILLEGAL_STATUS);
|
||||
Assert.eq(record.getStatus(), UploadTaskStatusEnum.WAITING.name(), ErrorMessage.ILLEGAL_STATUS);
|
||||
// 检查文件完整性
|
||||
this.checkFileCompleteness(id);
|
||||
// 执行任务
|
||||
@@ -304,9 +304,9 @@ public class UploadTaskServiceImpl implements UploadTaskService {
|
||||
public void cancelUploadTask(UploadTaskRequest request) {
|
||||
// 查询任务
|
||||
UploadTaskDO record = uploadTaskDAO.selectById(request.getId());
|
||||
Valid.notNull(record, ErrorMessage.TASK_ABSENT);
|
||||
Assert.notNull(record, ErrorMessage.TASK_ABSENT);
|
||||
// 检查状态
|
||||
Valid.isTrue(UploadTaskStatusEnum.of(record.getStatus()).isCancelable(), ErrorMessage.ILLEGAL_STATUS);
|
||||
Assert.isTrue(UploadTaskStatusEnum.of(record.getStatus()).isCancelable(), ErrorMessage.ILLEGAL_STATUS);
|
||||
// 取消任务
|
||||
if (Booleans.isTrue(request.getFailed())) {
|
||||
this.checkCancelTask(Lists.singleton(record), UploadTaskStatusEnum.FAILED);
|
||||
@@ -356,7 +356,7 @@ public class UploadTaskServiceImpl implements UploadTaskService {
|
||||
// 查询有权限的主机
|
||||
List<Long> authorizedHostIdList = assetAuthorizedDataApi.getUserAuthorizedEnabledHostId(SecurityUtils.getLoginUserId(), HostTypeEnum.SSH);
|
||||
for (Long hostId : hostIdList) {
|
||||
Valid.isTrue(authorizedHostIdList.contains(hostId), Strings.format(ErrorMessage.PLEASE_CHECK_HOST_SSH, hostId));
|
||||
Assert.isTrue(authorizedHostIdList.contains(hostId), Strings.format(ErrorMessage.PLEASE_CHECK_HOST_SSH, hostId));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -370,10 +370,10 @@ public class UploadTaskServiceImpl implements UploadTaskService {
|
||||
// 查询主机信息
|
||||
List<HostDTO> hosts = hostApi.selectByIdList(hostIdList);
|
||||
// 检查主机数量
|
||||
Valid.eq(hosts.size(), hostIdList.size(), ErrorMessage.HOST_ABSENT);
|
||||
Assert.eq(hosts.size(), hostIdList.size(), ErrorMessage.HOST_ABSENT);
|
||||
// 检查主机状态
|
||||
for (HostDTO host : hosts) {
|
||||
Valid.eq(HostStatusEnum.ENABLED.name(), host.getStatus(), ErrorMessage.HOST_NOT_ENABLED, host.getName());
|
||||
Assert.eq(HostStatusEnum.ENABLED.name(), host.getStatus(), ErrorMessage.HOST_NOT_ENABLED, host.getName());
|
||||
}
|
||||
return hosts;
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ package org.dromara.visor.module.infra.api.impl;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.visor.common.constant.ErrorMessage;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.module.infra.api.AuthenticationApi;
|
||||
import org.dromara.visor.module.infra.entity.domain.SystemUserDO;
|
||||
import org.dromara.visor.module.infra.entity.dto.user.SystemUserAuthDTO;
|
||||
@@ -59,7 +59,7 @@ public class AuthenticationApiImpl implements AuthenticationApi {
|
||||
// 检查用户密码
|
||||
boolean passRight = authenticationService.checkUserPassword(user, password, addFailedCount);
|
||||
result.setPassRight(passRight);
|
||||
Valid.isTrue(passRight, ErrorMessage.USERNAME_PASSWORD_ERROR);
|
||||
Assert.isTrue(passRight, ErrorMessage.USERNAME_PASSWORD_ERROR);
|
||||
// 检查用户状态
|
||||
authenticationService.checkUserStatus(user);
|
||||
result.setAuthed(true);
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
package org.dromara.visor.module.infra.api.impl;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.module.infra.api.DataExtraApi;
|
||||
import org.dromara.visor.module.infra.convert.DataExtraProviderConvert;
|
||||
import org.dromara.visor.module.infra.dao.DataExtraDAO;
|
||||
@@ -63,7 +63,7 @@ public class DataExtraApiImpl implements DataExtraApi {
|
||||
|
||||
@Override
|
||||
public Integer setExtraItem(DataExtraSetDTO dto, DataExtraTypeEnum type) {
|
||||
Valid.valid(dto);
|
||||
Assert.valid(dto);
|
||||
// 更新
|
||||
DataExtraSetRequest request = DataExtraProviderConvert.MAPPER.to(dto);
|
||||
request.setType(type.name());
|
||||
@@ -72,7 +72,7 @@ public class DataExtraApiImpl implements DataExtraApi {
|
||||
|
||||
@Override
|
||||
public Long addExtraItem(DataExtraSetDTO dto, DataExtraTypeEnum type) {
|
||||
Valid.valid(dto);
|
||||
Assert.valid(dto);
|
||||
// 更新
|
||||
DataExtraSetRequest request = DataExtraProviderConvert.MAPPER.to(dto);
|
||||
request.setType(type.name());
|
||||
@@ -82,7 +82,7 @@ public class DataExtraApiImpl implements DataExtraApi {
|
||||
@Override
|
||||
public void addExtraItems(List<DataExtraSetDTO> rows, DataExtraTypeEnum type) {
|
||||
for (DataExtraSetDTO row : rows) {
|
||||
Valid.valid(row);
|
||||
Assert.valid(row);
|
||||
}
|
||||
List<DataExtraSetRequest> extras = rows.stream()
|
||||
.map(DataExtraProviderConvert.MAPPER::to)
|
||||
@@ -103,7 +103,7 @@ public class DataExtraApiImpl implements DataExtraApi {
|
||||
|
||||
@Override
|
||||
public String getExtraValue(DataExtraQueryDTO dto, DataExtraTypeEnum type) {
|
||||
Valid.allNotNull(dto.getUserId(), dto.getRelId(), dto.getItem());
|
||||
Assert.allNotNull(dto.getUserId(), dto.getRelId(), dto.getItem());
|
||||
// 查询
|
||||
DataExtraQueryRequest request = DataExtraProviderConvert.MAPPER.to(dto);
|
||||
request.setType(type.name());
|
||||
@@ -112,7 +112,7 @@ public class DataExtraApiImpl implements DataExtraApi {
|
||||
|
||||
@Override
|
||||
public Map<Long, String> getExtraItemValues(DataExtraQueryDTO dto, DataExtraTypeEnum type) {
|
||||
Valid.allNotNull(dto.getUserId(), dto.getRelIdList(), dto.getItem());
|
||||
Assert.allNotNull(dto.getUserId(), dto.getRelIdList(), dto.getItem());
|
||||
// 查询
|
||||
DataExtraQueryRequest request = DataExtraProviderConvert.MAPPER.to(dto);
|
||||
request.setType(type.name());
|
||||
@@ -121,13 +121,13 @@ public class DataExtraApiImpl implements DataExtraApi {
|
||||
|
||||
@Override
|
||||
public String getExtraItemValueByCache(Long userId, DataExtraTypeEnum type, String item, Long relId) {
|
||||
Valid.allNotNull(userId, type, item, relId);
|
||||
Assert.allNotNull(userId, type, item, relId);
|
||||
return dataExtraService.getExtraItemValueByCache(userId, type.name(), item, relId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<Long, String> getExtraItemValuesByCache(Long userId, DataExtraTypeEnum type, String item) {
|
||||
Valid.allNotNull(userId, type, item);
|
||||
Assert.allNotNull(userId, type, item);
|
||||
return dataExtraService.getExtraItemValuesByCache(userId, type.name(), item);
|
||||
}
|
||||
|
||||
@@ -138,14 +138,14 @@ public class DataExtraApiImpl implements DataExtraApi {
|
||||
|
||||
@Override
|
||||
public Future<List<Map<Long, String>>> getExtraItemsValuesByCacheAsync(Long userId, DataExtraTypeEnum type, List<String> items) {
|
||||
Valid.allNotNull(userId, type);
|
||||
Valid.notEmpty(items);
|
||||
Assert.allNotNull(userId, type);
|
||||
Assert.notEmpty(items);
|
||||
return CompletableFuture.completedFuture(dataExtraService.getExtraItemsValuesByCache(userId, type.name(), items));
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataExtraDTO getExtraItem(DataExtraQueryDTO dto, DataExtraTypeEnum type) {
|
||||
Valid.allNotNull(dto.getUserId(), dto.getRelId(), dto.getItem());
|
||||
Assert.allNotNull(dto.getUserId(), dto.getRelId(), dto.getItem());
|
||||
DataExtraQueryRequest request = DataExtraProviderConvert.MAPPER.to(dto);
|
||||
request.setType(type.name());
|
||||
DataExtraDO extraItem = dataExtraService.getExtraItem(request);
|
||||
@@ -174,13 +174,13 @@ public class DataExtraApiImpl implements DataExtraApi {
|
||||
|
||||
@Override
|
||||
public int deleteHostKeyExtra(List<Long> keyIdList) {
|
||||
Valid.notEmpty(keyIdList);
|
||||
Assert.notEmpty(keyIdList);
|
||||
return dataExtraDAO.deleteHostKey(keyIdList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int deleteHostIdentityExtra(List<Long> identityIdList) {
|
||||
Valid.notEmpty(identityIdList);
|
||||
Assert.notEmpty(identityIdList);
|
||||
return dataExtraDAO.deleteHostIdentity(identityIdList);
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ package org.dromara.visor.module.infra.api.impl;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.visor.common.constant.Const;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.module.infra.api.DataGroupApi;
|
||||
import org.dromara.visor.module.infra.convert.DataGroupProviderConvert;
|
||||
import org.dromara.visor.module.infra.dao.DataGroupDAO;
|
||||
@@ -64,7 +64,7 @@ public class DataGroupApiImpl implements DataGroupApi {
|
||||
|
||||
@Override
|
||||
public Long createDataGroup(DataGroupTypeEnum type, DataGroupCreateDTO dto) {
|
||||
Valid.valid(dto);
|
||||
Assert.valid(dto);
|
||||
DataGroupCreateRequest request = DataGroupProviderConvert.MAPPER.toRequest(dto);
|
||||
request.setType(type.name());
|
||||
request.setUserId(Const.SYSTEM_USER_ID);
|
||||
@@ -73,14 +73,14 @@ public class DataGroupApiImpl implements DataGroupApi {
|
||||
|
||||
@Override
|
||||
public Integer renameDataGroup(DataGroupRenameDTO dto) {
|
||||
Valid.valid(dto);
|
||||
Assert.valid(dto);
|
||||
DataGroupRenameRequest request = DataGroupProviderConvert.MAPPER.toRequest(dto);
|
||||
return dataGroupService.renameDataGroup(request);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer moveDataGroup(DataGroupMoveDTO dto) {
|
||||
Valid.valid(dto);
|
||||
Assert.valid(dto);
|
||||
DataGroupMoveRequest request = DataGroupProviderConvert.MAPPER.toRequest(dto);
|
||||
return dataGroupService.moveDataGroup(request);
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ package org.dromara.visor.module.infra.api.impl;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.visor.common.constant.Const;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.module.infra.api.DataGroupRelApi;
|
||||
import org.dromara.visor.module.infra.entity.domain.DataGroupRelDO;
|
||||
import org.dromara.visor.module.infra.entity.dto.DataGroupRelCacheDTO;
|
||||
@@ -58,26 +58,26 @@ public class DataGroupRelApiImpl implements DataGroupRelApi {
|
||||
|
||||
@Override
|
||||
public void updateGroupRel(Long groupId, List<Long> relIdList) {
|
||||
Valid.notNull(groupId);
|
||||
Assert.notNull(groupId);
|
||||
dataGroupRelService.updateGroupRel(groupId, relIdList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateRelGroup(DataGroupTypeEnum type, List<Long> groupIdList, Long relId) {
|
||||
Valid.notNull(relId);
|
||||
Assert.notNull(relId);
|
||||
dataGroupRelService.updateRelGroup(type.name(), Const.SYSTEM_USER_ID, groupIdList, relId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addGroupRel(DataGroupTypeEnum type, Long groupId, Long relId) {
|
||||
Valid.notNull(groupId);
|
||||
Valid.notNull(relId);
|
||||
Assert.notNull(groupId);
|
||||
Assert.notNull(relId);
|
||||
dataGroupRelService.addGroupRel(type.name(), groupId, Const.SYSTEM_USER_ID, relId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addGroupRel(DataGroupTypeEnum type, Map<Long, List<Long>> groupRelListMap) {
|
||||
Valid.notEmpty(groupRelListMap);
|
||||
Assert.notEmpty(groupRelListMap);
|
||||
dataGroupRelService.addGroupRel(type.name(), Const.SYSTEM_USER_ID, groupRelListMap);
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
package org.dromara.visor.module.infra.api.impl;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.module.infra.api.DataGroupUserApi;
|
||||
import org.dromara.visor.module.infra.convert.DataGroupProviderConvert;
|
||||
import org.dromara.visor.module.infra.entity.dto.DataGroupCacheDTO;
|
||||
@@ -53,7 +53,7 @@ public class DataGroupUserApiImpl implements DataGroupUserApi {
|
||||
|
||||
@Override
|
||||
public Long createDataGroup(DataGroupTypeEnum type, Long userId, DataGroupCreateDTO dto) {
|
||||
Valid.valid(dto);
|
||||
Assert.valid(dto);
|
||||
DataGroupCreateRequest request = DataGroupProviderConvert.MAPPER.toRequest(dto);
|
||||
request.setType(type.name());
|
||||
request.setUserId(userId);
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
package org.dromara.visor.module.infra.api.impl;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.module.infra.api.DataGroupUserRelApi;
|
||||
import org.dromara.visor.module.infra.entity.domain.DataGroupRelDO;
|
||||
import org.dromara.visor.module.infra.entity.dto.DataGroupRelCacheDTO;
|
||||
@@ -57,20 +57,20 @@ public class DataGroupUserRelApiImpl implements DataGroupUserRelApi {
|
||||
|
||||
@Override
|
||||
public void updateGroupRel(DataGroupTypeEnum type, Long userId, List<Long> groupIdList, Long relId) {
|
||||
Valid.notNull(relId);
|
||||
Assert.notNull(relId);
|
||||
dataGroupRelService.updateRelGroup(type.name(), userId, groupIdList, relId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addGroupRel(DataGroupTypeEnum type, Long userId, Long groupId, Long relId) {
|
||||
Valid.notNull(groupId);
|
||||
Valid.notNull(relId);
|
||||
Assert.notNull(groupId);
|
||||
Assert.notNull(relId);
|
||||
dataGroupRelService.addGroupRel(type.name(), userId, groupId, relId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addGroupRel(DataGroupTypeEnum type, Long userId, Map<Long, List<Long>> groupRelListMap) {
|
||||
Valid.notEmpty(groupRelListMap);
|
||||
Assert.notEmpty(groupRelListMap);
|
||||
dataGroupRelService.addGroupRel(type.name(), userId, groupRelListMap);
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ package org.dromara.visor.module.infra.api.impl;
|
||||
|
||||
import cn.orionsec.kit.lang.utils.collect.Lists;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.module.infra.api.DataPermissionApi;
|
||||
import org.dromara.visor.module.infra.entity.dto.data.DataPermissionBatchUpdateDTO;
|
||||
import org.dromara.visor.module.infra.entity.dto.data.DataPermissionUpdateDTO;
|
||||
@@ -55,7 +55,7 @@ public class DataPermissionApiImpl implements DataPermissionApi {
|
||||
Long userId = dto.getUserId();
|
||||
Long roleId = dto.getRoleId();
|
||||
// 校验参数
|
||||
Valid.isTrue(userId != null || roleId != null);
|
||||
Assert.isTrue(userId != null || roleId != null);
|
||||
// 修改权限
|
||||
DataPermissionUpdateRequest request = DataPermissionUpdateRequest.builder()
|
||||
.type(type.name())
|
||||
@@ -75,7 +75,7 @@ public class DataPermissionApiImpl implements DataPermissionApi {
|
||||
List<Long> userIdList = dto.getUserIdList();
|
||||
List<Long> roleIdList = dto.getRoleIdList();
|
||||
// 校验参数
|
||||
Valid.isTrue(Lists.isNotEmpty(userIdList) || Lists.isNotEmpty(roleIdList));
|
||||
Assert.isTrue(Lists.isNotEmpty(userIdList) || Lists.isNotEmpty(roleIdList));
|
||||
// 修改权限
|
||||
DataPermissionUpdateRequest request = DataPermissionUpdateRequest.builder()
|
||||
.type(type.name())
|
||||
@@ -88,7 +88,7 @@ public class DataPermissionApiImpl implements DataPermissionApi {
|
||||
|
||||
@Override
|
||||
public boolean hasPermission(DataPermissionTypeEnum type, Long userId, Long relId) {
|
||||
Valid.allNotNull(userId, relId);
|
||||
Assert.allNotNull(userId, relId);
|
||||
return dataPermissionService.hasPermission(type.name(), userId, relId);
|
||||
}
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
*/
|
||||
package org.dromara.visor.module.infra.api.impl;
|
||||
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.module.infra.api.FavoriteApi;
|
||||
import org.dromara.visor.module.infra.dao.FavoriteDAO;
|
||||
import org.dromara.visor.module.infra.entity.request.favorite.FavoriteQueryRequest;
|
||||
@@ -54,7 +54,7 @@ public class FavoriteApiImpl implements FavoriteApi {
|
||||
|
||||
@Override
|
||||
public List<Long> getFavoriteRelIdList(FavoriteTypeEnum type, Long userId) {
|
||||
Valid.allNotNull(type, userId);
|
||||
Assert.allNotNull(type, userId);
|
||||
// 查询
|
||||
FavoriteQueryRequest request = new FavoriteQueryRequest();
|
||||
request.setType(type.name());
|
||||
@@ -65,21 +65,21 @@ public class FavoriteApiImpl implements FavoriteApi {
|
||||
@Override
|
||||
@Async("asyncExecutor")
|
||||
public Future<List<Long>> getFavoriteRelIdListAsync(FavoriteTypeEnum type, Long userId) {
|
||||
Valid.allNotNull(type, userId);
|
||||
Assert.allNotNull(type, userId);
|
||||
// 查询
|
||||
return CompletableFuture.completedFuture(this.getFavoriteRelIdList(type, userId));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteByRelId(FavoriteTypeEnum type, Long relId) {
|
||||
Valid.allNotNull(type, relId);
|
||||
Assert.allNotNull(type, relId);
|
||||
favoriteDAO.deleteFavoriteByRelId(type.name(), relId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteByRelIdList(FavoriteTypeEnum type, List<Long> relIdList) {
|
||||
Valid.notNull(type);
|
||||
Valid.notEmpty(relIdList);
|
||||
Assert.notNull(type);
|
||||
Assert.notEmpty(relIdList);
|
||||
favoriteDAO.deleteFavoriteByRelIdList(type.name(), relIdList);
|
||||
}
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ package org.dromara.visor.module.infra.api.impl;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.visor.common.constant.ErrorMessage;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.module.infra.api.HistoryValueApi;
|
||||
import org.dromara.visor.module.infra.convert.HistoryValueProviderConvert;
|
||||
import org.dromara.visor.module.infra.entity.domain.HistoryValueDO;
|
||||
@@ -56,8 +56,8 @@ public class HistoryValueApiImpl implements HistoryValueApi {
|
||||
@Override
|
||||
public Long createHistoryValue(HistoryValueTypeEnum type, HistoryValueCreateDTO dto) {
|
||||
log.info("HistoryValueApi.createHistoryValue dto: {}", JSON.toJSONString(dto));
|
||||
Valid.notNull(type);
|
||||
Valid.valid(dto);
|
||||
Assert.notNull(type);
|
||||
Assert.valid(dto);
|
||||
// 转换
|
||||
HistoryValueCreateRequest request = HistoryValueProviderConvert.MAPPER.toRequest(dto);
|
||||
request.setType(type.name());
|
||||
@@ -68,7 +68,7 @@ public class HistoryValueApiImpl implements HistoryValueApi {
|
||||
@Override
|
||||
public HistoryValueDTO getHistoryValueById(Long id) {
|
||||
log.info("HistoryValueApi.getHistoryValueById id: {}", id);
|
||||
Valid.notNull(id, ErrorMessage.ID_MISSING);
|
||||
Assert.notNull(id, ErrorMessage.ID_MISSING);
|
||||
// 修改
|
||||
HistoryValueDO record = historyValueService.getHistoryById(id);
|
||||
if (record == null) {
|
||||
@@ -81,7 +81,7 @@ public class HistoryValueApiImpl implements HistoryValueApi {
|
||||
@Override
|
||||
public HistoryValueDTO getHistoryValueByRelId(Long id, Long relId, HistoryValueTypeEnum type) {
|
||||
log.info("HistoryValueApi.getHistoryValueByRelId id: {}, relId: {}, type: {}", id, relId, type);
|
||||
Valid.allNotNull(id, relId, type);
|
||||
Assert.allNotNull(id, relId, type);
|
||||
// 修改
|
||||
HistoryValueDO record = historyValueService.getHistoryByRelId(id, relId, type.name());
|
||||
if (record == null) {
|
||||
|
||||
@@ -25,7 +25,7 @@ package org.dromara.visor.module.infra.api.impl;
|
||||
import cn.orionsec.kit.lang.define.wrapper.DataGrid;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.module.infra.api.OperatorLogApi;
|
||||
import org.dromara.visor.module.infra.convert.OperatorLogProviderConvert;
|
||||
import org.dromara.visor.module.infra.dao.OperatorLogDAO;
|
||||
@@ -53,7 +53,7 @@ public class OperatorLogApiImpl implements OperatorLogApi {
|
||||
|
||||
@Override
|
||||
public DataGrid<OperatorLogDTO> getOperatorLogPage(OperatorLogQueryDTO request) {
|
||||
Valid.valid(request);
|
||||
Assert.valid(request);
|
||||
// 条件
|
||||
LambdaQueryWrapper<OperatorLogDO> wrapper = this.buildQueryWrapper(request);
|
||||
// 查询
|
||||
@@ -66,7 +66,7 @@ public class OperatorLogApiImpl implements OperatorLogApi {
|
||||
|
||||
@Override
|
||||
public List<OperatorLogDTO> getOperatorLogList(OperatorLogQueryDTO request) {
|
||||
Valid.valid(request);
|
||||
Assert.valid(request);
|
||||
// 条件
|
||||
LambdaQueryWrapper<OperatorLogDO> wrapper = this.buildQueryWrapper(request)
|
||||
.orderByDesc(OperatorLogDO::getId);
|
||||
@@ -79,7 +79,7 @@ public class OperatorLogApiImpl implements OperatorLogApi {
|
||||
|
||||
@Override
|
||||
public Long getOperatorLogCount(OperatorLogQueryDTO request) {
|
||||
Valid.valid(request);
|
||||
Assert.valid(request);
|
||||
// 条件
|
||||
LambdaQueryWrapper<OperatorLogDO> wrapper = this.buildQueryWrapper(request);
|
||||
// 查询
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
package org.dromara.visor.module.infra.api.impl;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.module.infra.api.SystemMessageApi;
|
||||
import org.dromara.visor.module.infra.convert.SystemMessageProviderConvert;
|
||||
import org.dromara.visor.module.infra.define.SystemMessageDefine;
|
||||
@@ -52,7 +52,7 @@ public class SystemMessageApiImpl implements SystemMessageApi {
|
||||
|
||||
@Override
|
||||
public Long create(SystemMessageDefine define, SystemMessageDTO dto) {
|
||||
Valid.valid(dto);
|
||||
Assert.valid(dto);
|
||||
// 转换
|
||||
SystemMessageCreateRequest request = SystemMessageCreateRequest.builder()
|
||||
.classify(define.getClassify().name())
|
||||
@@ -70,7 +70,7 @@ public class SystemMessageApiImpl implements SystemMessageApi {
|
||||
@Override
|
||||
public Long create(MessageClassifyEnum classify, SystemMessageCreateDTO dto) {
|
||||
dto.setClassify(classify.name());
|
||||
Valid.valid(dto);
|
||||
Assert.valid(dto);
|
||||
// 转换
|
||||
SystemMessageCreateRequest request = SystemMessageProviderConvert.MAPPER.toRequest(dto);
|
||||
// 创建
|
||||
|
||||
@@ -24,7 +24,7 @@ package org.dromara.visor.module.infra.api.impl;
|
||||
|
||||
import cn.orionsec.kit.lang.utils.collect.Lists;
|
||||
import cn.orionsec.kit.lang.utils.collect.Maps;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.module.infra.api.TagRelApi;
|
||||
import org.dromara.visor.module.infra.convert.TagProviderConvert;
|
||||
import org.dromara.visor.module.infra.entity.dto.TagCacheDTO;
|
||||
@@ -56,7 +56,7 @@ public class TagRelApiImpl implements TagRelApi {
|
||||
|
||||
@Override
|
||||
public void addTagRel(TagTypeEnum type, Long relId, List<Long> tagIdList) {
|
||||
Valid.notNull(relId);
|
||||
Assert.notNull(relId);
|
||||
if (Lists.isEmpty(tagIdList)) {
|
||||
return;
|
||||
}
|
||||
@@ -73,7 +73,7 @@ public class TagRelApiImpl implements TagRelApi {
|
||||
|
||||
@Override
|
||||
public void setTagRel(TagTypeEnum type, Long relId, List<Long> tagIdList) {
|
||||
Valid.notNull(relId);
|
||||
Assert.notNull(relId);
|
||||
tagRelService.setTagRel(type.name(), relId, tagIdList);
|
||||
}
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ public class FileUploadInterceptor implements HandshakeInterceptor {
|
||||
private FileUploadService fileUploadService;
|
||||
|
||||
@Override
|
||||
public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map<String, Object> attributes) throws Exception {
|
||||
public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map<String, Object> attributes) {
|
||||
// 获取 uploadToken
|
||||
String uploadToken = Urls.getUrlSource(request.getURI().getPath());
|
||||
log.info("FileUploadInterceptor-beforeHandshake start uploadToken: {}", uploadToken);
|
||||
|
||||
@@ -40,8 +40,8 @@ import org.dromara.visor.common.constant.ExtraFieldConst;
|
||||
import org.dromara.visor.common.security.LoginUser;
|
||||
import org.dromara.visor.common.security.UserRole;
|
||||
import org.dromara.visor.common.utils.AesEncryptUtils;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.common.utils.IpUtils;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.framework.biz.operator.log.core.utils.OperatorLogs;
|
||||
import org.dromara.visor.framework.redis.core.utils.RedisStrings;
|
||||
import org.dromara.visor.framework.redis.core.utils.RedisUtils;
|
||||
@@ -129,7 +129,7 @@ public class AuthenticationServiceImpl implements AuthenticationService {
|
||||
boolean passRight = this.checkUserPassword(user, request.getPassword(), true);
|
||||
// 发送站内信
|
||||
this.sendLoginFailedErrorMessage(passRight, user, remoteAddr, location);
|
||||
Valid.isTrue(passRight, ErrorMessage.USERNAME_PASSWORD_ERROR);
|
||||
Assert.isTrue(passRight, ErrorMessage.USERNAME_PASSWORD_ERROR);
|
||||
// 用户状态校验
|
||||
this.checkUserStatus(user);
|
||||
Long id = user.getId();
|
||||
@@ -249,7 +249,7 @@ public class AuthenticationServiceImpl implements AuthenticationService {
|
||||
.eq(SystemUserDO::getUsername, username)
|
||||
.then()
|
||||
.getOne();
|
||||
Valid.notNull(user, ErrorMessage.USERNAME_PASSWORD_ERROR);
|
||||
Assert.notNull(user, ErrorMessage.USERNAME_PASSWORD_ERROR);
|
||||
return user;
|
||||
}
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ import cn.orionsec.kit.lang.utils.collect.Maps;
|
||||
import cn.orionsec.kit.spring.SpringHolder;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.visor.common.constant.ErrorMessage;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.framework.biz.operator.log.core.utils.OperatorLogs;
|
||||
import org.dromara.visor.framework.redis.core.utils.RedisLists;
|
||||
import org.dromara.visor.framework.redis.core.utils.RedisStrings;
|
||||
@@ -69,10 +69,10 @@ public class DataGroupRelServiceImpl implements DataGroupRelService {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateGroupRel(Long groupId, List<Long> relIdList) {
|
||||
Valid.notNull(groupId);
|
||||
Assert.notNull(groupId);
|
||||
// 查询分组
|
||||
DataGroupDO group = dataGroupDAO.selectById(groupId);
|
||||
Valid.notNull(group, ErrorMessage.GROUP_ABSENT);
|
||||
Assert.notNull(group, ErrorMessage.GROUP_ABSENT);
|
||||
String type = group.getType();
|
||||
Long userId = group.getUserId();
|
||||
// 设置日志参数
|
||||
@@ -119,7 +119,7 @@ public class DataGroupRelServiceImpl implements DataGroupRelService {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateRelGroup(String type, Long userId, List<Long> groupIdList, Long relId) {
|
||||
Valid.notNull(relId);
|
||||
Assert.notNull(relId);
|
||||
// 删除引用
|
||||
this.deleteByRelId(type, userId, relId);
|
||||
// 插入引用
|
||||
|
||||
@@ -29,8 +29,8 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.visor.common.constant.Const;
|
||||
import org.dromara.visor.common.constant.ErrorMessage;
|
||||
import org.dromara.visor.common.enums.MovePosition;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.common.utils.TreeUtils;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.framework.biz.operator.log.core.utils.OperatorLogs;
|
||||
import org.dromara.visor.framework.redis.core.utils.RedisStrings;
|
||||
import org.dromara.visor.framework.redis.core.utils.barrier.CacheBarriers;
|
||||
@@ -95,11 +95,11 @@ public class DataGroupServiceImpl implements DataGroupService {
|
||||
|
||||
@Override
|
||||
public Integer renameDataGroup(DataGroupRenameRequest request) {
|
||||
Long id = Valid.notNull(request.getId(), ErrorMessage.ID_MISSING);
|
||||
String name = Valid.notBlank(request.getName());
|
||||
Long id = Assert.notNull(request.getId(), ErrorMessage.ID_MISSING);
|
||||
String name = Assert.notBlank(request.getName());
|
||||
// 查询
|
||||
DataGroupDO record = dataGroupDAO.selectById(id);
|
||||
Valid.notNull(record, ErrorMessage.GROUP_ABSENT);
|
||||
Assert.notNull(record, ErrorMessage.GROUP_ABSENT);
|
||||
// 转换
|
||||
DataGroupDO updateRecord = DataGroupDO.builder()
|
||||
.id(id)
|
||||
@@ -122,12 +122,12 @@ public class DataGroupServiceImpl implements DataGroupService {
|
||||
public Integer moveDataGroup(DataGroupMoveRequest request) {
|
||||
Long id = request.getId();
|
||||
Long targetId = request.getTargetId();
|
||||
MovePosition position = Valid.valid(MovePosition::of, request.getPosition());
|
||||
MovePosition position = Assert.valid(MovePosition::of, request.getPosition());
|
||||
// 查询节点是否存在
|
||||
DataGroupDO moveRecord = dataGroupDAO.selectById(id);
|
||||
DataGroupDO targetRecord = dataGroupDAO.selectById(targetId);
|
||||
Valid.notNull(moveRecord, ErrorMessage.GROUP_ABSENT);
|
||||
Valid.notNull(targetRecord, ErrorMessage.GROUP_ABSENT);
|
||||
Assert.notNull(moveRecord, ErrorMessage.GROUP_ABSENT);
|
||||
Assert.notNull(targetRecord, ErrorMessage.GROUP_ABSENT);
|
||||
// 更新
|
||||
String type = moveRecord.getType();
|
||||
Long targetParentId = targetRecord.getParentId();
|
||||
@@ -231,7 +231,7 @@ public class DataGroupServiceImpl implements DataGroupService {
|
||||
log.info("DataGroupService-deleteDataGroupById id: {}", id);
|
||||
// 检查数据是否存在
|
||||
DataGroupDO record = dataGroupDAO.selectById(id);
|
||||
Valid.notNull(record, ErrorMessage.GROUP_ABSENT);
|
||||
Assert.notNull(record, ErrorMessage.GROUP_ABSENT);
|
||||
String type = record.getType();
|
||||
// 查询子级
|
||||
List<Long> deleteIdList = Lists.of(id);
|
||||
@@ -334,7 +334,7 @@ public class DataGroupServiceImpl implements DataGroupService {
|
||||
.eq(DataGroupDO::getName, domain.getName());
|
||||
// 检查是否存在
|
||||
boolean present = dataGroupDAO.of(wrapper).present();
|
||||
Valid.isFalse(present, ErrorMessage.DATA_PRESENT);
|
||||
Assert.isFalse(present, ErrorMessage.DATA_PRESENT);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -25,7 +25,7 @@ package org.dromara.visor.module.infra.service.impl;
|
||||
import cn.orionsec.kit.lang.utils.collect.Lists;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.framework.mybatis.core.query.Conditions;
|
||||
import org.dromara.visor.framework.redis.core.utils.RedisLists;
|
||||
import org.dromara.visor.framework.redis.core.utils.RedisUtils;
|
||||
@@ -181,7 +181,7 @@ public class DataPermissionServiceImpl implements DataPermissionService {
|
||||
|
||||
@Override
|
||||
public List<Long> getUserAuthorizedRelIdList(String type, Long userId) {
|
||||
DataPermissionTypeEnum dataType = Valid.valid(DataPermissionTypeEnum::of, type);
|
||||
DataPermissionTypeEnum dataType = Assert.valid(DataPermissionTypeEnum::of, type);
|
||||
String cacheKey = DataPermissionCacheKeyDefine.DATA_PERMISSION_USER.format(type, userId);
|
||||
// 获取缓存
|
||||
List<Long> list = RedisLists.range(cacheKey, Long::valueOf);
|
||||
|
||||
@@ -33,7 +33,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.visor.common.constant.Const;
|
||||
import org.dromara.visor.common.constant.ErrorMessage;
|
||||
import org.dromara.visor.common.utils.Valid;
|
||||
import org.dromara.visor.common.utils.Assert;
|
||||
import org.dromara.visor.framework.biz.operator.log.core.utils.OperatorLogs;
|
||||
import org.dromara.visor.framework.redis.core.utils.RedisMaps;
|
||||
import org.dromara.visor.framework.redis.core.utils.RedisStrings;
|
||||
@@ -82,7 +82,7 @@ public class DictKeyServiceImpl implements DictKeyService {
|
||||
@Override
|
||||
public Long createDictKey(DictKeyCreateRequest request) {
|
||||
log.info("DictKeyService-createDictKey request: {}", JSON.toJSONString(request));
|
||||
Valid.valid(DictValueTypeEnum::of, request.getValueType());
|
||||
Assert.valid(DictValueTypeEnum::of, request.getValueType());
|
||||
// 转换
|
||||
DictKeyDO record = DictKeyConvert.MAPPER.to(request);
|
||||
// 查询数据是否冲突
|
||||
@@ -99,12 +99,12 @@ public class DictKeyServiceImpl implements DictKeyService {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Integer updateDictKeyById(DictKeyUpdateRequest request) {
|
||||
Long id = Valid.notNull(request.getId(), ErrorMessage.ID_MISSING);
|
||||
Long id = Assert.notNull(request.getId(), ErrorMessage.ID_MISSING);
|
||||
log.info("DictKeyService-updateDictKeyById id: {}, request: {}", id, JSON.toJSONString(request));
|
||||
Valid.valid(DictValueTypeEnum::of, request.getValueType());
|
||||
Assert.valid(DictValueTypeEnum::of, request.getValueType());
|
||||
// 查询
|
||||
DictKeyDO record = dictKeyDAO.selectById(id);
|
||||
Valid.notNull(record, ErrorMessage.CONFIG_ABSENT);
|
||||
Assert.notNull(record, ErrorMessage.CONFIG_ABSENT);
|
||||
// 转换
|
||||
DictKeyDO updateRecord = DictKeyConvert.MAPPER.to(request);
|
||||
// 查询数据是否冲突
|
||||
@@ -248,7 +248,7 @@ public class DictKeyServiceImpl implements DictKeyService {
|
||||
.eq(DictKeyDO::getKeyName, domain.getKeyName());
|
||||
// 检查是否存在
|
||||
boolean present = dictKeyDAO.of(wrapper).present();
|
||||
Valid.isFalse(present, ErrorMessage.DATA_PRESENT);
|
||||
Assert.isFalse(present, ErrorMessage.DATA_PRESENT);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user