Compare commits

..

39 Commits

Author SHA1 Message Date
李佳航
0b53924dbd Merge pull request #97 from dromara/dev
Dev
2025-03-24 09:57:29 +08:00
lijiahangmax
3359d163fb 🐳 修改 docker 配置. 2025-03-23 22:05:59 +08:00
lijiahangmax
2ef1517338 🔖 升级版本. 2025-03-23 21:39:49 +08:00
lijiahangmax
a5bee66afa 🔖 升级版本. 2025-03-23 13:23:10 +08:00
lijiahangmax
88fd0e31e0 🔖 升级版本. 2025-03-23 13:03:48 +08:00
lijiahangmax
226dfb2c25 🔖 升级版本. 2025-03-23 11:41:13 +08:00
lijiahangmax
94ed071897 🔨 表格字段. 2025-03-22 00:58:15 +08:00
lijiahangmax
4efd2b5ec2 🔨 表格字段. 2025-03-22 00:11:30 +08:00
lijiahangmax
76e766367f 🔨 查询字段. 2025-03-22 00:00:41 +08:00
lijiahangmax
b3009bb65e 🔨 查询字段. 2025-03-21 00:05:04 +08:00
lijiahangmax
819520ef73 🔨 添加排序字段. 2025-03-20 00:39:49 +08:00
lijiahangmax
a2acbc0c3a 🔨 排序字段. 2025-03-20 00:08:23 +08:00
lijiahangmax
2e8a7c40d9 🔨 添加排序字段. 2025-03-19 23:37:13 +08:00
lijiahangmax
94c0b6a785 🔨 添加排序字段. 2025-03-19 23:24:08 +08:00
lijiahangmax
9752dfa680 🐳 分离 docker 镜像. 2025-03-17 21:27:48 +08:00
lijiahangmax
bc776e4186 Merge remote-tracking branch 'origin/dev' into dev 2025-03-16 00:31:40 +08:00
lijiahangmax
cdce5a0dc1 🔨 优化导包. 2025-03-16 00:30:43 +08:00
lijiahangmax
0db732fc19 🔨 优化主机逻辑. 2025-03-16 00:20:18 +08:00
lijiahang
69f331c048 修改路由规则. 2025-03-11 15:36:41 +08:00
李佳航
032f1763f6 Merge pull request #95 from dromara/dev
Dev
2025-03-10 11:02:45 +08:00
lijiahangmax
d071ef64d8 🔨 编译问题. 2025-03-09 20:11:21 +08:00
lijiahangmax
c820443a3b 升级版本. 2025-03-09 20:00:10 +08:00
lijiahangmax
14c4e77445 修改终端提示. 2025-03-09 19:58:10 +08:00
lijiahangmax
79d9f69ed4 修改终端提示. 2025-03-08 12:44:33 +08:00
lijiahangmax
6c9065072d Merge remote-tracking branch 'origin/dev' into dev 2025-03-07 22:03:52 +08:00
lijiahang
05bc6c1fbb 修改路由规则. 2025-03-07 15:50:26 +08:00
lijiahang
a1dd9eec01 优化单元测试. 2025-03-07 14:57:26 +08:00
lijiahangmax
660df7c110 Merge remote-tracking branch 'origin/dev' into dev 2025-03-06 23:29:28 +08:00
lijiahang
093501a400 🐛 代码生成器未能读取到环境变量. 2025-03-06 10:17:48 +08:00
lijiahang
7943deb924 优化终端会话管理器. 2025-03-05 10:20:20 +08:00
lijiahangmax
490167e649 Merge remote-tracking branch 'origin/dev' into dev 2025-03-04 21:46:00 +08:00
lijiahang
8635f6bb05 🔨 修改静态资源匿名处理策略. 2025-03-04 10:27:55 +08:00
李佳航
9e31d820e0 Merge pull request #94 from dromara/dev
Dev
2025-03-03 11:25:03 +08:00
lijiahang
92353d859a 初始化 sql. 2025-03-03 11:13:42 +08:00
lijiahang
bef8d69e59 Merge remote-tracking branch 'origin/dev' into dev
# Conflicts:
#	sql/init-4-data.sql
2025-03-03 09:46:24 +08:00
lijiahangmax
ac46dd6703 🎨 优化统计样式. 2025-03-02 20:16:09 +08:00
lijiahangmax
b3ab78e063 🔖 升级版本. 2025-03-02 13:28:41 +08:00
lijiahangmax
95d2c6cb65 🔨 修改 sql 脚本. 2025-03-01 23:23:52 +08:00
lijiahang
7017c7502b 修改创建人逻辑. 2025-02-21 17:57:35 +08:00
268 changed files with 2994 additions and 1574 deletions

View File

@@ -1,6 +1,9 @@
SERVICE_PORT=1081
VOLUME_BASE=/data/orion-visor-space/docker-volumes
SERVICE_PORT=1081
SPRING_PROFILES_ACTIVE=prod
SECRET_KEY=uQeacXV8b3isvKLK
MYSQL_HOST=mysql
MYSQL_PORT=3306
MYSQL_DATABASE=orion_visor
@@ -11,5 +14,4 @@ MYSQL_ROOT_PASSWORD=Data@123456
REDIS_HOST=redis
REDIS_PASSWORD=Data@123456
SECRET_KEY=uQeacXV8b3isvKLK
DEMO_MODE=false

View File

@@ -64,6 +64,7 @@
* 🎭 演示环境部分功能不可用, 完整功能请本地部署!
* 📛 演示环境请不要随便删除数据!
* 📧 如果演示环境不可用请联系我!
* 📨 **作者已被毕(cai)业(yuan) 寻java高级内推 望京/5号/10号线 有坑位的联系我哦** 微信: `ljh1553488`
## 快速开始

View File

@@ -1,11 +1,13 @@
version: '3.3'
services:
service:
image: registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-service:latest
privileged: true
ports:
- 1081:80
- 9200:9200
environment:
- SPRING_PROFILES_ACTIVE=prod
- MYSQL_HOST=mysql
- MYSQL_PORT=3306
- MYSQL_DATABASE=orion_visor
@@ -19,18 +21,18 @@ services:
- /data/orion-visor-space/docker-volumes/service/root-orion:/root/orion
healthcheck:
test: [ "CMD", "curl", "http://127.0.0.1:9200/orion-visor/api/server/bootstrap/health" ]
interval: 3s
timeout: 300s
retries: 200
start_period: 3s
interval: 15s
timeout: 5s
retries: 10
start_period: 15s
depends_on:
mysql:
condition: service_healthy
redis:
condition: service_healthy
links:
- mysql
- redis
networks:
- orion-visor-net
mysql:
image: registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-mysql:latest
privileged: true
@@ -44,13 +46,15 @@ services:
volumes:
- /data/orion-visor-space/docker-volumes/mysql/var-lib-mysql:/var/lib/mysql
- /data/orion-visor-space/docker-volumes/mysql/var-lib-mysql-files:/var/lib/mysql-files
- /data/orion-visor-space/docker-volumes/mysql/etc-mysql:/etc/mysql
healthcheck:
test: [ "CMD", "bash", "-c", "cat < /dev/null > /dev/tcp/127.0.0.1/3306" ]
interval: 3s
timeout: 60s
interval: 15s
timeout: 5s
retries: 10
start_period: 3s
start_period: 5s
networks:
- orion-visor-net
redis:
image: registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-redis:latest
privileged: true
@@ -63,10 +67,13 @@ services:
command: sh -c "redis-server /usr/local/redis.conf --requirepass $${REDIS_PASSWORD}"
healthcheck:
test: [ "CMD", "redis-cli", "--raw", "incr", "ping" ]
interval: 3s
timeout: 60s
interval: 15s
timeout: 5s
retries: 10
start_period: 3s
start_period: 5s
networks:
- orion-visor-net
testing:
build:
context: ./docker/e2e
@@ -75,5 +82,9 @@ services:
depends_on:
service:
condition: service_healthy
links:
- service
networks:
- orion-visor-net
networks:
orion-visor-net:
driver: bridge

View File

@@ -1,11 +1,24 @@
version: '3.3'
services:
ui:
image: registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-ui:latest
ports:
- ${SERVICE_PORT:-1081}:80
restart: unless-stopped
depends_on:
service:
condition: service_healthy
networks:
- orion-visor-net
service:
image: registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-service:latest
privileged: true
ports:
- ${SERVICE_PORT:-1081}:80
- 9200:9200
environment:
- SPRING_PROFILES_ACTIVE=${SPRING_PROFILES_ACTIVE:-prod}
- MYSQL_HOST=${MYSQL_HOST:-mysql}
- MYSQL_PORT=${MYSQL_PORT:-3306}
- MYSQL_DATABASE=${MYSQL_DATABASE:-orion_visor}
@@ -17,20 +30,21 @@ services:
- DEMO_MODE=${DEMO_MODE:-false}
volumes:
- ${VOLUME_BASE:-/data/orion-visor-space/docker-volumes}/service/root-orion:/root/orion
restart: unless-stopped
healthcheck:
test: [ "CMD", "curl", "http://127.0.0.1:9200/orion-visor/api/server/bootstrap/health" ]
interval: 15s
timeout: 300s
timeout: 5s
retries: 15
start_period: 3s
start_period: 30s
depends_on:
mysql:
condition: service_healthy
redis:
condition: service_healthy
links:
- mysql
- redis
networks:
- orion-visor-net
mysql:
image: registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-mysql:latest
privileged: true
@@ -44,13 +58,16 @@ services:
volumes:
- ${VOLUME_BASE:-/data/orion-visor-space/docker-volumes}/mysql/var-lib-mysql:/var/lib/mysql
- ${VOLUME_BASE:-/data/orion-visor-space/docker-volumes}/mysql/var-lib-mysql-files:/var/lib/mysql-files
- ${VOLUME_BASE:-/data/orion-visor-space/docker-volumes}/mysql/etc-mysql:/etc/mysql
restart: unless-stopped
healthcheck:
test: [ "CMD", "bash", "-c", "cat < /dev/null > /dev/tcp/127.0.0.1/3306" ]
interval: 15s
timeout: 60s
retries: 15
start_period: 3s
timeout: 5s
retries: 10
start_period: 10s
networks:
- orion-visor-net
redis:
image: registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-redis:latest
privileged: true
@@ -61,18 +78,28 @@ services:
volumes:
- ${VOLUME_BASE:-/data/orion-visor-space/docker-volumes}/redis/data:/data
command: sh -c "redis-server /usr/local/redis.conf --requirepass $${REDIS_PASSWORD}"
restart: unless-stopped
healthcheck:
test: [ "CMD", "redis-cli", "--raw", "incr", "ping" ]
interval: 15s
timeout: 60s
retries: 15
start_period: 3s
timeout: 5s
retries: 10
start_period: 10s
networks:
- orion-visor-net
adminer:
image: registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-adminer:latest
ports:
- 8081:8080
environment:
- ADMINER_DEFAULT_SERVER=${MYSQL_HOST:-mysql}
depends_on:
mysql:
condition: service_healthy
links:
- mysql
networks:
- orion-visor-net
networks:
orion-visor-net:
driver: bridge

View File

@@ -1,5 +1,6 @@
#/bin/bash
version=2.3.3
set -e
version=2.3.6
docker build -t orion-visor-adminer:${version} .
docker tag orion-visor-adminer:${version} registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-adminer:${version}
docker tag orion-visor-adminer:${version} registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-adminer:latest

View File

@@ -2,7 +2,7 @@
# yaml-language-server: $schema=https://linuxsuren.github.io/api-testing/api-testing-schema.json
name: orion-visor
api: |
{{default "http://orion-visor-service:80" (env "SERVER")}}
{{default "http://orion-visor-service:9200" (env "SERVER")}}
items:
- name: login
request:

View File

@@ -1,5 +1,6 @@
#/bin/bash
version=2.3.3
set -e
version=2.3.6
cp -r ../../sql ./sql
docker build -t orion-visor-mysql:${version} .
rm -rf ./sql

View File

@@ -12,7 +12,7 @@ socket=/var/run/mysqld/mysqld.sock
# 数据目录
datadir=/var/lib/mysql
# 不区分大小 0区分 1不区分
lower_case_table_names=1
lower_case_table_names=0
# 服务器时区
default-time_zone='+8:00'
# 服务端字符集

View File

@@ -1,10 +1,13 @@
#/bin/bash
version=2.3.3
set -e
version=2.3.6
docker push registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-adminer:${version}
docker push registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-mysql:${version}
docker push registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-redis:${version}
docker push registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-service:${version}
docker push registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-ui:${version}
docker push registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-adminer:latest
docker push registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-mysql:latest
docker push registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-redis:latest
docker push registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-service:latest
docker push registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-ui:latest

View File

@@ -1,5 +1,6 @@
#/bin/bash
version=2.3.3
set -e
version=2.3.6
docker build -t orion-visor-redis:${version} .
docker tag orion-visor-redis:${version} registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-redis:${version}
docker tag orion-visor-redis:${version} registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-redis:latest

View File

@@ -1,4 +1,4 @@
FROM nginx:alpine
FROM openjdk:8-jdk-alpine
USER root
WORKDIR /app
# 系统时区
@@ -7,18 +7,14 @@ ARG TZ=Asia/Shanghai
RUN \
sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \
apk update && \
apk add curl && \
apk add udev && \
apk add tzdata && \
apk add dmidecode && \
apk add openjdk8
apk add dmidecode
# 设置时区
RUN ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime && \
echo '${TZ}' > /etc/timezone
# 删除原 nginx 配置
RUN rm -rf /etc/nginx/conf.d/*
# 复制包
COPY ./orion-visor-launch.jar /app/app.jar
COPY ./dist /usr/share/nginx/html
COPY ./entrypoint.sh /app/entrypoint.sh
COPY ./nginx.conf /etc/nginx/conf.d
# 启动
ENTRYPOINT [ "sh", "/app/entrypoint.sh" ]
CMD ["java", "-jar", "/app/app.jar"]

View File

@@ -1,9 +1,8 @@
#/bin/bash
version=2.3.3
set -e
version=2.3.6
mv ../../orion-visor-launch/target/orion-visor-launch.jar ./orion-visor-launch.jar
mv ../../orion-visor-ui/dist ./dist
docker build -t orion-visor-service:${version} .
rm -rf ./orion-visor-launch.jar
rm -rf ./dist
docker tag orion-visor-service:${version} registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-service:${version}
docker tag orion-visor-service:${version} registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-service:latest

View File

@@ -1,4 +0,0 @@
#!/bin/bash
cd /app
nohup java -jar app.jar --spring.profiles.active=prod 2>&1 &
nginx -g 'daemon off;'

18
docker/ui/Dockerfile Normal file
View File

@@ -0,0 +1,18 @@
FROM nginx:alpine
# 系统时区
ARG TZ=Asia/Shanghai
# 添加包
RUN \
sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \
apk update && \
apk add tzdata
# 设置时区
RUN ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime && \
echo '${TZ}' > /etc/timezone
# 删除原 nginx 配置
RUN rm -rf /etc/nginx/conf.d/*
# 复制包
COPY ./dist /usr/share/nginx/html
COPY ./nginx.conf /etc/nginx/conf.d
# 启动
CMD ["nginx", "-g", "daemon off;"]

9
docker/ui/build.sh Normal file
View File

@@ -0,0 +1,9 @@
#/bin/bash
set -e
version=2.3.6
mv ../../orion-visor-ui/dist ./dist
docker build -t orion-visor-ui:${version} .
rm -rf ./orion-visor-launch.jar
rm -rf ./dist
docker tag orion-visor-ui:${version} registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-ui:${version}
docker tag orion-visor-ui:${version} registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-ui:latest

View File

@@ -19,7 +19,7 @@ server {
root /usr/share/nginx/html;
index index.html index.htm;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# web history 模式 404
@@ -27,7 +27,7 @@ server {
}
location /orion-visor/api {
proxy_pass http://localhost:9200/orion-visor/api;
proxy_pass http://service:9200/orion-visor/api;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
@@ -35,7 +35,7 @@ server {
}
location /orion-visor/keep-alive {
proxy_pass http://localhost:9200/orion-visor/keep-alive;
proxy_pass http://service:9200/orion-visor/keep-alive;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

View File

@@ -20,21 +20,21 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.dromara.visor.launch.configuration;
package org.dromara.visor.common.configuration;
import cn.orionsec.kit.spring.SpringHolder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* 应用配置类
* spring 配置类
*
* @author Jiahang Li
* @version 1.0.0
* @since 2023/6/20 10:34
*/
@Configuration
public class LaunchApplicationConfiguration {
public class SpringConfiguration {
/**
* @return spring 容器工具类

View File

@@ -36,7 +36,7 @@ public interface AppConst extends OrionConst {
/**
* 同 ${orion.version} 迭代时候需要手动更改
*/
String VERSION = "2.3.3";
String VERSION = "2.3.6";
/**
* 同 ${spring.application.name}

View File

@@ -31,15 +31,15 @@ import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
/**
* 公共页码请求
* 基本查询请求
*
* @author Jiahang Li
* @version 1.0.0
* @since 2023/7/12 23:14
*/
@Data
@Schema(name = "PageRequest", description = "公共页码请求")
public class PageRequest {
@Schema(name = "BaseQueryRequest", description = "基本查询请求")
public class BaseQueryRequest implements IPageRequest, IOrderRequest {
@NotNull(groups = Page.class)
@Min(value = 1, groups = Page.class)
@@ -53,4 +53,7 @@ public class PageRequest {
@Schema(description = "大小")
private Integer limit;
@Schema(description = "查询排序")
private Integer order;
}

View File

@@ -0,0 +1,41 @@
/*
* 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.common.entity;
/**
* 查询排序请求
*
* @author Jiahang Li
* @version 1.0.0
* @since 2025/3/17 22:04
*/
public interface IOrderRequest {
/**
* 查询排序
*
* @return sort 0DESC 1ASC 其他不排序
*/
Integer getOrder();
}

View File

@@ -0,0 +1,48 @@
/*
* 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.common.entity;
/**
* 页码请求
*
* @author Jiahang Li
* @version 1.0.0
* @since 2025/3/17 22:02
*/
public interface IPageRequest {
/**
* 页码
*
* @return page
*/
Integer getPage();
/**
* 大小
*
* @return limit
*/
Integer getLimit();
}

View File

@@ -45,4 +45,11 @@ public interface SecurityHolder {
*/
Long getLoginUserId();
/**
* 获取当前用户名
*
* @return username
*/
String getLoginUsername();
}

View File

@@ -14,7 +14,7 @@
<url>https://github.com/dromara/orion-visor</url>
<properties>
<revision>2.3.3</revision>
<revision>2.3.6</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>

View File

@@ -22,11 +22,12 @@
*/
package org.dromara.visor.framework.mybatis.core.domain;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.apache.ibatis.type.JdbcType;
import org.dromara.visor.common.constant.Const;
@@ -41,10 +42,17 @@ import java.util.Date;
* @since 2023/6/23 18:42
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class BaseDO implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "id")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@Schema(description = "创建时间")
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@@ -70,4 +78,4 @@ public class BaseDO implements Serializable {
@TableField(fill = FieldFill.INSERT, jdbcType = JdbcType.TINYINT)
private Boolean deleted;
}
}

View File

@@ -23,6 +23,8 @@
package org.dromara.visor.framework.mybatis.core.generator;
import cn.orionsec.kit.lang.constant.Const;
import cn.orionsec.kit.lang.utils.Strings;
import cn.orionsec.kit.lang.utils.Systems;
import cn.orionsec.kit.lang.utils.ansi.AnsiAppender;
import cn.orionsec.kit.lang.utils.ansi.style.AnsiFont;
import cn.orionsec.kit.lang.utils.ansi.style.color.AnsiForeground;
@@ -32,6 +34,8 @@ import org.dromara.visor.framework.mybatis.core.generator.template.Table;
import org.dromara.visor.framework.mybatis.core.generator.template.Template;
import java.io.File;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 代码生成器
@@ -42,6 +46,8 @@ import java.io.File;
*/
public class CodeGenerators {
private static final Pattern ENV_VAR_PATTERN = Pattern.compile("\\$\\{([^:]+):([^}]+)\\}");
public static void main(String[] args) {
// 输出路径
String outputDir = "D:/MP/";
@@ -76,11 +82,6 @@ public class CodeGenerators {
.disableUnitTest()
.enableProviderApi()
.vue("system", "message")
.dict("messageClassify", "classify", "messageClassify")
.comment("消息分类")
.fields("NOTICE", "TODO")
.labels("通知", "待办")
.valueUseFields()
.dict("messageType", "type", "messageType")
.comment("消息类型")
.fields("EXEC_FAILED", "UPLOAD_FAILED")
@@ -94,9 +95,9 @@ public class CodeGenerators {
// jdbc 配置 - 使用配置文件
File yamlFile = new File("orion-visor-launch/src/main/resources/application-dev.yaml");
YmlExt yaml = YmlExt.load(yamlFile);
String url = yaml.getValue("spring.datasource.druid.url");
String username = yaml.getValue("spring.datasource.druid.username");
String password = yaml.getValue("spring.datasource.druid.password");
String url = resolveConfigValue(yaml.getValue("spring.datasource.druid.url"));
String username = resolveConfigValue(yaml.getValue("spring.datasource.druid.username"));
String password = resolveConfigValue(yaml.getValue("spring.datasource.druid.password"));
// 执行
runGenerator(outputDir, author,
@@ -147,4 +148,31 @@ public class CodeGenerators {
System.out.print(line);
}
/**
* 解析实际的配置
*
* @param value value
* @return value
*/
private static String resolveConfigValue(String value) {
if (Strings.isBlank(value)) {
return value;
}
Matcher matcher = ENV_VAR_PATTERN.matcher(value);
StringBuffer resultString = new StringBuffer();
while (matcher.find()) {
// 环境变量名
String envVar = matcher.group(1);
// 默认值
String defaultValue = matcher.group(2);
// 获取环境变量的值
String envValue = Systems.getEnv(envVar, defaultValue);
// 替换占位符
matcher.appendReplacement(resultString, Matcher.quoteReplacement(envValue));
}
// 处理结尾的剩余部分
matcher.appendTail(resultString);
return resultString.toString();
}
}

View File

@@ -23,7 +23,6 @@
package org.dromara.visor.framework.mybatis.core.query;
import cn.orionsec.kit.lang.define.wrapper.DataGrid;
import cn.orionsec.kit.lang.define.wrapper.IPageRequest;
import cn.orionsec.kit.lang.define.wrapper.PageRequest;
import cn.orionsec.kit.lang.define.wrapper.Pager;
import cn.orionsec.kit.lang.utils.Exceptions;
@@ -33,11 +32,16 @@ import cn.orionsec.kit.lang.utils.collect.Lists;
import cn.orionsec.kit.lang.utils.reflect.Classes;
import cn.orionsec.kit.spring.SpringHolder;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.interfaces.Func;
import com.baomidou.mybatisplus.core.conditions.interfaces.Join;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.TableInfo;
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
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.SqlUtils;
import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
@@ -96,9 +100,9 @@ public class DataQuery<T> {
return new DataQuery<>(dao, wrapper);
}
public DataQuery<T> page(org.dromara.visor.common.entity.PageRequest page) {
org.dromara.visor.common.entity.PageRequest pr = Valid.notNull(page, "page is null");
this.page = new PageRequest(pr.getPage(), pr.getLimit());
public DataQuery<T> page(IPageRequest request) {
Valid.notNull(request, "page is null");
this.page = new PageRequest(request.getPage(), request.getLimit());
return this;
}
@@ -130,15 +134,30 @@ public class DataQuery<T> {
return then;
}
public DataQuery<T> limit(IPageRequest page) {
return this.last(Pager.of(page).getSql());
public DataQuery<T> order(IOrderRequest request, SFunction<T, ?> column) {
BooleanBit sorted = BooleanBit.of(request.getOrder());
if (sorted == null) {
return this;
}
return this.order(sorted.booleanValue(), column);
}
public DataQuery<T> limit(int limit) {
@SuppressWarnings("unchecked")
public DataQuery<T> order(boolean asc, SFunction<T, ?> column) {
// 设置排序
if (wrapper instanceof Func) {
((Func<? extends T, SFunction<? extends T, ?>>) wrapper).orderBy(true, asc, column);
return this;
} else {
throw Exceptions.argument("wrapper not implements Func");
}
}
public DataQuery<T> limit(Number limit) {
return this.last(SqlUtils.limit(limit));
}
public DataQuery<T> limit(int offset, int limit) {
public DataQuery<T> limit(Number offset, Number limit) {
return this.last(SqlUtils.limit(offset, limit));
}

View File

@@ -50,6 +50,7 @@ public class DomainFillUtils {
*/
public static void fillInsert(BaseDO baseDO) {
Date now = new Date();
String username = securityHolder.getLoginUsername();
// 创建时间
if (Objects.isNull(baseDO.getCreateTime())) {
baseDO.setCreateTime(now);
@@ -58,15 +59,13 @@ public class DomainFillUtils {
if (Objects.isNull(baseDO.getUpdateTime())) {
baseDO.setUpdateTime(now);
}
Long userId = securityHolder.getLoginUserId();
// 创建人
if (Objects.nonNull(userId) && Objects.isNull(baseDO.getCreator())) {
baseDO.setCreator(userId.toString());
if (Objects.nonNull(username) && Objects.isNull(baseDO.getCreator())) {
baseDO.setCreator(username);
}
// 更新人
if (Objects.nonNull(userId) && Objects.isNull(baseDO.getUpdater())) {
baseDO.setUpdater(userId.toString());
if (Objects.nonNull(username) && Objects.isNull(baseDO.getUpdater())) {
baseDO.setUpdater(username);
}
// 逻辑删除字段
if (Objects.isNull(baseDO.getDeleted())) {
@@ -85,9 +84,9 @@ public class DomainFillUtils {
baseDO.setUpdateTime(new Date());
}
// 更新人
Long userId = securityHolder.getLoginUserId();
if (Objects.nonNull(userId) && Objects.isNull(baseDO.getUpdater())) {
baseDO.setUpdater(userId.toString());
String username = securityHolder.getLoginUsername();
if (Objects.nonNull(username) && Objects.isNull(baseDO.getUpdater())) {
baseDO.setUpdater(username);
}
}

View File

@@ -26,6 +26,7 @@ import com.baomidou.mybatisplus.annotation.*;
import io.swagger.v3.oas.annotations.media.Schema;
import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
import lombok.*;
import lombok.experimental.SuperBuilder;
import java.util.*;
import java.math.*;
@@ -38,7 +39,7 @@ import java.math.*;
* @since ${date}
*/
@Data
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@@ -66,17 +67,8 @@ public class ${entity} {
#if("$!field.comment" != "")
@Schema(description = "${field.comment}")
#end
#if(${field.keyFlag})
## 主键
#if(${field.keyIdentityFlag})
@TableId(value = "${field.annotationColumnName}", type = IdType.AUTO)
#elseif(!$null.isNull(${idType}) && "$!idType" != "")
@TableId(value = "${field.annotationColumnName}", type = IdType.${idType})
#elseif(${field.convert})
@TableId("${field.annotationColumnName}")
#end
## 普通字段
#elseif(${field.fill})
#if(${field.fill})
## ----- 存在字段填充设置 -----
#if(${field.convert})
@TableField(value = "${field.annotationColumnName}", fill = FieldFill.${field.fill})

View File

@@ -25,11 +25,9 @@ package ${currentPackage};
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import org.dromara.visor.common.entity.PageRequest;
import org.dromara.visor.common.entity.BaseQueryRequest;
import javax.validation.constraints.Size;
import java.util.*;
import java.math.*;
/**
* $!{table.comment} 查询请求对象
@@ -44,7 +42,7 @@ import java.math.*;
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Schema(name = "${type}QueryRequest", description = "$!{table.comment} 查询请求对象")
public class ${type}QueryRequest extends PageRequest {
public class ${type}QueryRequest extends BaseQueryRequest {
@Schema(description = "搜索")
private String searchValue;

View File

@@ -144,10 +144,11 @@ public class ${table.serviceImplName} implements ${table.serviceName} {
@Override
public List<${type}VO> get${type}List(${type}QueryRequest request) {
// 条件
LambdaQueryWrapper<${type}DO> wrapper = this.buildQueryWrapper(request)
.orderByDesc(${type}DO::getId);
LambdaQueryWrapper<${type}DO> wrapper = this.buildQueryWrapper(request);
// 查询
return ${typeLower}DAO.of(wrapper).list(${type}Convert.MAPPER::to);
return ${typeLower}DAO.of(wrapper)
.order(request, ${type}DO::getId)
.list(${type}Convert.MAPPER::to);
}
#if($meta.enableCache)
@@ -176,12 +177,12 @@ public class ${table.serviceImplName} implements ${table.serviceName} {
@Override
public DataGrid<${type}VO> get${type}Page(${type}QueryRequest request) {
// 条件
LambdaQueryWrapper<${type}DO> wrapper = this.buildQueryWrapper(request)
.orderByDesc(${type}DO::getId);
LambdaQueryWrapper<${type}DO> wrapper = this.buildQueryWrapper(request);
// 查询
return ${typeLower}DAO.of()
.page(request)
.wrapper(wrapper)
.page(request)
.order(request, ${type}DO::getId)
.dataGrid(${type}Convert.MAPPER::to);
}

View File

@@ -11,10 +11,10 @@ SELECT @TYPE_KEY_ID:= id FROM dict_key WHERE key_name = 'operatorLogType' AND de
INSERT INTO dict_value
(`key_id`, `key_name`, `value`, `label`, `extra`, `sort`, `create_time`, `update_time`, `creator`, `updater`, `deleted`)
VALUES
(@MODULE_KEY_ID, 'operatorLogModule', '${package.ModuleName}:${typeHyphen}', '$!{table.comment}', '{}', @MODULE_KEY_MAX_SORT + 10, now(), now(), '1', '1', 0),
(@TYPE_KEY_ID, 'operatorLogType', '${typeHyphen}:create', '创建$!{table.comment}', '{}', 10, now(), now(), '1', '1', 0),
(@TYPE_KEY_ID, 'operatorLogType', '${typeHyphen}:update', '更新$!{table.comment}', '{}', 20, now(), now(), '1', '1', 0),
(@TYPE_KEY_ID, 'operatorLogType', '${typeHyphen}:delete', '删除$!{table.comment}', '{}', 30, now(), now(), '1', '1', 0);
(@MODULE_KEY_ID, 'operatorLogModule', '${package.ModuleName}:${typeHyphen}', '$!{table.comment}', '{}', @MODULE_KEY_MAX_SORT + 10, now(), now(), 'admin', 'admin', 0),
(@TYPE_KEY_ID, 'operatorLogType', '${typeHyphen}:create', '创建$!{table.comment}', '{}', 10, now(), now(), 'admin', 'admin', 0),
(@TYPE_KEY_ID, 'operatorLogType', '${typeHyphen}:update', '更新$!{table.comment}', '{}', 20, now(), now(), 'admin', 'admin', 0),
(@TYPE_KEY_ID, 'operatorLogType', '${typeHyphen}:delete', '删除$!{table.comment}', '{}', 30, now(), now(), 'admin', 'admin', 0);
#end
#if($dictMap.entrySet().size() > 0)
@@ -23,7 +23,7 @@ VALUES
INSERT INTO dict_key
(`key_name`, `value_type`, `extra_schema`, `description`, `create_time`, `update_time`, `creator`, `updater`, `deleted`)
VALUES
('$enumEntity.value.keyName', 'STRING', '$enumEntity.value.extraSchema', '$enumEntity.value.comment', now(), now(), '1', '1', 0);
('$enumEntity.value.keyName', 'STRING', '$enumEntity.value.extraSchema', '$enumEntity.value.comment', now(), now(), 'admin', 'admin', 0);
-- 设置临时配置项id
SELECT @TMP_KEY_ID:=LAST_INSERT_ID();
@@ -35,7 +35,7 @@ VALUES
#set($count = $enumEntity.value.fields.size() - 1)
#foreach($index in [0..$count])
#set($sort = $index * 10 + 10)
(@TMP_KEY_ID, '$enumEntity.value.keyName', '$enumEntity.value.values.get($index)', '$enumEntity.value.labels.get($index)', #if($enumEntity.value.extraJson.size() > $index)'$enumEntity.value.extraJson.get($index)'#else'{}'#end, $sort, now(), now(), '1', '1', 0)#if($foreach.hasNext),#else;#end
(@TMP_KEY_ID, '$enumEntity.value.keyName', '$enumEntity.value.values.get($index)', '$enumEntity.value.labels.get($index)', #if($enumEntity.value.extraJson.size() > $index)'$enumEntity.value.extraJson.get($index)'#else'{}'#end, $sort, now(), now(), 'admin', 'admin', 0)#if($foreach.hasNext),#else;#end
#end
#end

View File

@@ -4,7 +4,7 @@
INSERT INTO system_menu
(parent_id, name, type, sort, visible, status, cache, component, creator, updater, deleted)
VALUES
(0, '${table.comment}管理', 1, 10, 1, 1, 1, '${vue.moduleEntityFirstLower}Module', '1', '1', 0);
(0, '${table.comment}管理', 1, 10, 1, 1, 1, '${vue.moduleEntityFirstLower}Module', 'admin', 'admin', 0);
-- 设置临时父菜单id
SELECT @TMP_PARENT_ID:=LAST_INSERT_ID();
@@ -13,7 +13,7 @@ SELECT @TMP_PARENT_ID:=LAST_INSERT_ID();
INSERT INTO system_menu
(parent_id, name, type, sort, visible, status, cache, component, creator, updater, deleted)
VALUES
(@TMP_PARENT_ID, '$table.comment', 2, 10, 1, 1, 1, '$vue.featureEntityFirstLower', '1', '1', 0);
(@TMP_PARENT_ID, '$table.comment', 2, 10, 1, 1, 1, '$vue.featureEntityFirstLower', 'admin', 'admin', 0);
-- 设置临时子菜单id
SELECT @TMP_SUB_ID:=LAST_INSERT_ID();
@@ -22,7 +22,7 @@ SELECT @TMP_SUB_ID:=LAST_INSERT_ID();
INSERT INTO system_menu
(parent_id, name, permission, type, sort, creator, updater, deleted)
VALUES
(@TMP_SUB_ID, '查询$table.comment', '${package.ModuleName}:${typeHyphen}:query', 3, 10, '1', '1', 0),
(@TMP_SUB_ID, '创建$table.comment', '${package.ModuleName}:${typeHyphen}:create', 3, 20, '1', '1', 0),
(@TMP_SUB_ID, '修改$table.comment', '${package.ModuleName}:${typeHyphen}:update', 3, 30, '1', '1', 0),
(@TMP_SUB_ID, '删除$table.comment', '${package.ModuleName}:${typeHyphen}:delete', 3, 40, '1', '1', 0);
(@TMP_SUB_ID, '查询$table.comment', '${package.ModuleName}:${typeHyphen}:query', 3, 10, 'admin', 'admin', 0),
(@TMP_SUB_ID, '创建$table.comment', '${package.ModuleName}:${typeHyphen}:create', 3, 20, 'admin', 'admin', 0),
(@TMP_SUB_ID, '修改$table.comment', '${package.ModuleName}:${typeHyphen}:update', 3, 30, 'admin', 'admin', 0),
(@TMP_SUB_ID, '删除$table.comment', '${package.ModuleName}:${typeHyphen}:delete', 3, 40, 'admin', 'admin', 0);

View File

@@ -1,5 +1,5 @@
import type { DataGrid, Pagination } from '@/types/global';
import type { TableData } from '@arco-design/web-vue/es/table/interface';
import type { TableData } from '@arco-design/web-vue';
import type { DataGrid, OrderDirection, Pagination } from '@/types/global';
import axios from 'axios';
import qs from 'query-string';
@@ -32,7 +32,7 @@ export interface ${vue.featureEntity}UpdateRequest extends ${vue.featureEntity}C
/**
* ${table.comment}查询请求
*/
export interface ${vue.featureEntity}QueryRequest extends Pagination {
export interface ${vue.featureEntity}QueryRequest extends Pagination, OrderDirection {
searchValue?: string;
#foreach($field in ${table.fields})
#if("$field.propertyType" == "String" || "$field.propertyType" == "Date")

View File

@@ -8,7 +8,7 @@ const $vue.moduleConst: AppRouteRecordRaw = {
children: [
{
name: '$vue.featureEntityFirstLower',
path: '/$vue.feature',
path: '/$vue.module/$vue.feature',
component: () => import('@/views/$vue.module/$vue.feature/index.vue'),
},
],

View File

@@ -3,12 +3,14 @@
search-input-placeholder="输入搜索值"
:create-card-position="false"
:loading="loading"
:field-config="fieldConfig"
:field-config="cardFieldConfig"
:list="list"
:pagination="pagination"
:card-layout-cols="cardColLayout"
:filter-count="filterCount"
:add-permission="['${package.ModuleName}:${typeHyphen}:create']"
:query-order="queryOrder"
:fields-hook="fieldsHook"
@add="emits('openAdd')"
@reset="reset"
@search="fetchCardData"
@@ -74,16 +76,12 @@
<!-- 修改 -->
<a-doption v-permission="['${package.ModuleName}:${typeHyphen}:update']"
@click="emits('openUpdate', record)">
<span class="more-doption normal">
<icon-edit /> 修改
</span>
<span class="more-doption normal">修改</span>
</a-doption>
<!-- 删除 -->
<a-doption v-permission="['${package.ModuleName}:${typeHyphen}:delete']"
@click="deleteRow(record.id)">
<span class="more-doption error">
<icon-delete /> 删除
</span>
<span class="more-doption error">删除</span>
</a-doption>
</template>
</a-dropdown>
@@ -94,17 +92,13 @@
<!-- 修改 -->
<a-doption v-permission="['${package.ModuleName}:${typeHyphen}:update']"
@click="emits('openUpdate', record)">
<span class="more-doption normal">
<icon-edit /> 修改
</span>
<span class="more-doption normal">修改</span>
</a-doption>
<!-- 删除 -->
<a-doption v-permission="['${package.ModuleName}:${typeHyphen}:delete']"
class="span-red"
@click="deleteRow(record.id)">
<span class="more-doption error">
<icon-delete /> 删除
</span>
<span class="more-doption error">删除</span>
</a-doption>
</template>
</card-list>
@@ -118,26 +112,29 @@
<script lang="ts" setup>
import type { ${vue.featureEntity}QueryRequest, ${vue.featureEntity}QueryResponse } from '@/api/${vue.module}/${vue.feature}';
import { useCardPagination, useCardColLayout } from '@/hooks/card';
import { useCardPagination, useCardColLayout, useCardFieldConfig } from '@/hooks/card';
import { computed, reactive, ref, onMounted } from 'vue';
import useLoading from '@/hooks/loading';
import { objectTruthKeyCount, resetObject } from '@/utils';
import fieldConfig from '../types/card.fields';
#if($dictMap.entrySet().size() > 0)
import { #foreach($entry in ${dictMap.entrySet()})${entry.value.keyField}#if($foreach.hasNext), #end#end } from '../types/const';
import { TableName, #foreach($entry in ${dictMap.entrySet()})${entry.value.keyField}#if($foreach.hasNext), #end#end } from '../types/const';
#else
import {} from '../types/const';
import { TableName } from '../types/const';
#end
import { delete${vue.featureEntity}, get${vue.featureEntity}Page } from '@/api/${vue.module}/${vue.feature}';
import { Message, Modal } from '@arco-design/web-vue';
#if($dictMap.entrySet().size() > 0)
import { useDictStore } from '@/store';
#end
import { useQueryOrder, ASC } from '@/hooks/query-order';
const emits = defineEmits(['openAdd', 'openUpdate']);
const cardColLayout = useCardColLayout();
const pagination = useCardPagination();
const queryOrder = useQueryOrder(TableName, ASC);
const { cardFieldConfig, fieldsHook } = useCardFieldConfig(TableName, fieldConfig);
const { loading, setLoading } = useLoading();
#if($dictMap.entrySet().size() > 0)
const { toOptions, getDictValue } = useDictStore();
@@ -198,7 +195,7 @@
const doFetchCardData = async (request: ${vue.featureEntity}QueryRequest) => {
try {
setLoading(true);
const { data } = await get${vue.featureEntity}Page(request);
const { data } = await get${vue.featureEntity}Page(queryOrder.markOrderly(request));
list.value = data.rows;
pagination.total = data.total;
pagination.current = request.page;

View File

@@ -75,6 +75,11 @@
</a-button>
</a-popconfirm>
#end
<!-- 调整 -->
<table-adjust :columns="columns"
:columns-hook="columnsHook"
:query-order="queryOrder"
@query="fetchTableData" />
</a-space>
</div>
</template>
@@ -87,7 +92,7 @@
#end
ref="tableRef"
:loading="loading"
:columns="columns"
:columns="tableColumns"
#if($vue.enableRowSelection)
:row-selection="rowSelection"
#end
@@ -146,25 +151,29 @@
import useLoading from '@/hooks/loading';
import columns from '../types/table.columns';
#if($dictMap.entrySet().size() > 0)
import { #foreach($entry in ${dictMap.entrySet()})${entry.value.keyField}#if($foreach.hasNext), #end#end } from '../types/const';
import { TableName, #foreach($entry in ${dictMap.entrySet()})${entry.value.keyField}#if($foreach.hasNext), #end#end } from '../types/const';
#else
import {} from '../types/const';
import { TableName } from '../types/const';
#end
#if($vue.enableRowSelection)
import { useTablePagination, useRowSelection } from '@/hooks/table';
import { useTablePagination, useRowSelection, useTableColumns } from '@/hooks/table';
#else
import { useTablePagination } from '@/hooks/table';
import { useTablePagination, useTableColumns } from '@/hooks/table';
#end
#if($dictMap.entrySet().size() > 0)
import { useDictStore } from '@/store';
#end
import { useQueryOrder, ASC } from '@/hooks/query-order';
import TableAdjust from '@/components/app/table-adjust/index.vue';
const emits = defineEmits(['openAdd', 'openUpdate']);
const pagination = useTablePagination();
#if($vue.enableRowSelection)
const rowSelection = useRowSelection();
#end
const pagination = useTablePagination();
const queryOrder = useQueryOrder(TableName, ASC);
const { tableColumns, columnsHook } = useTableColumns(TableName, columns);
const { loading, setLoading } = useLoading();
#if($dictMap.entrySet().size() > 0)
const { toOptions, getDictValue } = useDictStore();
@@ -227,7 +236,7 @@
const doFetchTableData = async (request: ${vue.featureEntity}QueryRequest) => {
try {
setLoading(true);
const { data } = await get${vue.featureEntity}Page(request);
const { data } = await get${vue.featureEntity}Page(queryOrder.markOrderly(request));
tableRenderData.value = data.rows;
pagination.total = data.total;
pagination.current = request.page;

View File

@@ -3,13 +3,14 @@ import { dateFormat } from '@/utils';
const fieldConfig = {
rowGap: '10px',
labelSpan: 8,
labelSpan: 6,
minHeight: '22px',
fields: [
{
label: 'id',
dataIndex: 'id',
slotName: 'id',
default: true,
}, #foreach($field in ${table.fields})#if("$!field.propertyName" != "id"){
label: '${field.comment}',
dataIndex: '${field.propertyName}',
@@ -21,6 +22,7 @@ const fieldConfig = {
return record.${field.propertyName} && dateFormat(new Date(record.${field.propertyName}));
},
#end
default: true,
}, #end#end{
label: '创建时间',
dataIndex: 'createTime',

View File

@@ -1,3 +1,5 @@
export const TABLE_NAME = '$table.name';
#if($dictMap.entrySet().size() > 0)
#foreach($enumEntity in $dictMap.entrySet())
// $enumEntity.value.comment

View File

@@ -1,4 +1,4 @@
import type { TableColumnData } from '@arco-design/web-vue/es/table/interface';
import type { TableColumnData } from '@arco-design/web-vue';
import { dateFormat } from '@/utils';
const columns = [
@@ -9,6 +9,7 @@ const columns = [
width: 68,
align: 'left',
fixed: 'left',
default: true,
}, #foreach($field in ${table.fields})#if("$!field.propertyName" != "id"){
title: '${field.comment}',
dataIndex: '${field.propertyName}',
@@ -24,6 +25,7 @@ const columns = [
return record.${field.propertyName} && dateFormat(new Date(record.${field.propertyName}));
},
#end
default: true,
}, #end#end{
title: '创建时间',
dataIndex: 'createTime',

View File

@@ -45,4 +45,9 @@ public class SecurityHolderDelegate implements SecurityHolder {
return SecurityUtils.getLoginUserId();
}
@Override
public String getLoginUsername() {
return SecurityUtils.getLoginUsername();
}
}

View File

@@ -38,7 +38,27 @@ public class StaticResourceAuthorizeRequestsCustomizer extends AuthorizeRequests
@Override
public void customize(ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry registry) {
// 静态资源可匿名访问
registry.antMatchers(HttpMethod.GET, "/*.html", "/**/*.html", "/**/*.css", "/**/*.js").permitAll();
registry.antMatchers(HttpMethod.GET,
"/*.html",
"/*.css",
"/*.js",
"/*.gz",
"/*.ico",
"/*.jpg",
"/*.png",
"/*.svg",
"/*.json",
"/*.webmanifest",
"/**/*.html",
"/**/*.css",
"/**/*.js",
"/**/*.gz",
"/**/*.ico",
"/**/*.jpg",
"/**/*.png",
"/**/*.svg",
"/**/*.json"
).permitAll();
}
}

View File

@@ -71,6 +71,11 @@ public class OrionMockBeanTestConfiguration {
public Long getLoginUserId() {
return DEFAULT.getId();
}
@Override
public String getLoginUsername() {
return DEFAULT.getUsername();
}
};
}

View File

@@ -24,6 +24,7 @@ package org.dromara.visor.framework.test.core.base;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure;
import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration;
import org.dromara.visor.common.configuration.SpringConfiguration;
import org.dromara.visor.framework.datasource.configuration.OrionDataSourceAutoConfiguration;
import org.dromara.visor.framework.mybatis.configuration.OrionMybatisAutoConfiguration;
import org.dromara.visor.framework.redis.configuration.OrionRedisAutoConfiguration;
@@ -57,6 +58,8 @@ import org.springframework.transaction.annotation.Transactional;
public class BaseUnitTest {
@Import({
// spring
SpringConfiguration.class,
// mock
OrionMockBeanTestConfiguration.class,
OrionMockRedisTestConfiguration.class,
@@ -74,7 +77,6 @@ public class BaseUnitTest {
RedisAutoConfiguration.class,
RedissonAutoConfiguration.class,
})
// TODO
public static class Application {
}

View File

@@ -42,7 +42,11 @@ import java.util.Optional;
* @version 1.0.0
* @since 2023/6/19 16:55
*/
@SpringBootApplication(scanBasePackages = {"org.dromara.visor.launch", "org.dromara.visor.module"})
@SpringBootApplication(scanBasePackages = {
"org.dromara.visor.launch",
"org.dromara.visor.common",
"org.dromara.visor.module"
})
public class LaunchApplication {
public static void main(String[] args) {

View File

@@ -1,18 +1,18 @@
spring:
datasource:
druid:
url: jdbc:mysql://127.0.0.1:3306/orion_visor?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=Asia/Shanghai&autoReconnect=true
username: root
password: Data@123456
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
username: ${MYSQL_USER:root}
password: ${MYSQL_PASSWORD:Data@123456}
initial-size: 0
min-idle: 1
max-active: 5
stat-view-servlet:
enabled: false
redis:
host: 127.0.0.1
port: 6379
password: Data@123456
host: ${REDIS_HOST:127.0.0.1}
port: ${REDIS_PORT:6379}
password: ${REDIS_PASSWORD:Data@123456}
redisson:
threads: 2
netty-threads: 2

View File

@@ -39,19 +39,19 @@ import java.util.function.Function;
*/
public class ReplaceVersion {
private static final String TARGET_VERSION = "2.3.2";
private static final String TARGET_VERSION = "2.3.5";
private static final String REPLACE_VERSION = "2.3.3";
private static final String REPLACE_VERSION = "2.3.6";
private static final String PATH = new File("").getAbsolutePath();
private static final String[] DOCKER_FILES = new String[]{
"docker/push.sh",
"docker/adminer/build.sh",
"docker/adminer/build.sh",
"docker/mysql/build.sh",
"docker/redis/build.sh",
"docker/service/build.sh",
"docker/ui/build.sh",
"docker-compose.yml",
"docker-compose-testing.yml"
};

View File

@@ -82,6 +82,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-test</artifactId>
</dependency>
</dependencies>
</project>

View File

@@ -63,7 +63,7 @@ public class AssetAuthorizedDataServiceController {
@IgnoreLog(IgnoreLogMode.RET)
@GetMapping("/current-host")
@Operation(summary = "查询当前用户已授权的主机")
public AuthorizedHostWrapperVO getCurrentAuthorizedHost(@RequestParam("type") String type) {
public AuthorizedHostWrapperVO getCurrentAuthorizedHost(@RequestParam(value = "type", required = false) String type) {
return assetAuthorizedDataService.getUserAuthorizedHost(SecurityUtils.getLoginUserId(), type);
}

View File

@@ -85,7 +85,7 @@ public class HostGroupController {
@OperatorLog(HostGroupOperatorType.RENAME)
@PutMapping("/rename")
@Operation(summary = "修改名称")
@PreAuthorize("@ss.hasPermission('asset:host-group:update')")
@PreAuthorize("@ss.hasAnyPermission('asset:host-group:update', 'asset:host:query')")
public Integer updateHostGroupName(@Validated @RequestBody DataGroupRenameDTO request) {
return hostGroupService.updateHostGroupName(request);
}
@@ -112,7 +112,7 @@ public class HostGroupController {
@GetMapping("/rel-list")
@Operation(summary = "查询分组内主机")
@Parameter(name = "groupId", description = "groupId", required = true)
@PreAuthorize("@ss.hasPermission('asset:host-group:update')")
@PreAuthorize("@ss.hasAnyPermission('asset:host-group:update', 'asset:host:query')")
public Set<Long> queryHostGroupRel(@RequestParam("groupId") Long groupId) {
return hostGroupService.queryHostGroupRel(groupId);
}

View File

@@ -49,7 +49,17 @@ public interface TerminalConnectLogDAO extends IMapper<TerminalConnectLogDO> {
* @param limit limit
* @return hostId
*/
List<Long> selectLatestConnectHostId(@Param("userId") Long userId, @Param("type") String type, @Param("limit") Integer limit);
default List<Long> selectLatestConnectHostId(Long userId, String type, Integer limit) {
return this.of()
.createWrapper(true)
.select(TerminalConnectLogDO::getHostId)
.eq(TerminalConnectLogDO::getUserId, userId)
.eq(TerminalConnectLogDO::getType, type)
.orderByDesc(TerminalConnectLogDO::getId)
.then()
.limit(limit)
.list(TerminalConnectLogDO::getHostId);
}
/**
* 查询终端连接日志用户数量

View File

@@ -22,12 +22,14 @@
*/
package org.dromara.visor.module.asset.entity.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
/**
@@ -38,7 +40,7 @@ import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
* @since 2024-1-22 15:28
*/
@Data
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@@ -48,10 +50,6 @@ public class CommandSnippetDO extends BaseDO {
private static final long serialVersionUID = 1L;
@Schema(description = "id")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@Schema(description = "用户id")
@TableField("user_id")
private Long userId;

View File

@@ -22,12 +22,14 @@
*/
package org.dromara.visor.module.asset.entity.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
import java.util.Date;
@@ -40,7 +42,7 @@ import java.util.Date;
* @since 2024-3-11 14:05
*/
@Data
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@@ -50,10 +52,6 @@ public class ExecHostLogDO extends BaseDO {
private static final long serialVersionUID = 1L;
@Schema(description = "id")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@Schema(description = "执行日志id")
@TableField("log_id")
private Long logId;

View File

@@ -22,12 +22,14 @@
*/
package org.dromara.visor.module.asset.entity.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
/**
@@ -38,7 +40,7 @@ import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
* @since 2024-3-28 12:03
*/
@Data
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@@ -48,10 +50,6 @@ public class ExecJobDO extends BaseDO {
private static final long serialVersionUID = 1L;
@Schema(description = "id")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@Schema(description = "任务名称")
@TableField("name")
private String name;

View File

@@ -22,12 +22,14 @@
*/
package org.dromara.visor.module.asset.entity.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
/**
@@ -38,7 +40,7 @@ import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
* @since 2024-3-28 12:03
*/
@Data
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@@ -48,10 +50,6 @@ public class ExecJobHostDO extends BaseDO {
private static final long serialVersionUID = 1L;
@Schema(description = "id")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@Schema(description = "任务id")
@TableField("job_id")
private Long jobId;

View File

@@ -22,12 +22,14 @@
*/
package org.dromara.visor.module.asset.entity.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
import java.util.Date;
@@ -40,7 +42,7 @@ import java.util.Date;
* @since 2024-3-11 11:31
*/
@Data
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@@ -50,10 +52,6 @@ public class ExecLogDO extends BaseDO {
private static final long serialVersionUID = 1L;
@Schema(description = "id")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@Schema(description = "执行用户id")
@TableField("user_id")
private Long userId;

View File

@@ -22,12 +22,14 @@
*/
package org.dromara.visor.module.asset.entity.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
/**
@@ -38,7 +40,7 @@ import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
* @since 2024-3-7 18:08
*/
@Data
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@@ -48,10 +50,6 @@ public class ExecTemplateDO extends BaseDO {
private static final long serialVersionUID = 1L;
@Schema(description = "id")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@Schema(description = "名称")
@TableField("name")
private String name;

View File

@@ -22,12 +22,14 @@
*/
package org.dromara.visor.module.asset.entity.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
/**
@@ -38,7 +40,7 @@ import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
* @since 2024-4-22 12:13
*/
@Data
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@@ -48,10 +50,6 @@ public class ExecTemplateHostDO extends BaseDO {
private static final long serialVersionUID = 1L;
@Schema(description = "id")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@Schema(description = "模板id")
@TableField("template_id")
private Long templateId;

View File

@@ -22,12 +22,14 @@
*/
package org.dromara.visor.module.asset.entity.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
/**
@@ -38,7 +40,7 @@ import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
* @since 2023-9-11 14:16
*/
@Data
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@@ -48,10 +50,6 @@ public class HostDO extends BaseDO {
private static final long serialVersionUID = 1L;
@Schema(description = "id")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@Schema(description = "主机类型")
@TableField("type")
private String type;

View File

@@ -22,12 +22,14 @@
*/
package org.dromara.visor.module.asset.entity.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
/**
@@ -38,7 +40,7 @@ import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
* @since 2023-9-20 11:55
*/
@Data
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@@ -48,10 +50,6 @@ public class HostIdentityDO extends BaseDO {
private static final long serialVersionUID = 1L;
@Schema(description = "id")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@Schema(description = "名称")
@TableField("name")
private String name;

View File

@@ -22,12 +22,14 @@
*/
package org.dromara.visor.module.asset.entity.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
/**
@@ -38,7 +40,7 @@ import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
* @since 2023-9-20 11:55
*/
@Data
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@@ -48,10 +50,6 @@ public class HostKeyDO extends BaseDO {
private static final long serialVersionUID = 1L;
@Schema(description = "id")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@Schema(description = "名称")
@TableField("name")
private String name;

View File

@@ -22,12 +22,14 @@
*/
package org.dromara.visor.module.asset.entity.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
/**
@@ -38,7 +40,7 @@ import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
* @since 2024-4-23 23:15
*/
@Data
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@@ -48,10 +50,6 @@ public class PathBookmarkDO extends BaseDO {
private static final long serialVersionUID = 1L;
@Schema(description = "id")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@Schema(description = "用户id")
@TableField("user_id")
private Long userId;

View File

@@ -22,12 +22,14 @@
*/
package org.dromara.visor.module.asset.entity.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
import java.util.Date;
@@ -40,7 +42,7 @@ import java.util.Date;
* @since 2023-12-26 22:09
*/
@Data
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@@ -50,10 +52,6 @@ public class TerminalConnectLogDO extends BaseDO {
private static final long serialVersionUID = 1L;
@Schema(description = "id")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@Schema(description = "用户id")
@TableField("user_id")
private Long userId;

View File

@@ -22,12 +22,14 @@
*/
package org.dromara.visor.module.asset.entity.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
import java.util.Date;
@@ -40,7 +42,7 @@ import java.util.Date;
* @since 2024-5-7 22:15
*/
@Data
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@@ -50,10 +52,6 @@ public class UploadTaskDO extends BaseDO {
private static final long serialVersionUID = 1L;
@Schema(description = "id")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@Schema(description = "用户id")
@TableField("user_id")
private Long userId;

View File

@@ -22,12 +22,14 @@
*/
package org.dromara.visor.module.asset.entity.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
import java.util.Date;
@@ -40,7 +42,7 @@ import java.util.Date;
* @since 2024-5-8 10:31
*/
@Data
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@@ -50,10 +52,6 @@ public class UploadTaskFileDO extends BaseDO {
private static final long serialVersionUID = 1L;
@Schema(description = "id")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@Schema(description = "用户id")
@TableField("task_id")
private Long taskId;

View File

@@ -24,7 +24,7 @@ package org.dromara.visor.module.asset.entity.request.exec;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import org.dromara.visor.common.entity.PageRequest;
import org.dromara.visor.common.entity.BaseQueryRequest;
import javax.validation.constraints.Size;
@@ -41,7 +41,7 @@ import javax.validation.constraints.Size;
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Schema(name = "ExecJobQueryRequest", description = "计划任务 查询请求对象")
public class ExecJobQueryRequest extends PageRequest {
public class ExecJobQueryRequest extends BaseQueryRequest {
@Schema(description = "id")
private Long id;

View File

@@ -24,7 +24,7 @@ package org.dromara.visor.module.asset.entity.request.exec;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import org.dromara.visor.common.entity.PageRequest;
import org.dromara.visor.common.entity.BaseQueryRequest;
import javax.validation.constraints.NotNull;
@@ -41,7 +41,7 @@ import javax.validation.constraints.NotNull;
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Schema(name = "ExecJobUpdateExecUserRequest", description = "修改计划任务执行用户 查询请求对象")
public class ExecJobUpdateExecUserRequest extends PageRequest {
public class ExecJobUpdateExecUserRequest extends BaseQueryRequest {
@NotNull
@Schema(description = "id")

View File

@@ -25,7 +25,7 @@ package org.dromara.visor.module.asset.entity.request.exec;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import org.dromara.visor.common.entity.PageRequest;
import org.dromara.visor.common.entity.BaseQueryRequest;
import javax.validation.constraints.Size;
import java.util.Date;
@@ -44,7 +44,7 @@ import java.util.List;
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Schema(name = "ExecLogQueryRequest", description = "批量执行日志 查询请求对象")
public class ExecLogQueryRequest extends PageRequest {
public class ExecLogQueryRequest extends BaseQueryRequest {
@Schema(description = "id")
private Long id;

View File

@@ -24,7 +24,7 @@ package org.dromara.visor.module.asset.entity.request.exec;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import org.dromara.visor.common.entity.PageRequest;
import org.dromara.visor.common.entity.BaseQueryRequest;
import javax.validation.constraints.Size;
@@ -41,7 +41,7 @@ import javax.validation.constraints.Size;
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Schema(name = "ExecTemplateQueryRequest", description = "执行模板 查询请求对象")
public class ExecTemplateQueryRequest extends PageRequest {
public class ExecTemplateQueryRequest extends BaseQueryRequest {
@Schema(description = "id")
private Long id;

View File

@@ -28,10 +28,7 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import javax.validation.constraints.*;
import java.io.Serializable;
import java.util.List;
@@ -78,6 +75,7 @@ public class HostCreateRequest implements Serializable {
@Schema(description = "主机端口")
private Integer port;
@NotEmpty
@Schema(description = "主机分组")
private List<Long> groupIdList;

View File

@@ -24,7 +24,7 @@ package org.dromara.visor.module.asset.entity.request.host;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import org.dromara.visor.common.entity.PageRequest;
import org.dromara.visor.common.entity.BaseQueryRequest;
import javax.validation.constraints.Size;
@@ -41,7 +41,7 @@ import javax.validation.constraints.Size;
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Schema(name = "HostIdentityQueryRequest", description = "主机身份 查询请求对象")
public class HostIdentityQueryRequest extends PageRequest {
public class HostIdentityQueryRequest extends BaseQueryRequest {
@Schema(description = "搜索")
private String searchValue;

View File

@@ -24,7 +24,7 @@ package org.dromara.visor.module.asset.entity.request.host;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import org.dromara.visor.common.entity.PageRequest;
import org.dromara.visor.common.entity.BaseQueryRequest;
import javax.validation.constraints.Size;
@@ -41,7 +41,7 @@ import javax.validation.constraints.Size;
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Schema(name = "HostKeyQueryRequest", description = "主机密钥 查询请求对象")
public class HostKeyQueryRequest extends PageRequest {
public class HostKeyQueryRequest extends BaseQueryRequest {
@Schema(description = "搜索")
private String searchValue;

View File

@@ -24,7 +24,7 @@ package org.dromara.visor.module.asset.entity.request.host;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import org.dromara.visor.common.entity.PageRequest;
import org.dromara.visor.common.entity.BaseQueryRequest;
import javax.validation.constraints.Size;
import java.util.List;
@@ -42,7 +42,7 @@ import java.util.List;
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Schema(name = "HostQueryRequest", description = "主机 查询请求对象")
public class HostQueryRequest extends PageRequest {
public class HostQueryRequest extends BaseQueryRequest {
@Schema(description = "搜索")
private String searchValue;

View File

@@ -76,6 +76,7 @@ public class HostUpdateRequest implements Serializable {
@Schema(description = "主机端口")
private Integer port;
@NotEmpty
@Schema(description = "主机分组")
private List<Long> groupIdList;

View File

@@ -25,7 +25,7 @@ package org.dromara.visor.module.asset.entity.request.host;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import org.dromara.visor.common.entity.PageRequest;
import org.dromara.visor.common.entity.BaseQueryRequest;
import org.dromara.visor.common.validator.group.Id;
import javax.validation.constraints.NotNull;
@@ -46,7 +46,7 @@ import java.util.List;
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Schema(name = "TerminalConnectLogQueryRequest", description = "终端连接日志 查询请求对象")
public class TerminalConnectLogQueryRequest extends PageRequest {
public class TerminalConnectLogQueryRequest extends BaseQueryRequest {
@NotNull(groups = Id.class)
@Schema(description = "id")

View File

@@ -25,7 +25,7 @@ package org.dromara.visor.module.asset.entity.request.host;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import org.dromara.visor.common.entity.PageRequest;
import org.dromara.visor.common.entity.BaseQueryRequest;
import javax.validation.constraints.Size;
import java.util.Date;
@@ -43,7 +43,7 @@ import java.util.Date;
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Schema(name = "TerminalSftpLogQueryRequest", description = "SFTP 操作日志 查询请求对象")
public class TerminalSftpLogQueryRequest extends PageRequest {
public class TerminalSftpLogQueryRequest extends BaseQueryRequest {
@Schema(description = "用户id")
private Long userId;

View File

@@ -25,7 +25,7 @@ package org.dromara.visor.module.asset.entity.request.upload;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import org.dromara.visor.common.entity.PageRequest;
import org.dromara.visor.common.entity.BaseQueryRequest;
import javax.validation.constraints.Size;
import java.util.Date;
@@ -43,7 +43,7 @@ import java.util.Date;
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Schema(name = "UploadTaskQueryRequest", description = "上传任务 查询请求对象")
public class UploadTaskQueryRequest extends PageRequest {
public class UploadTaskQueryRequest extends BaseQueryRequest {
@Schema(description = "id")
private Long id;

View File

@@ -29,7 +29,6 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* 计划任务主机 视图响应对象
@@ -56,16 +55,4 @@ public class ExecJobHostVO implements Serializable {
@Schema(description = "主机id")
private Long hostId;
@Schema(description = "创建时间")
private Date createTime;
@Schema(description = "修改时间")
private Date updateTime;
@Schema(description = "创建人")
private String creator;
@Schema(description = "修改人")
private String updater;
}

View File

@@ -93,6 +93,12 @@ public class ExecJobVO implements Serializable {
@Schema(description = "修改时间")
private Date updateTime;
@Schema(description = "创建人")
private String creator;
@Schema(description = "修改人")
private String updater;
@Schema(description = "执行主机")
private List<Long> hostIdList;

View File

@@ -31,10 +31,10 @@ package org.dromara.visor.module.asset.handler.host.jsch;
*/
public interface SessionMessage {
String AUTHENTICATION_FAILURE = "authentication failed. please check the configuration. - {}";
String AUTHENTICATION_FAILURE = "身份认证失败. {}";
String SERVER_UNREACHABLE = "remote server unreachable. please check the configuration. - {}";
String SERVER_UNREACHABLE = "无法连接至服务器. {}";
String CONNECTION_TIMEOUT = "connection timeout. - {}";
String CONNECTION_TIMEOUT = "连接服务器超时. {}";
}

View File

@@ -135,13 +135,6 @@ public interface HostService {
*/
void deleteHostRelByIdListAsync(List<Long> idList);
/**
* 获取当前更新配置的 hostId
*
* @return hostId
*/
Long getCurrentUpdateConfigHostId();
/**
* 清除缓存
*/

View File

@@ -246,8 +246,10 @@ public class ExecJobServiceImpl implements ExecJobService {
// 条件
LambdaQueryWrapper<ExecJobDO> wrapper = this.buildQueryWrapper(request);
// 查询任务
DataGrid<ExecJobVO> dataGrid = execJobDAO.of(wrapper)
DataGrid<ExecJobVO> dataGrid = execJobDAO.of()
.wrapper(wrapper)
.page(request)
.order(request, ExecJobDO::getId)
.dataGrid(ExecJobConvert.MAPPER::to);
if (!Booleans.isTrue(request.getQueryRecentLog())) {
return dataGrid;
@@ -409,8 +411,7 @@ public class ExecJobServiceImpl implements ExecJobService {
.like(ExecJobDO::getName, request.getName())
.like(ExecJobDO::getCommand, request.getCommand())
.eq(ExecJobDO::getStatus, request.getStatus())
.eq(ExecJobDO::getExecUserId, request.getExecUserId())
.orderByDesc(ExecJobDO::getId);
.eq(ExecJobDO::getExecUserId, request.getExecUserId());
}
/**

View File

@@ -109,11 +109,12 @@ public class ExecLogServiceImpl implements ExecLogService {
@Override
public DataGrid<ExecLogVO> getExecLogPage(ExecLogQueryRequest request) {
// 条件
LambdaQueryWrapper<ExecLogDO> wrapper = this.buildQueryWrapper(request)
.orderByDesc(ExecLogDO::getId);
LambdaQueryWrapper<ExecLogDO> wrapper = this.buildQueryWrapper(request);
// 查询
return execLogDAO.of(wrapper)
return execLogDAO.of()
.wrapper(wrapper)
.page(request)
.order(request, ExecLogDO::getId)
.dataGrid(ExecLogConvert.MAPPER::to);
}

View File

@@ -146,8 +146,10 @@ public class ExecTemplateServiceImpl implements ExecTemplateService {
// 条件
LambdaQueryWrapper<ExecTemplateDO> wrapper = this.buildQueryWrapper(request);
// 查询模板
return execTemplateDAO.of(wrapper)
return execTemplateDAO.of()
.wrapper(wrapper)
.page(request)
.order(request, ExecTemplateDO::getId)
.dataGrid(ExecTemplateConvert.MAPPER::to);
}
@@ -204,8 +206,7 @@ public class ExecTemplateServiceImpl implements ExecTemplateService {
return execTemplateDAO.wrapper()
.eq(ExecTemplateDO::getId, request.getId())
.like(ExecTemplateDO::getName, request.getName())
.like(ExecTemplateDO::getCommand, request.getCommand())
.orderByDesc(ExecTemplateDO::getId);
.like(ExecTemplateDO::getCommand, request.getCommand());
}
}

View File

@@ -182,8 +182,10 @@ public class HostIdentityServiceImpl implements HostIdentityService {
// 条件
LambdaQueryWrapper<HostIdentityDO> wrapper = this.buildQueryWrapper(request);
// 查询
DataGrid<HostIdentityVO> dataGrid = hostIdentityDAO.of(wrapper)
DataGrid<HostIdentityVO> dataGrid = hostIdentityDAO.of()
.wrapper(wrapper)
.page(request)
.order(request, HostIdentityDO::getId)
.dataGrid(HostIdentityConvert.MAPPER::to);
if (dataGrid.isEmpty()) {
return dataGrid;

View File

@@ -185,8 +185,10 @@ public class HostKeyServiceImpl implements HostKeyService {
// 条件
LambdaQueryWrapper<HostKeyDO> wrapper = this.buildQueryWrapper(request);
// 查询
DataGrid<HostKeyVO> dataGrid = hostKeyDAO.of(wrapper)
DataGrid<HostKeyVO> dataGrid = hostKeyDAO.of()
.wrapper(wrapper)
.page(request)
.order(request, HostKeyDO::getId)
.dataGrid(HostKeyConvert.MAPPER::to);
dataGrid.forEach(this::toSafe);
return dataGrid;

View File

@@ -83,8 +83,6 @@ import java.util.stream.Collectors;
@Service
public class HostServiceImpl implements HostService {
private static final ThreadLocal<Long> CURRENT_UPDATE_CONFIG_ID = new ThreadLocal<>();
@Resource
private HostDAO hostDAO;
@@ -185,30 +183,25 @@ public class HostServiceImpl implements HostService {
OperatorLogs.add(ExtraFieldConst.CONFIG, param);
log.info("HostService-updateHostConfig request: {}", param);
Long id = request.getId();
try {
CURRENT_UPDATE_CONFIG_ID.set(id);
// 查询主机信息
HostDO host = hostDAO.selectById(id);
Valid.notNull(host, ErrorMessage.HOST_ABSENT);
HostTypeEnum type = Valid.valid(HostTypeEnum::of, host.getType());
GenericsDataModel beforeConfig = type.parse(host.getConfig());
GenericsDataModel newConfig = type.parse(request.getConfig());
// 添加日志参数
OperatorLogs.add(OperatorLogs.ID, id);
OperatorLogs.add(OperatorLogs.NAME, host.getName());
// 更新前校验
type.doValid(beforeConfig, newConfig);
// 修改配置
HostDO updateHost = HostDO.builder()
.id(id)
.config(newConfig.serial())
.build();
int effect = hostDAO.updateById(updateHost);
log.info("HostService-updateHostConfig effect: {}", effect);
return effect;
} finally {
CURRENT_UPDATE_CONFIG_ID.remove();
}
// 查询主机信息
HostDO host = hostDAO.selectById(id);
Valid.notNull(host, ErrorMessage.HOST_ABSENT);
HostTypeEnum type = Valid.valid(HostTypeEnum::of, host.getType());
GenericsDataModel beforeConfig = type.parse(host.getConfig());
GenericsDataModel newConfig = type.parse(request.getConfig());
// 添加日志参数
OperatorLogs.add(OperatorLogs.ID, id);
OperatorLogs.add(OperatorLogs.NAME, host.getName());
// 更新前校验
type.doValid(beforeConfig, newConfig);
// 修改配置
HostDO updateHost = HostDO.builder()
.id(id)
.config(newConfig.serial())
.build();
int effect = hostDAO.updateById(updateHost);
log.info("HostService-updateHostConfig effect: {}", effect);
return effect;
}
@Override
@@ -288,11 +281,12 @@ public class HostServiceImpl implements HostService {
// 数量条件
LambdaQueryWrapper<HostDO> countWrapper = wrapper.clone();
// 基础条件
wrapper.select(HostDAO.BASE_COLUMN)
.orderByAsc(HostDO::getId);
wrapper.select(HostDAO.BASE_COLUMN);
// 查询
DataGrid<HostVO> hosts = hostDAO.of(wrapper)
DataGrid<HostVO> hosts = hostDAO.of()
.wrapper(wrapper)
.page(request)
.order(request, HostDO::getId)
.dataGrid(countWrapper, HostConvert.MAPPER::to);
// 查询拓展信息
this.setExtraInfo(request, hosts.getRows());
@@ -348,11 +342,6 @@ public class HostServiceImpl implements HostService {
dataExtraApi.deleteByRelIdList(DataExtraTypeEnum.HOST, idList);
}
@Override
public Long getCurrentUpdateConfigHostId() {
return CURRENT_UPDATE_CONFIG_ID.get();
}
@Override
public void clearCache() {
RedisMaps.scanKeysDelete(HostCacheKeyDefine.HOST_INFO.format("*"));

View File

@@ -92,11 +92,12 @@ public class TerminalConnectLogServiceImpl implements TerminalConnectLogService
@Override
public DataGrid<TerminalConnectLogVO> getTerminalConnectLogPage(TerminalConnectLogQueryRequest request) {
// 条件
LambdaQueryWrapper<TerminalConnectLogDO> wrapper = this.buildQueryWrapper(request)
.orderByDesc(TerminalConnectLogDO::getId);
LambdaQueryWrapper<TerminalConnectLogDO> wrapper = this.buildQueryWrapper(request);
// 查询
return terminalConnectLogDAO.of(wrapper)
return terminalConnectLogDAO.of()
.wrapper(wrapper)
.page(request)
.order(request, TerminalConnectLogDO::getId)
.dataGrid(s -> {
TerminalConnectLogVO vo = TerminalConnectLogConvert.MAPPER.to(s);
vo.setExtra(JSON.parseObject(s.getExtraInfo(), TerminalConnectLogExtraDTO.class));

View File

@@ -48,6 +48,7 @@ import org.dromara.visor.module.asset.enums.HostIdentityTypeEnum;
import org.dromara.visor.module.asset.enums.HostSshAuthTypeEnum;
import org.dromara.visor.module.asset.handler.host.config.model.HostSshConfigModel;
import org.dromara.visor.module.asset.handler.host.extra.model.HostSshExtraModel;
import org.dromara.visor.module.asset.service.AssetAuthorizedDataService;
import org.dromara.visor.module.asset.service.HostConfigService;
import org.dromara.visor.module.asset.service.HostExtraService;
import org.dromara.visor.module.asset.service.TerminalService;
@@ -81,7 +82,7 @@ public class TerminalServiceImpl implements TerminalService {
private HostExtraService hostExtraService;
@Resource
private AssetAuthorizedDataServiceImpl assetAuthorizedDataService;
private AssetAuthorizedDataService assetAuthorizedDataService;
@Resource
private HostDAO hostDAO;

View File

@@ -225,6 +225,7 @@ public class TerminalSftpServiceImpl implements TerminalSftpService {
.build();
query.setPage(request.getPage());
query.setLimit(request.getLimit());
query.setOrder(request.getOrder());
if (Strings.isBlank(type)) {
// 查询全部 SFTP 类型
query.setTypeList(TerminalOperatorType.SFTP_TYPES);

View File

@@ -190,11 +190,12 @@ public class UploadTaskServiceImpl implements UploadTaskService {
@Override
public DataGrid<UploadTaskVO> getUploadTaskPage(UploadTaskQueryRequest request) {
// 条件
LambdaQueryWrapper<UploadTaskDO> wrapper = this.buildQueryWrapper(request)
.orderByDesc(UploadTaskDO::getId);
LambdaQueryWrapper<UploadTaskDO> wrapper = this.buildQueryWrapper(request);
// 查询
return uploadTaskDAO.of(wrapper)
return uploadTaskDAO.of()
.wrapper(wrapper)
.page(request)
.order(request, UploadTaskDO::getId)
.dataGrid(UploadTaskConvert.MAPPER::to);
}

View File

@@ -33,16 +33,6 @@
id, user_id, username, host_id, host_name, host_address, type, session_id, status, start_time, end_time, extra_info, create_time, update_time, deleted
</sql>
<select id="selectLatestConnectHostId" resultType="java.lang.Long">
SELECT host_id
FROM terminal_connect_log
WHERE deleted = 0
AND type = #{type}
AND user_id = #{userId}
ORDER BY id DESC
LIMIT #{limit}
</select>
<select id="selectConnectLogUserCount" resultMap="CountResultMap">
SELECT DATE(create_time) connect_date, COUNT(1) total_count
FROM terminal_connect_log

View File

@@ -24,7 +24,7 @@ package org.dromara.visor.module.infra.entity.dto.operator;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import org.dromara.visor.common.entity.PageRequest;
import org.dromara.visor.common.entity.BaseQueryRequest;
import javax.validation.constraints.Size;
import java.util.Date;
@@ -43,7 +43,7 @@ import java.util.List;
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Schema(name = "OperatorLogQueryDTO", description = "操作日志 查询对象")
public class OperatorLogQueryDTO extends PageRequest {
public class OperatorLogQueryDTO extends BaseQueryRequest {
private static final long serialVersionUID = 1L;

View File

@@ -58,8 +58,9 @@ public class OperatorLogApiImpl implements OperatorLogApi {
LambdaQueryWrapper<OperatorLogDO> wrapper = this.buildQueryWrapper(request);
// 查询
return operatorLogDAO.of()
.page(request)
.wrapper(wrapper)
.page(request)
.order(request, OperatorLogDO::getId)
.dataGrid(OperatorLogProviderConvert.MAPPER::to);
}
@@ -85,8 +86,7 @@ public class OperatorLogApiImpl implements OperatorLogApi {
.eq(OperatorLogDO::getResult, request.getResult())
.like(OperatorLogDO::getExtra, request.getExtra())
.ge(OperatorLogDO::getStartTime, request.getStartTimeStart())
.le(OperatorLogDO::getStartTime, request.getStartTimeEnd())
.orderByDesc(OperatorLogDO::getId);
.le(OperatorLogDO::getStartTime, request.getStartTimeEnd());
}
}

View File

@@ -22,12 +22,14 @@
*/
package org.dromara.visor.module.infra.entity.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
/**
@@ -38,7 +40,7 @@ import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
* @since 2023-12-19 18:05
*/
@Data
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@@ -48,10 +50,6 @@ public class DataExtraDO extends BaseDO {
private static final long serialVersionUID = 1L;
@Schema(description = "id")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@Schema(description = "用户id")
@TableField("user_id")
private Long userId;

View File

@@ -22,12 +22,14 @@
*/
package org.dromara.visor.module.infra.entity.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
/**
@@ -38,7 +40,7 @@ import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
* @since 2023-11-7 18:44
*/
@Data
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@@ -48,10 +50,6 @@ public class DataGroupDO extends BaseDO {
private static final long serialVersionUID = 1L;
@Schema(description = "id")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@Schema(description = "父id")
@TableField("parent_id")
private Long parentId;

View File

@@ -22,12 +22,14 @@
*/
package org.dromara.visor.module.infra.entity.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
/**
@@ -38,7 +40,7 @@ import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
* @since 2023-11-7 18:44
*/
@Data
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@@ -48,10 +50,6 @@ public class DataGroupRelDO extends BaseDO {
private static final long serialVersionUID = 1L;
@Schema(description = "id")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@Schema(description = "组id")
@TableField("group_id")
private Long groupId;

View File

@@ -22,12 +22,14 @@
*/
package org.dromara.visor.module.infra.entity.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
/**
@@ -38,7 +40,7 @@ import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
* @since 2023-11-21 10:32
*/
@Data
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@@ -48,10 +50,6 @@ public class DataPermissionDO extends BaseDO {
private static final long serialVersionUID = 1L;
@Schema(description = "id")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@Schema(description = "用户id")
@TableField("user_id")
private Long userId;

View File

@@ -22,12 +22,14 @@
*/
package org.dromara.visor.module.infra.entity.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
/**
@@ -38,7 +40,7 @@ import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
* @since 2023-10-16 16:33
*/
@Data
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@@ -48,10 +50,6 @@ public class DictKeyDO extends BaseDO {
private static final long serialVersionUID = 1L;
@Schema(description = "id")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@Schema(description = "配置项")
@TableField("key_name")
private String keyName;

View File

@@ -22,12 +22,14 @@
*/
package org.dromara.visor.module.infra.entity.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
/**
@@ -38,7 +40,7 @@ import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
* @since 2023-10-16 16:33
*/
@Data
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@@ -48,10 +50,6 @@ public class DictValueDO extends BaseDO {
private static final long serialVersionUID = 1L;
@Schema(description = "id")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@Schema(description = "配置项id")
@TableField("key_id")
private Long keyId;

View File

@@ -22,12 +22,14 @@
*/
package org.dromara.visor.module.infra.entity.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
/**
@@ -38,7 +40,7 @@ import org.dromara.visor.framework.mybatis.core.domain.BaseDO;
* @since 2023-9-1 10:30
*/
@Data
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@@ -48,10 +50,6 @@ public class FavoriteDO extends BaseDO {
private static final long serialVersionUID = 1L;
@Schema(description = "id")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@Schema(description = "用户id")
@TableField("user_id")
private Long userId;

Some files were not shown because too many files have changed in this diff Show More