From 3b6b514adaa33ddf116b619270d178e9d1ed551f Mon Sep 17 00:00:00 2001 From: Zheng Jie <201507802@qq.com> Date: Tue, 2 Jan 2024 14:38:34 +0800 Subject: [PATCH 01/54] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dtoken=E7=BB=AD=E6=9C=9F?= =?UTF-8?q?=E4=B8=8D=E7=94=9F=E6=95=88=E9=97=AE=E9=A2=98=20close=20https:/?= =?UTF-8?q?/github.com/elunez/eladmin/issues/832?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../me/zhengjie/modules/security/security/TokenProvider.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenProvider.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenProvider.java index d2db83c05..08121ed56 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenProvider.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenProvider.java @@ -103,14 +103,15 @@ public Claims getClaims(String token) { */ public void checkRenewal(String token) { // 判断是否续期token,计算token的过期时间 - long time = redisUtils.getExpire(properties.getOnlineKey() + token) * 1000; + String loginKey = loginKey(token); + long time = redisUtils.getExpire(loginKey) * 1000; Date expireDate = DateUtil.offset(new Date(), DateField.MILLISECOND, (int) time); // 判断当前时间与过期时间的时间差 long differ = expireDate.getTime() - System.currentTimeMillis(); // 如果在续期检查的范围内,则续期 if (differ <= properties.getDetect()) { long renew = time + properties.getRenew(); - redisUtils.expire(properties.getOnlineKey() + token, renew, TimeUnit.MILLISECONDS); + redisUtils.expire(loginKey, renew, TimeUnit.MILLISECONDS); } } From ab0d02a473e2bfb57cfd2bc7defcfbdacb802ce0 Mon Sep 17 00:00:00 2001 From: Zheng Jie <201507802@qq.com> Date: Tue, 2 Apr 2024 20:22:02 +0800 Subject: [PATCH 02/54] update --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index ea0770a2d..0312d08ef 100644 --- a/README.md +++ b/README.md @@ -26,12 +26,13 @@ | github | https://github.com/elunez/eladmin | https://github.com/elunez/eladmin-web | | 码云 | https://gitee.com/elunez/eladmin | https://gitee.com/elunez/eladmin-web | -#### 赞助商 | Sponsor - - -明道云零代码构建平台 +#### VPS推荐 + + +使用优惠码: `BWHCCNCXVV`,可获得 6.81% 的折扣, [查看介绍](https://bwhstock.in/) + #### 主要特性 - 使用最新技术栈,社区资源丰富。 - 高效率开发,代码生成器可一键生成前后端代码 From 3e659922559db3c73037ff0e5e0372b276e20003 Mon Sep 17 00:00:00 2001 From: Zheng Jie <201507802@qq.com> Date: Fri, 24 May 2024 16:11:33 +0800 Subject: [PATCH 03/54] update README.md --- README.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 0312d08ef..084873ab5 100644 --- a/README.md +++ b/README.md @@ -26,12 +26,10 @@ | github | https://github.com/elunez/eladmin | https://github.com/elunez/eladmin-web | | 码云 | https://gitee.com/elunez/eladmin | https://gitee.com/elunez/eladmin-web | -#### VPS推荐 - - - +#### 赞助商 | Sponsor -使用优惠码: `BWHCCNCXVV`,可获得 6.81% 的折扣, [查看介绍](https://bwhstock.in/) + +明道云零代码构建平台 #### 主要特性 - 使用最新技术栈,社区资源丰富。 From 0494f6ad17b93817dbb5c8453e3d76242ca4a5d6 Mon Sep 17 00:00:00 2001 From: Zheng Jie <201507802@qq.com> Date: Fri, 9 Aug 2024 20:03:02 +0800 Subject: [PATCH 04/54] =?UTF-8?q?feat:=20quartz=20=E5=88=86=E5=B8=83?= =?UTF-8?q?=E5=BC=8F=E6=94=AF=E6=8C=81=EF=BC=8C=E9=BB=98=E8=AE=A4=E5=8D=95?= =?UTF-8?q?=E6=9C=BA=E8=BF=90=E8=A1=8C=EF=BC=8C=E5=A6=82=E6=9E=9C=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E6=94=AF=E6=8C=81=E5=88=86=E5=B8=83=E5=BC=8F=E5=8F=AF?= =?UTF-8?q?=E4=BB=A5=E6=9F=A5=E7=9C=8B=20application-quartz.yml=20?= =?UTF-8?q?=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eladmin-system/pom.xml | 12 +- .../modules/quartz/config/QuartzConfig.java | 24 ++- .../modules/quartz/utils/QuartzManage.java | 9 +- .../resources/config/application-quartz.yml | 29 +++ .../src/main/resources/config/application.yml | 1 + sql/quartz.sql | 170 ++++++++++++++++++ 6 files changed, 231 insertions(+), 14 deletions(-) create mode 100644 eladmin-system/src/main/resources/config/application-quartz.yml create mode 100644 sql/quartz.sql diff --git a/eladmin-system/pom.xml b/eladmin-system/pom.xml index 9119bc126..e17991963 100644 --- a/eladmin-system/pom.xml +++ b/eladmin-system/pom.xml @@ -45,6 +45,12 @@ spring-boot-starter-websocket + + + org.springframework.boot + spring-boot-starter-quartz + + io.jsonwebtoken @@ -62,12 +68,6 @@ ${jjwt.version} - - - org.quartz-scheduler - quartz - - ch.ethz.ganymed diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/QuartzConfig.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/QuartzConfig.java index 99f2e50e1..d542a36a7 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/QuartzConfig.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/QuartzConfig.java @@ -15,9 +15,13 @@ */ package me.zhengjie.modules.quartz.config; +import lombok.extern.slf4j.Slf4j; import org.quartz.spi.TriggerFiredBundle; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.AutowireCapableBeanFactory; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Scope; +import org.springframework.lang.NonNull; import org.springframework.scheduling.quartz.AdaptableJobFactory; import org.springframework.stereotype.Component; @@ -26,7 +30,9 @@ * @author / * @date 2019-01-07 */ +@Slf4j @Configuration +@Scope("singleton") public class QuartzConfig { /** @@ -37,16 +43,24 @@ public static class QuartzJobFactory extends AdaptableJobFactory { private final AutowireCapableBeanFactory capableBeanFactory; + @Autowired public QuartzJobFactory(AutowireCapableBeanFactory capableBeanFactory) { this.capableBeanFactory = capableBeanFactory; } + @NonNull @Override - protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception { - //调用父类的方法,把Job注入到spring中 - Object jobInstance = super.createJobInstance(bundle); - capableBeanFactory.autowireBean(jobInstance); - return jobInstance; + protected Object createJobInstance(@NonNull TriggerFiredBundle bundle) throws Exception { + try { + // 调用父类的方法,把Job注入到spring中 + Object jobInstance = super.createJobInstance(bundle); + capableBeanFactory.autowireBean(jobInstance); + log.debug("Job instance created and autowired: {}", jobInstance.getClass().getName()); + return jobInstance; + } catch (Exception e) { + log.error("Error creating job instance for bundle: {}", bundle, e); + throw e; + } } } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzManage.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzManage.java index e0cf1e0af..4dbac76b0 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzManage.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzManage.java @@ -20,7 +20,6 @@ import me.zhengjie.modules.quartz.domain.QuartzJob; import org.quartz.*; import org.quartz.impl.triggers.CronTriggerImpl; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.Date; @@ -57,8 +56,12 @@ public void addJob(QuartzJob quartzJob){ //重置启动时间 ((CronTriggerImpl)cronTrigger).setStartTime(new Date()); - //执行定时任务 - scheduler.scheduleJob(jobDetail,cronTrigger); + //执行定时任务,如果是持久化的,这里会报错,捕获输出 + try { + scheduler.scheduleJob(jobDetail,cronTrigger); + } catch (ObjectAlreadyExistsException e) { + log.warn("定时任务已存在,跳过加载"); + } // 暂停任务 if (quartzJob.getIsPause()) { diff --git a/eladmin-system/src/main/resources/config/application-quartz.yml b/eladmin-system/src/main/resources/config/application-quartz.yml new file mode 100644 index 000000000..561482c6d --- /dev/null +++ b/eladmin-system/src/main/resources/config/application-quartz.yml @@ -0,0 +1,29 @@ +# 配置 quartz 分布式支持, sql 文件在 sql 目录下,需要导入到数据库,并且需要修改 application.yml 文件的 active: dev 配置 +spring: + quartz: + # 必需,指定使用 JDBC 存储 + job-store-type: jdbc + properties: + org: + quartz: + scheduler: + # 必需,指定调度器实例的名称 + instanceName: eladmin + # 必需,指定调度器实例的 ID + instanceId: auto + threadPool: + # 可选,线程池的线程数量,可以根据需要调整 + threadCount: 5 + jobStore: + # 可选,如果你不需要集群,可以去掉 + isClustered: true + # 可选,集群检查间隔时间,可以根据需要调整 + clusterCheckinInterval: 10000 + # 必需,指定 JDBC 驱动代理类 + driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate + # 可选,是否使用属性存储,可以根据需要调整 + useProperties: false + # 必需,指定表的前缀 + tablePrefix: qrtz_ + # 可选,指定误触发阈值,可以根据需要调整 + misfireThreshold: 60000 \ No newline at end of file diff --git a/eladmin-system/src/main/resources/config/application.yml b/eladmin-system/src/main/resources/config/application.yml index 11884259f..6eb7fd4e0 100644 --- a/eladmin-system/src/main/resources/config/application.yml +++ b/eladmin-system/src/main/resources/config/application.yml @@ -8,6 +8,7 @@ spring: freemarker: check-template-location: false profiles: + # 激活的环境,如果需要 quartz 分布式支持,需要修改 active: dev,quartz active: dev data: redis: diff --git a/sql/quartz.sql b/sql/quartz.sql new file mode 100644 index 000000000..0c71cb596 --- /dev/null +++ b/sql/quartz.sql @@ -0,0 +1,170 @@ +drop table if exists qrtz_fired_triggers; +drop table if exists qrtz_paused_trigger_grps; +drop table if exists qrtz_scheduler_state; +drop table if exists qrtz_locks; +drop table if exists qrtz_simple_triggers; +drop table if exists qrtz_simprop_triggers; +drop table if exists qrtz_cron_triggers; +drop table if exists qrtz_blob_triggers; +drop table if exists qrtz_triggers; +drop table if exists qrtz_job_details; +drop table if exists qrtz_calendars; + +create table qrtz_job_details( +sched_name varchar(120) not null, +job_name varchar(200) not null, +job_group varchar(200) not null, +description varchar(250) null, +job_class_name varchar(250) not null, +is_durable varchar(1) not null, +is_nonconcurrent varchar(1) not null, +is_update_data varchar(1) not null, +requests_recovery varchar(1) not null, +job_data blob null, +primary key (sched_name, job_name, job_group)) +engine=innodb; + +create table qrtz_triggers ( +sched_name varchar(120) not null, +trigger_name varchar(200) not null, +trigger_group varchar(200) not null, +job_name varchar(200) not null, +job_group varchar(200) not null, +description varchar(250) null, +next_fire_time bigint(13) null, +prev_fire_time bigint(13) null, +priority integer null, +trigger_state varchar(16) not null, +trigger_type varchar(8) not null, +start_time bigint(13) not null, +end_time bigint(13) null, +calendar_name varchar(200) null, +misfire_instr smallint(2) null, +job_data blob null, +primary key (sched_name, trigger_name, trigger_group), +foreign key (sched_name, job_name, job_group) +references qrtz_job_details(sched_name, job_name, job_group)) +engine=innodb; + +create table qrtz_simple_triggers ( +sched_name varchar(120) not null, +trigger_name varchar(200) not null, +trigger_group varchar(200) not null, +repeat_count bigint(7) not null, +repeat_interval bigint(12) not null, +times_triggered bigint(10) not null, +primary key (sched_name, trigger_name, trigger_group), +foreign key (sched_name, trigger_name, trigger_group) +references qrtz_triggers(sched_name, trigger_name, trigger_group)) +engine=innodb; + +create table qrtz_cron_triggers ( +sched_name varchar(120) not null, +trigger_name varchar(200) not null, +trigger_group varchar(200) not null, +cron_expression varchar(120) not null, +time_zone_id varchar(80), +primary key (sched_name, trigger_name, trigger_group), +foreign key (sched_name, trigger_name, trigger_group) +references qrtz_triggers(sched_name, trigger_name, trigger_group)) +engine=innodb; + +create table qrtz_simprop_triggers ( +sched_name varchar(120) not null, +trigger_name varchar(200) not null, +trigger_group varchar(200) not null, +str_prop_1 varchar(512) null, +str_prop_2 varchar(512) null, +str_prop_3 varchar(512) null, +int_prop_1 int null, +int_prop_2 int null, +long_prop_1 bigint null, +long_prop_2 bigint null, +dec_prop_1 numeric(13, 4) null, +dec_prop_2 numeric(13, 4) null, +bool_prop_1 varchar(1) null, +bool_prop_2 varchar(1) null, +primary key (sched_name, trigger_name, trigger_group), +foreign key (sched_name, trigger_name, trigger_group) +references qrtz_triggers(sched_name, trigger_name, trigger_group)) +engine=innodb; + +create table qrtz_blob_triggers ( +sched_name varchar(120) not null, +trigger_name varchar(200) not null, +trigger_group varchar(200) not null, +blob_data blob null, +primary key (sched_name, trigger_name, trigger_group), +index (sched_name, trigger_name, trigger_group), +foreign key (sched_name, trigger_name, trigger_group) +references qrtz_triggers(sched_name, trigger_name, trigger_group)) +engine=innodb; + +create table qrtz_calendars ( +sched_name varchar(120) not null, +calendar_name varchar(200) not null, +calendar blob not null, +primary key (sched_name, calendar_name)) +engine=innodb; + +create table qrtz_paused_trigger_grps ( +sched_name varchar(120) not null, +trigger_group varchar(200) not null, +primary key (sched_name, trigger_group)) +engine=innodb; + +create table qrtz_fired_triggers ( +sched_name varchar(120) not null, +entry_id varchar(95) not null, +trigger_name varchar(200) not null, +trigger_group varchar(200) not null, +instance_name varchar(200) not null, +fired_time bigint(13) not null, +sched_time bigint(13) not null, +priority integer not null, +state varchar(16) not null, +job_name varchar(200) null, +job_group varchar(200) null, +is_nonconcurrent varchar(1) null, +requests_recovery varchar(1) null, +primary key (sched_name, entry_id)) +engine=innodb; + +create table qrtz_scheduler_state ( +sched_name varchar(120) not null, +instance_name varchar(200) not null, +last_checkin_time bigint(13) not null, +checkin_interval bigint(13) not null, +primary key (sched_name, instance_name)) +engine=innodb; + +create table qrtz_locks ( +sched_name varchar(120) not null, +lock_name varchar(40) not null, +primary key (sched_name, lock_name)) +engine=innodb; + +create index idx_qrtz_j_req_recovery on qrtz_job_details(sched_name, requests_recovery); +create index idx_qrtz_j_grp on qrtz_job_details(sched_name, job_group); + +create index idx_qrtz_t_j on qrtz_triggers(sched_name, job_name, job_group); +create index idx_qrtz_t_jg on qrtz_triggers(sched_name, job_group); +create index idx_qrtz_t_c on qrtz_triggers(sched_name, calendar_name); +create index idx_qrtz_t_g on qrtz_triggers(sched_name, trigger_group); +create index idx_qrtz_t_state on qrtz_triggers(sched_name, trigger_state); +create index idx_qrtz_t_n_state on qrtz_triggers(sched_name, trigger_name, trigger_group, trigger_state); +create index idx_qrtz_t_n_g_state on qrtz_triggers(sched_name, trigger_group, trigger_state); +create index idx_qrtz_t_next_fire_time on qrtz_triggers(sched_name, next_fire_time); +create index idx_qrtz_t_nft_st on qrtz_triggers(sched_name, trigger_state, next_fire_time); +create index idx_qrtz_t_nft_misfire on qrtz_triggers(sched_name, misfire_instr, next_fire_time); +create index idx_qrtz_t_nft_st_misfire on qrtz_triggers(sched_name, misfire_instr, next_fire_time, trigger_state); +create index idx_qrtz_t_nft_st_misfire_grp on qrtz_triggers(sched_name, misfire_instr, next_fire_time, trigger_group, trigger_state); + +create index idx_qrtz_ft_trig_inst_name on qrtz_fired_triggers(sched_name, instance_name); +create index idx_qrtz_ft_inst_job_req_rcvry on qrtz_fired_triggers(sched_name, instance_name, requests_recovery); +create index idx_qrtz_ft_j_g on qrtz_fired_triggers(sched_name, job_name, job_group); +create index idx_qrtz_ft_jg on qrtz_fired_triggers(sched_name, job_group); +create index idx_qrtz_ft_t_g on qrtz_fired_triggers(sched_name, trigger_name, trigger_group); +create index idx_qrtz_ft_tg on qrtz_fired_triggers(sched_name, trigger_group); + +commit; \ No newline at end of file From f4f76deaf9a1353b25f4df214c35340592c8e9a7 Mon Sep 17 00:00:00 2001 From: Zheng Jie <201507802@qq.com> Date: Fri, 9 Aug 2024 20:21:32 +0800 Subject: [PATCH 05/54] =?UTF-8?q?fix:=20=E5=88=9D=E5=A7=8B=E5=8C=96sql?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sql/eladmin.sql | 1 - 1 file changed, 1 deletion(-) diff --git a/sql/eladmin.sql b/sql/eladmin.sql index 20ee09498..2711d6e9c 100644 --- a/sql/eladmin.sql +++ b/sql/eladmin.sql @@ -615,7 +615,6 @@ INSERT INTO `sys_roles_menus` VALUES (112, 1); INSERT INTO `sys_roles_menus` VALUES (113, 1); INSERT INTO `sys_roles_menus` VALUES (114, 1); INSERT INTO `sys_roles_menus` VALUES (116, 1); -INSERT INTO `sys_roles_menus` VALUES (120, 1); INSERT INTO `sys_roles_menus` VALUES (1, 2); INSERT INTO `sys_roles_menus` VALUES (2, 2); INSERT INTO `sys_roles_menus` VALUES (6, 2); From 08f4860483b4091c5d1383c51380a894fc0952a5 Mon Sep 17 00:00:00 2001 From: l2063610646 <64514383+l2063610646@users.noreply.github.com> Date: Thu, 19 Sep 2024 10:01:03 +0800 Subject: [PATCH 06/54] =?UTF-8?q?fix(LimitAspect):=20=E4=BF=AE=E5=A4=8Dlua?= =?UTF-8?q?=E8=84=9A=E6=9C=AC=E6=89=A7=E8=A1=8C=E7=BB=93=E6=9D=9F=E5=90=8E?= =?UTF-8?q?=EF=BC=8C=E7=B1=BB=E5=9E=8B=E8=BD=AC=E6=8D=A2=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E7=9A=84bug=20(#810)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(EmailServiceImpl): 解决由于jdk8之后默认禁用了部分tls协议,从而导致发送邮件失败的问题 1、测试jdk版本:jdk1.8.0_351 * fix(LimitAspect): 修复lua脚本执行结束后,类型转换失败的bug 1、测试jdk版本:jdk1.8.0_351、jdk11.0.18 类型转换失败,不能将值转换为Number,用Long进行替代 --- .../src/main/java/me/zhengjie/aspect/LimitAspect.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eladmin-common/src/main/java/me/zhengjie/aspect/LimitAspect.java b/eladmin-common/src/main/java/me/zhengjie/aspect/LimitAspect.java index 31f40404d..4b9a7b8ec 100644 --- a/eladmin-common/src/main/java/me/zhengjie/aspect/LimitAspect.java +++ b/eladmin-common/src/main/java/me/zhengjie/aspect/LimitAspect.java @@ -71,8 +71,8 @@ public Object around(ProceedingJoinPoint joinPoint) throws Throwable { ImmutableList keys = ImmutableList.of(StringUtils.join(limit.prefix(), "_", key, "_", request.getRequestURI().replace("/","_"))); String luaScript = buildLuaScript(); - RedisScript redisScript = new DefaultRedisScript<>(luaScript, Number.class); - Number count = redisTemplate.execute(redisScript, keys, limit.count(), limit.period()); + RedisScript redisScript = new DefaultRedisScript<>(luaScript, Long.class); + Long count = redisTemplate.execute(redisScript, keys, limit.count(), limit.period()); if (null != count && count.intValue() <= limit.count()) { logger.info("第{}次访问key为 {},描述为 [{}] 的接口", count, keys, limit.name()); return joinPoint.proceed(); From bb11e403cbfd17432524af53b6ae29973b141be3 Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Mon, 9 Dec 2024 09:04:16 +0800 Subject: [PATCH 07/54] =?UTF-8?q?=E7=A7=BB=E9=99=A4OnlineUserService?= =?UTF-8?q?=E4=B8=ADkickOutForUsername=E7=9A=84@Async=E6=B3=A8=E8=A7=A3=20?= =?UTF-8?q?close=20https://github.com/elunez/eladmin-mp/issues/43?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../me/zhengjie/modules/security/service/OnlineUserService.java | 1 - 1 file changed, 1 deletion(-) diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/OnlineUserService.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/OnlineUserService.java index ede78681f..d1fd765df 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/OnlineUserService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/OnlineUserService.java @@ -141,7 +141,6 @@ public OnlineUserDto getOne(String key) { * 根据用户名强退用户 * @param username / */ - @Async public void kickOutForUsername(String username) { String loginKey = properties.getOnlineKey() + username + "*"; redisUtils.scanDel(loginKey); From ba5b42bde7ae05cf0de5f4318a1ef1501b18a358 Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Sun, 29 Dec 2024 10:44:50 +0800 Subject: [PATCH 08/54] update README.md --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 084873ab5..615ec89d4 100644 --- a/README.md +++ b/README.md @@ -26,10 +26,12 @@ | github | https://github.com/elunez/eladmin | https://github.com/elunez/eladmin-web | | 码云 | https://gitee.com/elunez/eladmin | https://gitee.com/elunez/eladmin-web | -#### 赞助商 | Sponsor +#### VPS推荐 + + + - -明道云零代码构建平台 +使用优惠码: `BWHCGLUKKB`,可获得 6.81% 的折扣 [查看介绍](https://bwhstock.in/) #### 主要特性 - 使用最新技术栈,社区资源丰富。 From 6159b94c90854c34a52b5031ef60f51ccc2cc818 Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Mon, 13 Jan 2025 18:30:20 +0800 Subject: [PATCH 09/54] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8DEncryptUtils?= =?UTF-8?q?=E5=A4=9A=E7=BA=BF=E7=A8=8B=E7=8E=AF=E5=A2=83=E4=B8=AD=E5=85=B1?= =?UTF-8?q?=E4=BA=AB=E5=90=8C=E4=B8=80=E4=B8=AA=20Cipher=E5=AE=9E=E4=BE=8B?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E3=80=90=20Cipher=20not=20initialized?= =?UTF-8?q?=E3=80=91=E7=9A=84=E9=97=AE=E9=A2=98=20close=20https://github.c?= =?UTF-8?q?om/elunez/eladmin/issues/865?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/me/zhengjie/utils/EncryptUtils.java | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/EncryptUtils.java b/eladmin-common/src/main/java/me/zhengjie/utils/EncryptUtils.java index 4f334aac1..191fdbbe9 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/EncryptUtils.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/EncryptUtils.java @@ -27,20 +27,15 @@ * @author Zheng Jie * @date 2018-11-23 */ - public class EncryptUtils { private static final String STR_PARAM = "Passw0rd"; - - private static Cipher cipher; - private static final IvParameterSpec IV = new IvParameterSpec(STR_PARAM.getBytes(StandardCharsets.UTF_8)); private static DESKeySpec getDesKeySpec(String source) throws Exception { - if (source == null || source.length() == 0){ + if (source == null || source.isEmpty()) { return null; } - cipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); String strKey = "Passw0rd"; return new DESKeySpec(strKey.getBytes(StandardCharsets.UTF_8)); } @@ -49,18 +44,19 @@ private static DESKeySpec getDesKeySpec(String source) throws Exception { * 对称加密 */ public static String desEncrypt(String source) throws Exception { + Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); DESKeySpec desKeySpec = getDesKeySpec(source); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey secretKey = keyFactory.generateSecret(desKeySpec); cipher.init(Cipher.ENCRYPT_MODE, secretKey, IV); - return byte2hex( - cipher.doFinal(source.getBytes(StandardCharsets.UTF_8))).toUpperCase(); + return byte2hex(cipher.doFinal(source.getBytes(StandardCharsets.UTF_8))).toUpperCase(); } /** * 对称解密 */ public static String desDecrypt(String source) throws Exception { + Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); byte[] src = hex2byte(source.getBytes(StandardCharsets.UTF_8)); DESKeySpec desKeySpec = getDesKeySpec(source); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); @@ -76,7 +72,6 @@ private static String byte2hex(byte[] inStr) { for (byte b : inStr) { stmp = Integer.toHexString(b & 0xFF); if (stmp.length() == 1) { - // 如果是0至F的单位字符串,则添加0 out.append("0").append(stmp); } else { out.append(stmp); @@ -87,7 +82,7 @@ private static String byte2hex(byte[] inStr) { private static byte[] hex2byte(byte[] b) { int size = 2; - if ((b.length % size) != 0){ + if ((b.length % size) != 0) { throw new IllegalArgumentException("长度不是偶数"); } byte[] b2 = new byte[b.length / 2]; From d6a16e9afc0a3b96a56f1a24ed167e1beec6ce2f Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Wed, 15 Jan 2025 09:21:51 +0800 Subject: [PATCH 10/54] =?UTF-8?q?fix:=20=E9=98=B2=E6=AD=A2CSV=E6=B3=A8?= =?UTF-8?q?=E5=85=A5=EF=BC=8C=E5=A4=84=E7=90=86=E5=AF=BC=E5=87=BA=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E7=89=B9=E6=AE=8A=E5=AD=97=E7=AC=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit close https://github.com/elunez/eladmin/issues/863 --- .../main/java/me/zhengjie/utils/FileUtil.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java b/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java index ca2b674d3..1761fc80f 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java @@ -33,8 +33,10 @@ import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * File工具类,扩展 hutool 工具包 @@ -213,8 +215,25 @@ public static void downloadExcel(List> list, HttpServletResp String tempPath = SYS_TEM_DIR + IdUtil.fastSimpleUUID() + ".xlsx"; File file = new File(tempPath); BigExcelWriter writer = ExcelUtil.getBigWriter(file); + // 处理数据以防止CSV注入 + List> sanitizedList = list.parallelStream().map(map -> { + Map sanitizedMap = new HashMap<>(); + map.forEach((key, value) -> { + if (value instanceof String) { + String strValue = (String) value; + // 检查并处理以特殊字符开头的值 + if (strValue.startsWith("=") || strValue.startsWith("+") || strValue.startsWith("-") || strValue.startsWith("@")) { + strValue = "'" + strValue; // 添加单引号前缀 + } + sanitizedMap.put(key, strValue); + } else { + sanitizedMap.put(key, value); + } + }); + return sanitizedMap; + }).collect(Collectors.toList()); // 一次性写出内容,使用默认样式,强制输出标题 - writer.write(list, true); + writer.write(sanitizedList, true); SXSSFSheet sheet = (SXSSFSheet)writer.getSheet(); //上面需要强转SXSSFSheet 不然没有trackAllColumnsForAutoSizing方法 sheet.trackAllColumnsForAutoSizing(); From a14d2c43242c42cb89fe9e4abc05e7840d2dc198 Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Wed, 15 Jan 2025 09:26:29 +0800 Subject: [PATCH 11/54] =?UTF-8?q?fix(LimitAspect):=20=E4=BD=BF=E7=94=A8Obj?= =?UTF-8?q?Util=E4=BC=98=E5=8C=96=E7=A9=BA=E5=80=BC=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/me/zhengjie/aspect/LimitAspect.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/eladmin-common/src/main/java/me/zhengjie/aspect/LimitAspect.java b/eladmin-common/src/main/java/me/zhengjie/aspect/LimitAspect.java index 4b9a7b8ec..63fb8211a 100644 --- a/eladmin-common/src/main/java/me/zhengjie/aspect/LimitAspect.java +++ b/eladmin-common/src/main/java/me/zhengjie/aspect/LimitAspect.java @@ -15,6 +15,7 @@ */ package me.zhengjie.aspect; +import cn.hutool.core.util.ObjUtil; import com.google.common.collect.ImmutableList; import me.zhengjie.annotation.Limit; import me.zhengjie.exception.BadRequestException; @@ -73,7 +74,7 @@ public Object around(ProceedingJoinPoint joinPoint) throws Throwable { String luaScript = buildLuaScript(); RedisScript redisScript = new DefaultRedisScript<>(luaScript, Long.class); Long count = redisTemplate.execute(redisScript, keys, limit.count(), limit.period()); - if (null != count && count.intValue() <= limit.count()) { + if (ObjUtil.isNotNull(count) && count.intValue() <= limit.count()) { logger.info("第{}次访问key为 {},描述为 [{}] 的接口", count, keys, limit.name()); return joinPoint.proceed(); } else { From 5a3786bd03d33bd015334767e4bfcaa4416842cc Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Wed, 15 Jan 2025 10:09:27 +0800 Subject: [PATCH 12/54] =?UTF-8?q?update:=20=E5=8D=87=E7=BA=A7hutool?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E8=87=B35.8.21?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eladmin-common/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eladmin-common/pom.xml b/eladmin-common/pom.xml index 23d1024e0..dd010d626 100644 --- a/eladmin-common/pom.xml +++ b/eladmin-common/pom.xml @@ -9,7 +9,7 @@ 4.0.0 - 5.8.20 + 5.8.21 eladmin-common From 008181b0798e233662b49732345b0e498b013868 Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Wed, 15 Jan 2025 10:30:39 +0800 Subject: [PATCH 13/54] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=BF=90?= =?UTF-8?q?=E7=BB=B4=E7=AE=A1=E7=90=86=EF=BC=9A=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E5=92=8C=E9=83=A8=E7=BD=B2=E7=AE=A1=E7=90=86=E4=B8=AD=E5=AD=98?= =?UTF-8?q?=E5=9C=A8=E4=BB=BB=E6=84=8F=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E5=92=8C=E5=88=A0=E9=99=A4=E6=BC=8F=E6=B4=9E=EF=BC=8C=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E9=9D=9E=E6=B3=95=E6=96=87=E4=BB=B6=E5=90=8D=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=20close=20https://github.com/elunez/eladmin/issues/85?= =?UTF-8?q?1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/mnt/rest/DatabaseController.java | 4 ++-- .../modules/mnt/rest/DeployController.java | 22 +++++++++++-------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/rest/DatabaseController.java b/eladmin-system/src/main/java/me/zhengjie/modules/mnt/rest/DatabaseController.java index 0ce1a4e8d..ded799d3b 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/rest/DatabaseController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/mnt/rest/DatabaseController.java @@ -111,8 +111,8 @@ public ResponseEntity uploadDatabase(@RequestBody MultipartFile file, Ht DatabaseDto database = databaseService.findById(id); String fileName; if(database != null){ - fileName = file.getOriginalFilename(); - File executeFile = new File(fileSavePath+fileName); + fileName = FileUtil.verifyFilename(file.getOriginalFilename()); + File executeFile = new File(fileSavePath + fileName); FileUtil.del(executeFile); file.transferTo(executeFile); String result = SqlUtils.executeFile(database.getJdbcUrl(), database.getUserName(), database.getPwd(), executeFile); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/rest/DeployController.java b/eladmin-system/src/main/java/me/zhengjie/modules/mnt/rest/DeployController.java index 3f13813b1..161e7b5dd 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/rest/DeployController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/mnt/rest/DeployController.java @@ -18,6 +18,7 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import me.zhengjie.annotation.Log; import me.zhengjie.modules.mnt.domain.Deploy; import me.zhengjie.modules.mnt.domain.DeployHistory; @@ -39,13 +40,13 @@ import java.io.IOException; import java.util.HashMap; import java.util.Map; -import java.util.Objects; import java.util.Set; /** * @author zhanghouying * @date 2019-08-24 */ +@Slf4j @RestController @Api(tags = "运维:部署管理") @RequiredArgsConstructor @@ -67,7 +68,7 @@ public void exportDeployData(HttpServletResponse response, DeployQueryCriteria c @GetMapping @PreAuthorize("@el.check('deploy:list')") public ResponseEntity> queryDeployData(DeployQueryCriteria criteria, Pageable pageable){ - return new ResponseEntity<>(deployService.queryAll(criteria,pageable),HttpStatus.OK); + return new ResponseEntity<>(deployService.queryAll(criteria,pageable),HttpStatus.OK); } @Log("新增部署") @@ -105,21 +106,21 @@ public ResponseEntity uploadDeploy(@RequestBody MultipartFile file, Http Long id = Long.valueOf(request.getParameter("id")); String fileName = ""; if(file != null){ - fileName = file.getOriginalFilename(); - File deployFile = new File(fileSavePath+fileName); + fileName = FileUtil.verifyFilename(file.getOriginalFilename()); + File deployFile = new File(fileSavePath + fileName); FileUtil.del(deployFile); file.transferTo(deployFile); //文件下一步要根据文件名字来 - deployService.deploy(fileSavePath+fileName ,id); + deployService.deploy(fileSavePath + fileName ,id); }else{ - System.out.println("没有找到相对应的文件"); + log.warn("没有找到相对应的文件"); } - System.out.println("文件上传的原名称为:"+ Objects.requireNonNull(file).getOriginalFilename()); Map map = new HashMap<>(2); - map.put("errno",0); + map.put("error",0); map.put("id",fileName); return new ResponseEntity<>(map,HttpStatus.OK); } + @Log("系统还原") @ApiOperation(value = "系统还原") @PostMapping(value = "/serverReduction") @@ -128,14 +129,16 @@ public ResponseEntity serverReduction(@Validated @RequestBody DeployHist String result = deployService.serverReduction(resources); return new ResponseEntity<>(result,HttpStatus.OK); } + @Log("服务运行状态") @ApiOperation(value = "服务运行状态") @PostMapping(value = "/serverStatus") @PreAuthorize("@el.check('deploy:edit')") public ResponseEntity serverStatus(@Validated @RequestBody Deploy resources){ String result = deployService.serverStatus(resources); - return new ResponseEntity<>(result,HttpStatus.OK); + return new ResponseEntity<>(result,HttpStatus.OK); } + @Log("启动服务") @ApiOperation(value = "启动服务") @PostMapping(value = "/startServer") @@ -144,6 +147,7 @@ public ResponseEntity startServer(@Validated @RequestBody Deploy resourc String result = deployService.startServer(resources); return new ResponseEntity<>(result,HttpStatus.OK); } + @Log("停止服务") @ApiOperation(value = "停止服务") @PostMapping(value = "/stopServer") From 13ae86ad15aa7994e5817a016450291d672b0820 Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Wed, 15 Jan 2025 10:37:18 +0800 Subject: [PATCH 14/54] update --- .../modules/mnt/domain/DeployHistory.java | 14 ++++---- .../modules/mnt/rest/AppController.java | 10 +++--- .../mnt/rest/DeployHistoryController.java | 4 +-- .../mnt/rest/ServerDeployController.java | 26 +++++++-------- .../service/impl/ServerDeployServiceImpl.java | 32 +++++++++---------- 5 files changed, 43 insertions(+), 43 deletions(-) diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/domain/DeployHistory.java b/eladmin-system/src/main/java/me/zhengjie/modules/mnt/domain/DeployHistory.java index 6e07e1361..b4213a416 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/domain/DeployHistory.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/mnt/domain/DeployHistory.java @@ -37,24 +37,24 @@ public class DeployHistory implements Serializable { @Id @Column(name = "history_id") - @ApiModelProperty(value = "ID", hidden = true) + @ApiModelProperty(value = "ID", hidden = true) private String id; @ApiModelProperty(value = "应用名称") private String appName; - @ApiModelProperty(value = "IP") + @ApiModelProperty(value = "IP") private String ip; - @CreationTimestamp - @ApiModelProperty(value = "部署时间") + @CreationTimestamp + @ApiModelProperty(value = "部署时间") private Timestamp deployDate; - @ApiModelProperty(value = "部署者") + @ApiModelProperty(value = "部署者") private String deployUser; - @ApiModelProperty(value = "部署ID") - private Long deployId; + @ApiModelProperty(value = "部署ID") + private Long deployId; public void copy(DeployHistory source){ BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/rest/AppController.java b/eladmin-system/src/main/java/me/zhengjie/modules/mnt/rest/AppController.java index 5dac15eb3..96cfbed3b 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/rest/AppController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/mnt/rest/AppController.java @@ -55,7 +55,7 @@ public void exportApp(HttpServletResponse response, AppQueryCriteria criteria) t @ApiOperation(value = "查询应用") @GetMapping - @PreAuthorize("@el.check('app:list')") + @PreAuthorize("@el.check('app:list')") public ResponseEntity> queryApp(AppQueryCriteria criteria, Pageable pageable){ return new ResponseEntity<>(appService.queryAll(criteria,pageable),HttpStatus.OK); } @@ -63,7 +63,7 @@ public ResponseEntity> queryApp(AppQueryCriteria criteria, Pa @Log("新增应用") @ApiOperation(value = "新增应用") @PostMapping - @PreAuthorize("@el.check('app:add')") + @PreAuthorize("@el.check('app:add')") public ResponseEntity createApp(@Validated @RequestBody App resources){ appService.create(resources); return new ResponseEntity<>(HttpStatus.CREATED); @@ -72,7 +72,7 @@ public ResponseEntity createApp(@Validated @RequestBody App resources){ @Log("修改应用") @ApiOperation(value = "修改应用") @PutMapping - @PreAuthorize("@el.check('app:edit')") + @PreAuthorize("@el.check('app:edit')") public ResponseEntity updateApp(@Validated @RequestBody App resources){ appService.update(resources); return new ResponseEntity<>(HttpStatus.NO_CONTENT); @@ -80,8 +80,8 @@ public ResponseEntity updateApp(@Validated @RequestBody App resources){ @Log("删除应用") @ApiOperation(value = "删除应用") - @DeleteMapping - @PreAuthorize("@el.check('app:del')") + @DeleteMapping + @PreAuthorize("@el.check('app:del')") public ResponseEntity deleteApp(@RequestBody Set ids){ appService.delete(ids); return new ResponseEntity<>(HttpStatus.OK); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/rest/DeployHistoryController.java b/eladmin-system/src/main/java/me/zhengjie/modules/mnt/rest/DeployHistoryController.java index 8d3c902dd..60ee88c46 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/rest/DeployHistoryController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/mnt/rest/DeployHistoryController.java @@ -53,14 +53,14 @@ public void exportDeployHistory(HttpServletResponse response, DeployHistoryQuery @ApiOperation(value = "查询部署历史") @GetMapping - @PreAuthorize("@el.check('deployHistory:list')") + @PreAuthorize("@el.check('deployHistory:list')") public ResponseEntity> queryDeployHistory(DeployHistoryQueryCriteria criteria, Pageable pageable){ return new ResponseEntity<>(deployhistoryService.queryAll(criteria,pageable),HttpStatus.OK); } @Log("删除DeployHistory") @ApiOperation(value = "删除部署历史") - @DeleteMapping + @DeleteMapping @PreAuthorize("@el.check('deployHistory:del')") public ResponseEntity deleteDeployHistory(@RequestBody Set ids){ deployhistoryService.delete(ids); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/rest/ServerDeployController.java b/eladmin-system/src/main/java/me/zhengjie/modules/mnt/rest/ServerDeployController.java index 5ccb0ed36..f4c60f428 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/rest/ServerDeployController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/mnt/rest/ServerDeployController.java @@ -55,15 +55,15 @@ public void exportServerDeploy(HttpServletResponse response, ServerDeployQueryCr @ApiOperation(value = "查询服务器") @GetMapping - @PreAuthorize("@el.check('serverDeploy:list')") + @PreAuthorize("@el.check('serverDeploy:list')") public ResponseEntity> queryServerDeploy(ServerDeployQueryCriteria criteria, Pageable pageable){ - return new ResponseEntity<>(serverDeployService.queryAll(criteria,pageable),HttpStatus.OK); + return new ResponseEntity<>(serverDeployService.queryAll(criteria,pageable),HttpStatus.OK); } @Log("新增服务器") @ApiOperation(value = "新增服务器") @PostMapping - @PreAuthorize("@el.check('serverDeploy:add')") + @PreAuthorize("@el.check('serverDeploy:add')") public ResponseEntity createServerDeploy(@Validated @RequestBody ServerDeploy resources){ serverDeployService.create(resources); return new ResponseEntity<>(HttpStatus.CREATED); @@ -72,7 +72,7 @@ public ResponseEntity createServerDeploy(@Validated @RequestBody ServerD @Log("修改服务器") @ApiOperation(value = "修改服务器") @PutMapping - @PreAuthorize("@el.check('serverDeploy:edit')") + @PreAuthorize("@el.check('serverDeploy:edit')") public ResponseEntity updateServerDeploy(@Validated @RequestBody ServerDeploy resources){ serverDeployService.update(resources); return new ResponseEntity<>(HttpStatus.NO_CONTENT); @@ -80,18 +80,18 @@ public ResponseEntity updateServerDeploy(@Validated @RequestBody ServerD @Log("删除服务器") @ApiOperation(value = "删除Server") - @DeleteMapping - @PreAuthorize("@el.check('serverDeploy:del')") + @DeleteMapping + @PreAuthorize("@el.check('serverDeploy:del')") public ResponseEntity deleteServerDeploy(@RequestBody Set ids){ serverDeployService.delete(ids); return new ResponseEntity<>(HttpStatus.OK); } - @Log("测试连接服务器") - @ApiOperation(value = "测试连接服务器") - @PostMapping("/testConnect") - @PreAuthorize("@el.check('serverDeploy:add')") - public ResponseEntity testConnectServerDeploy(@Validated @RequestBody ServerDeploy resources){ - return new ResponseEntity<>(serverDeployService.testConnect(resources),HttpStatus.CREATED); - } + @Log("测试连接服务器") + @ApiOperation(value = "测试连接服务器") + @PostMapping("/testConnect") + @PreAuthorize("@el.check('serverDeploy:add')") + public ResponseEntity testConnectServerDeploy(@Validated @RequestBody ServerDeploy resources){ + return new ResponseEntity<>(serverDeployService.testConnect(resources),HttpStatus.CREATED); + } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/impl/ServerDeployServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/impl/ServerDeployServiceImpl.java index 9e25eb4a7..24b29e0e2 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/impl/ServerDeployServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/impl/ServerDeployServiceImpl.java @@ -67,22 +67,22 @@ public ServerDeployDto findByIp(String ip) { return serverDeployMapper.toDto(deploy); } - @Override - public Boolean testConnect(ServerDeploy resources) { - ExecuteShellUtil executeShellUtil = null; - try { - executeShellUtil = new ExecuteShellUtil(resources.getIp(), resources.getAccount(), resources.getPassword(),resources.getPort()); - return executeShellUtil.execute("ls")==0; - } catch (Exception e) { - return false; - }finally { - if (executeShellUtil != null) { - executeShellUtil.close(); - } - } - } + @Override + public Boolean testConnect(ServerDeploy resources) { + ExecuteShellUtil executeShellUtil = null; + try { + executeShellUtil = new ExecuteShellUtil(resources.getIp(), resources.getAccount(), resources.getPassword(),resources.getPort()); + return executeShellUtil.execute("ls")==0; + } catch (Exception e) { + return false; + }finally { + if (executeShellUtil != null) { + executeShellUtil.close(); + } + } + } - @Override + @Override @Transactional(rollbackFor = Exception.class) public void create(ServerDeploy resources) { serverDeployRepository.save(resources); @@ -93,7 +93,7 @@ public void create(ServerDeploy resources) { public void update(ServerDeploy resources) { ServerDeploy serverDeploy = serverDeployRepository.findById(resources.getId()).orElseGet(ServerDeploy::new); ValidationUtil.isNull( serverDeploy.getId(),"ServerDeploy","id",resources.getId()); - serverDeploy.copy(resources); + serverDeploy.copy(resources); serverDeployRepository.save(serverDeploy); } From c62ac4c38350d0001ac7ca7489f47633f539b17e Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Wed, 15 Jan 2025 11:05:47 +0800 Subject: [PATCH 15/54] =?UTF-8?q?fix:=20=E5=A2=9E=E5=8A=A0JDBC=20URL?= =?UTF-8?q?=E5=AE=89=E5=85=A8=E5=8F=82=E6=95=B0=E8=BF=87=E6=BB=A4=EF=BC=8C?= =?UTF-8?q?=E9=98=B2=E6=AD=A2SQL=E6=B3=A8=E5=85=A5=E7=AD=89=E6=BC=8F?= =?UTF-8?q?=E6=B4=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit close https://github.com/elunez/eladmin/issues/839 --- .../mnt/service/impl/DatabaseServiceImpl.java | 18 +++++------ .../zhengjie/modules/mnt/util/SqlUtils.java | 31 +++++++++++++++++++ 2 files changed, 40 insertions(+), 9 deletions(-) diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/impl/DatabaseServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/impl/DatabaseServiceImpl.java index fa55782ef..386b4c296 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/impl/DatabaseServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/impl/DatabaseServiceImpl.java @@ -88,15 +88,15 @@ public void delete(Set ids) { } } - @Override - public boolean testConnection(Database resources) { - try { - return SqlUtils.testConnection(resources.getJdbcUrl(), resources.getUserName(), resources.getPwd()); - } catch (Exception e) { - log.error(e.getMessage()); - return false; - } - } + @Override + public boolean testConnection(Database resources) { + try { + return SqlUtils.testConnection(resources.getJdbcUrl(), resources.getUserName(), resources.getPwd()); + } catch (Exception e) { + log.error(e.getMessage()); + return false; + } + } @Override public void download(List queryAll, HttpServletResponse response) throws IOException { diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/util/SqlUtils.java b/eladmin-system/src/main/java/me/zhengjie/modules/mnt/util/SqlUtils.java index d7e06b174..0e867af58 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/util/SqlUtils.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/mnt/util/SqlUtils.java @@ -61,6 +61,8 @@ private static DataSource getDataSource(String jdbcUrl, String userName, String druidDataSource.setDriverClassName(className); } + // 去掉不安全的参数 + jdbcUrl = sanitizeJdbcUrl(jdbcUrl); druidDataSource.setUrl(jdbcUrl); druidDataSource.setUsername(userName); @@ -198,4 +200,33 @@ private static List readSqlList(File sqlFile) throws Exception { return sqlList; } + /** + * 去除不安全的参数 + * @param jdbcUrl / + * @return / + */ + private static String sanitizeJdbcUrl(String jdbcUrl) { + // 定义不安全参数和其安全替代值 + String[][] unsafeParams = { + // allowLoadLocalInfile:允许使用 LOAD DATA LOCAL INFILE,可能导致文件泄露 + {"allowLoadLocalInfile", "false"}, + // allowUrlInLocalInfile:允许在 LOAD DATA LOCAL INFILE 中使用 URL,可能导致未经授权的文件访问 + {"allowUrlInLocalInfile", "false"}, + // autoDeserialize:允许自动反序列化对象,可能导致反序列化漏洞 + {"autoDeserialize", "false"}, + // allowNanAndInf:允许使用 NaN 和 Infinity 作为数字值,可能导致不一致的数据处理 + {"allowNanAndInf", "false"}, + // allowMultiQueries:允许在一个语句中执行多个查询,可能导致 SQL 注入攻击 + {"allowMultiQueries", "false"}, + // allowPublicKeyRetrieval:允许从服务器检索公钥,可能导致中间人攻击 + {"allowPublicKeyRetrieval", "false"} + }; + + // 替换不安全的参数 + for (String[] param : unsafeParams) { + jdbcUrl = jdbcUrl.replaceAll("(?i)" + param[0] + "=true", param[0] + "=" + param[1]); + } + return jdbcUrl; + } + } From 09585d3f0b9ca67f93a6d5f0d887aad29e3fb19a Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Wed, 15 Jan 2025 15:04:38 +0800 Subject: [PATCH 16/54] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96RedisUtils?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=BC=BA=E7=BC=93=E5=AD=98=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/me/zhengjie/utils/RedisUtils.java | 108 +++++++++++++++--- .../service/impl/QuartzJobServiceImpl.java | 4 +- .../rest/AuthorizationController.java | 2 +- .../security/service/OnlineUserService.java | 4 +- .../security/service/UserCacheManager.java | 5 +- .../service/impl/VerifyServiceImpl.java | 11 +- 6 files changed, 105 insertions(+), 29 deletions(-) diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/RedisUtils.java b/eladmin-common/src/main/java/me/zhengjie/utils/RedisUtils.java index 65d02789d..76fa7f40e 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/RedisUtils.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/RedisUtils.java @@ -15,6 +15,7 @@ */ package me.zhengjie.utils; +import cn.hutool.core.util.StrUtil; import com.google.common.collect.Lists; import com.google.common.collect.Sets; import org.slf4j.Logger; @@ -24,14 +25,16 @@ import org.springframework.data.redis.core.*; import org.springframework.data.redis.serializer.StringRedisSerializer; import org.springframework.stereotype.Component; + import java.util.*; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; /** * @author / */ @Component -@SuppressWarnings({"unchecked", "all"}) +@SuppressWarnings({"all"}) public class RedisUtils { private static final Logger log = LoggerFactory.getLogger(RedisUtils.class); @@ -39,9 +42,8 @@ public class RedisUtils { public RedisUtils(RedisTemplate redisTemplate) { this.redisTemplate = redisTemplate; - this.redisTemplate.setHashKeySerializer(new StringRedisSerializer()); this.redisTemplate.setKeySerializer(new StringRedisSerializer()); - this.redisTemplate.setStringSerializer(new StringRedisSerializer()); + this.redisTemplate.setHashKeySerializer(new StringRedisSerializer()); } /** @@ -221,6 +223,65 @@ public Object get(String key) { return key == null ? null : redisTemplate.opsForValue().get(key); } + /** + * 普通缓存获取 + * + * @param key 键 + * @return 值 + */ + public T get(String key, Class clazz) { + Object value = key == null ? null : redisTemplate.opsForValue().get(key); + if (value == null) { + return null; + } + if (clazz.isInstance(value)) { + return clazz.cast(value); + } else { + return null; + } + } + + /** + * 普通缓存获取 + * + * @param key 键 + * @param clazz 列表中元素的类型 + * @return 值 + */ + public List getList(String key, Class clazz) { + Object value = key == null ? null : redisTemplate.opsForValue().get(key); + if (value == null) { + return null; + } + if (value instanceof List) { + List list = (List) value; + // 检查每个元素是否为指定类型 + if (list.stream().allMatch(clazz::isInstance)) { + return list.stream().map(clazz::cast).collect(Collectors.toList()); + } + } + return null; + } + + + /** + * 普通缓存获取 + * + * @param key 键 + * @return 值 + */ + public String getStr(String key) { + if(StrUtil.isBlank(key)){ + return null; + } + Object value = redisTemplate.opsForValue().get(key); + if (value == null) { + return null; + } else { + return String.valueOf(value); + } + } + /** * 批量获取 * @@ -242,13 +303,17 @@ public List multiGet(List keys) { * @return true成功 false失败 */ public boolean set(String key, Object value) { - try { - redisTemplate.opsForValue().set(key, value); - return true; - } catch (Exception e) { - log.error(e.getMessage(), e); - return false; + int attempt = 0; + while (attempt < 3) { + try { + redisTemplate.opsForValue().set(key, value); + return true; + } catch (Exception e) { + attempt++; + log.error("Attempt {} failed: {}", attempt, e.getMessage(), e); + } } + return false; } /** @@ -716,10 +781,25 @@ public void delByKeys(String prefix, Set ids) { keys.addAll(redisTemplate.keys(new StringBuffer(prefix).append(id).toString())); } long count = redisTemplate.delete(keys); - // 此处提示可自行删除 - log.debug("--------------------------------------------"); - log.debug("成功删除缓存:" + keys.toString()); - log.debug("缓存删除数量:" + count + "个"); - log.debug("--------------------------------------------"); + } + + // ============================incr============================= + + /** + * 递增 + * @param key + * @return + */ + public Long increment(String key) { + return redisTemplate.opsForValue().increment(key); + } + + /** + * 递减 + * @param key + * @return + */ + public Long decrement(String key) { + return redisTemplate.opsForValue().decrement(key); } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/impl/QuartzJobServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/impl/QuartzJobServiceImpl.java index 06341e202..9915b0dfc 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/impl/QuartzJobServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/impl/QuartzJobServiceImpl.java @@ -145,11 +145,11 @@ public void executionSubJob(String[] tasks) throws InterruptedException { // 执行任务 execution(quartzJob); // 获取执行状态,如果执行失败则停止后面的子任务执行 - Boolean result = (Boolean) redisUtils.get(uuid); + Boolean result = redisUtils.get(uuid, Boolean.class); while (result == null) { // 休眠5秒,再次获取子任务执行情况 Thread.sleep(5000); - result = (Boolean) redisUtils.get(uuid); + result = redisUtils.get(uuid, Boolean.class); } if(!result){ redisUtils.del(uuid); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthorizationController.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthorizationController.java index effb15f52..04476de06 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthorizationController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthorizationController.java @@ -79,7 +79,7 @@ public ResponseEntity login(@Validated @RequestBody AuthUserDto authUser // 密码解密 String password = RsaUtils.decryptByPrivateKey(RsaProperties.privateKey, authUser.getPassword()); // 查询验证码 - String code = (String) redisUtils.get(authUser.getUuid()); + String code = redisUtils.get(authUser.getUuid(), String.class); // 清除验证码 redisUtils.del(authUser.getUuid()); if (StringUtils.isBlank(code)) { diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/OnlineUserService.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/OnlineUserService.java index d1fd765df..c496d8cde 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/OnlineUserService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/OnlineUserService.java @@ -92,7 +92,7 @@ public List getAll(String username){ Collections.reverse(keys); List onlineUserDtos = new ArrayList<>(); for (String key : keys) { - onlineUserDtos.add((OnlineUserDto) redisUtils.get(key)); + onlineUserDtos.add(redisUtils.get(key, OnlineUserDto.class)); } onlineUserDtos.sort((o1, o2) -> o2.getLoginTime().compareTo(o1.getLoginTime())); return onlineUserDtos; @@ -134,7 +134,7 @@ public void download(List all, HttpServletResponse response) thro * @return / */ public OnlineUserDto getOne(String key) { - return (OnlineUserDto)redisUtils.get(key); + return redisUtils.get(key, OnlineUserDto.class); } /** diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserCacheManager.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserCacheManager.java index 0808e65d2..03870dc0b 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserCacheManager.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserCacheManager.java @@ -46,10 +46,7 @@ public class UserCacheManager { public JwtUserDto getUserCache(String userName) { if (StringUtils.isNotEmpty(userName)) { // 获取数据 - Object obj = redisUtils.get(LoginProperties.cacheKey + userName); - if(obj != null){ - return (JwtUserDto)obj; - } + return redisUtils.get(LoginProperties.cacheKey + userName, JwtUserDto.class); } return null; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/VerifyServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/VerifyServiceImpl.java index 9f8c8ac51..e58b3eaca 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/VerifyServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/VerifyServiceImpl.java @@ -52,7 +52,7 @@ public EmailVo sendEmail(String email, String key) { // 如果不存在有效的验证码,就创建一个新的 TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig("template", TemplateConfig.ResourceMode.CLASSPATH)); Template template = engine.getTemplate("email.ftl"); - Object oldCode = redisUtils.get(redisKey); + String oldCode = redisUtils.get(redisKey, String.class); if(oldCode == null){ String code = RandomUtil.randomNumbers (6); // 存入缓存 @@ -60,19 +60,18 @@ public EmailVo sendEmail(String email, String key) { throw new BadRequestException("服务异常,请联系网站负责人"); } content = template.render(Dict.create().set("code",code)); - emailVo = new EmailVo(Collections.singletonList(email),"ELADMIN后台管理系统",content); - // 存在就再次发送原来的验证码 + // 存在就再次发送原来的验证码 } else { content = template.render(Dict.create().set("code",oldCode)); - emailVo = new EmailVo(Collections.singletonList(email),"ELADMIN后台管理系统",content); } + emailVo = new EmailVo(Collections.singletonList(email),"ELADMIN后台管理系统",content); return emailVo; } @Override public void validated(String key, String code) { - Object value = redisUtils.get(key); - if(value == null || !value.toString().equals(code)){ + String value = redisUtils.get(key, String.class); + if(!code.equals(value)){ throw new BadRequestException("无效验证码"); } else { redisUtils.del(key); From de601870549dfc18f335bd3b551907d53ce03b52 Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Wed, 15 Jan 2025 15:05:21 +0800 Subject: [PATCH 17/54] =?UTF-8?q?perf:=20=E5=8D=87=E7=BA=A7=20Spring=20Boo?= =?UTF-8?q?t=20=E7=89=88=E6=9C=AC=E8=87=B32.6.6=EF=BC=8C=E5=8D=87=E7=BA=A7?= =?UTF-8?q?=20druid=20=E7=89=88=E6=9C=AC=E8=87=B3=201.2.19=EF=BC=8C?= =?UTF-8?q?=E4=BC=98=E5=8C=96druid=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/resources/config/application-dev.yml | 28 ++++++++++--------- .../resources/config/application-prod.yml | 28 +++++++++++-------- .../src/main/resources/config/application.yml | 8 +++++- pom.xml | 4 +-- 4 files changed, 40 insertions(+), 28 deletions(-) diff --git a/eladmin-system/src/main/resources/config/application-dev.yml b/eladmin-system/src/main/resources/config/application-dev.yml index 6c5c47bb8..bb5317f61 100644 --- a/eladmin-system/src/main/resources/config/application-dev.yml +++ b/eladmin-system/src/main/resources/config/application-dev.yml @@ -7,21 +7,21 @@ spring: url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:eladmin}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false username: ${DB_USER:root} password: ${DB_PWD:123456} - # 初始连接数 - initial-size: 5 - # 最小连接数 - min-idle: 15 - # 最大连接数 - max-active: 30 - # 超时时间(以秒数为单位) - remove-abandoned-timeout: 180 - # 获取连接超时时间 + # 初始连接数,建议设置为与最小空闲连接数相同 + initial-size: 20 + # 最小空闲连接数,保持足够的空闲连接以应对请求 + min-idle: 20 + # 最大连接数,根据并发需求适当增加 + max-active: 50 + # 获取连接超时时间(毫秒),调整以满足响应时间要求 max-wait: 3000 - # 连接有效性检测时间 + # 启用KeepAlive机制,保持长连接 + keep-alive: true + # 连接有效性检测间隔时间(毫秒),定期检查连接的健康状态 time-between-eviction-runs-millis: 60000 - # 连接在池中最小生存的时间 + # 连接在池中最小生存时间(毫秒),确保连接在池中至少存在一段时间 min-evictable-idle-time-millis: 300000 - # 连接在池中最大生存的时间 + # 连接在池中最大生存时间(毫秒),防止连接在池中停留过长 max-evictable-idle-time-millis: 900000 # 指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除 test-while-idle: true @@ -29,8 +29,10 @@ spring: test-on-borrow: true # 是否在归还到池中前进行检验 test-on-return: false + # 停用 com_ping 探活机制 + use-ping-method: false # 检测连接是否有效 - validation-query: select 1 + validation-query: SELECT 1 # 配置监控统计 webStatFilter: enabled: true diff --git a/eladmin-system/src/main/resources/config/application-prod.yml b/eladmin-system/src/main/resources/config/application-prod.yml index 39d6a11f5..291e20e70 100644 --- a/eladmin-system/src/main/resources/config/application-prod.yml +++ b/eladmin-system/src/main/resources/config/application-prod.yml @@ -7,19 +7,21 @@ spring: url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:eladmin}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false username: ${DB_USER:root} password: ${DB_PWD:123456} - # 初始连接数 - initial-size: 5 - # 最小连接数 - min-idle: 15 - # 最大连接数 - max-active: 30 - # 获取连接超时时间 - max-wait: 5000 - # 连接有效性检测时间 + # 初始连接数,建议设置为与最小空闲连接数相同 + initial-size: 20 + # 最小空闲连接数,保持足够的空闲连接以应对请求 + min-idle: 20 + # 最大连接数,根据并发需求适当增加 + max-active: 50 + # 获取连接超时时间(毫秒),调整以满足响应时间要求 + max-wait: 3000 + # 启用KeepAlive机制,保持长连接 + keep-alive: true + # 连接有效性检测间隔时间(毫秒),定期检查连接的健康状态 time-between-eviction-runs-millis: 60000 - # 连接在池中最小生存的时间 + # 连接在池中最小生存时间(毫秒),确保连接在池中至少存在一段时间 min-evictable-idle-time-millis: 300000 - # 连接在池中最大生存的时间 + # 连接在池中最大生存时间(毫秒),防止连接在池中停留过长 max-evictable-idle-time-millis: 900000 # 指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除 test-while-idle: true @@ -27,8 +29,10 @@ spring: test-on-borrow: true # 是否在归还到池中前进行检验 test-on-return: false + # 停用 com_ping 探活机制 + use-ping-method: false # 检测连接是否有效 - validation-query: select 1 + validation-query: SELECT 1 # 配置监控统计 webStatFilter: enabled: true diff --git a/eladmin-system/src/main/resources/config/application.yml b/eladmin-system/src/main/resources/config/application.yml index 6eb7fd4e0..8f9b917ff 100644 --- a/eladmin-system/src/main/resources/config/application.yml +++ b/eladmin-system/src/main/resources/config/application.yml @@ -1,8 +1,14 @@ server: port: 8000 + http2: + # 启用 HTTP/2 支持,提升传输效率 + enabled: true compression: + # 启用 GZIP 压缩,减少传输数据量 enabled: true - mime-types: text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json + # 需要压缩的 MIME 类型 + mime-types: text/html, text/xml, text/plain, application/json + # 最小压缩响应大小(字节) spring: freemarker: diff --git a/pom.xml b/pom.xml index 2444137ca..7df18bf44 100644 --- a/pom.xml +++ b/pom.xml @@ -23,7 +23,7 @@ org.springframework.boot spring-boot-starter-parent - 2.6.4 + 2.6.6 @@ -35,7 +35,7 @@ 1.16 2.9.2 1.2.83 - 1.2.8 + 1.2.19 2.11.1 1.4.2.Final From 733dd78e922f8314d0f910983cd1d88420590037 Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Wed, 15 Jan 2025 15:07:01 +0800 Subject: [PATCH 18/54] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=90=AF?= =?UTF-8?q?=E5=8A=A8=E6=97=A5=E5=BF=97=E5=92=8CSwagger=E8=AE=BF=E9=97=AE?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eladmin-system/src/main/java/me/zhengjie/AppRun.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/eladmin-system/src/main/java/me/zhengjie/AppRun.java b/eladmin-system/src/main/java/me/zhengjie/AppRun.java index ad126018f..8bdcd0294 100644 --- a/eladmin-system/src/main/java/me/zhengjie/AppRun.java +++ b/eladmin-system/src/main/java/me/zhengjie/AppRun.java @@ -16,6 +16,7 @@ package me.zhengjie; import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; import me.zhengjie.annotation.rest.AnonymousGetMapping; import me.zhengjie.utils.SpringContextHolder; import org.springframework.boot.SpringApplication; @@ -33,6 +34,7 @@ * @author Zheng Jie * @date 2018/11/15 9:20:19 */ +@Slf4j @EnableAsync @RestController @Api(hidden = true) @@ -47,6 +49,10 @@ public static void main(String[] args) { // 或者在 application.yml 添加文件路径,方便 kill,kill `cat /home/eladmin/app.pid` springApplication.addListeners(new ApplicationPidFileWriter()); springApplication.run(args); + log.info("---------------------------------------------"); + log.info("Local: {}", "http://localhost:8000"); + log.info("Swagger: {}", "http://localhost:8000/doc.html"); + log.info("---------------------------------------------"); } @Bean From 111ff997c53e5bcf1c5bfe9a4956861ef1f407e9 Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Wed, 15 Jan 2025 15:08:27 +0800 Subject: [PATCH 19/54] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0RemoveDruidAdCo?= =?UTF-8?q?nfig=E4=BB=A5=E7=A7=BB=E9=99=A4Druid=E5=B9=BF=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zhengjie/config/RemoveDruidAdConfig.java | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 eladmin-common/src/main/java/me/zhengjie/config/RemoveDruidAdConfig.java diff --git a/eladmin-common/src/main/java/me/zhengjie/config/RemoveDruidAdConfig.java b/eladmin-common/src/main/java/me/zhengjie/config/RemoveDruidAdConfig.java new file mode 100644 index 000000000..f432de471 --- /dev/null +++ b/eladmin-common/src/main/java/me/zhengjie/config/RemoveDruidAdConfig.java @@ -0,0 +1,78 @@ +package me.zhengjie.config; + +import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure; +import com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties; +import com.alibaba.druid.util.Utils; +import org.springframework.boot.autoconfigure.AutoConfigureAfter; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import javax.servlet.*; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +/** + * @author Zheng Jie + * @description + * @date 2025-01-11 + **/ +@Configuration +@SuppressWarnings("all") +@ConditionalOnWebApplication +@AutoConfigureAfter(DruidDataSourceAutoConfigure.class) +@ConditionalOnProperty(name = "spring.datasource.druid.stat-view-servlet.enabled", + havingValue = "true", matchIfMissing = true) +public class RemoveDruidAdConfig { + + /** + * 方法名: removeDruidAdFilterRegistrationBean + * 方法描述 除去页面底部的广告 + * @param properties com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties + * @return org.springframework.boot.web.servlet.FilterRegistrationBean + */ + @Bean + public FilterRegistrationBean removeDruidAdFilterRegistrationBean(DruidStatProperties properties) { + + // 获取web监控页面的参数 + DruidStatProperties.StatViewServlet config = properties.getStatViewServlet(); + // 提取common.js的配置路径 + String pattern = config.getUrlPattern() != null ? config.getUrlPattern() : "/druid/*"; + String commonJsPattern = pattern.replaceAll("\\*", "js/common.js"); + + final String filePath = "support/http/resources/js/common.js"; + + //创建filter进行过滤 + Filter filter = new Filter() { + @Override + public void init(FilterConfig filterConfig) throws ServletException {} + + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { + HttpServletRequest httpRequest = (HttpServletRequest) request; + HttpServletResponse httpResponse = (HttpServletResponse) response; + if (httpRequest.getRequestURI().endsWith("js/common.js")) { + // 获取common.js + String text = Utils.readFromResource(filePath); + // 正则替换banner, 除去底部的广告信息 + text = text.replaceAll("
", ""); + text = text.replaceAll("powered by.*?shrek.wang", ""); + httpResponse.setContentType("application/javascript"); + httpResponse.setCharacterEncoding("UTF-8"); + httpResponse.getWriter().write(text); + } else { + chain.doFilter(request, response); + } + } + @Override + public void destroy() {} + }; + FilterRegistrationBean registrationBean = new FilterRegistrationBean(); + registrationBean.setFilter(filter); + registrationBean.addUrlPatterns(commonJsPattern); + return registrationBean; + } +} From 326d50503a73c9a3f3264663ace3a22125735c97 Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Wed, 15 Jan 2025 15:12:44 +0800 Subject: [PATCH 20/54] =?UTF-8?q?refactor:=20=E6=8F=90=E5=8F=96=E5=8C=BF?= =?UTF-8?q?=E5=90=8D=E8=AE=BF=E9=97=AEURL=E5=A4=84=E7=90=86=E8=87=B3AnonTa?= =?UTF-8?q?gUtils=E5=B7=A5=E5=85=B7=E7=B1=BB=EF=BC=8C=E4=BC=98=E5=8C=96Swa?= =?UTF-8?q?gger=E6=8E=A5=E5=8F=A3=E8=AE=A4=E8=AF=81=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../me/zhengjie/config/SwaggerConfig.java | 20 +++- .../java/me/zhengjie/utils/AnonTagUtils.java | 103 ++++++++++++++++++ .../security/config/SpringSecurityConfig.java | 56 +--------- 3 files changed, 123 insertions(+), 56 deletions(-) create mode 100644 eladmin-common/src/main/java/me/zhengjie/utils/AnonTagUtils.java diff --git a/eladmin-common/src/main/java/me/zhengjie/config/SwaggerConfig.java b/eladmin-common/src/main/java/me/zhengjie/config/SwaggerConfig.java index 1edbcc495..b1a868c4b 100644 --- a/eladmin-common/src/main/java/me/zhengjie/config/SwaggerConfig.java +++ b/eladmin-common/src/main/java/me/zhengjie/config/SwaggerConfig.java @@ -20,7 +20,10 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.RequiredArgsConstructor; +import me.zhengjie.utils.AnonTagUtils; import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.Ordered; @@ -41,6 +44,9 @@ import java.util.ArrayList; import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + import static springfox.documentation.schema.AlternateTypeRules.newRule; /** @@ -50,6 +56,7 @@ */ @Configuration @EnableSwagger2 +@RequiredArgsConstructor public class SwaggerConfig { @Value("${jwt.header}") @@ -58,6 +65,11 @@ public class SwaggerConfig { @Value("${swagger.enabled}") private Boolean enabled; + @Value("${server.servlet.context-path:}") + private String apiPath; + + private final ApplicationContext applicationContext; + @Bean @SuppressWarnings("all") public Docket createRestApi() { @@ -98,10 +110,14 @@ private List securityContexts() { } private SecurityContext getContextByPath() { + Set urls = AnonTagUtils.getAllAnonymousUrl(applicationContext); + urls = urls.stream().filter(url -> !url.equals("/")).collect(Collectors.toSet()); + String regExp = "^(?!" + apiPath + String.join("|" + apiPath, urls) + ").*$"; return SecurityContext.builder() .securityReferences(defaultAuth()) - // 表示 /auth/code、/auth/login 接口不需要使用securitySchemes即不需要带token - .operationSelector(o->o.requestMappingPattern().matches("^(?!/auth/code|/auth/login).*$")) + .operationSelector(o->o.requestMappingPattern() + // 排除不需要认证的接口 + .matches(regExp)) .build(); } diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/AnonTagUtils.java b/eladmin-common/src/main/java/me/zhengjie/utils/AnonTagUtils.java new file mode 100644 index 000000000..d57ebf28c --- /dev/null +++ b/eladmin-common/src/main/java/me/zhengjie/utils/AnonTagUtils.java @@ -0,0 +1,103 @@ +/* + * Copyright 2019-2020 the original author or authors. + * + * 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 me.zhengjie.utils; + +import me.zhengjie.annotation.AnonymousAccess; +import me.zhengjie.utils.enums.RequestMethodEnum; +import org.springframework.context.ApplicationContext; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.method.HandlerMethod; +import org.springframework.web.servlet.mvc.method.RequestMappingInfo; +import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; + +import java.util.*; + +/** + * @author Zheng Jie + * @description 匿名标记工具 + * @date 2025-01-13 + **/ +public class AnonTagUtils { + + /** + * 获取匿名标记的URL + * @param applicationContext / + * @return / + */ + public static Map> getAnonymousUrl(ApplicationContext applicationContext){ + RequestMappingHandlerMapping requestMappingHandlerMapping = (RequestMappingHandlerMapping) applicationContext.getBean("requestMappingHandlerMapping"); + Map handlerMethodMap = requestMappingHandlerMapping.getHandlerMethods(); + Map> anonymousUrls = new HashMap<>(8); + // 获取匿名标记 + Set get = new HashSet<>(); + Set post = new HashSet<>(); + Set put = new HashSet<>(); + Set patch = new HashSet<>(); + Set delete = new HashSet<>(); + Set all = new HashSet<>(); + for (Map.Entry infoEntry : handlerMethodMap.entrySet()) { + HandlerMethod handlerMethod = infoEntry.getValue(); + AnonymousAccess anonymousAccess = handlerMethod.getMethodAnnotation(AnonymousAccess.class); + if (null != anonymousAccess) { + List requestMethods = new ArrayList<>(infoEntry.getKey().getMethodsCondition().getMethods()); + RequestMethodEnum request = RequestMethodEnum.find(requestMethods.isEmpty() ? RequestMethodEnum.ALL.getType() : requestMethods.get(0).name()); + if (infoEntry.getKey().getPatternsCondition()!=null) { + switch (Objects.requireNonNull(request)) { + case GET: + get.addAll(infoEntry.getKey().getPatternsCondition().getPatterns()); + break; + case POST: + post.addAll(infoEntry.getKey().getPatternsCondition().getPatterns()); + break; + case PUT: + put.addAll(infoEntry.getKey().getPatternsCondition().getPatterns()); + break; + case PATCH: + patch.addAll(infoEntry.getKey().getPatternsCondition().getPatterns()); + break; + case DELETE: + delete.addAll(infoEntry.getKey().getPatternsCondition().getPatterns()); + break; + default: + all.addAll(infoEntry.getKey().getPatternsCondition().getPatterns()); + break; + } + } + } + } + anonymousUrls.put(RequestMethodEnum.GET.getType(), get); + anonymousUrls.put(RequestMethodEnum.POST.getType(), post); + anonymousUrls.put(RequestMethodEnum.PUT.getType(), put); + anonymousUrls.put(RequestMethodEnum.PATCH.getType(), patch); + anonymousUrls.put(RequestMethodEnum.DELETE.getType(), delete); + anonymousUrls.put(RequestMethodEnum.ALL.getType(), all); + return anonymousUrls; + } + + /** + * 获取所有匿名标记的URL + * @param applicationContext / + * @return / + */ + public static Set getAllAnonymousUrl(ApplicationContext applicationContext){ + Set allUrl = new HashSet<>(); + Map> anonymousUrls = getAnonymousUrl(applicationContext); + for (String key : anonymousUrls.keySet()) { + allUrl.addAll(anonymousUrls.get(key)); + } + return allUrl; + } +} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SpringSecurityConfig.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SpringSecurityConfig.java index ad886f313..0a776292e 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SpringSecurityConfig.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SpringSecurityConfig.java @@ -16,11 +16,11 @@ package me.zhengjie.modules.security.config; import lombok.RequiredArgsConstructor; -import me.zhengjie.annotation.AnonymousAccess; import me.zhengjie.modules.security.config.bean.SecurityProperties; import me.zhengjie.modules.security.security.*; import me.zhengjie.modules.security.service.OnlineUserService; import me.zhengjie.modules.security.service.UserCacheManager; +import me.zhengjie.utils.AnonTagUtils; import me.zhengjie.utils.enums.RequestMethodEnum; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; @@ -35,11 +35,7 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; -import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.filter.CorsFilter; -import org.springframework.web.method.HandlerMethod; -import org.springframework.web.servlet.mvc.method.RequestMappingInfo; -import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; import java.util.*; /** @@ -74,11 +70,8 @@ public PasswordEncoder passwordEncoder() { @Override protected void configure(HttpSecurity httpSecurity) throws Exception { - // 搜寻匿名标记 url: @AnonymousAccess - RequestMappingHandlerMapping requestMappingHandlerMapping = (RequestMappingHandlerMapping) applicationContext.getBean("requestMappingHandlerMapping"); - Map handlerMethodMap = requestMappingHandlerMapping.getHandlerMethods(); // 获取匿名标记 - Map> anonymousUrls = getAnonymousUrl(handlerMethodMap); + Map> anonymousUrls = AnonTagUtils.getAnonymousUrl(applicationContext); httpSecurity // 禁用 CSRF .csrf().disable() @@ -140,49 +133,4 @@ protected void configure(HttpSecurity httpSecurity) throws Exception { private TokenConfigurer securityConfigurerAdapter() { return new TokenConfigurer(tokenProvider, properties, onlineUserService, userCacheManager); } - - private Map> getAnonymousUrl(Map handlerMethodMap) { - Map> anonymousUrls = new HashMap<>(8); - Set get = new HashSet<>(); - Set post = new HashSet<>(); - Set put = new HashSet<>(); - Set patch = new HashSet<>(); - Set delete = new HashSet<>(); - Set all = new HashSet<>(); - for (Map.Entry infoEntry : handlerMethodMap.entrySet()) { - HandlerMethod handlerMethod = infoEntry.getValue(); - AnonymousAccess anonymousAccess = handlerMethod.getMethodAnnotation(AnonymousAccess.class); - if (null != anonymousAccess) { - List requestMethods = new ArrayList<>(infoEntry.getKey().getMethodsCondition().getMethods()); - RequestMethodEnum request = RequestMethodEnum.find(requestMethods.size() == 0 ? RequestMethodEnum.ALL.getType() : requestMethods.get(0).name()); - switch (Objects.requireNonNull(request)) { - case GET: - get.addAll(infoEntry.getKey().getPatternsCondition().getPatterns()); - break; - case POST: - post.addAll(infoEntry.getKey().getPatternsCondition().getPatterns()); - break; - case PUT: - put.addAll(infoEntry.getKey().getPatternsCondition().getPatterns()); - break; - case PATCH: - patch.addAll(infoEntry.getKey().getPatternsCondition().getPatterns()); - break; - case DELETE: - delete.addAll(infoEntry.getKey().getPatternsCondition().getPatterns()); - break; - default: - all.addAll(infoEntry.getKey().getPatternsCondition().getPatterns()); - break; - } - } - } - anonymousUrls.put(RequestMethodEnum.GET.getType(), get); - anonymousUrls.put(RequestMethodEnum.POST.getType(), post); - anonymousUrls.put(RequestMethodEnum.PUT.getType(), put); - anonymousUrls.put(RequestMethodEnum.PATCH.getType(), patch); - anonymousUrls.put(RequestMethodEnum.DELETE.getType(), delete); - anonymousUrls.put(RequestMethodEnum.ALL.getType(), all); - return anonymousUrls; - } } From 4454b71bfdc7e6b559b283be1eedca96a173dc29 Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Wed, 15 Jan 2025 15:28:41 +0800 Subject: [PATCH 21/54] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E5=92=8C=E4=BB=A3=E7=A0=81=E7=BB=93=E6=9E=84=201?= =?UTF-8?q?=E3=80=81=E4=BC=98=E5=8C=96=E9=A1=B9=E7=9B=AE=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E3=80=81=E4=BC=98=E5=8C=96=E9=83=A8=E5=88=86=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=202=E3=80=81=E6=96=B0=E5=A2=9EAnonTagUtils=EF=BC=8C=E7=94=A8?= =?UTF-8?q?=E4=BA=8E=E8=8E=B7=E5=8F=96=E5=8C=BF=E5=90=8D=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=203=E3=80=81=E4=BC=98=E5=8C=96Swagger=EF=BC=8C=E6=8E=92?= =?UTF-8?q?=E9=99=A4=E4=B8=8D=E9=9C=80=E8=A6=81=E8=AE=A4=E8=AF=81=E7=9A=84?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=204=E3=80=81=E6=96=B0=E5=A2=9EBigDecimalUtil?= =?UTF-8?q?s=EF=BC=8C=E7=94=A8=E4=BA=8EBigDecimal=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=EF=BC=8C+-*/=E8=AE=A1=E7=AE=97=EF=BC=8C=E5=85=83=E4=B8=8E?= =?UTF-8?q?=E5=88=86=E7=9A=84=E8=BD=AC=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zhengjie/annotation/DataPermission.java | 2 +- .../{ => rest}/AnonymousAccess.java | 2 +- .../rest/AnonymousDeleteMapping.java | 1 - .../annotation/rest/AnonymousGetMapping.java | 1 - .../rest/AnonymousPatchMapping.java | 1 - .../annotation/rest/AnonymousPostMapping.java | 1 - .../annotation/rest/AnonymousPutMapping.java | 1 - .../me/zhengjie/config/AsyncExecutor.java | 96 ++++++++++++ .../{ => properties}/FileProperties.java | 2 +- .../{ => properties}/RsaProperties.java | 2 +- .../config/webConfig}/ConfigurerAdapter.java | 3 +- .../config/webConfig/QueryCustomizer.java | 4 +- .../config/{ => webConfig}/SwaggerConfig.java | 2 +- .../config/webConfig}/WebSocketConfig.java | 2 +- .../java/me/zhengjie/utils/AnonTagUtils.java | 2 +- .../me/zhengjie/utils/BigDecimalUtils.java | 143 ++++++++++++++++++ .../main/java/me/zhengjie/utils/CallBack.java | 43 ------ .../main/java/me/zhengjie/utils/FileUtil.java | 21 ++- .../java/me/zhengjie/utils/PageResult.java | 24 ++- .../java/me/zhengjie/utils/SecurityUtils.java | 2 +- ...ntextHolder.java => SpringBeanHolder.java} | 38 +++-- .../java/me/zhengjie/utils/StringUtils.java | 2 +- .../main/java/me/zhengjie/utils/ColUtil.java | 2 +- .../{generator.properties => gen.properties} | 0 eladmin-system/pom.xml | 6 - .../src/main/java/me/zhengjie/AppRun.java | 6 +- .../config/thread/AsyncTaskProperties.java | 59 -------- .../config/thread/CustomExecutorConfig.java | 52 ------- .../modules/{mnt => maint}/domain/App.java | 2 +- .../{mnt => maint}/domain/Database.java | 2 +- .../modules/{mnt => maint}/domain/Deploy.java | 2 +- .../{mnt => maint}/domain/DeployHistory.java | 2 +- .../{mnt => maint}/domain/ServerDeploy.java | 2 +- .../repository/AppRepository.java | 4 +- .../repository/DatabaseRepository.java | 4 +- .../repository/DeployHistoryRepository.java | 4 +- .../repository/DeployRepository.java | 4 +- .../repository/ServerDeployRepository.java | 4 +- .../{mnt => maint}/rest/AppController.java | 10 +- .../rest/DatabaseController.java | 12 +- .../{mnt => maint}/rest/DeployController.java | 12 +- .../rest/DeployHistoryController.java | 8 +- .../rest/ServerDeployController.java | 10 +- .../{mnt => maint}/service/AppService.java | 8 +- .../service/DatabaseService.java | 8 +- .../service/DeployHistoryService.java | 8 +- .../{mnt => maint}/service/DeployService.java | 10 +- .../service/ServerDeployService.java | 8 +- .../{mnt => maint}/service/dto/AppDto.java | 2 +- .../service/dto/AppQueryCriteria.java | 2 +- .../service/dto/DatabaseDto.java | 2 +- .../service/dto/DatabaseQueryCriteria.java | 2 +- .../{mnt => maint}/service/dto/DeployDto.java | 2 +- .../service/dto/DeployHistoryDto.java | 2 +- .../dto/DeployHistoryQueryCriteria.java | 2 +- .../service/dto/DeployQueryCriteria.java | 2 +- .../service/dto/ServerDeployDto.java | 2 +- .../dto/ServerDeployQueryCriteria.java | 2 +- .../service/impl/AppServiceImpl.java | 14 +- .../service/impl/DatabaseServiceImpl.java | 16 +- .../impl/DeployHistoryServiceImpl.java | 14 +- .../service/impl/DeployServiceImpl.java | 38 ++--- .../service/impl/ServerDeployServiceImpl.java | 16 +- .../service/mapstruct/AppMapper.java | 6 +- .../service/mapstruct/DatabaseMapper.java | 6 +- .../mapstruct/DeployHistoryMapper.java | 6 +- .../service/mapstruct/DeployMapper.java | 6 +- .../service/mapstruct/ServerDeployMapper.java | 6 +- .../{mnt => maint}/util/DataTypeEnum.java | 2 +- .../{mnt => maint}/util/ExecuteShellUtil.java | 2 +- .../{mnt => maint}/util/ScpClientUtil.java | 2 +- .../modules/{mnt => maint}/util/SqlUtils.java | 2 +- .../{mnt => maint}/websocket/MsgType.java | 2 +- .../{mnt => maint}/websocket/SocketMsg.java | 2 +- .../websocket/WebSocketServer.java | 2 +- .../quartz/rest/QuartzJobController.java | 4 +- .../modules/quartz/utils/ExecutionJob.java | 12 +- .../modules/quartz/utils/QuartzRunnable.java | 4 +- .../rest/AuthorizationController.java | 2 +- .../modules/system/rest/UserController.java | 2 +- .../system/service/impl/UserServiceImpl.java | 2 +- .../me/zhengjie/sysrunner/SystemRunner.java | 37 +++++ .../enums}/AliPayStatusEnum.java | 2 +- .../me/zhengjie/rest/AliPayController.java | 4 +- .../service/impl/LocalStorageServiceImpl.java | 2 +- pom.xml | 6 + sql/eladmin.sql | 10 +- sql/tool_picture.sql | 2 - ...02\344\275\225\351\200\211\346\213\251.md" | 11 -- 89 files changed, 517 insertions(+), 389 deletions(-) rename eladmin-common/src/main/java/me/zhengjie/annotation/{ => rest}/AnonymousAccess.java (95%) create mode 100644 eladmin-common/src/main/java/me/zhengjie/config/AsyncExecutor.java rename eladmin-common/src/main/java/me/zhengjie/config/{ => properties}/FileProperties.java (97%) rename eladmin-common/src/main/java/me/zhengjie/config/{ => properties}/RsaProperties.java (96%) rename {eladmin-system/src/main/java/me/zhengjie/config => eladmin-common/src/main/java/me/zhengjie/config/webConfig}/ConfigurerAdapter.java (97%) rename eladmin-system/src/main/java/me/zhengjie/config/RelaxedQueryCharsConnectorCustomizer.java => eladmin-common/src/main/java/me/zhengjie/config/webConfig/QueryCustomizer.java (89%) rename eladmin-common/src/main/java/me/zhengjie/config/{ => webConfig}/SwaggerConfig.java (99%) rename {eladmin-system/src/main/java/me/zhengjie/config => eladmin-common/src/main/java/me/zhengjie/config/webConfig}/WebSocketConfig.java (96%) create mode 100644 eladmin-common/src/main/java/me/zhengjie/utils/BigDecimalUtils.java delete mode 100644 eladmin-common/src/main/java/me/zhengjie/utils/CallBack.java rename eladmin-common/src/main/java/me/zhengjie/utils/{SpringContextHolder.java => SpringBeanHolder.java} (81%) rename eladmin-generator/src/main/resources/{generator.properties => gen.properties} (100%) delete mode 100644 eladmin-system/src/main/java/me/zhengjie/config/thread/AsyncTaskProperties.java delete mode 100644 eladmin-system/src/main/java/me/zhengjie/config/thread/CustomExecutorConfig.java rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/domain/App.java (97%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/domain/Database.java (97%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/domain/Deploy.java (97%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/domain/DeployHistory.java (97%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/domain/ServerDeploy.java (98%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/repository/AppRepository.java (90%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/repository/DatabaseRepository.java (90%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/repository/DeployHistoryRepository.java (90%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/repository/DeployRepository.java (90%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/repository/ServerDeployRepository.java (91%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/rest/AppController.java (92%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/rest/DatabaseController.java (93%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/rest/DeployController.java (94%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/rest/DeployHistoryController.java (91%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/rest/ServerDeployController.java (92%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/service/AppService.java (89%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/service/DatabaseService.java (90%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/service/DeployHistoryService.java (88%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/service/DeployService.java (90%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/service/ServerDeployService.java (90%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/service/dto/AppDto.java (96%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/service/dto/AppQueryCriteria.java (95%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/service/dto/DatabaseDto.java (95%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/service/dto/DatabaseQueryCriteria.java (95%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/service/dto/DeployDto.java (97%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/service/dto/DeployHistoryDto.java (95%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/service/dto/DeployHistoryQueryCriteria.java (95%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/service/dto/DeployQueryCriteria.java (95%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/service/dto/ServerDeployDto.java (96%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/service/dto/ServerDeployQueryCriteria.java (95%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/service/impl/AppServiceImpl.java (91%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/service/impl/DatabaseServiceImpl.java (89%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/service/impl/DeployHistoryServiceImpl.java (88%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/service/impl/DeployServiceImpl.java (93%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/service/impl/ServerDeployServiceImpl.java (89%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/service/mapstruct/AppMapper.java (85%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/service/mapstruct/DatabaseMapper.java (85%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/service/mapstruct/DeployHistoryMapper.java (84%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/service/mapstruct/DeployMapper.java (85%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/service/mapstruct/ServerDeployMapper.java (84%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/util/DataTypeEnum.java (99%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/util/ExecuteShellUtil.java (98%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/util/ScpClientUtil.java (98%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/util/SqlUtils.java (99%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/websocket/MsgType.java (94%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/websocket/SocketMsg.java (95%) rename eladmin-system/src/main/java/me/zhengjie/modules/{mnt => maint}/websocket/WebSocketServer.java (98%) create mode 100644 eladmin-system/src/main/java/me/zhengjie/sysrunner/SystemRunner.java rename eladmin-tools/src/main/java/me/zhengjie/{utils => domain/enums}/AliPayStatusEnum.java (97%) delete mode 100644 sql/tool_picture.sql delete mode 100644 "sql/\350\204\232\346\234\254\345\246\202\344\275\225\351\200\211\346\213\251.md" diff --git a/eladmin-common/src/main/java/me/zhengjie/annotation/DataPermission.java b/eladmin-common/src/main/java/me/zhengjie/annotation/DataPermission.java index 044d551e5..e037b7eb8 100644 --- a/eladmin-common/src/main/java/me/zhengjie/annotation/DataPermission.java +++ b/eladmin-common/src/main/java/me/zhengjie/annotation/DataPermission.java @@ -28,7 +28,7 @@ * 应该是 @DataPermission(joinName = "dept", fieldName = "id") *

* @author Zheng Jie - * @website https://eladmin.vip + * @website ... * @date 2020-05-07 **/ @Target(ElementType.TYPE) diff --git a/eladmin-common/src/main/java/me/zhengjie/annotation/AnonymousAccess.java b/eladmin-common/src/main/java/me/zhengjie/annotation/rest/AnonymousAccess.java similarity index 95% rename from eladmin-common/src/main/java/me/zhengjie/annotation/AnonymousAccess.java rename to eladmin-common/src/main/java/me/zhengjie/annotation/rest/AnonymousAccess.java index b2c168fe9..6755eb26e 100644 --- a/eladmin-common/src/main/java/me/zhengjie/annotation/AnonymousAccess.java +++ b/eladmin-common/src/main/java/me/zhengjie/annotation/rest/AnonymousAccess.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.annotation; +package me.zhengjie.annotation.rest; import java.lang.annotation.*; diff --git a/eladmin-common/src/main/java/me/zhengjie/annotation/rest/AnonymousDeleteMapping.java b/eladmin-common/src/main/java/me/zhengjie/annotation/rest/AnonymousDeleteMapping.java index 6a81c2e92..0617e3837 100644 --- a/eladmin-common/src/main/java/me/zhengjie/annotation/rest/AnonymousDeleteMapping.java +++ b/eladmin-common/src/main/java/me/zhengjie/annotation/rest/AnonymousDeleteMapping.java @@ -22,7 +22,6 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import me.zhengjie.annotation.AnonymousAccess; import org.springframework.core.annotation.AliasFor; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; diff --git a/eladmin-common/src/main/java/me/zhengjie/annotation/rest/AnonymousGetMapping.java b/eladmin-common/src/main/java/me/zhengjie/annotation/rest/AnonymousGetMapping.java index c260a71bd..55cbf63b6 100644 --- a/eladmin-common/src/main/java/me/zhengjie/annotation/rest/AnonymousGetMapping.java +++ b/eladmin-common/src/main/java/me/zhengjie/annotation/rest/AnonymousGetMapping.java @@ -22,7 +22,6 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import me.zhengjie.annotation.AnonymousAccess; import org.springframework.core.annotation.AliasFor; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; diff --git a/eladmin-common/src/main/java/me/zhengjie/annotation/rest/AnonymousPatchMapping.java b/eladmin-common/src/main/java/me/zhengjie/annotation/rest/AnonymousPatchMapping.java index 668661783..67d941c0e 100644 --- a/eladmin-common/src/main/java/me/zhengjie/annotation/rest/AnonymousPatchMapping.java +++ b/eladmin-common/src/main/java/me/zhengjie/annotation/rest/AnonymousPatchMapping.java @@ -22,7 +22,6 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import me.zhengjie.annotation.AnonymousAccess; import org.springframework.core.annotation.AliasFor; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; diff --git a/eladmin-common/src/main/java/me/zhengjie/annotation/rest/AnonymousPostMapping.java b/eladmin-common/src/main/java/me/zhengjie/annotation/rest/AnonymousPostMapping.java index 8f1cdcdd9..a6fe644db 100644 --- a/eladmin-common/src/main/java/me/zhengjie/annotation/rest/AnonymousPostMapping.java +++ b/eladmin-common/src/main/java/me/zhengjie/annotation/rest/AnonymousPostMapping.java @@ -22,7 +22,6 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import me.zhengjie.annotation.AnonymousAccess; import org.springframework.core.annotation.AliasFor; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; diff --git a/eladmin-common/src/main/java/me/zhengjie/annotation/rest/AnonymousPutMapping.java b/eladmin-common/src/main/java/me/zhengjie/annotation/rest/AnonymousPutMapping.java index 7c417dac2..bb2d890eb 100644 --- a/eladmin-common/src/main/java/me/zhengjie/annotation/rest/AnonymousPutMapping.java +++ b/eladmin-common/src/main/java/me/zhengjie/annotation/rest/AnonymousPutMapping.java @@ -22,7 +22,6 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import me.zhengjie.annotation.AnonymousAccess; import org.springframework.core.annotation.AliasFor; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; diff --git a/eladmin-common/src/main/java/me/zhengjie/config/AsyncExecutor.java b/eladmin-common/src/main/java/me/zhengjie/config/AsyncExecutor.java new file mode 100644 index 000000000..8e9ffe389 --- /dev/null +++ b/eladmin-common/src/main/java/me/zhengjie/config/AsyncExecutor.java @@ -0,0 +1,96 @@ +/* + * Copyright 2019-2020 Zheng Jie + * + * 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 me.zhengjie.config; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.AsyncConfigurer; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; + +import java.util.concurrent.*; +import java.util.concurrent.atomic.AtomicInteger; + +/** + * 创建自定义的线程池 + * @author Zheng Jie + * @description + * @date 2023-06-08 + **/ +@EnableAsync +@Configuration +public class AsyncExecutor implements AsyncConfigurer { + + public static int corePoolSize; + + public static int maxPoolSize; + + public static int keepAliveSeconds; + + public static int queueCapacity; + + @Value("${task.pool.core-pool-size}") + public void setCorePoolSize(int corePoolSize) { + AsyncExecutor.corePoolSize = corePoolSize; + } + + @Value("${task.pool.max-pool-size}") + public void setMaxPoolSize(int maxPoolSize) { + AsyncExecutor.maxPoolSize = maxPoolSize; + } + + @Value("${task.pool.keep-alive-seconds}") + public void setKeepAliveSeconds(int keepAliveSeconds) { + AsyncExecutor.keepAliveSeconds = keepAliveSeconds; + } + + @Value("${task.pool.queue-capacity}") + public void setQueueCapacity(int queueCapacity) { + AsyncExecutor.queueCapacity = queueCapacity; + } + + /** + * 自定义线程池,用法 @Async + * @return Executor + */ + @Override + public Executor getAsyncExecutor() { + // 自定义工厂 + ThreadFactory factory = r -> new Thread(r, "el-async-" + new AtomicInteger(1).getAndIncrement()); + // 自定义线程池 + return new ThreadPoolExecutor(corePoolSize, maxPoolSize, keepAliveSeconds, + TimeUnit.SECONDS, new ArrayBlockingQueue<>(queueCapacity), factory, + new ThreadPoolExecutor.CallerRunsPolicy()); + } + + /** + * 自定义线程池,用法,注入到类中使用 + * private ThreadPoolTaskExecutor taskExecutor; + * @return ThreadPoolTaskExecutor + */ + @Bean("taskAsync") + public ThreadPoolTaskExecutor taskAsync() { + ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); + executor.setCorePoolSize(2); + executor.setMaxPoolSize(4); + executor.setQueueCapacity(20); + executor.setKeepAliveSeconds(60); + executor.setThreadNamePrefix("el-task-"); + executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); + return executor; + } +} diff --git a/eladmin-common/src/main/java/me/zhengjie/config/FileProperties.java b/eladmin-common/src/main/java/me/zhengjie/config/properties/FileProperties.java similarity index 97% rename from eladmin-common/src/main/java/me/zhengjie/config/FileProperties.java rename to eladmin-common/src/main/java/me/zhengjie/config/properties/FileProperties.java index 3d0a5c6a9..2891e9b44 100644 --- a/eladmin-common/src/main/java/me/zhengjie/config/FileProperties.java +++ b/eladmin-common/src/main/java/me/zhengjie/config/properties/FileProperties.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.config; +package me.zhengjie.config.properties; import lombok.Data; import me.zhengjie.utils.ElConstant; diff --git a/eladmin-common/src/main/java/me/zhengjie/config/RsaProperties.java b/eladmin-common/src/main/java/me/zhengjie/config/properties/RsaProperties.java similarity index 96% rename from eladmin-common/src/main/java/me/zhengjie/config/RsaProperties.java rename to eladmin-common/src/main/java/me/zhengjie/config/properties/RsaProperties.java index 0a4a53755..af557e327 100644 --- a/eladmin-common/src/main/java/me/zhengjie/config/RsaProperties.java +++ b/eladmin-common/src/main/java/me/zhengjie/config/properties/RsaProperties.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.config; +package me.zhengjie.config.properties; import lombok.Data; import org.springframework.beans.factory.annotation.Value; diff --git a/eladmin-system/src/main/java/me/zhengjie/config/ConfigurerAdapter.java b/eladmin-common/src/main/java/me/zhengjie/config/webConfig/ConfigurerAdapter.java similarity index 97% rename from eladmin-system/src/main/java/me/zhengjie/config/ConfigurerAdapter.java rename to eladmin-common/src/main/java/me/zhengjie/config/webConfig/ConfigurerAdapter.java index a0093d689..e57925018 100644 --- a/eladmin-system/src/main/java/me/zhengjie/config/ConfigurerAdapter.java +++ b/eladmin-common/src/main/java/me/zhengjie/config/webConfig/ConfigurerAdapter.java @@ -13,11 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.config; +package me.zhengjie.config.webConfig; import com.alibaba.fastjson.serializer.SerializerFeature; import com.alibaba.fastjson.support.config.FastJsonConfig; import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter; +import me.zhengjie.config.properties.FileProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.MediaType; diff --git a/eladmin-system/src/main/java/me/zhengjie/config/RelaxedQueryCharsConnectorCustomizer.java b/eladmin-common/src/main/java/me/zhengjie/config/webConfig/QueryCustomizer.java similarity index 89% rename from eladmin-system/src/main/java/me/zhengjie/config/RelaxedQueryCharsConnectorCustomizer.java rename to eladmin-common/src/main/java/me/zhengjie/config/webConfig/QueryCustomizer.java index 14a6b20df..075439ff2 100644 --- a/eladmin-system/src/main/java/me/zhengjie/config/RelaxedQueryCharsConnectorCustomizer.java +++ b/eladmin-common/src/main/java/me/zhengjie/config/webConfig/QueryCustomizer.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.config; +package me.zhengjie.config.webConfig; import org.apache.catalina.connector.Connector; import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer; @@ -23,7 +23,7 @@ * @author bearBoy80 */ @Configuration(proxyBeanMethods = false) -public class RelaxedQueryCharsConnectorCustomizer implements TomcatConnectorCustomizer { +public class QueryCustomizer implements TomcatConnectorCustomizer { @Override public void customize(Connector connector) { connector.setProperty("relaxedQueryChars", "[]{}"); diff --git a/eladmin-common/src/main/java/me/zhengjie/config/SwaggerConfig.java b/eladmin-common/src/main/java/me/zhengjie/config/webConfig/SwaggerConfig.java similarity index 99% rename from eladmin-common/src/main/java/me/zhengjie/config/SwaggerConfig.java rename to eladmin-common/src/main/java/me/zhengjie/config/webConfig/SwaggerConfig.java index b1a868c4b..d7f222618 100644 --- a/eladmin-common/src/main/java/me/zhengjie/config/SwaggerConfig.java +++ b/eladmin-common/src/main/java/me/zhengjie/config/webConfig/SwaggerConfig.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.config; +package me.zhengjie.config.webConfig; import cn.hutool.core.collection.CollUtil; import com.fasterxml.classmate.TypeResolver; diff --git a/eladmin-system/src/main/java/me/zhengjie/config/WebSocketConfig.java b/eladmin-common/src/main/java/me/zhengjie/config/webConfig/WebSocketConfig.java similarity index 96% rename from eladmin-system/src/main/java/me/zhengjie/config/WebSocketConfig.java rename to eladmin-common/src/main/java/me/zhengjie/config/webConfig/WebSocketConfig.java index f55f5c60b..1a2cdd72f 100644 --- a/eladmin-system/src/main/java/me/zhengjie/config/WebSocketConfig.java +++ b/eladmin-common/src/main/java/me/zhengjie/config/webConfig/WebSocketConfig.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.config; +package me.zhengjie.config.webConfig; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/AnonTagUtils.java b/eladmin-common/src/main/java/me/zhengjie/utils/AnonTagUtils.java index d57ebf28c..9a2832ded 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/AnonTagUtils.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/AnonTagUtils.java @@ -15,7 +15,7 @@ */ package me.zhengjie.utils; -import me.zhengjie.annotation.AnonymousAccess; +import me.zhengjie.annotation.rest.AnonymousAccess; import me.zhengjie.utils.enums.RequestMethodEnum; import org.springframework.context.ApplicationContext; import org.springframework.web.bind.annotation.RequestMethod; diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/BigDecimalUtils.java b/eladmin-common/src/main/java/me/zhengjie/utils/BigDecimalUtils.java new file mode 100644 index 000000000..ff3d81fa2 --- /dev/null +++ b/eladmin-common/src/main/java/me/zhengjie/utils/BigDecimalUtils.java @@ -0,0 +1,143 @@ +/* + * Copyright 2019-2020 the original author or authors. + * + * 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 me.zhengjie.utils; + +import java.math.BigDecimal; +import java.math.RoundingMode; + +/** + * @author Zheng Jie + * @description 计算类 + * @date 2024-12-27 + **/ +public class BigDecimalUtils { + + /** + * 将对象转换为 BigDecimal + * @param obj 输入对象 + * @return 转换后的 BigDecimal + */ + private static BigDecimal toBigDecimal(Object obj) { + if (obj instanceof BigDecimal) { + return (BigDecimal) obj; + } else if (obj instanceof Long) { + return BigDecimal.valueOf((Long) obj); + } else if (obj instanceof Integer) { + return BigDecimal.valueOf((Integer) obj); + } else if (obj instanceof Double) { + return new BigDecimal(String.valueOf(obj)); + } else { + throw new IllegalArgumentException("Unsupported type"); + } + } + + /** + * 加法 + * @param a 加数 + * @param b 加数 + * @return 两个加数的和,保留两位小数 + */ + public static BigDecimal add(Object a, Object b) { + BigDecimal bdA = toBigDecimal(a); + BigDecimal bdB = toBigDecimal(b); + return bdA.add(bdB).setScale(2, RoundingMode.HALF_UP); + } + + /** + * 减法 + * @param a 被减数 + * @param b 减数 + * @return 两数的差,保留两位小数 + */ + public static BigDecimal subtract(Object a, Object b) { + BigDecimal bdA = toBigDecimal(a); + BigDecimal bdB = toBigDecimal(b); + return bdA.subtract(bdB).setScale(2, RoundingMode.HALF_UP); + } + + /** + * 乘法 + * @param a 乘数 + * @param b 乘数 + * @return 两个乘数的积,保留两位小数 + */ + public static BigDecimal multiply(Object a, Object b) { + BigDecimal bdA = toBigDecimal(a); + BigDecimal bdB = toBigDecimal(b); + return bdA.multiply(bdB).setScale(2, RoundingMode.HALF_UP); + } + + /** + * 除法 + * @param a 被除数 + * @param b 除数 + * @return 两数的商,保留两位小数 + */ + public static BigDecimal divide(Object a, Object b) { + BigDecimal bdA = toBigDecimal(a); + BigDecimal bdB = toBigDecimal(b); + return bdA.divide(bdB, 2, RoundingMode.HALF_UP); + } + + /** + * 除法 + * @param a 被除数 + * @param b 除数 + * @param scale 保留小数位数 + * @return 两数的商,保留两位小数 + */ + public static BigDecimal divide(Object a, Object b, int scale) { + BigDecimal bdA = toBigDecimal(a); + BigDecimal bdB = toBigDecimal(b); + return bdA.divide(bdB, scale, RoundingMode.HALF_UP); + } + + /** + * 分转元 + * @param obj 分的金额 + * @return 转换后的元,保留两位小数 + */ + public static BigDecimal centsToYuan(Object obj) { + BigDecimal cents = toBigDecimal(obj); + return cents.divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP); + } + + /** + * 元转分 + * @param obj 元的金额 + * @return 转换后的分 + */ + public static Long yuanToCents(Object obj) { + BigDecimal yuan = toBigDecimal(obj); + return yuan.multiply(BigDecimal.valueOf(100)).setScale(0, RoundingMode.HALF_UP).longValue(); + } + + public static void main(String[] args) { + BigDecimal num1 = new BigDecimal("10.123"); + BigDecimal num2 = new BigDecimal("2.456"); + + System.out.println("加法结果: " + add(num1, num2)); + System.out.println("减法结果: " + subtract(num1, num2)); + System.out.println("乘法结果: " + multiply(num1, num2)); + System.out.println("除法结果: " + divide(num1, num2)); + + Long cents = 12345L; + System.out.println("分转元结果: " + centsToYuan(cents)); + + BigDecimal yuan = new BigDecimal("123.45"); + System.out.println("元转分结果: " + yuanToCents(yuan)); + } +} diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/CallBack.java b/eladmin-common/src/main/java/me/zhengjie/utils/CallBack.java deleted file mode 100644 index 9b108127e..000000000 --- a/eladmin-common/src/main/java/me/zhengjie/utils/CallBack.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2019-2020 the original author or authors. - * - * 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 me.zhengjie.utils; - -/** - * @author: liaojinlong - * @date: 2020/6/9 17:02 - * @since: 1.0 - * @see {@link SpringContextHolder} - * 针对某些初始化方法,在SpringContextHolder 初始化前时,
- * 可提交一个 提交回调任务。
- * 在SpringContextHolder 初始化后,进行回调使用 - */ - -public interface CallBack { - /** - * 回调执行方法 - */ - void executor(); - - /** - * 本回调任务名称 - * @return / - */ - default String getCallBackName() { - return Thread.currentThread().getId() + ":" + this.getClass().getName(); - } -} - diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java b/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java index 1761fc80f..1864887da 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java @@ -19,16 +19,17 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.poi.excel.BigExcelWriter; import cn.hutool.poi.excel.ExcelUtil; +import lombok.extern.slf4j.Slf4j; import me.zhengjie.exception.BadRequestException; import org.apache.poi.util.IOUtils; import org.apache.poi.xssf.streaming.SXSSFSheet; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.web.multipart.MultipartFile; + import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; +import java.nio.file.Files; import java.security.MessageDigest; import java.text.DecimalFormat; import java.text.SimpleDateFormat; @@ -44,10 +45,9 @@ * @author Zheng Jie * @date 2018-12-27 */ +@Slf4j public class FileUtil extends cn.hutool.core.io.FileUtil { - private static final Logger log = LoggerFactory.getLogger(FileUtil.class); - /** * 系统临时目录 *
@@ -110,7 +110,7 @@ public static File toFile(MultipartFile multipartFile) { * 获取文件扩展名,不带 . */ public static String getExtensionName(String filename) { - if ((filename != null) && (filename.length() > 0)) { + if ((filename != null) && (!filename.isEmpty())) { int dot = filename.lastIndexOf('.'); if ((dot > -1) && (dot < (filename.length() - 1))) { return filename.substring(dot + 1); @@ -123,9 +123,9 @@ public static String getExtensionName(String filename) { * Java文件操作 获取不带扩展名的文件名 */ public static String getFileNameNoEx(String filename) { - if ((filename != null) && (filename.length() > 0)) { + if ((filename != null) && (!filename.isEmpty())) { int dot = filename.lastIndexOf('.'); - if ((dot > -1) && (dot < (filename.length()))) { + if (dot > -1) { return filename.substring(0, dot); } } @@ -162,7 +162,7 @@ static File inputStreamToFile(InputStream ins, String name){ } OutputStream os = null; try { - os = new FileOutputStream(file); + os = Files.newOutputStream(file.toPath()); int bytesRead; int len = 8192; byte[] buffer = new byte[len]; @@ -170,7 +170,7 @@ static File inputStreamToFile(InputStream ins, String name){ os.write(buffer, 0, bytesRead); } } catch (Exception e) { - e.printStackTrace(); + log.error(e.getMessage(), e); } finally { CloseUtil.close(os); CloseUtil.close(ins); @@ -301,7 +301,7 @@ private static byte[] getByte(File file) { byte[] b = new byte[(int) file.length()]; InputStream in = null; try { - in = new FileInputStream(file); + in = Files.newInputStream(file.toPath()); try { System.out.println(in.read(b)); } catch (IOException e) { @@ -407,7 +407,6 @@ public static String verifyFilename(String fileName) { return fileName; } - public static String getMd5(File file) { return getMd5(getByte(file)); } diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/PageResult.java b/eladmin-common/src/main/java/me/zhengjie/utils/PageResult.java index 0f1fdfe22..f6019cd8e 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/PageResult.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/PageResult.java @@ -1,16 +1,24 @@ package me.zhengjie.utils; -import lombok.AccessLevel; -import lombok.Getter; -import lombok.RequiredArgsConstructor; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import java.io.Serializable; import java.util.List; -@Getter -@RequiredArgsConstructor(access = AccessLevel.PACKAGE) -public class PageResult { +/** + * 分页结果封装类 + * @author Zheng Jie + * @date 2018-11-23 + * @param + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class PageResult implements Serializable { - private final List content; + private List content; - private final long totalElements; + private long totalElements; } diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/SecurityUtils.java b/eladmin-common/src/main/java/me/zhengjie/utils/SecurityUtils.java index 28e4672c9..aa4e37616 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/SecurityUtils.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/SecurityUtils.java @@ -41,7 +41,7 @@ public class SecurityUtils { * @return UserDetails */ public static UserDetails getCurrentUser() { - UserDetailsService userDetailsService = SpringContextHolder.getBean(UserDetailsService.class); + UserDetailsService userDetailsService = SpringBeanHolder.getBean(UserDetailsService.class); return userDetailsService.loadUserByUsername(getCurrentUsername()); } diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/SpringContextHolder.java b/eladmin-common/src/main/java/me/zhengjie/utils/SpringBeanHolder.java similarity index 81% rename from eladmin-common/src/main/java/me/zhengjie/utils/SpringContextHolder.java rename to eladmin-common/src/main/java/me/zhengjie/utils/SpringBeanHolder.java index 41ead3863..2ff3bf410 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/SpringContextHolder.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/SpringBeanHolder.java @@ -31,10 +31,11 @@ * @date 2019-01-07 */ @Slf4j -public class SpringContextHolder implements ApplicationContextAware, DisposableBean { +@SuppressWarnings("all") +public class SpringBeanHolder implements ApplicationContextAware, DisposableBean { private static ApplicationContext applicationContext = null; - private static final List CALL_BACKS = new ArrayList<>(); + private static final List CALL_BACKS = new ArrayList<>(); private static boolean addCallback = true; /** @@ -43,9 +44,9 @@ public class SpringContextHolder implements ApplicationContextAware, DisposableB * * @param callBack 回调函数 */ - public synchronized static void addCallBacks(CallBack callBack) { + public synchronized static void addCallBacks(SpringBeanHolder.CallBack callBack) { if (addCallback) { - SpringContextHolder.CALL_BACKS.add(callBack); + SpringBeanHolder.CALL_BACKS.add(callBack); } else { log.warn("CallBack:{} 已无法添加!立即执行", callBack.getCallBackName()); callBack.executor(); @@ -55,7 +56,6 @@ public synchronized static void addCallBacks(CallBack callBack) { /** * 从静态变量applicationContext中取得Bean, 自动转型为所赋值对象的类型. */ - @SuppressWarnings("unchecked") public static T getBean(String name) { assertContextInjected(); return (T) applicationContext.getBean(name); @@ -127,22 +127,22 @@ private static void clearHolder() { @Override public void destroy() { - SpringContextHolder.clearHolder(); + SpringBeanHolder.clearHolder(); } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { - if (SpringContextHolder.applicationContext != null) { - log.warn("SpringContextHolder中的ApplicationContext被覆盖, 原有ApplicationContext为:" + SpringContextHolder.applicationContext); + if (SpringBeanHolder.applicationContext != null) { + log.warn("SpringContextHolder中的ApplicationContext被覆盖, 原有ApplicationContext为:" + SpringBeanHolder.applicationContext); } - SpringContextHolder.applicationContext = applicationContext; + SpringBeanHolder.applicationContext = applicationContext; if (addCallback) { - for (CallBack callBack : SpringContextHolder.CALL_BACKS) { + for (SpringBeanHolder.CallBack callBack : SpringBeanHolder.CALL_BACKS) { callBack.executor(); } CALL_BACKS.clear(); } - SpringContextHolder.addCallback = false; + SpringBeanHolder.addCallback = false; } /** @@ -153,4 +153,20 @@ public static List getAllServiceBeanName() { return new ArrayList<>(Arrays.asList(applicationContext .getBeanNamesForAnnotation(Service.class))); } + + interface CallBack { + + /** + * 回调执行方法 + */ + void executor(); + + /** + * 本回调任务名称 + * @return / + */ + default String getCallBackName() { + return Thread.currentThread().getId() + ":" + this.getClass().getName(); + } + } } diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java b/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java index a27a47a94..c10d2b539 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java @@ -41,7 +41,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils { /** * 注入bean */ - private final static Ip2regionSearcher IP_SEARCHER = SpringContextHolder.getBean(Ip2regionSearcher.class); + private final static Ip2regionSearcher IP_SEARCHER = SpringBeanHolder.getBean(Ip2regionSearcher.class); /** * 驼峰命名法工具 diff --git a/eladmin-generator/src/main/java/me/zhengjie/utils/ColUtil.java b/eladmin-generator/src/main/java/me/zhengjie/utils/ColUtil.java index b5fcd6b7d..f65d06bf0 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/utils/ColUtil.java +++ b/eladmin-generator/src/main/java/me/zhengjie/utils/ColUtil.java @@ -45,7 +45,7 @@ static String cloToJava(String type) { */ public static PropertiesConfiguration getConfig() { try { - return new PropertiesConfiguration("generator.properties"); + return new PropertiesConfiguration("gen.properties"); } catch (ConfigurationException e) { log.error(e.getMessage(), e); } diff --git a/eladmin-generator/src/main/resources/generator.properties b/eladmin-generator/src/main/resources/gen.properties similarity index 100% rename from eladmin-generator/src/main/resources/generator.properties rename to eladmin-generator/src/main/resources/gen.properties diff --git a/eladmin-system/pom.xml b/eladmin-system/pom.xml index e17991963..a7b837ccd 100644 --- a/eladmin-system/pom.xml +++ b/eladmin-system/pom.xml @@ -39,12 +39,6 @@ 2.7 - - - org.springframework.boot - spring-boot-starter-websocket - - org.springframework.boot diff --git a/eladmin-system/src/main/java/me/zhengjie/AppRun.java b/eladmin-system/src/main/java/me/zhengjie/AppRun.java index 8bdcd0294..d49745423 100644 --- a/eladmin-system/src/main/java/me/zhengjie/AppRun.java +++ b/eladmin-system/src/main/java/me/zhengjie/AppRun.java @@ -18,7 +18,7 @@ import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; import me.zhengjie.annotation.rest.AnonymousGetMapping; -import me.zhengjie.utils.SpringContextHolder; +import me.zhengjie.utils.SpringBeanHolder; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.ApplicationPidFileWriter; @@ -56,8 +56,8 @@ public static void main(String[] args) { } @Bean - public SpringContextHolder springContextHolder() { - return new SpringContextHolder(); + public SpringBeanHolder springContextHolder() { + return new SpringBeanHolder(); } /** diff --git a/eladmin-system/src/main/java/me/zhengjie/config/thread/AsyncTaskProperties.java b/eladmin-system/src/main/java/me/zhengjie/config/thread/AsyncTaskProperties.java deleted file mode 100644 index 6e075eab4..000000000 --- a/eladmin-system/src/main/java/me/zhengjie/config/thread/AsyncTaskProperties.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2019-2020 Zheng Jie - * - * 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 me.zhengjie.config.thread; - -import lombok.Data; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.stereotype.Component; - -/** - * 线程池配置属性类 - * @author https://juejin.im/entry/5abb8f6951882555677e9da2 - * @date 2019年10月31日14:58:18 - */ -@Data -@Component -public class AsyncTaskProperties { - - public static int corePoolSize; - - public static int maxPoolSize; - - public static int keepAliveSeconds; - - public static int queueCapacity; - - @Value("${task.pool.core-pool-size}") - public void setCorePoolSize(int corePoolSize) { - AsyncTaskProperties.corePoolSize = corePoolSize; - } - - @Value("${task.pool.max-pool-size}") - public void setMaxPoolSize(int maxPoolSize) { - AsyncTaskProperties.maxPoolSize = maxPoolSize; - } - - @Value("${task.pool.keep-alive-seconds}") - public void setKeepAliveSeconds(int keepAliveSeconds) { - AsyncTaskProperties.keepAliveSeconds = keepAliveSeconds; - } - - @Value("${task.pool.queue-capacity}") - public void setQueueCapacity(int queueCapacity) { - AsyncTaskProperties.queueCapacity = queueCapacity; - } -} diff --git a/eladmin-system/src/main/java/me/zhengjie/config/thread/CustomExecutorConfig.java b/eladmin-system/src/main/java/me/zhengjie/config/thread/CustomExecutorConfig.java deleted file mode 100644 index ca8a8bc52..000000000 --- a/eladmin-system/src/main/java/me/zhengjie/config/thread/CustomExecutorConfig.java +++ /dev/null @@ -1,52 +0,0 @@ -package me.zhengjie.config.thread; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Primary; -import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; -import java.util.concurrent.Executor; -import java.util.concurrent.ThreadPoolExecutor; - -/** - * 创建自定义的线程池 - * @author Zheng Jie - * @description - * @date 2023-06-08 - **/ -@Configuration -public class CustomExecutorConfig { - - /** - * 自定义线程池,用法 @Async - * @return Executor - */ - @Bean - @Primary - public Executor elAsync() { - ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); - executor.setCorePoolSize(AsyncTaskProperties.corePoolSize); - executor.setMaxPoolSize(AsyncTaskProperties.maxPoolSize); - executor.setQueueCapacity(AsyncTaskProperties.queueCapacity); - executor.setThreadNamePrefix("el-async-"); - executor.setKeepAliveSeconds(AsyncTaskProperties.keepAliveSeconds); - executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); - executor.initialize(); - return executor; - } - - /** - * 自定义线程池,用法 @Async("otherAsync") - * @return Executor - */ - @Bean - public Executor otherAsync() { - ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); - executor.setCorePoolSize(15); - executor.setQueueCapacity(50); - executor.setKeepAliveSeconds(AsyncTaskProperties.keepAliveSeconds); - executor.setThreadNamePrefix("el-task-"); - executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); - executor.initialize(); - return executor; - } -} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/domain/App.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/App.java similarity index 97% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/domain/App.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/App.java index cf5789c99..331101856 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/domain/App.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/App.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.domain; +package me.zhengjie.modules.maint.domain; import io.swagger.annotations.ApiModelProperty; import cn.hutool.core.bean.BeanUtil; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/domain/Database.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/Database.java similarity index 97% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/domain/Database.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/Database.java index 6b3a68a67..cf2a7889a 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/domain/Database.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/Database.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.domain; +package me.zhengjie.modules.maint.domain; import io.swagger.annotations.ApiModelProperty; import cn.hutool.core.bean.BeanUtil; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/domain/Deploy.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/Deploy.java similarity index 97% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/domain/Deploy.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/Deploy.java index bcf61e54a..e9c9f5426 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/domain/Deploy.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/Deploy.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.domain; +package me.zhengjie.modules.maint.domain; import io.swagger.annotations.ApiModelProperty; import cn.hutool.core.bean.BeanUtil; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/domain/DeployHistory.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/DeployHistory.java similarity index 97% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/domain/DeployHistory.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/DeployHistory.java index b4213a416..83fb1178a 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/domain/DeployHistory.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/DeployHistory.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.domain; +package me.zhengjie.modules.maint.domain; import io.swagger.annotations.ApiModelProperty; import cn.hutool.core.bean.BeanUtil; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/domain/ServerDeploy.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/ServerDeploy.java similarity index 98% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/domain/ServerDeploy.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/ServerDeploy.java index f52356276..cf86dabc7 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/domain/ServerDeploy.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/ServerDeploy.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.domain; +package me.zhengjie.modules.maint.domain; import io.swagger.annotations.ApiModelProperty; import cn.hutool.core.bean.BeanUtil; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/repository/AppRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/repository/AppRepository.java similarity index 90% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/repository/AppRepository.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/repository/AppRepository.java index 41e5f5c9b..008e00f44 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/repository/AppRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/repository/AppRepository.java @@ -13,9 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.repository; +package me.zhengjie.modules.maint.repository; -import me.zhengjie.modules.mnt.domain.App; +import me.zhengjie.modules.maint.domain.App; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/repository/DatabaseRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/repository/DatabaseRepository.java similarity index 90% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/repository/DatabaseRepository.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/repository/DatabaseRepository.java index 695e0adc0..52fac4749 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/repository/DatabaseRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/repository/DatabaseRepository.java @@ -13,9 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.repository; +package me.zhengjie.modules.maint.repository; -import me.zhengjie.modules.mnt.domain.Database; +import me.zhengjie.modules.maint.domain.Database; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/repository/DeployHistoryRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/repository/DeployHistoryRepository.java similarity index 90% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/repository/DeployHistoryRepository.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/repository/DeployHistoryRepository.java index 3c8980ec2..097a7acc3 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/repository/DeployHistoryRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/repository/DeployHistoryRepository.java @@ -13,9 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.repository; +package me.zhengjie.modules.maint.repository; -import me.zhengjie.modules.mnt.domain.DeployHistory; +import me.zhengjie.modules.maint.domain.DeployHistory; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/repository/DeployRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/repository/DeployRepository.java similarity index 90% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/repository/DeployRepository.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/repository/DeployRepository.java index 2ea44986f..f01b29a26 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/repository/DeployRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/repository/DeployRepository.java @@ -13,9 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.repository; +package me.zhengjie.modules.maint.repository; -import me.zhengjie.modules.mnt.domain.Deploy; +import me.zhengjie.modules.maint.domain.Deploy; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/repository/ServerDeployRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/repository/ServerDeployRepository.java similarity index 91% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/repository/ServerDeployRepository.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/repository/ServerDeployRepository.java index 4ca336c08..9926f54d0 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/repository/ServerDeployRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/repository/ServerDeployRepository.java @@ -13,9 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.repository; +package me.zhengjie.modules.maint.repository; -import me.zhengjie.modules.mnt.domain.ServerDeploy; +import me.zhengjie.modules.maint.domain.ServerDeploy; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/rest/AppController.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/rest/AppController.java similarity index 92% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/rest/AppController.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/rest/AppController.java index 96cfbed3b..ecf04f1da 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/rest/AppController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/rest/AppController.java @@ -13,16 +13,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.rest; +package me.zhengjie.modules.maint.rest; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import me.zhengjie.annotation.Log; -import me.zhengjie.modules.mnt.domain.App; -import me.zhengjie.modules.mnt.service.AppService; -import me.zhengjie.modules.mnt.service.dto.AppDto; -import me.zhengjie.modules.mnt.service.dto.AppQueryCriteria; +import me.zhengjie.modules.maint.domain.App; +import me.zhengjie.modules.maint.service.AppService; +import me.zhengjie.modules.maint.service.dto.AppDto; +import me.zhengjie.modules.maint.service.dto.AppQueryCriteria; import me.zhengjie.utils.PageResult; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/rest/DatabaseController.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/rest/DatabaseController.java similarity index 93% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/rest/DatabaseController.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/rest/DatabaseController.java index ded799d3b..7201b4447 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/rest/DatabaseController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/rest/DatabaseController.java @@ -13,18 +13,18 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.rest; +package me.zhengjie.modules.maint.rest; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import me.zhengjie.annotation.Log; import me.zhengjie.exception.BadRequestException; -import me.zhengjie.modules.mnt.domain.Database; -import me.zhengjie.modules.mnt.service.DatabaseService; -import me.zhengjie.modules.mnt.service.dto.DatabaseDto; -import me.zhengjie.modules.mnt.service.dto.DatabaseQueryCriteria; -import me.zhengjie.modules.mnt.util.SqlUtils; +import me.zhengjie.modules.maint.domain.Database; +import me.zhengjie.modules.maint.service.DatabaseService; +import me.zhengjie.modules.maint.service.dto.DatabaseDto; +import me.zhengjie.modules.maint.service.dto.DatabaseQueryCriteria; +import me.zhengjie.modules.maint.util.SqlUtils; import me.zhengjie.utils.FileUtil; import me.zhengjie.utils.PageResult; import org.springframework.data.domain.Pageable; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/rest/DeployController.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/rest/DeployController.java similarity index 94% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/rest/DeployController.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/rest/DeployController.java index 161e7b5dd..346e51d13 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/rest/DeployController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/rest/DeployController.java @@ -13,18 +13,18 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.rest; +package me.zhengjie.modules.maint.rest; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import me.zhengjie.annotation.Log; -import me.zhengjie.modules.mnt.domain.Deploy; -import me.zhengjie.modules.mnt.domain.DeployHistory; -import me.zhengjie.modules.mnt.service.DeployService; -import me.zhengjie.modules.mnt.service.dto.DeployDto; -import me.zhengjie.modules.mnt.service.dto.DeployQueryCriteria; +import me.zhengjie.modules.maint.domain.Deploy; +import me.zhengjie.modules.maint.domain.DeployHistory; +import me.zhengjie.modules.maint.service.DeployService; +import me.zhengjie.modules.maint.service.dto.DeployDto; +import me.zhengjie.modules.maint.service.dto.DeployQueryCriteria; import me.zhengjie.utils.FileUtil; import me.zhengjie.utils.PageResult; import org.springframework.data.domain.Pageable; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/rest/DeployHistoryController.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/rest/DeployHistoryController.java similarity index 91% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/rest/DeployHistoryController.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/rest/DeployHistoryController.java index 60ee88c46..799160278 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/rest/DeployHistoryController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/rest/DeployHistoryController.java @@ -13,15 +13,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.rest; +package me.zhengjie.modules.maint.rest; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import me.zhengjie.annotation.Log; -import me.zhengjie.modules.mnt.service.DeployHistoryService; -import me.zhengjie.modules.mnt.service.dto.DeployHistoryDto; -import me.zhengjie.modules.mnt.service.dto.DeployHistoryQueryCriteria; +import me.zhengjie.modules.maint.service.DeployHistoryService; +import me.zhengjie.modules.maint.service.dto.DeployHistoryDto; +import me.zhengjie.modules.maint.service.dto.DeployHistoryQueryCriteria; import me.zhengjie.utils.PageResult; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/rest/ServerDeployController.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/rest/ServerDeployController.java similarity index 92% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/rest/ServerDeployController.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/rest/ServerDeployController.java index f4c60f428..ddbe177ed 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/rest/ServerDeployController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/rest/ServerDeployController.java @@ -13,16 +13,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.rest; +package me.zhengjie.modules.maint.rest; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import me.zhengjie.annotation.Log; -import me.zhengjie.modules.mnt.domain.ServerDeploy; -import me.zhengjie.modules.mnt.service.ServerDeployService; -import me.zhengjie.modules.mnt.service.dto.ServerDeployDto; -import me.zhengjie.modules.mnt.service.dto.ServerDeployQueryCriteria; +import me.zhengjie.modules.maint.domain.ServerDeploy; +import me.zhengjie.modules.maint.service.ServerDeployService; +import me.zhengjie.modules.maint.service.dto.ServerDeployDto; +import me.zhengjie.modules.maint.service.dto.ServerDeployQueryCriteria; import me.zhengjie.utils.PageResult; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/AppService.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/AppService.java similarity index 89% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/AppService.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/service/AppService.java index 9bded4d80..8fb56051d 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/AppService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/AppService.java @@ -13,11 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.service; +package me.zhengjie.modules.maint.service; -import me.zhengjie.modules.mnt.domain.App; -import me.zhengjie.modules.mnt.service.dto.AppDto; -import me.zhengjie.modules.mnt.service.dto.AppQueryCriteria; +import me.zhengjie.modules.maint.domain.App; +import me.zhengjie.modules.maint.service.dto.AppDto; +import me.zhengjie.modules.maint.service.dto.AppQueryCriteria; import me.zhengjie.utils.PageResult; import org.springframework.data.domain.Pageable; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/DatabaseService.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/DatabaseService.java similarity index 90% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/DatabaseService.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/service/DatabaseService.java index 904f73cab..8e45afcf0 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/DatabaseService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/DatabaseService.java @@ -13,11 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.service; +package me.zhengjie.modules.maint.service; -import me.zhengjie.modules.mnt.domain.Database; -import me.zhengjie.modules.mnt.service.dto.DatabaseDto; -import me.zhengjie.modules.mnt.service.dto.DatabaseQueryCriteria; +import me.zhengjie.modules.maint.domain.Database; +import me.zhengjie.modules.maint.service.dto.DatabaseDto; +import me.zhengjie.modules.maint.service.dto.DatabaseQueryCriteria; import me.zhengjie.utils.PageResult; import org.springframework.data.domain.Pageable; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/DeployHistoryService.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/DeployHistoryService.java similarity index 88% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/DeployHistoryService.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/service/DeployHistoryService.java index 07bcb642f..fb2efdb0a 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/DeployHistoryService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/DeployHistoryService.java @@ -13,11 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.service; +package me.zhengjie.modules.maint.service; -import me.zhengjie.modules.mnt.domain.DeployHistory; -import me.zhengjie.modules.mnt.service.dto.DeployHistoryDto; -import me.zhengjie.modules.mnt.service.dto.DeployHistoryQueryCriteria; +import me.zhengjie.modules.maint.domain.DeployHistory; +import me.zhengjie.modules.maint.service.dto.DeployHistoryDto; +import me.zhengjie.modules.maint.service.dto.DeployHistoryQueryCriteria; import me.zhengjie.utils.PageResult; import org.springframework.data.domain.Pageable; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/DeployService.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/DeployService.java similarity index 90% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/DeployService.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/service/DeployService.java index 7fb78f59d..c6ef852b8 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/DeployService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/DeployService.java @@ -13,12 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.service; +package me.zhengjie.modules.maint.service; -import me.zhengjie.modules.mnt.domain.Deploy; -import me.zhengjie.modules.mnt.domain.DeployHistory; -import me.zhengjie.modules.mnt.service.dto.DeployDto; -import me.zhengjie.modules.mnt.service.dto.DeployQueryCriteria; +import me.zhengjie.modules.maint.domain.Deploy; +import me.zhengjie.modules.maint.domain.DeployHistory; +import me.zhengjie.modules.maint.service.dto.DeployDto; +import me.zhengjie.modules.maint.service.dto.DeployQueryCriteria; import me.zhengjie.utils.PageResult; import org.springframework.data.domain.Pageable; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/ServerDeployService.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/ServerDeployService.java similarity index 90% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/ServerDeployService.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/service/ServerDeployService.java index 6dd343fdb..20590f054 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/ServerDeployService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/ServerDeployService.java @@ -13,11 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.service; +package me.zhengjie.modules.maint.service; -import me.zhengjie.modules.mnt.domain.ServerDeploy; -import me.zhengjie.modules.mnt.service.dto.ServerDeployDto; -import me.zhengjie.modules.mnt.service.dto.ServerDeployQueryCriteria; +import me.zhengjie.modules.maint.domain.ServerDeploy; +import me.zhengjie.modules.maint.service.dto.ServerDeployDto; +import me.zhengjie.modules.maint.service.dto.ServerDeployQueryCriteria; import me.zhengjie.utils.PageResult; import org.springframework.data.domain.Pageable; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/dto/AppDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/AppDto.java similarity index 96% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/dto/AppDto.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/AppDto.java index c6fd6f74a..dbe183546 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/dto/AppDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/AppDto.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.service.dto; +package me.zhengjie.modules.maint.service.dto; import lombok.Getter; import lombok.Setter; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/dto/AppQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/AppQueryCriteria.java similarity index 95% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/dto/AppQueryCriteria.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/AppQueryCriteria.java index 17f358f74..a3db98846 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/dto/AppQueryCriteria.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/AppQueryCriteria.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.service.dto; +package me.zhengjie.modules.maint.service.dto; import lombok.Data; import me.zhengjie.annotation.Query; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/dto/DatabaseDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DatabaseDto.java similarity index 95% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/dto/DatabaseDto.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DatabaseDto.java index 689b06b9f..07797413d 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/dto/DatabaseDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DatabaseDto.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.service.dto; +package me.zhengjie.modules.maint.service.dto; import lombok.Getter; import lombok.Setter; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/dto/DatabaseQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DatabaseQueryCriteria.java similarity index 95% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/dto/DatabaseQueryCriteria.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DatabaseQueryCriteria.java index 53d619d4f..e70e5d211 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/dto/DatabaseQueryCriteria.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DatabaseQueryCriteria.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.service.dto; +package me.zhengjie.modules.maint.service.dto; import lombok.Data; import me.zhengjie.annotation.Query; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/dto/DeployDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployDto.java similarity index 97% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/dto/DeployDto.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployDto.java index f3d77b8eb..b9d14c857 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/dto/DeployDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployDto.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.service.dto; +package me.zhengjie.modules.maint.service.dto; import cn.hutool.core.collection.CollectionUtil; import lombok.Getter; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/dto/DeployHistoryDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployHistoryDto.java similarity index 95% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/dto/DeployHistoryDto.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployHistoryDto.java index a9f480cf3..8cca9d4a6 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/dto/DeployHistoryDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployHistoryDto.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.service.dto; +package me.zhengjie.modules.maint.service.dto; import lombok.Data; import java.io.Serializable; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/dto/DeployHistoryQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployHistoryQueryCriteria.java similarity index 95% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/dto/DeployHistoryQueryCriteria.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployHistoryQueryCriteria.java index c34f1242f..87846a9ac 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/dto/DeployHistoryQueryCriteria.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployHistoryQueryCriteria.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.service.dto; +package me.zhengjie.modules.maint.service.dto; import lombok.Data; import me.zhengjie.annotation.Query; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/dto/DeployQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployQueryCriteria.java similarity index 95% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/dto/DeployQueryCriteria.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployQueryCriteria.java index c404620af..fbbb34716 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/dto/DeployQueryCriteria.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployQueryCriteria.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.service.dto; +package me.zhengjie.modules.maint.service.dto; import lombok.Data; import me.zhengjie.annotation.Query; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/dto/ServerDeployDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/ServerDeployDto.java similarity index 96% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/dto/ServerDeployDto.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/ServerDeployDto.java index a49c7950d..a94a41dd8 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/dto/ServerDeployDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/ServerDeployDto.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.service.dto; +package me.zhengjie.modules.maint.service.dto; import lombok.Getter; import lombok.Setter; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/dto/ServerDeployQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/ServerDeployQueryCriteria.java similarity index 95% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/dto/ServerDeployQueryCriteria.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/ServerDeployQueryCriteria.java index bb8bd412d..814d3e8bd 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/dto/ServerDeployQueryCriteria.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/ServerDeployQueryCriteria.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.service.dto; +package me.zhengjie.modules.maint.service.dto; import lombok.Data; import me.zhengjie.annotation.Query; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/impl/AppServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/AppServiceImpl.java similarity index 91% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/impl/AppServiceImpl.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/AppServiceImpl.java index 7d66d0bf2..32abdcb83 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/impl/AppServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/AppServiceImpl.java @@ -13,16 +13,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.service.impl; +package me.zhengjie.modules.maint.service.impl; import lombok.RequiredArgsConstructor; import me.zhengjie.exception.BadRequestException; -import me.zhengjie.modules.mnt.domain.App; -import me.zhengjie.modules.mnt.repository.AppRepository; -import me.zhengjie.modules.mnt.service.AppService; -import me.zhengjie.modules.mnt.service.dto.AppDto; -import me.zhengjie.modules.mnt.service.dto.AppQueryCriteria; -import me.zhengjie.modules.mnt.service.mapstruct.AppMapper; +import me.zhengjie.modules.maint.domain.App; +import me.zhengjie.modules.maint.repository.AppRepository; +import me.zhengjie.modules.maint.service.AppService; +import me.zhengjie.modules.maint.service.dto.AppDto; +import me.zhengjie.modules.maint.service.dto.AppQueryCriteria; +import me.zhengjie.modules.maint.service.mapstruct.AppMapper; import me.zhengjie.utils.*; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/impl/DatabaseServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/DatabaseServiceImpl.java similarity index 89% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/impl/DatabaseServiceImpl.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/DatabaseServiceImpl.java index 386b4c296..3763aa4dd 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/impl/DatabaseServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/DatabaseServiceImpl.java @@ -13,18 +13,18 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.service.impl; +package me.zhengjie.modules.maint.service.impl; import cn.hutool.core.util.IdUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import me.zhengjie.modules.mnt.domain.Database; -import me.zhengjie.modules.mnt.repository.DatabaseRepository; -import me.zhengjie.modules.mnt.service.DatabaseService; -import me.zhengjie.modules.mnt.service.dto.DatabaseDto; -import me.zhengjie.modules.mnt.service.dto.DatabaseQueryCriteria; -import me.zhengjie.modules.mnt.service.mapstruct.DatabaseMapper; -import me.zhengjie.modules.mnt.util.SqlUtils; +import me.zhengjie.modules.maint.domain.Database; +import me.zhengjie.modules.maint.repository.DatabaseRepository; +import me.zhengjie.modules.maint.service.DatabaseService; +import me.zhengjie.modules.maint.service.dto.DatabaseDto; +import me.zhengjie.modules.maint.service.dto.DatabaseQueryCriteria; +import me.zhengjie.modules.maint.service.mapstruct.DatabaseMapper; +import me.zhengjie.modules.maint.util.SqlUtils; import me.zhengjie.utils.*; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/impl/DeployHistoryServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/DeployHistoryServiceImpl.java similarity index 88% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/impl/DeployHistoryServiceImpl.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/DeployHistoryServiceImpl.java index 762b783e7..b50c155a1 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/impl/DeployHistoryServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/DeployHistoryServiceImpl.java @@ -13,16 +13,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.service.impl; +package me.zhengjie.modules.maint.service.impl; import cn.hutool.core.util.IdUtil; import lombok.RequiredArgsConstructor; -import me.zhengjie.modules.mnt.domain.DeployHistory; -import me.zhengjie.modules.mnt.repository.DeployHistoryRepository; -import me.zhengjie.modules.mnt.service.DeployHistoryService; -import me.zhengjie.modules.mnt.service.dto.DeployHistoryDto; -import me.zhengjie.modules.mnt.service.dto.DeployHistoryQueryCriteria; -import me.zhengjie.modules.mnt.service.mapstruct.DeployHistoryMapper; +import me.zhengjie.modules.maint.domain.DeployHistory; +import me.zhengjie.modules.maint.repository.DeployHistoryRepository; +import me.zhengjie.modules.maint.service.DeployHistoryService; +import me.zhengjie.modules.maint.service.dto.DeployHistoryDto; +import me.zhengjie.modules.maint.service.dto.DeployHistoryQueryCriteria; +import me.zhengjie.modules.maint.service.mapstruct.DeployHistoryMapper; import me.zhengjie.utils.*; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/impl/DeployServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/DeployServiceImpl.java similarity index 93% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/impl/DeployServiceImpl.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/DeployServiceImpl.java index 1c16f9c65..03ffdd1a5 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/impl/DeployServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/DeployServiceImpl.java @@ -13,31 +13,31 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.service.impl; +package me.zhengjie.modules.maint.service.impl; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import me.zhengjie.exception.BadRequestException; -import me.zhengjie.modules.mnt.domain.App; -import me.zhengjie.modules.mnt.domain.Deploy; -import me.zhengjie.modules.mnt.domain.DeployHistory; -import me.zhengjie.modules.mnt.domain.ServerDeploy; -import me.zhengjie.modules.mnt.repository.DeployRepository; -import me.zhengjie.modules.mnt.service.DeployHistoryService; -import me.zhengjie.modules.mnt.service.DeployService; -import me.zhengjie.modules.mnt.service.ServerDeployService; -import me.zhengjie.modules.mnt.service.dto.AppDto; -import me.zhengjie.modules.mnt.service.dto.DeployDto; -import me.zhengjie.modules.mnt.service.dto.DeployQueryCriteria; -import me.zhengjie.modules.mnt.service.dto.ServerDeployDto; -import me.zhengjie.modules.mnt.service.mapstruct.DeployMapper; -import me.zhengjie.modules.mnt.util.ExecuteShellUtil; -import me.zhengjie.modules.mnt.util.ScpClientUtil; -import me.zhengjie.modules.mnt.websocket.MsgType; -import me.zhengjie.modules.mnt.websocket.SocketMsg; -import me.zhengjie.modules.mnt.websocket.WebSocketServer; +import me.zhengjie.modules.maint.domain.App; +import me.zhengjie.modules.maint.domain.Deploy; +import me.zhengjie.modules.maint.domain.DeployHistory; +import me.zhengjie.modules.maint.domain.ServerDeploy; +import me.zhengjie.modules.maint.repository.DeployRepository; +import me.zhengjie.modules.maint.service.DeployHistoryService; +import me.zhengjie.modules.maint.service.DeployService; +import me.zhengjie.modules.maint.service.ServerDeployService; +import me.zhengjie.modules.maint.service.dto.AppDto; +import me.zhengjie.modules.maint.service.dto.DeployDto; +import me.zhengjie.modules.maint.service.dto.DeployQueryCriteria; +import me.zhengjie.modules.maint.service.dto.ServerDeployDto; +import me.zhengjie.modules.maint.service.mapstruct.DeployMapper; +import me.zhengjie.modules.maint.util.ExecuteShellUtil; +import me.zhengjie.modules.maint.util.ScpClientUtil; +import me.zhengjie.modules.maint.websocket.MsgType; +import me.zhengjie.modules.maint.websocket.SocketMsg; +import me.zhengjie.modules.maint.websocket.WebSocketServer; import me.zhengjie.utils.*; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/impl/ServerDeployServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/ServerDeployServiceImpl.java similarity index 89% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/impl/ServerDeployServiceImpl.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/ServerDeployServiceImpl.java index 24b29e0e2..ee9e5e756 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/impl/ServerDeployServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/ServerDeployServiceImpl.java @@ -13,16 +13,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.service.impl; +package me.zhengjie.modules.maint.service.impl; import lombok.RequiredArgsConstructor; -import me.zhengjie.modules.mnt.domain.ServerDeploy; -import me.zhengjie.modules.mnt.repository.ServerDeployRepository; -import me.zhengjie.modules.mnt.service.ServerDeployService; -import me.zhengjie.modules.mnt.service.dto.ServerDeployDto; -import me.zhengjie.modules.mnt.service.dto.ServerDeployQueryCriteria; -import me.zhengjie.modules.mnt.service.mapstruct.ServerDeployMapper; -import me.zhengjie.modules.mnt.util.ExecuteShellUtil; +import me.zhengjie.modules.maint.domain.ServerDeploy; +import me.zhengjie.modules.maint.repository.ServerDeployRepository; +import me.zhengjie.modules.maint.service.ServerDeployService; +import me.zhengjie.modules.maint.service.dto.ServerDeployDto; +import me.zhengjie.modules.maint.service.dto.ServerDeployQueryCriteria; +import me.zhengjie.modules.maint.service.mapstruct.ServerDeployMapper; +import me.zhengjie.modules.maint.util.ExecuteShellUtil; import me.zhengjie.utils.*; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/mapstruct/AppMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/mapstruct/AppMapper.java similarity index 85% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/mapstruct/AppMapper.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/service/mapstruct/AppMapper.java index fc39eeb2c..31418b056 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/mapstruct/AppMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/mapstruct/AppMapper.java @@ -13,11 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.service.mapstruct; +package me.zhengjie.modules.maint.service.mapstruct; import me.zhengjie.base.BaseMapper; -import me.zhengjie.modules.mnt.domain.App; -import me.zhengjie.modules.mnt.service.dto.AppDto; +import me.zhengjie.modules.maint.domain.App; +import me.zhengjie.modules.maint.service.dto.AppDto; import org.mapstruct.Mapper; import org.mapstruct.ReportingPolicy; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/mapstruct/DatabaseMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/mapstruct/DatabaseMapper.java similarity index 85% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/mapstruct/DatabaseMapper.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/service/mapstruct/DatabaseMapper.java index 3cc6e8dde..e540394a8 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/mapstruct/DatabaseMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/mapstruct/DatabaseMapper.java @@ -13,11 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.service.mapstruct; +package me.zhengjie.modules.maint.service.mapstruct; import me.zhengjie.base.BaseMapper; -import me.zhengjie.modules.mnt.domain.Database; -import me.zhengjie.modules.mnt.service.dto.DatabaseDto; +import me.zhengjie.modules.maint.domain.Database; +import me.zhengjie.modules.maint.service.dto.DatabaseDto; import org.mapstruct.Mapper; import org.mapstruct.ReportingPolicy; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/mapstruct/DeployHistoryMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/mapstruct/DeployHistoryMapper.java similarity index 84% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/mapstruct/DeployHistoryMapper.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/service/mapstruct/DeployHistoryMapper.java index 2522ab023..f83f903be 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/mapstruct/DeployHistoryMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/mapstruct/DeployHistoryMapper.java @@ -13,11 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.service.mapstruct; +package me.zhengjie.modules.maint.service.mapstruct; import me.zhengjie.base.BaseMapper; -import me.zhengjie.modules.mnt.domain.DeployHistory; -import me.zhengjie.modules.mnt.service.dto.DeployHistoryDto; +import me.zhengjie.modules.maint.domain.DeployHistory; +import me.zhengjie.modules.maint.service.dto.DeployHistoryDto; import org.mapstruct.Mapper; import org.mapstruct.ReportingPolicy; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/mapstruct/DeployMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/mapstruct/DeployMapper.java similarity index 85% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/mapstruct/DeployMapper.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/service/mapstruct/DeployMapper.java index cd3edee88..543043b47 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/mapstruct/DeployMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/mapstruct/DeployMapper.java @@ -13,11 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.service.mapstruct; +package me.zhengjie.modules.maint.service.mapstruct; import me.zhengjie.base.BaseMapper; -import me.zhengjie.modules.mnt.domain.Deploy; -import me.zhengjie.modules.mnt.service.dto.DeployDto; +import me.zhengjie.modules.maint.domain.Deploy; +import me.zhengjie.modules.maint.service.dto.DeployDto; import org.mapstruct.Mapper; import org.mapstruct.ReportingPolicy; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/mapstruct/ServerDeployMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/mapstruct/ServerDeployMapper.java similarity index 84% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/mapstruct/ServerDeployMapper.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/service/mapstruct/ServerDeployMapper.java index 960b25b16..e5f859a3e 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/service/mapstruct/ServerDeployMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/mapstruct/ServerDeployMapper.java @@ -13,11 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.service.mapstruct; +package me.zhengjie.modules.maint.service.mapstruct; import me.zhengjie.base.BaseMapper; -import me.zhengjie.modules.mnt.domain.ServerDeploy; -import me.zhengjie.modules.mnt.service.dto.ServerDeployDto; +import me.zhengjie.modules.maint.domain.ServerDeploy; +import me.zhengjie.modules.maint.service.dto.ServerDeployDto; import org.mapstruct.Mapper; import org.mapstruct.ReportingPolicy; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/util/DataTypeEnum.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/util/DataTypeEnum.java similarity index 99% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/util/DataTypeEnum.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/util/DataTypeEnum.java index e104b9ee9..4fa92b4fc 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/util/DataTypeEnum.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/util/DataTypeEnum.java @@ -17,7 +17,7 @@ * */ -package me.zhengjie.modules.mnt.util; +package me.zhengjie.modules.maint.util; import lombok.extern.slf4j.Slf4j; /** diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/util/ExecuteShellUtil.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/util/ExecuteShellUtil.java similarity index 98% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/util/ExecuteShellUtil.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/util/ExecuteShellUtil.java index a5d5b599a..fbe9c9df3 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/util/ExecuteShellUtil.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/util/ExecuteShellUtil.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.util; +package me.zhengjie.modules.maint.util; import cn.hutool.core.io.IoUtil; import com.jcraft.jsch.ChannelShell; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/util/ScpClientUtil.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/util/ScpClientUtil.java similarity index 98% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/util/ScpClientUtil.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/util/ScpClientUtil.java index 7cb83aa15..134779a18 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/util/ScpClientUtil.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/util/ScpClientUtil.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.util; +package me.zhengjie.modules.maint.util; import ch.ethz.ssh2.Connection; import ch.ethz.ssh2.SCPClient; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/util/SqlUtils.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/util/SqlUtils.java similarity index 99% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/util/SqlUtils.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/util/SqlUtils.java index 0e867af58..fcc521662 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/util/SqlUtils.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/util/SqlUtils.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.util; +package me.zhengjie.modules.maint.util; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.util.StringUtils; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/websocket/MsgType.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/websocket/MsgType.java similarity index 94% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/websocket/MsgType.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/websocket/MsgType.java index 2fc473da7..79a998d1b 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/websocket/MsgType.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/websocket/MsgType.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.websocket; +package me.zhengjie.modules.maint.websocket; /** * @author ZhangHouYing diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/websocket/SocketMsg.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/websocket/SocketMsg.java similarity index 95% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/websocket/SocketMsg.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/websocket/SocketMsg.java index ade33a24d..7e6ebc638 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/websocket/SocketMsg.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/websocket/SocketMsg.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.websocket; +package me.zhengjie.modules.maint.websocket; import lombok.Data; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/websocket/WebSocketServer.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/websocket/WebSocketServer.java similarity index 98% rename from eladmin-system/src/main/java/me/zhengjie/modules/mnt/websocket/WebSocketServer.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/websocket/WebSocketServer.java index 000a51583..a72fcf6f6 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/mnt/websocket/WebSocketServer.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/websocket/WebSocketServer.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.mnt.websocket; +package me.zhengjie.modules.maint.websocket; import com.alibaba.fastjson.JSON; import lombok.extern.slf4j.Slf4j; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/rest/QuartzJobController.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/rest/QuartzJobController.java index e1b5da761..d6d23a195 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/rest/QuartzJobController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/rest/QuartzJobController.java @@ -26,7 +26,7 @@ import me.zhengjie.modules.quartz.service.QuartzJobService; import me.zhengjie.modules.quartz.service.dto.JobQueryCriteria; import me.zhengjie.utils.PageResult; -import me.zhengjie.utils.SpringContextHolder; +import me.zhengjie.utils.SpringBeanHolder; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -134,7 +134,7 @@ public ResponseEntity deleteQuartzJob(@RequestBody Set ids){ private void checkBean(String beanName){ // 避免调用攻击者可以从SpringContextHolder获得控制jdbcTemplate类 // 并使用getDeclaredMethod调用jdbcTemplate的queryForMap函数,执行任意sql命令。 - if(!SpringContextHolder.getAllServiceBeanName().contains(beanName)){ + if(!SpringBeanHolder.getAllServiceBeanName().contains(beanName)){ throw new BadRequestException("非法的 Bean,请重新输入!"); } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/ExecutionJob.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/ExecutionJob.java index 4de112053..579d61d50 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/ExecutionJob.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/ExecutionJob.java @@ -26,7 +26,7 @@ import me.zhengjie.modules.quartz.service.QuartzJobService; import me.zhengjie.service.EmailService; import me.zhengjie.utils.RedisUtils; -import me.zhengjie.utils.SpringContextHolder; +import me.zhengjie.utils.SpringBeanHolder; import me.zhengjie.utils.StringUtils; import me.zhengjie.utils.ThrowableUtil; import org.quartz.JobExecutionContext; @@ -49,16 +49,16 @@ public class ExecutionJob extends QuartzJobBean { private final Logger logger = LoggerFactory.getLogger(this.getClass()); // 此处仅供参考,可根据任务执行情况自定义线程池参数 - private final ThreadPoolTaskExecutor executor = SpringContextHolder.getBean("elAsync"); + private final ThreadPoolTaskExecutor executor = SpringBeanHolder.getBean("elAsync"); @Override public void executeInternal(JobExecutionContext context) { // 获取任务 QuartzJob quartzJob = (QuartzJob) context.getMergedJobDataMap().get(QuartzJob.JOB_KEY); // 获取spring bean - QuartzLogRepository quartzLogRepository = SpringContextHolder.getBean(QuartzLogRepository.class); - QuartzJobService quartzJobService = SpringContextHolder.getBean(QuartzJobService.class); - RedisUtils redisUtils = SpringContextHolder.getBean(RedisUtils.class); + QuartzLogRepository quartzLogRepository = SpringBeanHolder.getBean(QuartzLogRepository.class); + QuartzJobService quartzJobService = SpringBeanHolder.getBean(QuartzJobService.class); + RedisUtils redisUtils = SpringBeanHolder.getBean(RedisUtils.class); String uuid = quartzJob.getUuid(); @@ -105,7 +105,7 @@ public void executeInternal(JobExecutionContext context) { quartzJobService.updateIsPause(quartzJob); } if(quartzJob.getEmail() != null){ - EmailService emailService = SpringContextHolder.getBean(EmailService.class); + EmailService emailService = SpringBeanHolder.getBean(EmailService.class); // 邮箱报警 if(StringUtils.isNoneBlank(quartzJob.getEmail())){ EmailVo emailVo = taskAlarm(quartzJob, ThrowableUtil.getStackTrace(e)); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzRunnable.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzRunnable.java index 31c3a0f8f..c75925e65 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzRunnable.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzRunnable.java @@ -16,7 +16,7 @@ package me.zhengjie.modules.quartz.utils; import lombok.extern.slf4j.Slf4j; -import me.zhengjie.utils.SpringContextHolder; +import me.zhengjie.utils.SpringBeanHolder; import org.apache.commons.lang3.StringUtils; import org.springframework.util.ReflectionUtils; import java.lang.reflect.Method; @@ -35,7 +35,7 @@ public class QuartzRunnable implements Callable { QuartzRunnable(String beanName, String methodName, String params) throws NoSuchMethodException, SecurityException { - this.target = SpringContextHolder.getBean(beanName); + this.target = SpringBeanHolder.getBean(beanName); this.params = params; if (StringUtils.isNotBlank(params)) { this.method = target.getClass().getDeclaredMethod(methodName, String.class); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthorizationController.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthorizationController.java index 04476de06..4e03e5772 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthorizationController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthorizationController.java @@ -25,7 +25,7 @@ import me.zhengjie.annotation.rest.AnonymousDeleteMapping; import me.zhengjie.annotation.rest.AnonymousGetMapping; import me.zhengjie.annotation.rest.AnonymousPostMapping; -import me.zhengjie.config.RsaProperties; +import me.zhengjie.config.properties.RsaProperties; import me.zhengjie.exception.BadRequestException; import me.zhengjie.modules.security.config.bean.LoginCodeEnum; import me.zhengjie.modules.security.config.bean.LoginProperties; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java index f75b8bb8f..1894238dd 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java @@ -21,7 +21,7 @@ import lombok.RequiredArgsConstructor; import me.zhengjie.annotation.Log; import me.zhengjie.utils.PageResult; -import me.zhengjie.config.RsaProperties; +import me.zhengjie.config.properties.RsaProperties; import me.zhengjie.modules.system.domain.Dept; import me.zhengjie.modules.system.service.DataService; import me.zhengjie.modules.system.domain.User; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java index 9a6e543b9..41ae50b7e 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java @@ -17,7 +17,7 @@ import lombok.RequiredArgsConstructor; import me.zhengjie.utils.PageResult; -import me.zhengjie.config.FileProperties; +import me.zhengjie.config.properties.FileProperties; import me.zhengjie.exception.BadRequestException; import me.zhengjie.modules.security.service.OnlineUserService; import me.zhengjie.modules.security.service.UserCacheManager; diff --git a/eladmin-system/src/main/java/me/zhengjie/sysrunner/SystemRunner.java b/eladmin-system/src/main/java/me/zhengjie/sysrunner/SystemRunner.java new file mode 100644 index 000000000..b69aba268 --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/sysrunner/SystemRunner.java @@ -0,0 +1,37 @@ +/* + * Copyright 2019-2020 the original author or authors. + * + * 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 me.zhengjie.sysrunner; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.stereotype.Component; + +/** + * @author Zheng Jie + * @description 程序启动后处理数据 + * @date 2025-01-13 + **/ +@Slf4j +@Component +@RequiredArgsConstructor +public class SystemRunner implements ApplicationRunner { + + @Override + public void run(ApplicationArguments args) { + } +} diff --git a/eladmin-tools/src/main/java/me/zhengjie/utils/AliPayStatusEnum.java b/eladmin-tools/src/main/java/me/zhengjie/domain/enums/AliPayStatusEnum.java similarity index 97% rename from eladmin-tools/src/main/java/me/zhengjie/utils/AliPayStatusEnum.java rename to eladmin-tools/src/main/java/me/zhengjie/domain/enums/AliPayStatusEnum.java index c114fd16a..5f5b042df 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/utils/AliPayStatusEnum.java +++ b/eladmin-tools/src/main/java/me/zhengjie/domain/enums/AliPayStatusEnum.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.utils; +package me.zhengjie.domain.enums; /** * 支付状态 diff --git a/eladmin-tools/src/main/java/me/zhengjie/rest/AliPayController.java b/eladmin-tools/src/main/java/me/zhengjie/rest/AliPayController.java index 0c03d0aed..fe70b04ab 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/rest/AliPayController.java +++ b/eladmin-tools/src/main/java/me/zhengjie/rest/AliPayController.java @@ -19,12 +19,12 @@ import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import me.zhengjie.annotation.AnonymousAccess; +import me.zhengjie.annotation.rest.AnonymousAccess; import me.zhengjie.annotation.Log; import me.zhengjie.annotation.rest.AnonymousGetMapping; import me.zhengjie.domain.vo.TradeVo; import me.zhengjie.domain.AlipayConfig; -import me.zhengjie.utils.AliPayStatusEnum; +import me.zhengjie.domain.enums.AliPayStatusEnum; import me.zhengjie.utils.AlipayUtils; import me.zhengjie.service.AliPayService; import org.springframework.http.HttpStatus; diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/impl/LocalStorageServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/LocalStorageServiceImpl.java index 945485387..b1fbf5f17 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/impl/LocalStorageServiceImpl.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/LocalStorageServiceImpl.java @@ -17,7 +17,7 @@ import cn.hutool.core.util.ObjectUtil; import lombok.RequiredArgsConstructor; -import me.zhengjie.config.FileProperties; +import me.zhengjie.config.properties.FileProperties; import me.zhengjie.domain.LocalStorage; import me.zhengjie.service.dto.LocalStorageDto; import me.zhengjie.service.dto.LocalStorageQueryCriteria; diff --git a/pom.xml b/pom.xml index 7df18bf44..4f741d0d7 100644 --- a/pom.xml +++ b/pom.xml @@ -47,6 +47,12 @@ spring-boot-starter-data-jpa + + + org.springframework.boot + spring-boot-starter-websocket + + org.springframework.boot diff --git a/sql/eladmin.sql b/sql/eladmin.sql index 2711d6e9c..29d2d5be0 100644 --- a/sql/eladmin.sql +++ b/sql/eladmin.sql @@ -412,11 +412,11 @@ INSERT INTO `sys_menu` VALUES (80, 6, 0, 1, '服务监控', 'ServerMonitor', 'mo INSERT INTO `sys_menu` VALUES (82, 36, 0, 1, '生成配置', 'GeneratorConfig', 'generator/config', 33, 'dev', 'generator/config/:tableName', b'0', b'1', b'1', '', NULL, NULL, '2019-11-17 20:08:56', NULL); INSERT INTO `sys_menu` VALUES (83, 10, 0, 1, '图表库', 'Echarts', 'components/Echarts', 50, 'chart', 'echarts', b'0', b'1', b'0', '', NULL, NULL, '2019-11-21 09:04:32', NULL); INSERT INTO `sys_menu` VALUES (90, NULL, 5, 1, '运维管理', 'Mnt', '', 20, 'mnt', 'mnt', b'0', b'0', b'0', NULL, NULL, NULL, '2019-11-09 10:31:08', NULL); -INSERT INTO `sys_menu` VALUES (92, 90, 3, 1, '服务器', 'ServerDeploy', 'mnt/server/index', 22, 'server', 'mnt/serverDeploy', b'0', b'0', b'0', 'serverDeploy:list', NULL, NULL, '2019-11-10 10:29:25', NULL); -INSERT INTO `sys_menu` VALUES (93, 90, 3, 1, '应用管理', 'App', 'mnt/app/index', 23, 'app', 'mnt/app', b'0', b'0', b'0', 'app:list', NULL, NULL, '2019-11-10 11:05:16', NULL); -INSERT INTO `sys_menu` VALUES (94, 90, 3, 1, '部署管理', 'Deploy', 'mnt/deploy/index', 24, 'deploy', 'mnt/deploy', b'0', b'0', b'0', 'deploy:list', NULL, NULL, '2019-11-10 15:56:55', NULL); -INSERT INTO `sys_menu` VALUES (97, 90, 1, 1, '部署备份', 'DeployHistory', 'mnt/deployHistory/index', 25, 'backup', 'mnt/deployHistory', b'0', b'0', b'0', 'deployHistory:list', NULL, NULL, '2019-11-10 16:49:44', NULL); -INSERT INTO `sys_menu` VALUES (98, 90, 3, 1, '数据库管理', 'Database', 'mnt/database/index', 26, 'database', 'mnt/database', b'0', b'0', b'0', 'database:list', NULL, NULL, '2019-11-10 20:40:04', NULL); +INSERT INTO `sys_menu` VALUES (92, 90, 3, 1, '服务器', 'ServerDeploy', 'maint/server/index', 22, 'server', 'maint/serverDeploy', b'0', b'0', b'0', 'serverDeploy:list', NULL, NULL, '2019-11-10 10:29:25', NULL); +INSERT INTO `sys_menu` VALUES (93, 90, 3, 1, '应用管理', 'App', 'maint/app/index', 23, 'app', 'maint/app', b'0', b'0', b'0', 'app:list', NULL, NULL, '2019-11-10 11:05:16', NULL); +INSERT INTO `sys_menu` VALUES (94, 90, 3, 1, '部署管理', 'Deploy', 'maint/deploy/index', 24, 'deploy', 'maint/deploy', b'0', b'0', b'0', 'deploy:list', NULL, NULL, '2019-11-10 15:56:55', NULL); +INSERT INTO `sys_menu` VALUES (97, 90, 1, 1, '部署备份', 'DeployHistory', 'maint/deployHistory/index', 25, 'backup', 'maint/deployHistory', b'0', b'0', b'0', 'deployHistory:list', NULL, NULL, '2019-11-10 16:49:44', NULL); +INSERT INTO `sys_menu` VALUES (98, 90, 3, 1, '数据库管理', 'Database', 'maint/database/index', 26, 'database', 'maint/database', b'0', b'0', b'0', 'database:list', NULL, NULL, '2019-11-10 20:40:04', NULL); INSERT INTO `sys_menu` VALUES (102, 97, 0, 2, '删除', NULL, '', 999, '', '', b'0', b'0', b'0', 'deployHistory:del', NULL, NULL, '2019-11-17 09:32:48', NULL); INSERT INTO `sys_menu` VALUES (103, 92, 0, 2, '服务器新增', NULL, '', 999, '', '', b'0', b'0', b'0', 'serverDeploy:add', NULL, NULL, '2019-11-17 11:08:33', NULL); INSERT INTO `sys_menu` VALUES (104, 92, 0, 2, '服务器编辑', NULL, '', 999, '', '', b'0', b'0', b'0', 'serverDeploy:edit', NULL, NULL, '2019-11-17 11:08:57', NULL); diff --git a/sql/tool_picture.sql b/sql/tool_picture.sql deleted file mode 100644 index 6b36d0db5..000000000 --- a/sql/tool_picture.sql +++ /dev/null @@ -1,2 +0,0 @@ --- 删除免费图床表 -DROP TABLE tool_picture; \ No newline at end of file diff --git "a/sql/\350\204\232\346\234\254\345\246\202\344\275\225\351\200\211\346\213\251.md" "b/sql/\350\204\232\346\234\254\345\246\202\344\275\225\351\200\211\346\213\251.md" deleted file mode 100644 index 633c8642a..000000000 --- "a/sql/\350\204\232\346\234\254\345\246\202\344\275\225\351\200\211\346\213\251.md" +++ /dev/null @@ -1,11 +0,0 @@ -## 脚本指南 -项目根目录的 sql 文件夹内提供了本次数据库变更的脚本,脚本如何选择,以及执行的顺序如下 - -::: tip 注意 -操作数据库属于危险行为,请勿用于生产库,请事先做好备份!!! -::: - -### 初次使用 -eladmin.sql 为 eladmin 项目完整的 sql 脚本,适合于初次使用的用户 - -### 更新迭代 From 75df46b5dc7cbbb348924f03f433adebadf0a0c0 Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Wed, 15 Jan 2025 15:57:38 +0800 Subject: [PATCH 22/54] =?UTF-8?q?refactor:=20=E6=9B=BF=E6=8D=A2log4jdbc?= =?UTF-8?q?=E4=B8=BAp6spy=EF=BC=8C=E4=BC=98=E5=8C=96SQL=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E8=BE=93=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../me/zhengjie/config/CustomP6SpyLogger.java | 62 +++++++++++++++++++ .../main/resources/config/application-dev.yml | 12 ++-- .../resources/config/application-prod.yml | 8 +-- .../main/resources/log4jdbc.log4j2.properties | 4 -- eladmin-system/src/main/resources/logback.xml | 28 +-------- .../src/main/resources/spy.properties | 29 +++++++++ pom.xml | 11 ++-- 7 files changed, 106 insertions(+), 48 deletions(-) create mode 100644 eladmin-common/src/main/java/me/zhengjie/config/CustomP6SpyLogger.java delete mode 100644 eladmin-system/src/main/resources/log4jdbc.log4j2.properties create mode 100644 eladmin-system/src/main/resources/spy.properties diff --git a/eladmin-common/src/main/java/me/zhengjie/config/CustomP6SpyLogger.java b/eladmin-common/src/main/java/me/zhengjie/config/CustomP6SpyLogger.java new file mode 100644 index 000000000..c23de95d0 --- /dev/null +++ b/eladmin-common/src/main/java/me/zhengjie/config/CustomP6SpyLogger.java @@ -0,0 +1,62 @@ +/* + * Copyright 2019-2020 Zheng Jie + * + * 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 me.zhengjie.config; + +import cn.hutool.core.util.StrUtil; +import com.p6spy.engine.spy.appender.MessageFormattingStrategy; +import lombok.extern.slf4j.Slf4j; + +/** + * @author Zheng Jie + * @description 自定义 p6spy sql输出格式 + * @date 2024-12-26 + **/ +@Slf4j +public class CustomP6SpyLogger implements MessageFormattingStrategy { + + // 重置颜色 + private static final String RESET = "\u001B[0m"; + // 红色 + private static final String RED = "\u001B[31m"; + // 绿色 + private static final String GREEN = "\u001B[32m"; + + /** + * 格式化 sql + * @param connectionId 连接id + * @param now 当前时间 + * @param elapsed 执行时长 + * @param category sql分类 + * @param prepared 预编译sql + * @param sql 执行sql + * @param url 数据库连接url + * @return 格式化后的sql + */ + @Override + public String formatMessage(int connectionId, String now, long elapsed, String category, String prepared, String sql, String url) { + // 去掉换行和多余空格 + if(StrUtil.isNotBlank(sql)){ + sql = sql.replaceAll("\\s+", " ").trim(); + } + + // 格式化并加上颜色 + return String.format( + "%s[Time: %dms]%s - %s%s%s;", + GREEN, elapsed, RESET, RED, sql, RESET + ); + } +} + diff --git a/eladmin-system/src/main/resources/config/application-dev.yml b/eladmin-system/src/main/resources/config/application-dev.yml index bb5317f61..fa8b7ede0 100644 --- a/eladmin-system/src/main/resources/config/application-dev.yml +++ b/eladmin-system/src/main/resources/config/application-dev.yml @@ -3,10 +3,10 @@ spring: datasource: druid: db-type: com.alibaba.druid.pool.DruidDataSource - driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy - url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:eladmin}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false - username: ${DB_USER:root} - password: ${DB_PWD:123456} + driverClassName: com.p6spy.engine.spy.P6SpyDriver + url: jdbc:p6spy:mysql://localhost:3306/eladmin?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false + username: root + password: 123456 # 初始连接数,建议设置为与最小空闲连接数相同 initial-size: 20 # 最小空闲连接数,保持足够的空闲连接以应对请求 @@ -86,9 +86,9 @@ jwt: # 令牌过期时间 此处单位/毫秒 ,默认4小时,可在此网站生成 https://www.convertworld.com/zh-hans/time/milliseconds.html token-validity-in-seconds: 14400000 # 在线用户key - online-key: "online-token:" + online-key: "online_token:" # 验证码 - code-key: "captcha-code:" + code-key: "captcha_code:" # token 续期检查时间范围(默认30分钟,单位毫秒),在token即将过期的一段时间内用户操作了,则给用户的token续期 detect: 1800000 # 续期时间范围,默认1小时,单位毫秒 diff --git a/eladmin-system/src/main/resources/config/application-prod.yml b/eladmin-system/src/main/resources/config/application-prod.yml index 291e20e70..4d9d2aabf 100644 --- a/eladmin-system/src/main/resources/config/application-prod.yml +++ b/eladmin-system/src/main/resources/config/application-prod.yml @@ -3,8 +3,8 @@ spring: datasource: druid: db-type: com.alibaba.druid.pool.DruidDataSource - driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy - url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:eladmin}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false + driverClassName: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:eladmin}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false username: ${DB_USER:root} password: ${DB_PWD:123456} # 初始连接数,建议设置为与最小空闲连接数相同 @@ -90,9 +90,9 @@ jwt: # 令牌过期时间 此处单位/毫秒 ,默认2小时,可在此网站生成 https://www.convertworld.com/zh-hans/time/milliseconds.html token-validity-in-seconds: 7200000 # 在线用户key - online-key: "online-token:" + online-key: "online_token:" # 验证码 - code-key: "captcha-code:" + code-key: "captcha_code:" # token 续期检查时间范围(默认30分钟,单位默认毫秒),在token即将过期的一段时间内用户操作了,则给用户的token续期 detect: 1800000 # 续期时间范围,默认 1小时,这里单位毫秒 diff --git a/eladmin-system/src/main/resources/log4jdbc.log4j2.properties b/eladmin-system/src/main/resources/log4jdbc.log4j2.properties deleted file mode 100644 index 302525ffa..000000000 --- a/eladmin-system/src/main/resources/log4jdbc.log4j2.properties +++ /dev/null @@ -1,4 +0,0 @@ -# If you use SLF4J. First, you need to tell log4jdbc-log4j2 that you want to use the SLF4J logger -log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator -log4jdbc.auto.load.popular.drivers=false -log4jdbc.drivers=com.mysql.cj.jdbc.Driver \ No newline at end of file diff --git a/eladmin-system/src/main/resources/logback.xml b/eladmin-system/src/main/resources/logback.xml index 3f8f9d8fb..db910fddf 100644 --- a/eladmin-system/src/main/resources/logback.xml +++ b/eladmin-system/src/main/resources/logback.xml @@ -16,30 +16,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + diff --git a/eladmin-system/src/main/resources/spy.properties b/eladmin-system/src/main/resources/spy.properties new file mode 100644 index 000000000..7b60caf6b --- /dev/null +++ b/eladmin-system/src/main/resources/spy.properties @@ -0,0 +1,29 @@ +# 应用的拦截模块 +modulelist=com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory + +# 自定义日志打印 +logMessageFormat=me.zhengjie.config.CustomP6SpyLogger + +# 日志输出到控制台 +appender=com.p6spy.engine.spy.appender.Slf4JLogger + +# 日期格式 +dateformat=yyyy-MM-dd HH:mm:ss + +# 实际驱动可多个 +driverlist=com.mysql.cj.jdbc.Driver + +# 是否开启慢SQL记录 +outagedetection=true + +# 慢SQL记录标准 2 秒 +outagedetectioninterval=2 + +# 是否过滤 Log +filter=true + +# 过滤 Log 时所排除的 sql 关键字,以逗号分隔 +exclude=select 1 + +# 配置记录 Log 例外,可去掉的结果集有error,info,batch,debug,statement,commit,rollback,result,resultset. +excludecategories=info,debug,result,commit,resultset \ No newline at end of file diff --git a/pom.xml b/pom.xml index 4f741d0d7..f6ac3402a 100644 --- a/pom.xml +++ b/pom.xml @@ -1,7 +1,5 @@ - + 4.0.0 me.zhengjie @@ -32,7 +30,6 @@ UTF-8 UTF-8 1.8 - 1.16 2.9.2 1.2.83 1.2.19 @@ -98,9 +95,9 @@ - org.bgee.log4jdbc-log4j2 - log4jdbc-log4j2-jdbc4.1 - ${log4jdbc.version} + p6spy + p6spy + 3.9.1 From 51d9f42273d56bff74cb2dbd72a822c13d260afc Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Wed, 15 Jan 2025 16:16:30 +0800 Subject: [PATCH 23/54] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96=E5=AE=89?= =?UTF-8?q?=E5=85=A8=E9=85=8D=E7=BD=AE=E5=92=8C=E4=BB=A3=E7=A0=81=E7=BB=93?= =?UTF-8?q?=E6=9E=84=EF=BC=8C=E7=A7=BB=E9=99=A4=E5=86=97=E4=BD=99=E7=B1=BB?= =?UTF-8?q?=EF=BC=8CSecurityUtils=E4=BC=98=E5=8C=96=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=90=8D=E4=B8=8E=E7=94=A8=E6=88=B7ID?= =?UTF-8?q?=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zhengjie/exception/handler/ApiError.java | 2 +- .../java/me/zhengjie/utils/SecurityUtils.java | 112 ++++++++++++------ ...oginProperties.java => CaptchaConfig.java} | 97 ++++++++------- .../config/ConfigBeanConfiguration.java | 43 ------- .../security/config/LoginProperties.java | 39 ++++++ .../config/{bean => }/SecurityProperties.java | 6 +- .../security/config/SpringSecurityConfig.java | 7 +- .../security/config/bean/LoginCode.java | 61 ---------- .../config/{bean => enums}/LoginCodeEnum.java | 2 +- ...ionController.java => AuthController.java} | 53 +++++---- .../security/JwtAccessDeniedHandler.java | 9 +- .../security/JwtAuthenticationEntryPoint.java | 17 ++- .../security/security/TokenConfigurer.java | 5 +- .../security/security/TokenFilter.java | 36 ++---- .../security/security/TokenProvider.java | 26 ++-- .../security/service/OnlineUserService.java | 3 +- .../security/service/UserCacheManager.java | 2 +- .../service/UserDetailsServiceImpl.java | 18 +-- .../security/service/dto/JwtUserDto.java | 6 + .../modules/system/service/RoleService.java | 2 +- .../system/service/dto/UserLoginDto.java | 3 + .../system/service/impl/RoleServiceImpl.java | 2 +- .../main/resources/config/application-dev.yml | 2 +- .../resources/config/application-prod.yml | 2 +- 24 files changed, 278 insertions(+), 277 deletions(-) rename eladmin-system/src/main/java/me/zhengjie/modules/security/config/{bean/LoginProperties.java => CaptchaConfig.java} (51%) delete mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/security/config/ConfigBeanConfiguration.java create mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/security/config/LoginProperties.java rename eladmin-system/src/main/java/me/zhengjie/modules/security/config/{bean => }/SecurityProperties.java (86%) delete mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/security/config/bean/LoginCode.java rename eladmin-system/src/main/java/me/zhengjie/modules/security/config/{bean => enums}/LoginCodeEnum.java (94%) rename eladmin-system/src/main/java/me/zhengjie/modules/security/rest/{AuthorizationController.java => AuthController.java} (76%) diff --git a/eladmin-common/src/main/java/me/zhengjie/exception/handler/ApiError.java b/eladmin-common/src/main/java/me/zhengjie/exception/handler/ApiError.java index 977788c72..9568df8ce 100644 --- a/eladmin-common/src/main/java/me/zhengjie/exception/handler/ApiError.java +++ b/eladmin-common/src/main/java/me/zhengjie/exception/handler/ApiError.java @@ -22,7 +22,7 @@ * @date 2018-11-23 */ @Data -class ApiError { +public class ApiError { private Integer status = 400; private Long timestamp; diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/SecurityUtils.java b/eladmin-common/src/main/java/me/zhengjie/utils/SecurityUtils.java index aa4e37616..f44550c8f 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/SecurityUtils.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/SecurityUtils.java @@ -15,18 +15,24 @@ */ package me.zhengjie.utils; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.jwt.JWT; +import cn.hutool.jwt.JWTUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; -import me.zhengjie.exception.BadRequestException; import me.zhengjie.utils.enums.DataScopeEnum; -import org.springframework.http.HttpStatus; -import org.springframework.security.core.Authentication; -import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.beans.factory.annotation.Value; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.stereotype.Component; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; import java.util.List; +import java.util.Objects; /** * 获取当前登录的用户 @@ -34,8 +40,23 @@ * @date 2019-01-17 */ @Slf4j +@Component public class SecurityUtils { + public static String header; + + public static String tokenStartWith; + + @Value("${jwt.header}") + public void setHeader(String header) { + SecurityUtils.header = header; + } + + @Value("${jwt.token-start-with}") + public void setTokenStartWith(String tokenStartWith) { + SecurityUtils.tokenStartWith = tokenStartWith; + } + /** * 获取当前登录的用户 * @return UserDetails @@ -45,34 +66,6 @@ public static UserDetails getCurrentUser() { return userDetailsService.loadUserByUsername(getCurrentUsername()); } - /** - * 获取系统用户名称 - * - * @return 系统用户名称 - */ - public static String getCurrentUsername() { - final Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); - if (authentication == null) { - throw new BadRequestException(HttpStatus.UNAUTHORIZED, "当前登录状态过期"); - } - if (authentication.getPrincipal() instanceof UserDetails) { - UserDetails userDetails = (UserDetails) authentication.getPrincipal(); - return userDetails.getUsername(); - } - throw new BadRequestException(HttpStatus.UNAUTHORIZED, "找不到当前登录的信息"); - } - - /** - * 获取系统用户ID - * @return 系统用户ID - */ - public static Long getCurrentUserId() { - UserDetails userDetails = getCurrentUser(); - // 将 Java 对象转换为 JSONObject 对象 - JSONObject jsonObject = (JSONObject) JSON.toJSON(userDetails); - return jsonObject.getJSONObject("user").getLong("id"); - } - /** * 获取当前用户的数据权限 * @return / @@ -91,9 +84,62 @@ public static List getCurrentUserDataScope(){ */ public static String getDataScopeType() { List dataScopes = getCurrentUserDataScope(); - if(dataScopes.size() != 0){ + if(CollUtil.isEmpty(dataScopes)){ return ""; } return DataScopeEnum.ALL.getValue(); } + + /** + * 获取用户ID + * @return 系统用户ID + */ + public static Long getCurrentUserId() { + return getCurrentUserId(getToken()); + } + + /** + * 获取用户ID + * @return 系统用户ID + */ + public static Long getCurrentUserId(String token) { + JWT jwt = JWTUtil.parseToken(token); + return Long.valueOf(jwt.getPayload("userId").toString()); + } + + /** + * 获取系统用户名称 + * + * @return 系统用户名称 + */ + public static String getCurrentUsername() { + return getCurrentUsername(getToken()); + } + + /** + * 获取系统用户名称 + * + * @return 系统用户名称 + */ + public static String getCurrentUsername(String token) { + JWT jwt = JWTUtil.parseToken(token); + return jwt.getPayload("sub").toString(); + } + + /** + * 获取Token + * @return / + */ + public static String getToken() { + HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder + .getRequestAttributes())).getRequest(); + String bearerToken = request.getHeader(header); + if (bearerToken != null && bearerToken.startsWith(tokenStartWith)) { + // 去掉令牌前缀 + return bearerToken.replace(tokenStartWith, ""); + } else { + log.debug("非法Token:{}", bearerToken); + } + return null; + } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/bean/LoginProperties.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/CaptchaConfig.java similarity index 51% rename from eladmin-system/src/main/java/me/zhengjie/modules/security/config/bean/LoginProperties.java rename to eladmin-system/src/main/java/me/zhengjie/modules/security/config/CaptchaConfig.java index 0201a13df..94fdf2ce9 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/bean/LoginProperties.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/CaptchaConfig.java @@ -13,89 +13,100 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.security.config.bean; +package me.zhengjie.modules.security.config; import com.wf.captcha.*; import com.wf.captcha.base.Captcha; import lombok.Data; -import me.zhengjie.exception.BadConfigurationException; +import lombok.Getter; +import me.zhengjie.exception.BadRequestException; +import me.zhengjie.modules.security.config.enums.LoginCodeEnum; import me.zhengjie.utils.StringUtils; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + import java.awt.*; -import java.util.Objects; /** - * 配置文件读取 - * + * 登录验证码配置信息 * @author liaojinlong - * @date loginCode.length0loginCode.length0/6/10 17:loginCode.length6 + * @date 2025-01-13 */ @Data -public class LoginProperties { +@Configuration +@ConfigurationProperties(prefix = "login.code") +public class CaptchaConfig { /** - * 账号单用户 登录 + * 验证码配置 */ - private boolean singleLogin = false; + @Getter + private LoginCodeEnum codeType; - private LoginCode loginCode; + /** + * 验证码有效期 分钟 + */ + private Long expiration = 5L; - public static final String cacheKey = "user-login-cache:"; + /** + * 验证码内容长度 + */ + private int length = 4; - public boolean isSingleLogin() { - return singleLogin; - } + /** + * 验证码宽度 + */ + private int width = 111; /** - * 获取验证码生产类 - * - * @return / + * 验证码高度 */ - public Captcha getCaptcha() { - if (Objects.isNull(loginCode)) { - loginCode = new LoginCode(); - if (Objects.isNull(loginCode.getCodeType())) { - loginCode.setCodeType(LoginCodeEnum.ARITHMETIC); - } - } - return switchCaptcha(loginCode); - } + private int height = 36; + + /** + * 验证码字体 + */ + private String fontName; + + /** + * 字体大小 + */ + private int fontSize = 25; /** * 依据配置信息生产验证码 - * - * @param loginCode 验证码配置信息 * @return / */ - private Captcha switchCaptcha(LoginCode loginCode) { + public Captcha getCaptcha() { Captcha captcha; - switch (loginCode.getCodeType()) { + switch (codeType) { case ARITHMETIC: // 算术类型 https://gitee.com/whvse/EasyCaptcha - captcha = new FixedArithmeticCaptcha(loginCode.getWidth(), loginCode.getHeight()); + captcha = new FixedArithmeticCaptcha(width, height); // 几位数运算,默认是两位 - captcha.setLen(loginCode.getLength()); + captcha.setLen(length); break; case CHINESE: - captcha = new ChineseCaptcha(loginCode.getWidth(), loginCode.getHeight()); - captcha.setLen(loginCode.getLength()); + captcha = new ChineseCaptcha(width, height); + captcha.setLen(length); break; case CHINESE_GIF: - captcha = new ChineseGifCaptcha(loginCode.getWidth(), loginCode.getHeight()); - captcha.setLen(loginCode.getLength()); + captcha = new ChineseGifCaptcha(width, height); + captcha.setLen(length); break; case GIF: - captcha = new GifCaptcha(loginCode.getWidth(), loginCode.getHeight()); - captcha.setLen(loginCode.getLength()); + captcha = new GifCaptcha(width, height); + captcha.setLen(length); break; case SPEC: - captcha = new SpecCaptcha(loginCode.getWidth(), loginCode.getHeight()); - captcha.setLen(loginCode.getLength()); + captcha = new SpecCaptcha(width, height); + captcha.setLen(length); break; default: - throw new BadConfigurationException("验证码配置信息错误!正确配置查看 LoginCodeEnum "); + throw new BadRequestException("验证码配置信息错误!正确配置查看 LoginCodeEnum "); } - if(StringUtils.isNotBlank(loginCode.getFontName())){ - captcha.setFont(new Font(loginCode.getFontName(), Font.PLAIN, loginCode.getFontSize())); + if(StringUtils.isNotBlank(fontName)){ + captcha.setFont(new Font(fontName, Font.PLAIN, fontSize)); } return captcha; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/ConfigBeanConfiguration.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/ConfigBeanConfiguration.java deleted file mode 100644 index 8cbc88dd6..000000000 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/ConfigBeanConfiguration.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2019-2020 the original author or authors. - * - * 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 me.zhengjie.modules.security.config; - -import me.zhengjie.modules.security.config.bean.LoginProperties; -import me.zhengjie.modules.security.config.bean.SecurityProperties; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * @apiNote 配置文件转换Pojo类的 统一配置 类 - * @author: liaojinlong - * @date: 2020/6/10 19:04 - */ -@Configuration -public class ConfigBeanConfiguration { - - @Bean - @ConfigurationProperties(prefix = "login") - public LoginProperties loginProperties() { - return new LoginProperties(); - } - - @Bean - @ConfigurationProperties(prefix = "jwt") - public SecurityProperties securityProperties() { - return new SecurityProperties(); - } -} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/LoginProperties.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/LoginProperties.java new file mode 100644 index 000000000..b38aabdf7 --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/LoginProperties.java @@ -0,0 +1,39 @@ +/* + * Copyright 2019-2020 the original author or authors. + * + * Licensed under the Apache License, Version loginCode.length.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-loginCode.length.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 me.zhengjie.modules.security.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +/** + * 配置文件读取 + * + * @author liaojinlong + * @date loginCode.length0loginCode.length0/6/10 17:loginCode.length6 + */ +@Data +@Configuration +@ConfigurationProperties(prefix = "login") +public class LoginProperties { + + /** + * 账号单用户 登录 + */ + private boolean singleLogin = false; + + public static final String cacheKey = "user-login-cache:"; +} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/bean/SecurityProperties.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityProperties.java similarity index 86% rename from eladmin-system/src/main/java/me/zhengjie/modules/security/config/bean/SecurityProperties.java rename to eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityProperties.java index 16ec3cf0a..ac0dd501b 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/bean/SecurityProperties.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityProperties.java @@ -13,9 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.security.config.bean; +package me.zhengjie.modules.security.config; import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; /** * Jwt参数配置 @@ -24,6 +26,8 @@ * @date 2019年11月28日 */ @Data +@Configuration +@ConfigurationProperties(prefix = "jwt") public class SecurityProperties { /** diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SpringSecurityConfig.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SpringSecurityConfig.java index 0a776292e..535b245af 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SpringSecurityConfig.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SpringSecurityConfig.java @@ -16,7 +16,6 @@ package me.zhengjie.modules.security.config; import lombok.RequiredArgsConstructor; -import me.zhengjie.modules.security.config.bean.SecurityProperties; import me.zhengjie.modules.security.security.*; import me.zhengjie.modules.security.service.OnlineUserService; import me.zhengjie.modules.security.service.UserCacheManager; @@ -34,7 +33,6 @@ import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; -import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; import org.springframework.web.filter.CorsFilter; import java.util.*; @@ -54,7 +52,6 @@ public class SpringSecurityConfig extends WebSecurityConfigurerAdapter { private final ApplicationContext applicationContext; private final SecurityProperties properties; private final OnlineUserService onlineUserService; - private final UserCacheManager userCacheManager; @Bean GrantedAuthorityDefaults grantedAuthorityDefaults() { @@ -75,7 +72,7 @@ protected void configure(HttpSecurity httpSecurity) throws Exception { httpSecurity // 禁用 CSRF .csrf().disable() - .addFilterBefore(corsFilter, UsernamePasswordAuthenticationFilter.class) + .addFilter(corsFilter) // 授权异常 .exceptionHandling() .authenticationEntryPoint(authenticationErrorHandler) @@ -131,6 +128,6 @@ protected void configure(HttpSecurity httpSecurity) throws Exception { } private TokenConfigurer securityConfigurerAdapter() { - return new TokenConfigurer(tokenProvider, properties, onlineUserService, userCacheManager); + return new TokenConfigurer(tokenProvider, properties, onlineUserService); } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/bean/LoginCode.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/bean/LoginCode.java deleted file mode 100644 index fefd252b6..000000000 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/bean/LoginCode.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright 2019-2020 the original author or authors. - * - * 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 me.zhengjie.modules.security.config.bean; - -import lombok.Data; - -/** - * 登录验证码配置信息 - * - * @author liaojinlong - * @date 2020/6/10 18:53 - */ -@Data -public class LoginCode { - - /** - * 验证码配置 - */ - private LoginCodeEnum codeType; - /** - * 验证码有效期 分钟 - */ - private Long expiration = 2L; - /** - * 验证码内容长度 - */ - private int length = 2; - /** - * 验证码宽度 - */ - private int width = 111; - /** - * 验证码高度 - */ - private int height = 36; - /** - * 验证码字体 - */ - private String fontName; - /** - * 字体大小 - */ - private int fontSize = 25; - - public LoginCodeEnum getCodeType() { - return codeType; - } -} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/bean/LoginCodeEnum.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/enums/LoginCodeEnum.java similarity index 94% rename from eladmin-system/src/main/java/me/zhengjie/modules/security/config/bean/LoginCodeEnum.java rename to eladmin-system/src/main/java/me/zhengjie/modules/security/config/enums/LoginCodeEnum.java index 685ccbbbf..ce5632a52 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/bean/LoginCodeEnum.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/enums/LoginCodeEnum.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.modules.security.config.bean; +package me.zhengjie.modules.security.config.enums; /** * 验证码配置枚举 diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthorizationController.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthController.java similarity index 76% rename from eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthorizationController.java rename to eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthController.java index 4e03e5772..de3cb9b69 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthorizationController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthController.java @@ -27,10 +27,12 @@ import me.zhengjie.annotation.rest.AnonymousPostMapping; import me.zhengjie.config.properties.RsaProperties; import me.zhengjie.exception.BadRequestException; -import me.zhengjie.modules.security.config.bean.LoginCodeEnum; -import me.zhengjie.modules.security.config.bean.LoginProperties; -import me.zhengjie.modules.security.config.bean.SecurityProperties; +import me.zhengjie.modules.security.config.CaptchaConfig; +import me.zhengjie.modules.security.config.enums.LoginCodeEnum; +import me.zhengjie.modules.security.config.LoginProperties; +import me.zhengjie.modules.security.config.SecurityProperties; import me.zhengjie.modules.security.security.TokenProvider; +import me.zhengjie.modules.security.service.UserDetailsServiceImpl; import me.zhengjie.modules.security.service.dto.AuthUserDto; import me.zhengjie.modules.security.service.dto.JwtUserDto; import me.zhengjie.modules.security.service.OnlineUserService; @@ -41,13 +43,12 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; -import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.util.HashMap; import java.util.Map; @@ -63,14 +64,15 @@ @RequestMapping("/auth") @RequiredArgsConstructor @Api(tags = "系统:系统授权接口") -public class AuthorizationController { +public class AuthController { private final SecurityProperties properties; private final RedisUtils redisUtils; private final OnlineUserService onlineUserService; private final TokenProvider tokenProvider; - private final AuthenticationManagerBuilder authenticationManagerBuilder; - @Resource - private LoginProperties loginProperties; + private final LoginProperties loginProperties; + private final CaptchaConfig captchaConfig; + private final PasswordEncoder passwordEncoder; + private final UserDetailsServiceImpl userDetailsService; @Log("用户登录") @ApiOperation("登录授权") @@ -88,27 +90,29 @@ public ResponseEntity login(@Validated @RequestBody AuthUserDto authUser if (StringUtils.isBlank(authUser.getCode()) || !authUser.getCode().equalsIgnoreCase(code)) { throw new BadRequestException("验证码错误"); } - UsernamePasswordAuthenticationToken authenticationToken = - new UsernamePasswordAuthenticationToken(authUser.getUsername(), password); - Authentication authentication = authenticationManagerBuilder.getObject().authenticate(authenticationToken); + // 获取用户信息 + JwtUserDto jwtUser = userDetailsService.loadUserByUsername(authUser.getUsername()); + // 验证用户密码 + if (!passwordEncoder.matches(password, jwtUser.getPassword())) { + throw new BadRequestException("登录密码错误"); + } + Authentication authentication = new UsernamePasswordAuthenticationToken(jwtUser, null, jwtUser.getAuthorities()); SecurityContextHolder.getContext().setAuthentication(authentication); - // 生成令牌与第三方系统获取令牌方式 - // UserDetails userDetails = userDetailsService.loadUserByUsername(userInfo.getUsername()); - // Authentication authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities()); - // SecurityContextHolder.getContext().setAuthentication(authentication); - String token = tokenProvider.createToken(authentication); - final JwtUserDto jwtUserDto = (JwtUserDto) authentication.getPrincipal(); + // 生成令牌 + String token = tokenProvider.createToken(jwtUser); + // 将密码设置为空 + jwtUser.setPassword(null); // 返回 token 与 用户信息 Map authInfo = new HashMap(2) {{ put("token", properties.getTokenStartWith() + token); - put("user", jwtUserDto); + put("user", jwtUser); }}; if (loginProperties.isSingleLogin()) { // 踢掉之前已经登录的token onlineUserService.kickOutForUsername(authUser.getUsername()); } // 保存在线信息 - onlineUserService.save(jwtUserDto, token, request); + onlineUserService.save(jwtUser, token, request); // 返回登录信息 return ResponseEntity.ok(authInfo); } @@ -116,14 +120,17 @@ public ResponseEntity login(@Validated @RequestBody AuthUserDto authUser @ApiOperation("获取用户信息") @GetMapping(value = "/info") public ResponseEntity getUserInfo() { - return ResponseEntity.ok(SecurityUtils.getCurrentUser()); + JwtUserDto jwtUser = (JwtUserDto) SecurityUtils.getCurrentUser(); + // 将密码设置为空 + jwtUser.setPassword(null); + return ResponseEntity.ok(jwtUser); } @ApiOperation("获取验证码") @AnonymousGetMapping(value = "/code") public ResponseEntity getCode() { // 获取运算的结果 - Captcha captcha = loginProperties.getCaptcha(); + Captcha captcha = captchaConfig.getCaptcha(); String uuid = properties.getCodeKey() + IdUtil.simpleUUID(); //当验证码类型为 arithmetic时且长度 >= 2 时,captcha.text()的结果有几率为浮点型 String captchaValue = captcha.text(); @@ -131,7 +138,7 @@ public ResponseEntity getCode() { captchaValue = captchaValue.split("\\.")[0]; } // 保存 - redisUtils.set(uuid, captchaValue, loginProperties.getLoginCode().getExpiration(), TimeUnit.MINUTES); + redisUtils.set(uuid, captchaValue, captchaConfig.getExpiration(), TimeUnit.MINUTES); // 验证码信息 Map imgResult = new HashMap(2) {{ put("img", captcha.toBase64()); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAccessDeniedHandler.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAccessDeniedHandler.java index 8b3f8c17f..6d0547332 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAccessDeniedHandler.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAccessDeniedHandler.java @@ -15,6 +15,9 @@ */ package me.zhengjie.modules.security.security; +import com.fasterxml.jackson.databind.ObjectMapper; +import me.zhengjie.exception.handler.ApiError; +import org.springframework.http.HttpStatus; import org.springframework.security.access.AccessDeniedException; import org.springframework.security.web.access.AccessDeniedHandler; import org.springframework.stereotype.Component; @@ -32,6 +35,10 @@ public class JwtAccessDeniedHandler implements AccessDeniedHandler { @Override public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException accessDeniedException) throws IOException { //当用户在没有授权的情况下访问受保护的REST资源时,将调用此方法发送403 Forbidden响应 - response.sendError(HttpServletResponse.SC_FORBIDDEN, accessDeniedException.getMessage()); + response.setStatus(HttpStatus.FORBIDDEN.value()); + response.setContentType("application/json;charset=UTF-8"); + ObjectMapper objectMapper = new ObjectMapper(); + String jsonResponse = objectMapper.writeValueAsString(ApiError.error(HttpStatus.FORBIDDEN.value(), "禁止访问,您没有权限访问此资源")); + response.getWriter().write(jsonResponse); } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAuthenticationEntryPoint.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAuthenticationEntryPoint.java index f88158620..dba0963a7 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAuthenticationEntryPoint.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAuthenticationEntryPoint.java @@ -15,10 +15,13 @@ */ package me.zhengjie.modules.security.security; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.extern.slf4j.Slf4j; +import me.zhengjie.exception.handler.ApiError; +import org.springframework.http.HttpStatus; import org.springframework.security.core.AuthenticationException; import org.springframework.security.web.AuthenticationEntryPoint; import org.springframework.stereotype.Component; - import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @@ -26,14 +29,18 @@ /** * @author Zheng Jie */ +@Slf4j @Component public class JwtAuthenticationEntryPoint implements AuthenticationEntryPoint { @Override - public void commence(HttpServletRequest request, - HttpServletResponse response, - AuthenticationException authException) throws IOException { + public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException { // 当用户尝试访问安全的REST资源而不提供任何凭据时,将调用此方法发送401 响应 - response.sendError(HttpServletResponse.SC_UNAUTHORIZED, authException==null?"Unauthorized":authException.getMessage()); + int code = HttpStatus.UNAUTHORIZED.value(); + response.setStatus(code); + response.setContentType("application/json;charset=UTF-8"); + ObjectMapper objectMapper = new ObjectMapper(); + String jsonResponse = objectMapper.writeValueAsString(ApiError.error(HttpStatus.UNAUTHORIZED.value(), "登录状态已过期,请重新登录")); + response.getWriter().write(jsonResponse); } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenConfigurer.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenConfigurer.java index cff5e1ed8..40f64cb6c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenConfigurer.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenConfigurer.java @@ -16,7 +16,7 @@ package me.zhengjie.modules.security.security; import lombok.RequiredArgsConstructor; -import me.zhengjie.modules.security.config.bean.SecurityProperties; +import me.zhengjie.modules.security.config.SecurityProperties; import me.zhengjie.modules.security.service.OnlineUserService; import me.zhengjie.modules.security.service.UserCacheManager; import org.springframework.security.config.annotation.SecurityConfigurerAdapter; @@ -33,11 +33,10 @@ public class TokenConfigurer extends SecurityConfigurerAdapter claims = new HashMap<>(6); + // 设置用户ID + claims.put(AUTHORITIES_UID_KEY, user.getUser().getId()); + // 设置UUID,确保每次Token不一样 + claims.put(AUTHORITIES_UUID_KEY, IdUtil.simpleUUID()); return jwtBuilder - // 加入ID确保生成的 Token 都不一致 - .setId(IdUtil.simpleUUID()) - .claim(AUTHORITIES_KEY, authentication.getName()) - .setSubject(authentication.getName()) + .setClaims(claims) + .setSubject(user.getUsername()) .compact(); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/OnlineUserService.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/OnlineUserService.java index c496d8cde..18096fb4f 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/OnlineUserService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/OnlineUserService.java @@ -19,12 +19,11 @@ import lombok.extern.slf4j.Slf4j; import me.zhengjie.modules.security.security.TokenProvider; import me.zhengjie.utils.PageResult; -import me.zhengjie.modules.security.config.bean.SecurityProperties; +import me.zhengjie.modules.security.config.SecurityProperties; import me.zhengjie.modules.security.service.dto.JwtUserDto; import me.zhengjie.modules.security.service.dto.OnlineUserDto; import me.zhengjie.utils.*; import org.springframework.data.domain.Pageable; -import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserCacheManager.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserCacheManager.java index 03870dc0b..ef0e8ec2f 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserCacheManager.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserCacheManager.java @@ -16,7 +16,7 @@ package me.zhengjie.modules.security.service; import cn.hutool.core.util.RandomUtil; -import me.zhengjie.modules.security.config.bean.LoginProperties; +import me.zhengjie.modules.security.config.LoginProperties; import me.zhengjie.modules.security.service.dto.JwtUserDto; import me.zhengjie.utils.RedisUtils; import me.zhengjie.utils.StringUtils; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserDetailsServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserDetailsServiceImpl.java index 70db5df0a..7aa0ba2b0 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserDetailsServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserDetailsServiceImpl.java @@ -18,14 +18,12 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import me.zhengjie.exception.BadRequestException; -import me.zhengjie.exception.EntityNotFoundException; import me.zhengjie.modules.security.service.dto.JwtUserDto; import me.zhengjie.modules.system.service.DataService; import me.zhengjie.modules.system.service.RoleService; import me.zhengjie.modules.system.service.UserService; import me.zhengjie.modules.system.service.dto.UserLoginDto; import org.springframework.security.core.userdetails.UserDetailsService; -import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.stereotype.Service; /** @@ -45,24 +43,14 @@ public class UserDetailsServiceImpl implements UserDetailsService { public JwtUserDto loadUserByUsername(String username) { JwtUserDto jwtUserDto = userCacheManager.getUserCache(username); if(jwtUserDto == null){ - UserLoginDto user; - try { - user = userService.getLoginData(username); - } catch (EntityNotFoundException e) { - // SpringSecurity会自动转换UsernameNotFoundException为BadCredentialsException - throw new UsernameNotFoundException(username, e); - } + UserLoginDto user = userService.getLoginData(username); if (user == null) { - throw new UsernameNotFoundException(""); + throw new BadRequestException("用户不存在"); } else { if (!user.getEnabled()) { throw new BadRequestException("账号未激活!"); } - jwtUserDto = new JwtUserDto( - user, - dataService.getDeptIds(user), - roleService.mapToGrantedAuthorities(user) - ); + jwtUserDto = new JwtUserDto(user, dataService.getDeptIds(user), roleService.buildAuthorities(user), user.getPassword()); // 添加缓存数据 userCacheManager.addUserCache(username, jwtUserDto); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/JwtUserDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/JwtUserDto.java index 5aa0c45fe..cf25c8aa7 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/JwtUserDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/JwtUserDto.java @@ -16,8 +16,10 @@ package me.zhengjie.modules.security.service.dto; import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Getter; +import lombok.Setter; import me.zhengjie.modules.system.service.dto.UserLoginDto; import org.springframework.security.core.userdetails.UserDetails; import java.util.List; @@ -38,6 +40,10 @@ public class JwtUserDto implements UserDetails { private final List authorities; + @Setter + @ApiModelProperty(value = "密码") + private String password; + public Set getRoles() { return authorities.stream().map(AuthorityDto::getAuthority).collect(Collectors.toSet()); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java index 6bc8cce73..9901cd752 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java @@ -120,7 +120,7 @@ public interface RoleService { * @param user 用户信息 * @return 权限信息 */ - List mapToGrantedAuthorities(UserDto user); + List buildAuthorities(UserDto user); /** * 验证是否被用户关联 diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserLoginDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserLoginDto.java index 13a51f774..e5b101f05 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserLoginDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserLoginDto.java @@ -15,6 +15,8 @@ */ package me.zhengjie.modules.system.service.dto; +import com.alibaba.fastjson.annotation.JSONField; + /** * @author Zheng Jie * @description 用户缓存时使用 @@ -22,6 +24,7 @@ **/ public class UserLoginDto extends UserDto { + @JSONField(serialize = false) private String password; private Boolean isAdmin; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java index e416aa894..9a12c5209 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java @@ -164,7 +164,7 @@ public Integer findByRoles(Set roles) { @Override @Cacheable(key = "'auth:' + #p0.id") - public List mapToGrantedAuthorities(UserDto user) { + public List buildAuthorities(UserDto user) { Set permissions = new HashSet<>(); // 如果是管理员直接返回 if (user.getIsAdmin()) { diff --git a/eladmin-system/src/main/resources/config/application-dev.yml b/eladmin-system/src/main/resources/config/application-dev.yml index fa8b7ede0..eee8ddaf8 100644 --- a/eladmin-system/src/main/resources/config/application-dev.yml +++ b/eladmin-system/src/main/resources/config/application-dev.yml @@ -60,7 +60,7 @@ login: # 存活时间/秒 idle-time: 21600 # 验证码 - login-code: + code: # 验证码类型配置 查看 LoginProperties 类 code-type: arithmetic # 登录图形验证码有效时间/分钟 diff --git a/eladmin-system/src/main/resources/config/application-prod.yml b/eladmin-system/src/main/resources/config/application-prod.yml index 4d9d2aabf..748c01018 100644 --- a/eladmin-system/src/main/resources/config/application-prod.yml +++ b/eladmin-system/src/main/resources/config/application-prod.yml @@ -64,7 +64,7 @@ login: # 存活时间/秒 idle-time: 21600 # 验证码 - login-code: + code: # 验证码类型配置 查看 LoginProperties 类 code-type: arithmetic # 登录图形验证码有效时间/分钟 From 5963acb664c97e11bb448921ebac509c4240e261 Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Wed, 15 Jan 2025 16:36:42 +0800 Subject: [PATCH 24/54] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96Redis=E7=BC=93?= =?UTF-8?q?=E5=AD=98=E9=85=8D=E7=BD=AE=EF=BC=8C=E9=9B=86=E6=88=90Redisson?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=BC=BA=E6=97=A5=E5=BF=97=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...disConfig.java => RedisConfiguration.java} | 159 +++++++----------- .../config/RedissonConfiguration.java | 68 ++++++++ .../config/webConfig/SwaggerConfig.java | 80 ++++----- .../config/webConfig/SwaggerDataConfig.java | 52 ++++++ .../system/service/impl/DataServiceImpl.java | 2 +- .../system/service/impl/DeptServiceImpl.java | 2 +- .../service/impl/DictDetailServiceImpl.java | 2 +- .../system/service/impl/DictServiceImpl.java | 2 +- .../system/service/impl/JobServiceImpl.java | 2 +- .../system/service/impl/MenuServiceImpl.java | 2 +- .../system/service/impl/RoleServiceImpl.java | 2 +- .../system/service/impl/UserServiceImpl.java | 2 +- .../main/resources/config/application-dev.yml | 2 +- .../resources/config/application-prod.yml | 2 +- .../src/main/resources/config/application.yml | 11 ++ eladmin-system/src/main/resources/logback.xml | 7 + .../service/impl/AliPayServiceImpl.java | 2 +- .../service/impl/EmailServiceImpl.java | 2 +- .../service/impl/QiNiuServiceImpl.java | 2 +- pom.xml | 7 + 20 files changed, 263 insertions(+), 147 deletions(-) rename eladmin-common/src/main/java/me/zhengjie/config/{RedisConfig.java => RedisConfiguration.java} (62%) create mode 100644 eladmin-common/src/main/java/me/zhengjie/config/RedissonConfiguration.java create mode 100644 eladmin-common/src/main/java/me/zhengjie/config/webConfig/SwaggerDataConfig.java diff --git a/eladmin-common/src/main/java/me/zhengjie/config/RedisConfig.java b/eladmin-common/src/main/java/me/zhengjie/config/RedisConfiguration.java similarity index 62% rename from eladmin-common/src/main/java/me/zhengjie/config/RedisConfig.java rename to eladmin-common/src/main/java/me/zhengjie/config/RedisConfiguration.java index d36a0be7e..63998e616 100644 --- a/eladmin-common/src/main/java/me/zhengjie/config/RedisConfig.java +++ b/eladmin-common/src/main/java/me/zhengjie/config/RedisConfiguration.java @@ -15,47 +15,39 @@ */ package me.zhengjie.config; -import cn.hutool.core.lang.Assert; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.parser.ParserConfig; import com.alibaba.fastjson.serializer.SerializerFeature; import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.digest.DigestUtils; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.data.redis.RedisProperties; -import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.cache.Cache; -import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.cache.annotation.EnableCaching; import org.springframework.cache.interceptor.CacheErrorHandler; import org.springframework.cache.interceptor.KeyGenerator; +import org.springframework.cache.interceptor.SimpleCacheErrorHandler; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.cache.RedisCacheConfiguration; +import org.springframework.data.redis.cache.RedisCacheManager; import org.springframework.data.redis.connection.RedisConnectionFactory; -import org.springframework.data.redis.core.RedisOperations; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.RedisSerializationContext; import org.springframework.data.redis.serializer.RedisSerializer; -import reactor.util.annotation.Nullable; -import java.nio.charset.Charset; +import org.springframework.data.redis.serializer.StringRedisSerializer; + import java.nio.charset.StandardCharsets; import java.time.Duration; import java.util.HashMap; import java.util.Map; - /** * @author Zheng Jie - * @date 2018-11-24 + * @date 2025-01-13 */ @Slf4j @Configuration @EnableCaching -@ConditionalOnClass(RedisOperations.class) -@EnableConfigurationProperties(RedisProperties.class) -public class RedisConfig extends CachingConfigurerSupport { +public class RedisConfiguration { /** * 设置 redis 数据默认过期时间,默认2小时 @@ -70,9 +62,7 @@ public RedisCacheConfiguration redisCacheConfiguration(){ return configuration; } - @SuppressWarnings("all") @Bean(name = "redisTemplate") - @ConditionalOnMissingBean(name = "redisTemplate") public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate template = new RedisTemplate<>(); //序列化 @@ -92,6 +82,8 @@ public RedisTemplate redisTemplate(RedisConnectionFactory redisC ParserConfig.getGlobalInstance().addAccept("me.zhengjie.modules.quartz.service.dto"); ParserConfig.getGlobalInstance().addAccept("me.zhengjie.modules.security.service.dto"); ParserConfig.getGlobalInstance().addAccept("me.zhengjie.modules.system.service.dto"); + // 分页返回数据 + ParserConfig.getGlobalInstance().addAccept("me.zhengjie.utils.PageResult"); // key的序列化采用StringRedisSerializer template.setKeySerializer(new StringRedisSerializer()); template.setHashKeySerializer(new StringRedisSerializer()); @@ -100,10 +92,24 @@ public RedisTemplate redisTemplate(RedisConnectionFactory redisC } /** - * 自定义缓存key生成策略,默认将使用该策略 + * 缓存管理器,需要指定使用 + * @param redisConnectionFactory / + * @return 缓存管理器 + */ + @Bean + public RedisCacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) { + RedisCacheConfiguration config = redisCacheConfiguration(); + return RedisCacheManager.builder(redisConnectionFactory) + .cacheDefaults(config) + .build(); + } + + /** + * 自定义缓存key生成策略,需要在缓存注解中使用keyGenerator才会生效 + * 默认是使用SimpleKeyGenerator生成的key + * 继承 CachingConfigurerSupport 后,才会默认生效这个生成器,暂时没找到其他方式默认生效,如果有请PR,谢谢 */ @Bean - @Override public KeyGenerator keyGenerator() { return (target, method, params) -> { Map container = new HashMap<>(8); @@ -126,100 +132,63 @@ public KeyGenerator keyGenerator() { } @Bean - @Override - @SuppressWarnings({"all"}) + @SuppressWarnings("all") public CacheErrorHandler errorHandler() { - // 异常处理,当Redis发生异常时,打印日志,但是程序正常走 - log.info("初始化 -> [{}]", "Redis CacheErrorHandler"); - return new CacheErrorHandler() { + return new SimpleCacheErrorHandler() { @Override - public void handleCacheGetError(RuntimeException e, Cache cache, Object key) { - log.error("Redis occur handleCacheGetError:key -> [{}]", key, e); + public void handleCacheGetError(RuntimeException exception, Cache cache, Object key) { + // 处理缓存读取错误 + log.error("Cache Get Error: {}",exception.getMessage()); } - @Override - public void handleCachePutError(RuntimeException e, Cache cache, Object key, Object value) { - log.error("Redis occur handleCachePutError:key -> [{}];value -> [{}]", key, value, e); + public void handleCachePutError(RuntimeException exception, Cache cache, Object key, Object value) { + // 处理缓存写入错误 + log.error("Cache Put Error: {}",exception.getMessage()); } - @Override - public void handleCacheEvictError(RuntimeException e, Cache cache, Object key) { - log.error("Redis occur handleCacheEvictError:key -> [{}]", key, e); + public void handleCacheEvictError(RuntimeException exception, Cache cache, Object key) { + // 处理缓存删除错误 + log.error("Cache Evict Error: {}",exception.getMessage()); } - @Override - public void handleCacheClearError(RuntimeException e, Cache cache) { - log.error("Redis occur handleCacheClearError:", e); + public void handleCacheClearError(RuntimeException exception, Cache cache) { + // 处理缓存清除错误 + log.error("Cache Clear Error: {}",exception.getMessage()); } }; } -} -/** - * Value 序列化 - * - * @author / - * @param - */ -class FastJsonRedisSerializer implements RedisSerializer { + /** + * Value 序列化 + * + * @param + * @author / + */ + static class FastJsonRedisSerializer implements RedisSerializer { - private final Class clazz; + private final Class clazz; - FastJsonRedisSerializer(Class clazz) { - super(); - this.clazz = clazz; - } - - @Override - public byte[] serialize(T t) { - if (t == null) { - return new byte[0]; + FastJsonRedisSerializer(Class clazz) { + super(); + this.clazz = clazz; } - return JSON.toJSONString(t, SerializerFeature.WriteClassName).getBytes(StandardCharsets.UTF_8); - } - @Override - public T deserialize(byte[] bytes) { - if (bytes == null || bytes.length == 0) { - return null; + @Override + public byte[] serialize(T t) { + if (t == null) { + return new byte[0]; + } + return JSON.toJSONString(t, SerializerFeature.WriteClassName).getBytes(StandardCharsets.UTF_8); } - String str = new String(bytes, StandardCharsets.UTF_8); - return JSON.parseObject(str, clazz); - } - -} - -/** - * 重写序列化器 - * - * @author / - */ -class StringRedisSerializer implements RedisSerializer { - private final Charset charset; - - StringRedisSerializer() { - this(StandardCharsets.UTF_8); - } - - private StringRedisSerializer(Charset charset) { - Assert.notNull(charset, "Charset must not be null!"); - this.charset = charset; - } + @Override + public T deserialize(byte[] bytes) { + if (bytes == null || bytes.length == 0) { + return null; + } + String str = new String(bytes, StandardCharsets.UTF_8); + return JSON.parseObject(str, clazz); + } - @Override - public String deserialize(byte[] bytes) { - return (bytes == null ? null : new String(bytes, charset)); } - - @Override - public @Nullable byte[] serialize(Object object) { - String string = JSON.toJSONString(object); - - if (org.apache.commons.lang3.StringUtils.isBlank(string)) { - return null; - } - string = string.replace("\"", ""); - return string.getBytes(charset); - } -} +} \ No newline at end of file diff --git a/eladmin-common/src/main/java/me/zhengjie/config/RedissonConfiguration.java b/eladmin-common/src/main/java/me/zhengjie/config/RedissonConfiguration.java new file mode 100644 index 000000000..8bb63eda7 --- /dev/null +++ b/eladmin-common/src/main/java/me/zhengjie/config/RedissonConfiguration.java @@ -0,0 +1,68 @@ +/* + * Copyright 2019-2020 Zheng Jie + * + * 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 me.zhengjie.config; + +import cn.hutool.core.util.StrUtil; +import lombok.Data; +import org.redisson.Redisson; +import org.redisson.api.RedissonClient; +import org.redisson.config.Config; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Data +@Configuration +public class RedissonConfiguration { + + @Value("${spring.redis.host}") + private String redisHost; + + @Value("${spring.redis.port}") + private int redisPort; + + @Value("${spring.redis.database}") + private int redisDatabase; + + @Value("${spring.redis.password:}") + private String redisPassword; + + @Value("${spring.redis.timeout:5000}") + private int timeout; + + @Value("${spring.redis.lettuce.pool.max-active:64}") + private int connectionPoolSize; + + @Value("${spring.redis.lettuce.pool.min-idle:16}") + private int connectionMinimumIdleSize; + + @Bean + public RedissonClient redissonClient() { + Config config = new Config(); + config.useSingleServer() + .setAddress("redis://" + redisHost + ":" + redisPort) + .setDatabase(redisDatabase) + .setTimeout(timeout) + .setConnectionPoolSize(connectionPoolSize) + .setConnectionMinimumIdleSize(connectionMinimumIdleSize); + if(StrUtil.isNotBlank(redisPassword)){ + config.useSingleServer().setPassword(redisPassword); + } + return Redisson.create(config); + } +} + + diff --git a/eladmin-common/src/main/java/me/zhengjie/config/webConfig/SwaggerConfig.java b/eladmin-common/src/main/java/me/zhengjie/config/webConfig/SwaggerConfig.java index d7f222618..d921196a8 100644 --- a/eladmin-common/src/main/java/me/zhengjie/config/webConfig/SwaggerConfig.java +++ b/eladmin-common/src/main/java/me/zhengjie/config/webConfig/SwaggerConfig.java @@ -15,23 +15,18 @@ */ package me.zhengjie.config.webConfig; -import cn.hutool.core.collection.CollUtil; -import com.fasterxml.classmate.TypeResolver; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; import lombok.RequiredArgsConstructor; import me.zhengjie.utils.AnonTagUtils; +import org.springframework.beans.BeansException; import org.springframework.beans.factory.annotation.Value; +import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.core.Ordered; -import org.springframework.data.domain.Pageable; +import org.springframework.util.ReflectionUtils; +import org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; -import springfox.documentation.schema.AlternateTypeRule; -import springfox.documentation.schema.AlternateTypeRuleConvention; import springfox.documentation.service.ApiInfo; import springfox.documentation.service.ApiKey; import springfox.documentation.service.AuthorizationScope; @@ -40,15 +35,16 @@ import springfox.documentation.spi.DocumentationType; import springfox.documentation.spi.service.contexts.SecurityContext; import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.spring.web.plugins.WebFluxRequestHandlerProvider; +import springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider; import springfox.documentation.swagger2.annotations.EnableSwagger2; - +import java.lang.reflect.Field; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Set; import java.util.stream.Collectors; -import static springfox.documentation.schema.AlternateTypeRules.newRule; - /** * api页面 /doc.html * @author Zheng Jie @@ -129,39 +125,45 @@ private List defaultAuth() { securityReferences.add(new SecurityReference(tokenHeader, authorizationScopes)); return securityReferences; } -} - -/** - * 将Pageable转换展示在swagger中 - */ -@Configuration -class SwaggerDataConfig { + /** + * 解决Springfox与SpringBoot集成后,WebMvcRequestHandlerProvider和WebFluxRequestHandlerProvider冲突问题 + * @return / + */ @Bean - public AlternateTypeRuleConvention pageableConvention(final TypeResolver resolver) { - return new AlternateTypeRuleConvention() { - @Override - public int getOrder() { - return Ordered.HIGHEST_PRECEDENCE; - } + @SuppressWarnings({"all"}) + public static BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() { + return new BeanPostProcessor() { @Override - public List rules() { - return CollUtil.newArrayList(newRule(resolver.resolve(Pageable.class), resolver.resolve(Page.class))); + public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { + if (bean instanceof WebMvcRequestHandlerProvider || bean instanceof WebFluxRequestHandlerProvider) { + customizeSpringfoxHandlerMappings(getHandlerMappings(bean)); + } + return bean; } - }; - } - - @ApiModel - @Data - private static class Page { - @ApiModelProperty("页码 (0..N)") - private Integer page; - @ApiModelProperty("每页显示的数目") - private Integer size; + private void customizeSpringfoxHandlerMappings(List mappings) { + List filteredMappings = mappings.stream() + .filter(mapping -> mapping.getPatternParser() == null) + .collect(Collectors.toList()); + mappings.clear(); + mappings.addAll(filteredMappings); + } - @ApiModelProperty("以下列格式排序标准:property[,asc | desc]。 默认排序顺序为升序。 支持多种排序条件:如:id,asc") - private List sort; + private List getHandlerMappings(Object bean) { + Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings"); + if (field != null) { + field.setAccessible(true); + try { + return (List) field.get(bean); + } catch (IllegalAccessException e) { + throw new IllegalStateException("Failed to access handlerMappings field", e); + } + } + return Collections.emptyList(); + } + }; } } + diff --git a/eladmin-common/src/main/java/me/zhengjie/config/webConfig/SwaggerDataConfig.java b/eladmin-common/src/main/java/me/zhengjie/config/webConfig/SwaggerDataConfig.java new file mode 100644 index 000000000..2fba84077 --- /dev/null +++ b/eladmin-common/src/main/java/me/zhengjie/config/webConfig/SwaggerDataConfig.java @@ -0,0 +1,52 @@ +package me.zhengjie.config.webConfig; + +import cn.hutool.core.collection.CollUtil; +import com.fasterxml.classmate.TypeResolver; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.Ordered; +import org.springframework.data.domain.Pageable; +import springfox.documentation.schema.AlternateTypeRule; +import springfox.documentation.schema.AlternateTypeRuleConvention; + +import java.util.List; + +import static springfox.documentation.schema.AlternateTypeRules.newRule; + +/** + * 将Pageable转换展示在swagger中 + */ +@Configuration +public class SwaggerDataConfig { + + @Bean + public AlternateTypeRuleConvention pageableConvention(final TypeResolver resolver) { + return new AlternateTypeRuleConvention() { + @Override + public int getOrder() { + return Ordered.HIGHEST_PRECEDENCE; + } + + @Override + public List rules() { + return CollUtil.newArrayList(newRule(resolver.resolve(Pageable.class), resolver.resolve(Page.class))); + } + }; + } + + @ApiModel + @Data + private static class Page { + @ApiModelProperty("页码 (0..N)") + private Integer page; + + @ApiModelProperty("每页显示的数目") + private Integer size; + + @ApiModelProperty("以下列格式排序标准:property[,asc | desc]。 默认排序顺序为升序。 支持多种排序条件:如:id,asc") + private List sort; + } +} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DataServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DataServiceImpl.java index 782fbd8f2..336a9be0b 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DataServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DataServiceImpl.java @@ -36,7 +36,7 @@ **/ @Service @RequiredArgsConstructor -@CacheConfig(cacheNames = "data") +@CacheConfig(cacheNames = "data", keyGenerator = "keyGenerator") public class DataServiceImpl implements DataService { private final RoleService roleService; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java index a02bd699f..89233a2b9 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java @@ -47,7 +47,7 @@ */ @Service @RequiredArgsConstructor -@CacheConfig(cacheNames = "dept") +@CacheConfig(cacheNames = "dept", keyGenerator = "keyGenerator") public class DeptServiceImpl implements DeptService { private final DeptRepository deptRepository; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictDetailServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictDetailServiceImpl.java index 5da4d056c..51ef1114c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictDetailServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictDetailServiceImpl.java @@ -40,7 +40,7 @@ */ @Service @RequiredArgsConstructor -@CacheConfig(cacheNames = "dict") +@CacheConfig(cacheNames = "dict", keyGenerator = "keyGenerator") public class DictDetailServiceImpl implements DictDetailService { private final DictRepository dictRepository; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictServiceImpl.java index 682651213..3beb828b9 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictServiceImpl.java @@ -41,7 +41,7 @@ */ @Service @RequiredArgsConstructor -@CacheConfig(cacheNames = "dict") +@CacheConfig(cacheNames = "dict", keyGenerator = "keyGenerator") public class DictServiceImpl implements DictService { private final DictRepository dictRepository; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/JobServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/JobServiceImpl.java index a608b97a9..7c72fe627 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/JobServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/JobServiceImpl.java @@ -44,7 +44,7 @@ */ @Service @RequiredArgsConstructor -@CacheConfig(cacheNames = "job") +@CacheConfig(cacheNames = "job", keyGenerator = "keyGenerator") public class JobServiceImpl implements JobService { private final JobRepository jobRepository; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java index ca8297e7a..2ad44d10d 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java @@ -50,7 +50,7 @@ */ @Service @RequiredArgsConstructor -@CacheConfig(cacheNames = "menu") +@CacheConfig(cacheNames = "menu", keyGenerator = "keyGenerator") public class MenuServiceImpl implements MenuService { private final MenuRepository menuRepository; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java index 9a12c5209..a429cc3bd 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java @@ -52,7 +52,7 @@ */ @Service @RequiredArgsConstructor -@CacheConfig(cacheNames = "role") +@CacheConfig(cacheNames = "role", keyGenerator = "keyGenerator") public class RoleServiceImpl implements RoleService { private final RoleRepository roleRepository; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java index 41ae50b7e..d8c831777 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java @@ -50,7 +50,7 @@ */ @Service @RequiredArgsConstructor -@CacheConfig(cacheNames = "user") +@CacheConfig(cacheNames = "user", keyGenerator = "keyGenerator") public class UserServiceImpl implements UserService { private final UserRepository userRepository; diff --git a/eladmin-system/src/main/resources/config/application-dev.yml b/eladmin-system/src/main/resources/config/application-dev.yml index eee8ddaf8..e227c7797 100644 --- a/eladmin-system/src/main/resources/config/application-dev.yml +++ b/eladmin-system/src/main/resources/config/application-dev.yml @@ -45,7 +45,7 @@ spring: enabled: true # 记录慢SQL log-slow-sql: true - slow-sql-millis: 1000 + slow-sql-millis: 2000 merge-sql: true wall: config: diff --git a/eladmin-system/src/main/resources/config/application-prod.yml b/eladmin-system/src/main/resources/config/application-prod.yml index 748c01018..77fef99bb 100644 --- a/eladmin-system/src/main/resources/config/application-prod.yml +++ b/eladmin-system/src/main/resources/config/application-prod.yml @@ -49,7 +49,7 @@ spring: enabled: true # 记录慢SQL log-slow-sql: true - slow-sql-millis: 1000 + slow-sql-millis: 2000 merge-sql: true wall: config: diff --git a/eladmin-system/src/main/resources/config/application.yml b/eladmin-system/src/main/resources/config/application.yml index 8f9b917ff..214872568 100644 --- a/eladmin-system/src/main/resources/config/application.yml +++ b/eladmin-system/src/main/resources/config/application.yml @@ -40,6 +40,17 @@ spring: password: ${REDIS_PWD:} #连接超时时间 timeout: 5000 + # 连接池配置 + lettuce: + pool: + # 连接池最大连接数 + max-active: 30 + # 连接池最大阻塞等待时间(毫秒),负值表示没有限制 + max-wait: -1 + # 连接池中的最大空闲连接数 + max-idle: 20 + # 连接池中的最小空闲连接数 + min-idle: 1 task: pool: diff --git a/eladmin-system/src/main/resources/logback.xml b/eladmin-system/src/main/resources/logback.xml index db910fddf..f991c4147 100644 --- a/eladmin-system/src/main/resources/logback.xml +++ b/eladmin-system/src/main/resources/logback.xml @@ -16,4 +16,11 @@ + + + + + + + diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/impl/AliPayServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/AliPayServiceImpl.java index 0625ba42d..c539bec46 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/impl/AliPayServiceImpl.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/AliPayServiceImpl.java @@ -38,7 +38,7 @@ */ @Service @RequiredArgsConstructor -@CacheConfig(cacheNames = "aliPay") +@CacheConfig(cacheNames = "aliPay", keyGenerator = "keyGenerator") public class AliPayServiceImpl implements AliPayService { private final AliPayRepository alipayRepository; diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/impl/EmailServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/EmailServiceImpl.java index aa567327c..a2488d059 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/impl/EmailServiceImpl.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/EmailServiceImpl.java @@ -37,7 +37,7 @@ */ @Service @RequiredArgsConstructor -@CacheConfig(cacheNames = "email") +@CacheConfig(cacheNames = "email", keyGenerator = "keyGenerator") public class EmailServiceImpl implements EmailService { private final EmailRepository emailRepository; diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java index 60093d7b2..fe622245b 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java @@ -51,7 +51,7 @@ */ @Service @RequiredArgsConstructor -@CacheConfig(cacheNames = "qiNiu") +@CacheConfig(cacheNames = "qiNiu", keyGenerator = "keyGenerator") public class QiNiuServiceImpl implements QiNiuService { private final QiNiuConfigRepository qiNiuConfigRepository; diff --git a/pom.xml b/pom.xml index f6ac3402a..d59e0f036 100644 --- a/pom.xml +++ b/pom.xml @@ -81,6 +81,13 @@ spring-boot-starter-data-redis + + + org.redisson + redisson-spring-boot-starter + 3.17.1 + + From e62f4503947964e4035b20dea638902f30f11018 Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Wed, 15 Jan 2025 16:38:28 +0800 Subject: [PATCH 25/54] docs: Update copyright year to 2025 across all files --- .../src/main/java/me/zhengjie/annotation/DataPermission.java | 2 +- eladmin-common/src/main/java/me/zhengjie/annotation/Limit.java | 2 +- eladmin-common/src/main/java/me/zhengjie/annotation/Query.java | 2 +- .../main/java/me/zhengjie/annotation/rest/AnonymousAccess.java | 2 +- .../src/main/java/me/zhengjie/aspect/LimitAspect.java | 2 +- eladmin-common/src/main/java/me/zhengjie/aspect/LimitType.java | 2 +- eladmin-common/src/main/java/me/zhengjie/base/BaseEntity.java | 2 +- eladmin-common/src/main/java/me/zhengjie/base/BaseMapper.java | 2 +- .../src/main/java/me/zhengjie/config/AsyncExecutor.java | 2 +- .../src/main/java/me/zhengjie/config/AuditorConfig.java | 2 +- .../src/main/java/me/zhengjie/config/AuthorityConfig.java | 2 +- .../src/main/java/me/zhengjie/config/CustomP6SpyLogger.java | 2 +- .../src/main/java/me/zhengjie/config/RedisConfiguration.java | 2 +- .../src/main/java/me/zhengjie/config/RedissonConfiguration.java | 2 +- .../main/java/me/zhengjie/config/properties/FileProperties.java | 2 +- .../main/java/me/zhengjie/config/properties/RsaProperties.java | 2 +- .../java/me/zhengjie/config/webConfig/ConfigurerAdapter.java | 2 +- .../main/java/me/zhengjie/config/webConfig/SwaggerConfig.java | 2 +- .../main/java/me/zhengjie/config/webConfig/WebSocketConfig.java | 2 +- .../main/java/me/zhengjie/exception/BadRequestException.java | 2 +- .../main/java/me/zhengjie/exception/EntityExistException.java | 2 +- .../java/me/zhengjie/exception/EntityNotFoundException.java | 2 +- .../src/main/java/me/zhengjie/exception/handler/ApiError.java | 2 +- .../me/zhengjie/exception/handler/GlobalExceptionHandler.java | 2 +- eladmin-common/src/main/java/me/zhengjie/utils/CloseUtil.java | 2 +- eladmin-common/src/main/java/me/zhengjie/utils/ElConstant.java | 2 +- .../src/main/java/me/zhengjie/utils/EncryptUtils.java | 2 +- eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java | 2 +- eladmin-common/src/main/java/me/zhengjie/utils/PageUtil.java | 2 +- eladmin-common/src/main/java/me/zhengjie/utils/QueryHelp.java | 2 +- eladmin-common/src/main/java/me/zhengjie/utils/RedisUtils.java | 2 +- .../src/main/java/me/zhengjie/utils/RequestHolder.java | 2 +- .../src/main/java/me/zhengjie/utils/SecurityUtils.java | 2 +- .../src/main/java/me/zhengjie/utils/SpringBeanHolder.java | 2 +- eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java | 2 +- .../src/main/java/me/zhengjie/utils/ThrowableUtil.java | 2 +- .../src/main/java/me/zhengjie/utils/ValidationUtil.java | 2 +- .../src/main/java/me/zhengjie/utils/enums/CodeBiEnum.java | 2 +- .../src/main/java/me/zhengjie/utils/enums/CodeEnum.java | 2 +- .../src/main/java/me/zhengjie/utils/enums/DataScopeEnum.java | 2 +- .../main/java/me/zhengjie/utils/enums/RequestMethodEnum.java | 2 +- .../src/main/java/me/zhengjie/domain/ColumnInfo.java | 2 +- .../src/main/java/me/zhengjie/domain/GenConfig.java | 2 +- .../src/main/java/me/zhengjie/domain/vo/TableInfo.java | 2 +- .../main/java/me/zhengjie/repository/ColumnInfoRepository.java | 2 +- .../main/java/me/zhengjie/repository/GenConfigRepository.java | 2 +- .../src/main/java/me/zhengjie/rest/GenConfigController.java | 2 +- .../src/main/java/me/zhengjie/rest/GeneratorController.java | 2 +- .../src/main/java/me/zhengjie/service/GenConfigService.java | 2 +- .../src/main/java/me/zhengjie/service/GeneratorService.java | 2 +- .../java/me/zhengjie/service/impl/GenConfigServiceImpl.java | 2 +- .../java/me/zhengjie/service/impl/GeneratorServiceImpl.java | 2 +- eladmin-generator/src/main/java/me/zhengjie/utils/ColUtil.java | 2 +- eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java | 2 +- .../src/main/resources/template/admin/Controller.ftl | 2 +- eladmin-generator/src/main/resources/template/admin/Dto.ftl | 2 +- eladmin-generator/src/main/resources/template/admin/Entity.ftl | 2 +- eladmin-generator/src/main/resources/template/admin/Mapper.ftl | 2 +- .../src/main/resources/template/admin/QueryCriteria.ftl | 2 +- .../src/main/resources/template/admin/Repository.ftl | 2 +- eladmin-generator/src/main/resources/template/admin/Service.ftl | 2 +- .../src/main/resources/template/admin/ServiceImpl.ftl | 2 +- eladmin-logging/src/main/java/me/zhengjie/annotation/Log.java | 2 +- eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java | 2 +- eladmin-logging/src/main/java/me/zhengjie/domain/SysLog.java | 2 +- .../src/main/java/me/zhengjie/repository/LogRepository.java | 2 +- .../src/main/java/me/zhengjie/rest/SysLogController.java | 2 +- .../src/main/java/me/zhengjie/service/SysLogService.java | 2 +- .../src/main/java/me/zhengjie/service/dto/SysLogErrorDto.java | 2 +- .../main/java/me/zhengjie/service/dto/SysLogQueryCriteria.java | 2 +- .../src/main/java/me/zhengjie/service/dto/SysLogSmallDto.java | 2 +- .../main/java/me/zhengjie/service/impl/SysLogServiceImpl.java | 2 +- .../main/java/me/zhengjie/service/mapstruct/LogErrorMapper.java | 2 +- .../main/java/me/zhengjie/service/mapstruct/LogSmallMapper.java | 2 +- eladmin-system/src/main/java/me/zhengjie/AppRun.java | 2 +- .../src/main/java/me/zhengjie/modules/maint/domain/App.java | 2 +- .../main/java/me/zhengjie/modules/maint/domain/Database.java | 2 +- .../src/main/java/me/zhengjie/modules/maint/domain/Deploy.java | 2 +- .../java/me/zhengjie/modules/maint/domain/DeployHistory.java | 2 +- .../java/me/zhengjie/modules/maint/domain/ServerDeploy.java | 2 +- .../me/zhengjie/modules/maint/repository/AppRepository.java | 2 +- .../zhengjie/modules/maint/repository/DatabaseRepository.java | 2 +- .../modules/maint/repository/DeployHistoryRepository.java | 2 +- .../me/zhengjie/modules/maint/repository/DeployRepository.java | 2 +- .../modules/maint/repository/ServerDeployRepository.java | 2 +- .../main/java/me/zhengjie/modules/maint/rest/AppController.java | 2 +- .../java/me/zhengjie/modules/maint/rest/DatabaseController.java | 2 +- .../java/me/zhengjie/modules/maint/rest/DeployController.java | 2 +- .../me/zhengjie/modules/maint/rest/DeployHistoryController.java | 2 +- .../me/zhengjie/modules/maint/rest/ServerDeployController.java | 2 +- .../main/java/me/zhengjie/modules/maint/service/AppService.java | 2 +- .../java/me/zhengjie/modules/maint/service/DatabaseService.java | 2 +- .../me/zhengjie/modules/maint/service/DeployHistoryService.java | 2 +- .../java/me/zhengjie/modules/maint/service/DeployService.java | 2 +- .../me/zhengjie/modules/maint/service/ServerDeployService.java | 2 +- .../main/java/me/zhengjie/modules/maint/service/dto/AppDto.java | 2 +- .../me/zhengjie/modules/maint/service/dto/AppQueryCriteria.java | 2 +- .../java/me/zhengjie/modules/maint/service/dto/DatabaseDto.java | 2 +- .../modules/maint/service/dto/DatabaseQueryCriteria.java | 2 +- .../java/me/zhengjie/modules/maint/service/dto/DeployDto.java | 2 +- .../me/zhengjie/modules/maint/service/dto/DeployHistoryDto.java | 2 +- .../modules/maint/service/dto/DeployHistoryQueryCriteria.java | 2 +- .../zhengjie/modules/maint/service/dto/DeployQueryCriteria.java | 2 +- .../me/zhengjie/modules/maint/service/dto/ServerDeployDto.java | 2 +- .../modules/maint/service/dto/ServerDeployQueryCriteria.java | 2 +- .../me/zhengjie/modules/maint/service/impl/AppServiceImpl.java | 2 +- .../modules/maint/service/impl/DatabaseServiceImpl.java | 2 +- .../modules/maint/service/impl/DeployHistoryServiceImpl.java | 2 +- .../zhengjie/modules/maint/service/impl/DeployServiceImpl.java | 2 +- .../modules/maint/service/impl/ServerDeployServiceImpl.java | 2 +- .../me/zhengjie/modules/maint/service/mapstruct/AppMapper.java | 2 +- .../modules/maint/service/mapstruct/DatabaseMapper.java | 2 +- .../modules/maint/service/mapstruct/DeployHistoryMapper.java | 2 +- .../zhengjie/modules/maint/service/mapstruct/DeployMapper.java | 2 +- .../modules/maint/service/mapstruct/ServerDeployMapper.java | 2 +- .../java/me/zhengjie/modules/maint/util/ExecuteShellUtil.java | 2 +- .../main/java/me/zhengjie/modules/maint/util/ScpClientUtil.java | 2 +- .../src/main/java/me/zhengjie/modules/maint/util/SqlUtils.java | 2 +- .../main/java/me/zhengjie/modules/maint/websocket/MsgType.java | 2 +- .../java/me/zhengjie/modules/maint/websocket/SocketMsg.java | 2 +- .../me/zhengjie/modules/maint/websocket/WebSocketServer.java | 2 +- .../main/java/me/zhengjie/modules/quartz/config/JobRunner.java | 2 +- .../java/me/zhengjie/modules/quartz/config/QuartzConfig.java | 2 +- .../main/java/me/zhengjie/modules/quartz/domain/QuartzJob.java | 2 +- .../main/java/me/zhengjie/modules/quartz/domain/QuartzLog.java | 2 +- .../zhengjie/modules/quartz/repository/QuartzJobRepository.java | 2 +- .../zhengjie/modules/quartz/repository/QuartzLogRepository.java | 2 +- .../me/zhengjie/modules/quartz/rest/QuartzJobController.java | 2 +- .../me/zhengjie/modules/quartz/service/QuartzJobService.java | 2 +- .../zhengjie/modules/quartz/service/dto/JobQueryCriteria.java | 2 +- .../modules/quartz/service/impl/QuartzJobServiceImpl.java | 2 +- .../src/main/java/me/zhengjie/modules/quartz/task/TestTask.java | 2 +- .../java/me/zhengjie/modules/quartz/utils/ExecutionJob.java | 2 +- .../java/me/zhengjie/modules/quartz/utils/QuartzManage.java | 2 +- .../java/me/zhengjie/modules/quartz/utils/QuartzRunnable.java | 2 +- .../me/zhengjie/modules/security/config/SecurityProperties.java | 2 +- .../zhengjie/modules/security/config/SpringSecurityConfig.java | 2 +- .../java/me/zhengjie/modules/security/rest/AuthController.java | 2 +- .../me/zhengjie/modules/security/rest/OnlineController.java | 2 +- .../modules/security/security/JwtAccessDeniedHandler.java | 2 +- .../modules/security/security/JwtAuthenticationEntryPoint.java | 2 +- .../me/zhengjie/modules/security/security/TokenConfigurer.java | 2 +- .../java/me/zhengjie/modules/security/security/TokenFilter.java | 2 +- .../me/zhengjie/modules/security/security/TokenProvider.java | 2 +- .../me/zhengjie/modules/security/service/OnlineUserService.java | 2 +- .../me/zhengjie/modules/security/service/UserCacheManager.java | 2 +- .../modules/security/service/UserDetailsServiceImpl.java | 2 +- .../me/zhengjie/modules/security/service/dto/AuthUserDto.java | 2 +- .../me/zhengjie/modules/security/service/dto/AuthorityDto.java | 2 +- .../me/zhengjie/modules/security/service/dto/JwtUserDto.java | 2 +- .../me/zhengjie/modules/security/service/dto/OnlineUserDto.java | 2 +- .../src/main/java/me/zhengjie/modules/system/domain/Dept.java | 2 +- .../src/main/java/me/zhengjie/modules/system/domain/Dict.java | 2 +- .../main/java/me/zhengjie/modules/system/domain/DictDetail.java | 2 +- .../src/main/java/me/zhengjie/modules/system/domain/Job.java | 2 +- .../src/main/java/me/zhengjie/modules/system/domain/Menu.java | 2 +- .../src/main/java/me/zhengjie/modules/system/domain/Role.java | 2 +- .../src/main/java/me/zhengjie/modules/system/domain/User.java | 2 +- .../java/me/zhengjie/modules/system/domain/vo/MenuMetaVo.java | 2 +- .../main/java/me/zhengjie/modules/system/domain/vo/MenuVo.java | 2 +- .../java/me/zhengjie/modules/system/domain/vo/UserPassVo.java | 2 +- .../me/zhengjie/modules/system/repository/DeptRepository.java | 2 +- .../modules/system/repository/DictDetailRepository.java | 2 +- .../me/zhengjie/modules/system/repository/DictRepository.java | 2 +- .../me/zhengjie/modules/system/repository/JobRepository.java | 2 +- .../me/zhengjie/modules/system/repository/MenuRepository.java | 2 +- .../me/zhengjie/modules/system/repository/RoleRepository.java | 2 +- .../me/zhengjie/modules/system/repository/UserRepository.java | 2 +- .../java/me/zhengjie/modules/system/rest/DeptController.java | 2 +- .../java/me/zhengjie/modules/system/rest/DictController.java | 2 +- .../me/zhengjie/modules/system/rest/DictDetailController.java | 2 +- .../java/me/zhengjie/modules/system/rest/JobController.java | 2 +- .../java/me/zhengjie/modules/system/rest/LimitController.java | 2 +- .../java/me/zhengjie/modules/system/rest/MenuController.java | 2 +- .../java/me/zhengjie/modules/system/rest/MonitorController.java | 2 +- .../java/me/zhengjie/modules/system/rest/RoleController.java | 2 +- .../java/me/zhengjie/modules/system/rest/UserController.java | 2 +- .../java/me/zhengjie/modules/system/rest/VerifyController.java | 2 +- .../java/me/zhengjie/modules/system/service/DataService.java | 2 +- .../java/me/zhengjie/modules/system/service/DeptService.java | 2 +- .../me/zhengjie/modules/system/service/DictDetailService.java | 2 +- .../java/me/zhengjie/modules/system/service/DictService.java | 2 +- .../java/me/zhengjie/modules/system/service/JobService.java | 2 +- .../java/me/zhengjie/modules/system/service/MenuService.java | 2 +- .../java/me/zhengjie/modules/system/service/MonitorService.java | 2 +- .../java/me/zhengjie/modules/system/service/RoleService.java | 2 +- .../java/me/zhengjie/modules/system/service/UserService.java | 2 +- .../java/me/zhengjie/modules/system/service/VerifyService.java | 2 +- .../java/me/zhengjie/modules/system/service/dto/DeptDto.java | 2 +- .../zhengjie/modules/system/service/dto/DeptQueryCriteria.java | 2 +- .../me/zhengjie/modules/system/service/dto/DeptSmallDto.java | 2 +- .../me/zhengjie/modules/system/service/dto/DictDetailDto.java | 2 +- .../modules/system/service/dto/DictDetailQueryCriteria.java | 2 +- .../java/me/zhengjie/modules/system/service/dto/DictDto.java | 2 +- .../zhengjie/modules/system/service/dto/DictQueryCriteria.java | 2 +- .../me/zhengjie/modules/system/service/dto/DictSmallDto.java | 2 +- .../java/me/zhengjie/modules/system/service/dto/JobDto.java | 2 +- .../zhengjie/modules/system/service/dto/JobQueryCriteria.java | 2 +- .../me/zhengjie/modules/system/service/dto/JobSmallDto.java | 2 +- .../java/me/zhengjie/modules/system/service/dto/MenuDto.java | 2 +- .../zhengjie/modules/system/service/dto/MenuQueryCriteria.java | 2 +- .../java/me/zhengjie/modules/system/service/dto/RoleDto.java | 2 +- .../zhengjie/modules/system/service/dto/RoleQueryCriteria.java | 2 +- .../me/zhengjie/modules/system/service/dto/RoleSmallDto.java | 2 +- .../java/me/zhengjie/modules/system/service/dto/UserDto.java | 2 +- .../me/zhengjie/modules/system/service/dto/UserLoginDto.java | 2 +- .../zhengjie/modules/system/service/dto/UserQueryCriteria.java | 2 +- .../zhengjie/modules/system/service/impl/DataServiceImpl.java | 2 +- .../zhengjie/modules/system/service/impl/DeptServiceImpl.java | 2 +- .../modules/system/service/impl/DictDetailServiceImpl.java | 2 +- .../zhengjie/modules/system/service/impl/DictServiceImpl.java | 2 +- .../me/zhengjie/modules/system/service/impl/JobServiceImpl.java | 2 +- .../zhengjie/modules/system/service/impl/MenuServiceImpl.java | 2 +- .../modules/system/service/impl/MonitorServiceImpl.java | 2 +- .../zhengjie/modules/system/service/impl/RoleServiceImpl.java | 2 +- .../zhengjie/modules/system/service/impl/UserServiceImpl.java | 2 +- .../zhengjie/modules/system/service/impl/VerifyServiceImpl.java | 2 +- .../zhengjie/modules/system/service/mapstruct/DeptMapper.java | 2 +- .../modules/system/service/mapstruct/DeptSmallMapper.java | 2 +- .../modules/system/service/mapstruct/DictDetailMapper.java | 2 +- .../zhengjie/modules/system/service/mapstruct/DictMapper.java | 2 +- .../modules/system/service/mapstruct/DictSmallMapper.java | 2 +- .../me/zhengjie/modules/system/service/mapstruct/JobMapper.java | 2 +- .../modules/system/service/mapstruct/JobSmallMapper.java | 2 +- .../zhengjie/modules/system/service/mapstruct/MenuMapper.java | 2 +- .../zhengjie/modules/system/service/mapstruct/RoleMapper.java | 2 +- .../modules/system/service/mapstruct/RoleSmallMapper.java | 2 +- .../modules/system/service/mapstruct/UserLoginMapper.java | 2 +- .../zhengjie/modules/system/service/mapstruct/UserMapper.java | 2 +- .../src/main/java/me/zhengjie/config/MultipartConfig.java | 2 +- .../src/main/java/me/zhengjie/domain/AlipayConfig.java | 2 +- eladmin-tools/src/main/java/me/zhengjie/domain/EmailConfig.java | 2 +- .../src/main/java/me/zhengjie/domain/LocalStorage.java | 2 +- eladmin-tools/src/main/java/me/zhengjie/domain/QiniuConfig.java | 2 +- .../src/main/java/me/zhengjie/domain/QiniuContent.java | 2 +- .../main/java/me/zhengjie/domain/enums/AliPayStatusEnum.java | 2 +- eladmin-tools/src/main/java/me/zhengjie/domain/vo/EmailVo.java | 2 +- eladmin-tools/src/main/java/me/zhengjie/domain/vo/TradeVo.java | 2 +- .../src/main/java/me/zhengjie/repository/AliPayRepository.java | 2 +- .../src/main/java/me/zhengjie/repository/EmailRepository.java | 2 +- .../java/me/zhengjie/repository/LocalStorageRepository.java | 2 +- .../main/java/me/zhengjie/repository/QiNiuConfigRepository.java | 2 +- .../java/me/zhengjie/repository/QiniuContentRepository.java | 2 +- .../src/main/java/me/zhengjie/rest/AliPayController.java | 2 +- .../src/main/java/me/zhengjie/rest/EmailController.java | 2 +- .../src/main/java/me/zhengjie/rest/LocalStorageController.java | 2 +- .../src/main/java/me/zhengjie/rest/QiniuController.java | 2 +- .../src/main/java/me/zhengjie/service/AliPayService.java | 2 +- .../src/main/java/me/zhengjie/service/EmailService.java | 2 +- .../src/main/java/me/zhengjie/service/LocalStorageService.java | 2 +- .../src/main/java/me/zhengjie/service/QiNiuService.java | 2 +- .../src/main/java/me/zhengjie/service/dto/LocalStorageDto.java | 2 +- .../java/me/zhengjie/service/dto/LocalStorageQueryCriteria.java | 2 +- .../main/java/me/zhengjie/service/dto/PictureQueryCriteria.java | 2 +- .../main/java/me/zhengjie/service/dto/QiniuQueryCriteria.java | 2 +- .../main/java/me/zhengjie/service/impl/AliPayServiceImpl.java | 2 +- .../main/java/me/zhengjie/service/impl/EmailServiceImpl.java | 2 +- .../java/me/zhengjie/service/impl/LocalStorageServiceImpl.java | 2 +- .../main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java | 2 +- .../java/me/zhengjie/service/mapstruct/LocalStorageMapper.java | 2 +- eladmin-tools/src/main/java/me/zhengjie/utils/AlipayUtils.java | 2 +- eladmin-tools/src/main/java/me/zhengjie/utils/QiNiuUtil.java | 2 +- 262 files changed, 262 insertions(+), 262 deletions(-) diff --git a/eladmin-common/src/main/java/me/zhengjie/annotation/DataPermission.java b/eladmin-common/src/main/java/me/zhengjie/annotation/DataPermission.java index e037b7eb8..7f9576048 100644 --- a/eladmin-common/src/main/java/me/zhengjie/annotation/DataPermission.java +++ b/eladmin-common/src/main/java/me/zhengjie/annotation/DataPermission.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/annotation/Limit.java b/eladmin-common/src/main/java/me/zhengjie/annotation/Limit.java index 58b41cf8d..d73878a10 100644 --- a/eladmin-common/src/main/java/me/zhengjie/annotation/Limit.java +++ b/eladmin-common/src/main/java/me/zhengjie/annotation/Limit.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/annotation/Query.java b/eladmin-common/src/main/java/me/zhengjie/annotation/Query.java index fe616f1cf..18bc4c4a4 100644 --- a/eladmin-common/src/main/java/me/zhengjie/annotation/Query.java +++ b/eladmin-common/src/main/java/me/zhengjie/annotation/Query.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/annotation/rest/AnonymousAccess.java b/eladmin-common/src/main/java/me/zhengjie/annotation/rest/AnonymousAccess.java index 6755eb26e..c66fcb7c1 100644 --- a/eladmin-common/src/main/java/me/zhengjie/annotation/rest/AnonymousAccess.java +++ b/eladmin-common/src/main/java/me/zhengjie/annotation/rest/AnonymousAccess.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/aspect/LimitAspect.java b/eladmin-common/src/main/java/me/zhengjie/aspect/LimitAspect.java index 63fb8211a..5cc3c6dfa 100644 --- a/eladmin-common/src/main/java/me/zhengjie/aspect/LimitAspect.java +++ b/eladmin-common/src/main/java/me/zhengjie/aspect/LimitAspect.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/aspect/LimitType.java b/eladmin-common/src/main/java/me/zhengjie/aspect/LimitType.java index bf3f09e2b..42d041510 100644 --- a/eladmin-common/src/main/java/me/zhengjie/aspect/LimitType.java +++ b/eladmin-common/src/main/java/me/zhengjie/aspect/LimitType.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/base/BaseEntity.java b/eladmin-common/src/main/java/me/zhengjie/base/BaseEntity.java index 618e100ce..2ecc43039 100644 --- a/eladmin-common/src/main/java/me/zhengjie/base/BaseEntity.java +++ b/eladmin-common/src/main/java/me/zhengjie/base/BaseEntity.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/base/BaseMapper.java b/eladmin-common/src/main/java/me/zhengjie/base/BaseMapper.java index e8bb825db..6f69b1382 100644 --- a/eladmin-common/src/main/java/me/zhengjie/base/BaseMapper.java +++ b/eladmin-common/src/main/java/me/zhengjie/base/BaseMapper.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/config/AsyncExecutor.java b/eladmin-common/src/main/java/me/zhengjie/config/AsyncExecutor.java index 8e9ffe389..ee0764062 100644 --- a/eladmin-common/src/main/java/me/zhengjie/config/AsyncExecutor.java +++ b/eladmin-common/src/main/java/me/zhengjie/config/AsyncExecutor.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/config/AuditorConfig.java b/eladmin-common/src/main/java/me/zhengjie/config/AuditorConfig.java index 006ef6b92..d693c58a7 100644 --- a/eladmin-common/src/main/java/me/zhengjie/config/AuditorConfig.java +++ b/eladmin-common/src/main/java/me/zhengjie/config/AuditorConfig.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/config/AuthorityConfig.java b/eladmin-common/src/main/java/me/zhengjie/config/AuthorityConfig.java index 658e62164..e4daacd67 100644 --- a/eladmin-common/src/main/java/me/zhengjie/config/AuthorityConfig.java +++ b/eladmin-common/src/main/java/me/zhengjie/config/AuthorityConfig.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/config/CustomP6SpyLogger.java b/eladmin-common/src/main/java/me/zhengjie/config/CustomP6SpyLogger.java index c23de95d0..08ab5cca3 100644 --- a/eladmin-common/src/main/java/me/zhengjie/config/CustomP6SpyLogger.java +++ b/eladmin-common/src/main/java/me/zhengjie/config/CustomP6SpyLogger.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/config/RedisConfiguration.java b/eladmin-common/src/main/java/me/zhengjie/config/RedisConfiguration.java index 63998e616..1f757fe40 100644 --- a/eladmin-common/src/main/java/me/zhengjie/config/RedisConfiguration.java +++ b/eladmin-common/src/main/java/me/zhengjie/config/RedisConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/config/RedissonConfiguration.java b/eladmin-common/src/main/java/me/zhengjie/config/RedissonConfiguration.java index 8bb63eda7..cd5f28851 100644 --- a/eladmin-common/src/main/java/me/zhengjie/config/RedissonConfiguration.java +++ b/eladmin-common/src/main/java/me/zhengjie/config/RedissonConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/config/properties/FileProperties.java b/eladmin-common/src/main/java/me/zhengjie/config/properties/FileProperties.java index 2891e9b44..6b7d2b6f9 100644 --- a/eladmin-common/src/main/java/me/zhengjie/config/properties/FileProperties.java +++ b/eladmin-common/src/main/java/me/zhengjie/config/properties/FileProperties.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/config/properties/RsaProperties.java b/eladmin-common/src/main/java/me/zhengjie/config/properties/RsaProperties.java index af557e327..9eb327c51 100644 --- a/eladmin-common/src/main/java/me/zhengjie/config/properties/RsaProperties.java +++ b/eladmin-common/src/main/java/me/zhengjie/config/properties/RsaProperties.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/config/webConfig/ConfigurerAdapter.java b/eladmin-common/src/main/java/me/zhengjie/config/webConfig/ConfigurerAdapter.java index e57925018..547ae7faa 100644 --- a/eladmin-common/src/main/java/me/zhengjie/config/webConfig/ConfigurerAdapter.java +++ b/eladmin-common/src/main/java/me/zhengjie/config/webConfig/ConfigurerAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/config/webConfig/SwaggerConfig.java b/eladmin-common/src/main/java/me/zhengjie/config/webConfig/SwaggerConfig.java index d921196a8..cef733444 100644 --- a/eladmin-common/src/main/java/me/zhengjie/config/webConfig/SwaggerConfig.java +++ b/eladmin-common/src/main/java/me/zhengjie/config/webConfig/SwaggerConfig.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/config/webConfig/WebSocketConfig.java b/eladmin-common/src/main/java/me/zhengjie/config/webConfig/WebSocketConfig.java index 1a2cdd72f..4751bb1cd 100644 --- a/eladmin-common/src/main/java/me/zhengjie/config/webConfig/WebSocketConfig.java +++ b/eladmin-common/src/main/java/me/zhengjie/config/webConfig/WebSocketConfig.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/exception/BadRequestException.java b/eladmin-common/src/main/java/me/zhengjie/exception/BadRequestException.java index 900453bdf..1d6297b91 100644 --- a/eladmin-common/src/main/java/me/zhengjie/exception/BadRequestException.java +++ b/eladmin-common/src/main/java/me/zhengjie/exception/BadRequestException.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/exception/EntityExistException.java b/eladmin-common/src/main/java/me/zhengjie/exception/EntityExistException.java index 03f9bf2ae..32d0e38f7 100644 --- a/eladmin-common/src/main/java/me/zhengjie/exception/EntityExistException.java +++ b/eladmin-common/src/main/java/me/zhengjie/exception/EntityExistException.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/exception/EntityNotFoundException.java b/eladmin-common/src/main/java/me/zhengjie/exception/EntityNotFoundException.java index bcdc95628..4d9f4d964 100644 --- a/eladmin-common/src/main/java/me/zhengjie/exception/EntityNotFoundException.java +++ b/eladmin-common/src/main/java/me/zhengjie/exception/EntityNotFoundException.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/exception/handler/ApiError.java b/eladmin-common/src/main/java/me/zhengjie/exception/handler/ApiError.java index 9568df8ce..aa377c4f3 100644 --- a/eladmin-common/src/main/java/me/zhengjie/exception/handler/ApiError.java +++ b/eladmin-common/src/main/java/me/zhengjie/exception/handler/ApiError.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/exception/handler/GlobalExceptionHandler.java b/eladmin-common/src/main/java/me/zhengjie/exception/handler/GlobalExceptionHandler.java index 23cbb383f..4e4e7165a 100644 --- a/eladmin-common/src/main/java/me/zhengjie/exception/handler/GlobalExceptionHandler.java +++ b/eladmin-common/src/main/java/me/zhengjie/exception/handler/GlobalExceptionHandler.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/CloseUtil.java b/eladmin-common/src/main/java/me/zhengjie/utils/CloseUtil.java index f39919f2c..b095ec63b 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/CloseUtil.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/CloseUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/ElConstant.java b/eladmin-common/src/main/java/me/zhengjie/utils/ElConstant.java index 479b1e697..fa58845e0 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/ElConstant.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/ElConstant.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/EncryptUtils.java b/eladmin-common/src/main/java/me/zhengjie/utils/EncryptUtils.java index 191fdbbe9..83bf918f3 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/EncryptUtils.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/EncryptUtils.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java b/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java index 1864887da..c83249446 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/PageUtil.java b/eladmin-common/src/main/java/me/zhengjie/utils/PageUtil.java index 56020d988..cbb99e544 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/PageUtil.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/PageUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/QueryHelp.java b/eladmin-common/src/main/java/me/zhengjie/utils/QueryHelp.java index 587ece985..cbb8b65f8 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/QueryHelp.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/QueryHelp.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/RedisUtils.java b/eladmin-common/src/main/java/me/zhengjie/utils/RedisUtils.java index 76fa7f40e..21480065e 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/RedisUtils.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/RedisUtils.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/RequestHolder.java b/eladmin-common/src/main/java/me/zhengjie/utils/RequestHolder.java index 71a4b9e5a..8d90ac48e 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/RequestHolder.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/RequestHolder.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/SecurityUtils.java b/eladmin-common/src/main/java/me/zhengjie/utils/SecurityUtils.java index f44550c8f..fb98424ac 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/SecurityUtils.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/SecurityUtils.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/SpringBeanHolder.java b/eladmin-common/src/main/java/me/zhengjie/utils/SpringBeanHolder.java index 2ff3bf410..ca9cdfc06 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/SpringBeanHolder.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/SpringBeanHolder.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java b/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java index c10d2b539..6c1893762 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/ThrowableUtil.java b/eladmin-common/src/main/java/me/zhengjie/utils/ThrowableUtil.java index 075a65c5f..59f1d98f4 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/ThrowableUtil.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/ThrowableUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/ValidationUtil.java b/eladmin-common/src/main/java/me/zhengjie/utils/ValidationUtil.java index e561762b9..2e82d6c4a 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/ValidationUtil.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/ValidationUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/enums/CodeBiEnum.java b/eladmin-common/src/main/java/me/zhengjie/utils/enums/CodeBiEnum.java index 944bc71c1..2c6fbb6bf 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/enums/CodeBiEnum.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/enums/CodeBiEnum.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/enums/CodeEnum.java b/eladmin-common/src/main/java/me/zhengjie/utils/enums/CodeEnum.java index 916862a66..3993993f1 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/enums/CodeEnum.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/enums/CodeEnum.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/enums/DataScopeEnum.java b/eladmin-common/src/main/java/me/zhengjie/utils/enums/DataScopeEnum.java index 465eef657..08e41f66d 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/enums/DataScopeEnum.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/enums/DataScopeEnum.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/enums/RequestMethodEnum.java b/eladmin-common/src/main/java/me/zhengjie/utils/enums/RequestMethodEnum.java index 7de5146c5..5d9448350 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/enums/RequestMethodEnum.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/enums/RequestMethodEnum.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-generator/src/main/java/me/zhengjie/domain/ColumnInfo.java b/eladmin-generator/src/main/java/me/zhengjie/domain/ColumnInfo.java index fdb962a40..ebbff39fe 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/domain/ColumnInfo.java +++ b/eladmin-generator/src/main/java/me/zhengjie/domain/ColumnInfo.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-generator/src/main/java/me/zhengjie/domain/GenConfig.java b/eladmin-generator/src/main/java/me/zhengjie/domain/GenConfig.java index a2d67063c..a6280c0eb 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/domain/GenConfig.java +++ b/eladmin-generator/src/main/java/me/zhengjie/domain/GenConfig.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-generator/src/main/java/me/zhengjie/domain/vo/TableInfo.java b/eladmin-generator/src/main/java/me/zhengjie/domain/vo/TableInfo.java index 1d3967b5c..b967422f1 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/domain/vo/TableInfo.java +++ b/eladmin-generator/src/main/java/me/zhengjie/domain/vo/TableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-generator/src/main/java/me/zhengjie/repository/ColumnInfoRepository.java b/eladmin-generator/src/main/java/me/zhengjie/repository/ColumnInfoRepository.java index 4638be261..7a174d2d2 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/repository/ColumnInfoRepository.java +++ b/eladmin-generator/src/main/java/me/zhengjie/repository/ColumnInfoRepository.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-generator/src/main/java/me/zhengjie/repository/GenConfigRepository.java b/eladmin-generator/src/main/java/me/zhengjie/repository/GenConfigRepository.java index 18c9a0c88..1513c8102 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/repository/GenConfigRepository.java +++ b/eladmin-generator/src/main/java/me/zhengjie/repository/GenConfigRepository.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-generator/src/main/java/me/zhengjie/rest/GenConfigController.java b/eladmin-generator/src/main/java/me/zhengjie/rest/GenConfigController.java index d4cbec910..85a2a4bb3 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/rest/GenConfigController.java +++ b/eladmin-generator/src/main/java/me/zhengjie/rest/GenConfigController.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-generator/src/main/java/me/zhengjie/rest/GeneratorController.java b/eladmin-generator/src/main/java/me/zhengjie/rest/GeneratorController.java index 4a1f1e4e6..68148b942 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/rest/GeneratorController.java +++ b/eladmin-generator/src/main/java/me/zhengjie/rest/GeneratorController.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-generator/src/main/java/me/zhengjie/service/GenConfigService.java b/eladmin-generator/src/main/java/me/zhengjie/service/GenConfigService.java index b5711f48b..175439aba 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/service/GenConfigService.java +++ b/eladmin-generator/src/main/java/me/zhengjie/service/GenConfigService.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-generator/src/main/java/me/zhengjie/service/GeneratorService.java b/eladmin-generator/src/main/java/me/zhengjie/service/GeneratorService.java index b9c2a2f5b..51a1d6b4d 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/service/GeneratorService.java +++ b/eladmin-generator/src/main/java/me/zhengjie/service/GeneratorService.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-generator/src/main/java/me/zhengjie/service/impl/GenConfigServiceImpl.java b/eladmin-generator/src/main/java/me/zhengjie/service/impl/GenConfigServiceImpl.java index bc2d061d7..36478b529 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/service/impl/GenConfigServiceImpl.java +++ b/eladmin-generator/src/main/java/me/zhengjie/service/impl/GenConfigServiceImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java b/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java index 604cf2db4..3abade196 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java +++ b/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-generator/src/main/java/me/zhengjie/utils/ColUtil.java b/eladmin-generator/src/main/java/me/zhengjie/utils/ColUtil.java index f65d06bf0..cee76364c 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/utils/ColUtil.java +++ b/eladmin-generator/src/main/java/me/zhengjie/utils/ColUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java b/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java index 8c8a95aa8..bb5a85e43 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java +++ b/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-generator/src/main/resources/template/admin/Controller.ftl b/eladmin-generator/src/main/resources/template/admin/Controller.ftl index a7d6d7542..39e372f2a 100644 --- a/eladmin-generator/src/main/resources/template/admin/Controller.ftl +++ b/eladmin-generator/src/main/resources/template/admin/Controller.ftl @@ -1,5 +1,5 @@ /* -* Copyright 2019-2020 Zheng Jie +* Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-generator/src/main/resources/template/admin/Dto.ftl b/eladmin-generator/src/main/resources/template/admin/Dto.ftl index ac81d9885..8df3cefc4 100644 --- a/eladmin-generator/src/main/resources/template/admin/Dto.ftl +++ b/eladmin-generator/src/main/resources/template/admin/Dto.ftl @@ -1,5 +1,5 @@ /* -* Copyright 2019-2020 Zheng Jie +* Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-generator/src/main/resources/template/admin/Entity.ftl b/eladmin-generator/src/main/resources/template/admin/Entity.ftl index 2e85cea84..71e28af3c 100644 --- a/eladmin-generator/src/main/resources/template/admin/Entity.ftl +++ b/eladmin-generator/src/main/resources/template/admin/Entity.ftl @@ -1,5 +1,5 @@ /* -* Copyright 2019-2020 Zheng Jie +* Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-generator/src/main/resources/template/admin/Mapper.ftl b/eladmin-generator/src/main/resources/template/admin/Mapper.ftl index 7bd67c0ad..3a29ccde7 100644 --- a/eladmin-generator/src/main/resources/template/admin/Mapper.ftl +++ b/eladmin-generator/src/main/resources/template/admin/Mapper.ftl @@ -1,5 +1,5 @@ /* -* Copyright 2019-2020 Zheng Jie +* Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-generator/src/main/resources/template/admin/QueryCriteria.ftl b/eladmin-generator/src/main/resources/template/admin/QueryCriteria.ftl index b94f0f458..fd4595365 100644 --- a/eladmin-generator/src/main/resources/template/admin/QueryCriteria.ftl +++ b/eladmin-generator/src/main/resources/template/admin/QueryCriteria.ftl @@ -1,5 +1,5 @@ /* -* Copyright 2019-2020 Zheng Jie +* Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-generator/src/main/resources/template/admin/Repository.ftl b/eladmin-generator/src/main/resources/template/admin/Repository.ftl index dac1e924a..426887167 100644 --- a/eladmin-generator/src/main/resources/template/admin/Repository.ftl +++ b/eladmin-generator/src/main/resources/template/admin/Repository.ftl @@ -1,5 +1,5 @@ /* -* Copyright 2019-2020 Zheng Jie +* Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-generator/src/main/resources/template/admin/Service.ftl b/eladmin-generator/src/main/resources/template/admin/Service.ftl index 9329e8b56..17f5ece92 100644 --- a/eladmin-generator/src/main/resources/template/admin/Service.ftl +++ b/eladmin-generator/src/main/resources/template/admin/Service.ftl @@ -1,5 +1,5 @@ /* -* Copyright 2019-2020 Zheng Jie +* Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-generator/src/main/resources/template/admin/ServiceImpl.ftl b/eladmin-generator/src/main/resources/template/admin/ServiceImpl.ftl index e79205c26..784edd6b6 100644 --- a/eladmin-generator/src/main/resources/template/admin/ServiceImpl.ftl +++ b/eladmin-generator/src/main/resources/template/admin/ServiceImpl.ftl @@ -1,5 +1,5 @@ /* -* Copyright 2019-2020 Zheng Jie +* Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-logging/src/main/java/me/zhengjie/annotation/Log.java b/eladmin-logging/src/main/java/me/zhengjie/annotation/Log.java index 6c001cd34..590a1738d 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/annotation/Log.java +++ b/eladmin-logging/src/main/java/me/zhengjie/annotation/Log.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java b/eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java index 107aefc71..b5f35fdcd 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java +++ b/eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-logging/src/main/java/me/zhengjie/domain/SysLog.java b/eladmin-logging/src/main/java/me/zhengjie/domain/SysLog.java index a6b2e4738..0ad695f85 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/domain/SysLog.java +++ b/eladmin-logging/src/main/java/me/zhengjie/domain/SysLog.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-logging/src/main/java/me/zhengjie/repository/LogRepository.java b/eladmin-logging/src/main/java/me/zhengjie/repository/LogRepository.java index 805f97b30..5a68c1c5d 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/repository/LogRepository.java +++ b/eladmin-logging/src/main/java/me/zhengjie/repository/LogRepository.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-logging/src/main/java/me/zhengjie/rest/SysLogController.java b/eladmin-logging/src/main/java/me/zhengjie/rest/SysLogController.java index fa173705e..59dc4f802 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/rest/SysLogController.java +++ b/eladmin-logging/src/main/java/me/zhengjie/rest/SysLogController.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/SysLogService.java b/eladmin-logging/src/main/java/me/zhengjie/service/SysLogService.java index 80f2d1c4b..c4a873fe6 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/service/SysLogService.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/SysLogService.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/dto/SysLogErrorDto.java b/eladmin-logging/src/main/java/me/zhengjie/service/dto/SysLogErrorDto.java index 1fde4fb39..72c8eb406 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/service/dto/SysLogErrorDto.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/dto/SysLogErrorDto.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/dto/SysLogQueryCriteria.java b/eladmin-logging/src/main/java/me/zhengjie/service/dto/SysLogQueryCriteria.java index 0588f646b..76db0491d 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/service/dto/SysLogQueryCriteria.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/dto/SysLogQueryCriteria.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/dto/SysLogSmallDto.java b/eladmin-logging/src/main/java/me/zhengjie/service/dto/SysLogSmallDto.java index d7312cd70..836aef376 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/service/dto/SysLogSmallDto.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/dto/SysLogSmallDto.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/impl/SysLogServiceImpl.java b/eladmin-logging/src/main/java/me/zhengjie/service/impl/SysLogServiceImpl.java index 95ea4a090..866c6339a 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/service/impl/SysLogServiceImpl.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/impl/SysLogServiceImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/mapstruct/LogErrorMapper.java b/eladmin-logging/src/main/java/me/zhengjie/service/mapstruct/LogErrorMapper.java index c777d11a5..80e5e2f15 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/service/mapstruct/LogErrorMapper.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/mapstruct/LogErrorMapper.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/mapstruct/LogSmallMapper.java b/eladmin-logging/src/main/java/me/zhengjie/service/mapstruct/LogSmallMapper.java index eeb5433a6..284970368 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/service/mapstruct/LogSmallMapper.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/mapstruct/LogSmallMapper.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/AppRun.java b/eladmin-system/src/main/java/me/zhengjie/AppRun.java index d49745423..d9ac36bf3 100644 --- a/eladmin-system/src/main/java/me/zhengjie/AppRun.java +++ b/eladmin-system/src/main/java/me/zhengjie/AppRun.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/App.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/App.java index 331101856..f8b01990b 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/App.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/App.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/Database.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/Database.java index cf2a7889a..a6bcff96b 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/Database.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/Database.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/Deploy.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/Deploy.java index e9c9f5426..8c2e2d71c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/Deploy.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/Deploy.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/DeployHistory.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/DeployHistory.java index 83fb1178a..e4de70cf5 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/DeployHistory.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/DeployHistory.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/ServerDeploy.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/ServerDeploy.java index cf86dabc7..d7dc1d0bf 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/ServerDeploy.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/ServerDeploy.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/repository/AppRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/repository/AppRepository.java index 008e00f44..9dda8c26b 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/repository/AppRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/repository/AppRepository.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/repository/DatabaseRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/repository/DatabaseRepository.java index 52fac4749..2872b9901 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/repository/DatabaseRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/repository/DatabaseRepository.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/repository/DeployHistoryRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/repository/DeployHistoryRepository.java index 097a7acc3..54d207b46 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/repository/DeployHistoryRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/repository/DeployHistoryRepository.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/repository/DeployRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/repository/DeployRepository.java index f01b29a26..0adf89897 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/repository/DeployRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/repository/DeployRepository.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/repository/ServerDeployRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/repository/ServerDeployRepository.java index 9926f54d0..ae8882b9f 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/repository/ServerDeployRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/repository/ServerDeployRepository.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/rest/AppController.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/rest/AppController.java index ecf04f1da..ae931a48f 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/rest/AppController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/rest/AppController.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/rest/DatabaseController.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/rest/DatabaseController.java index 7201b4447..7e93506f7 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/rest/DatabaseController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/rest/DatabaseController.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/rest/DeployController.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/rest/DeployController.java index 346e51d13..3dfe5eb44 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/rest/DeployController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/rest/DeployController.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/rest/DeployHistoryController.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/rest/DeployHistoryController.java index 799160278..212952646 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/rest/DeployHistoryController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/rest/DeployHistoryController.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/rest/ServerDeployController.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/rest/ServerDeployController.java index ddbe177ed..5fde7be62 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/rest/ServerDeployController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/rest/ServerDeployController.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/AppService.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/AppService.java index 8fb56051d..2134f276f 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/AppService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/AppService.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/DatabaseService.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/DatabaseService.java index 8e45afcf0..81237fc7c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/DatabaseService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/DatabaseService.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/DeployHistoryService.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/DeployHistoryService.java index fb2efdb0a..93c60ccee 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/DeployHistoryService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/DeployHistoryService.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/DeployService.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/DeployService.java index c6ef852b8..0a5fbb138 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/DeployService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/DeployService.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/ServerDeployService.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/ServerDeployService.java index 20590f054..512081fb8 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/ServerDeployService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/ServerDeployService.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/AppDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/AppDto.java index dbe183546..84d2649fb 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/AppDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/AppDto.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/AppQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/AppQueryCriteria.java index a3db98846..6bb6aff88 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/AppQueryCriteria.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/AppQueryCriteria.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DatabaseDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DatabaseDto.java index 07797413d..ddf8d3f3a 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DatabaseDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DatabaseDto.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DatabaseQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DatabaseQueryCriteria.java index e70e5d211..680550f59 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DatabaseQueryCriteria.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DatabaseQueryCriteria.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployDto.java index b9d14c857..ef9371c1e 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployDto.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployHistoryDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployHistoryDto.java index 8cca9d4a6..ae8ee1d7e 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployHistoryDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployHistoryDto.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployHistoryQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployHistoryQueryCriteria.java index 87846a9ac..8326c0ebb 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployHistoryQueryCriteria.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployHistoryQueryCriteria.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployQueryCriteria.java index fbbb34716..4b050fbd7 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployQueryCriteria.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployQueryCriteria.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/ServerDeployDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/ServerDeployDto.java index a94a41dd8..656191b91 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/ServerDeployDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/ServerDeployDto.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/ServerDeployQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/ServerDeployQueryCriteria.java index 814d3e8bd..85a2abb0e 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/ServerDeployQueryCriteria.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/ServerDeployQueryCriteria.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/AppServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/AppServiceImpl.java index 32abdcb83..d7aeb296e 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/AppServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/AppServiceImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/DatabaseServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/DatabaseServiceImpl.java index 3763aa4dd..e620edb66 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/DatabaseServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/DatabaseServiceImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/DeployHistoryServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/DeployHistoryServiceImpl.java index b50c155a1..a206b326c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/DeployHistoryServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/DeployHistoryServiceImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/DeployServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/DeployServiceImpl.java index 03ffdd1a5..41a259884 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/DeployServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/DeployServiceImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/ServerDeployServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/ServerDeployServiceImpl.java index ee9e5e756..5075a90b7 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/ServerDeployServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/ServerDeployServiceImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/mapstruct/AppMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/mapstruct/AppMapper.java index 31418b056..bc2e66fb3 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/mapstruct/AppMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/mapstruct/AppMapper.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/mapstruct/DatabaseMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/mapstruct/DatabaseMapper.java index e540394a8..564438e4d 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/mapstruct/DatabaseMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/mapstruct/DatabaseMapper.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/mapstruct/DeployHistoryMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/mapstruct/DeployHistoryMapper.java index f83f903be..5e6f6468d 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/mapstruct/DeployHistoryMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/mapstruct/DeployHistoryMapper.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/mapstruct/DeployMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/mapstruct/DeployMapper.java index 543043b47..8ed5347e9 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/mapstruct/DeployMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/mapstruct/DeployMapper.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/mapstruct/ServerDeployMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/mapstruct/ServerDeployMapper.java index e5f859a3e..27d03fa10 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/mapstruct/ServerDeployMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/mapstruct/ServerDeployMapper.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/util/ExecuteShellUtil.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/util/ExecuteShellUtil.java index fbe9c9df3..35b84d2cc 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/util/ExecuteShellUtil.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/util/ExecuteShellUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/util/ScpClientUtil.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/util/ScpClientUtil.java index 134779a18..b2ebc2af0 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/util/ScpClientUtil.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/util/ScpClientUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/util/SqlUtils.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/util/SqlUtils.java index fcc521662..84aafb79f 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/util/SqlUtils.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/util/SqlUtils.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/websocket/MsgType.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/websocket/MsgType.java index 79a998d1b..368534520 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/websocket/MsgType.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/websocket/MsgType.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/websocket/SocketMsg.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/websocket/SocketMsg.java index 7e6ebc638..97fde3c6f 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/websocket/SocketMsg.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/websocket/SocketMsg.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/websocket/WebSocketServer.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/websocket/WebSocketServer.java index a72fcf6f6..2441707f1 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/websocket/WebSocketServer.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/websocket/WebSocketServer.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/JobRunner.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/JobRunner.java index a5a9c91f4..a82e978c9 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/JobRunner.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/JobRunner.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/QuartzConfig.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/QuartzConfig.java index d542a36a7..afc9c3ce1 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/QuartzConfig.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/QuartzConfig.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzJob.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzJob.java index 39e11f426..2b013fa41 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzJob.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzJob.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzLog.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzLog.java index 4de57ec16..a5697778f 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzLog.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzLog.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/repository/QuartzJobRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/repository/QuartzJobRepository.java index 79b222be5..1334b581b 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/repository/QuartzJobRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/repository/QuartzJobRepository.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/repository/QuartzLogRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/repository/QuartzLogRepository.java index db724aa49..9198a6425 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/repository/QuartzLogRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/repository/QuartzLogRepository.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/rest/QuartzJobController.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/rest/QuartzJobController.java index d6d23a195..edbb6a167 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/rest/QuartzJobController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/rest/QuartzJobController.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/QuartzJobService.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/QuartzJobService.java index 2e93c7b85..0a6a109b8 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/QuartzJobService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/QuartzJobService.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/dto/JobQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/dto/JobQueryCriteria.java index 6cec0f19b..8365ccd30 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/dto/JobQueryCriteria.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/dto/JobQueryCriteria.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/impl/QuartzJobServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/impl/QuartzJobServiceImpl.java index 9915b0dfc..b6100aa71 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/impl/QuartzJobServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/impl/QuartzJobServiceImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/TestTask.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/TestTask.java index 4cf343429..f84ff8207 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/TestTask.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/TestTask.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/ExecutionJob.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/ExecutionJob.java index 579d61d50..a2c38c2c7 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/ExecutionJob.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/ExecutionJob.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzManage.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzManage.java index 4dbac76b0..e46206252 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzManage.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzManage.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzRunnable.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzRunnable.java index c75925e65..a8f708dc3 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzRunnable.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzRunnable.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityProperties.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityProperties.java index ac0dd501b..53e945283 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityProperties.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityProperties.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SpringSecurityConfig.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SpringSecurityConfig.java index 535b245af..1aaeacc41 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SpringSecurityConfig.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SpringSecurityConfig.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthController.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthController.java index de3cb9b69..5665646fd 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthController.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/OnlineController.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/OnlineController.java index 2e46859d7..9f767f673 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/OnlineController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/OnlineController.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAccessDeniedHandler.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAccessDeniedHandler.java index 6d0547332..31165f78d 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAccessDeniedHandler.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAccessDeniedHandler.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAuthenticationEntryPoint.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAuthenticationEntryPoint.java index dba0963a7..f6884f4e1 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAuthenticationEntryPoint.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAuthenticationEntryPoint.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenConfigurer.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenConfigurer.java index 40f64cb6c..da4369047 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenConfigurer.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenConfigurer.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenFilter.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenFilter.java index 9face7c56..c2829b2a9 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenFilter.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenFilter.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenProvider.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenProvider.java index ad7f11483..812f57ac2 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenProvider.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenProvider.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/OnlineUserService.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/OnlineUserService.java index 18096fb4f..c27a554c1 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/OnlineUserService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/OnlineUserService.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserCacheManager.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserCacheManager.java index ef0e8ec2f..51b335374 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserCacheManager.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserCacheManager.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserDetailsServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserDetailsServiceImpl.java index 7aa0ba2b0..75d1ce21c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserDetailsServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserDetailsServiceImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/AuthUserDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/AuthUserDto.java index 5219fc53e..6f5d05539 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/AuthUserDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/AuthUserDto.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/AuthorityDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/AuthorityDto.java index 888cceb69..81f50fbaa 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/AuthorityDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/AuthorityDto.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/JwtUserDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/JwtUserDto.java index cf25c8aa7..4c7c88e65 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/JwtUserDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/JwtUserDto.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/OnlineUserDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/OnlineUserDto.java index 290ab6d63..a7d037511 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/OnlineUserDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/OnlineUserDto.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java index 9f28af214..3130f19fd 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dict.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dict.java index 689cf2e38..859daf781 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dict.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dict.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/DictDetail.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/DictDetail.java index 554dde611..5287c960a 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/DictDetail.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/DictDetail.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Job.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Job.java index f2d358a63..343411cb4 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Job.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Job.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java index b2ea225d0..0e6496704 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java index d33d75c1c..127a758df 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java index b4d11bda0..7e9b0aa66 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/MenuMetaVo.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/MenuMetaVo.java index 647baa889..6751e122c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/MenuMetaVo.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/MenuMetaVo.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/MenuVo.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/MenuVo.java index e1efa5a83..40147aa03 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/MenuVo.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/MenuVo.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/UserPassVo.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/UserPassVo.java index fccb100f6..fa90914cb 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/UserPassVo.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/UserPassVo.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DeptRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DeptRepository.java index 985832249..fa9ed98cc 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DeptRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DeptRepository.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DictDetailRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DictDetailRepository.java index d80b9702d..4b73eb7bf 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DictDetailRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DictDetailRepository.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DictRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DictRepository.java index f09b6d1b5..6622b428a 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DictRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DictRepository.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/JobRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/JobRepository.java index e39ebf00a..3454efcb8 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/JobRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/JobRepository.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/MenuRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/MenuRepository.java index 75fd7ff5c..56a84cdd5 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/MenuRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/MenuRepository.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/RoleRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/RoleRepository.java index 8e76cc553..7e3793296 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/RoleRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/RoleRepository.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/UserRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/UserRepository.java index f7583b04d..979f0f319 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/UserRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/UserRepository.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DeptController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DeptController.java index ebeb260e8..6cd96b395 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DeptController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DeptController.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictController.java index 6161f5446..85faf15ac 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictController.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictDetailController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictDetailController.java index 3cea7a1b9..a53fdf01e 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictDetailController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictDetailController.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/JobController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/JobController.java index fa10176e0..729bfc45e 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/JobController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/JobController.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/LimitController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/LimitController.java index 02db642ec..aa26d8c23 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/LimitController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/LimitController.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java index 18084f166..786f5f312 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MonitorController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MonitorController.java index bb0e39b45..b360f9fad 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MonitorController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MonitorController.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java index 698843220..91a087e4f 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java index 1894238dd..4b76782e6 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/VerifyController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/VerifyController.java index 09ba44b04..b66da8492 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/VerifyController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/VerifyController.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DataService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DataService.java index 10258d99d..77c7cd89a 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DataService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DataService.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DeptService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DeptService.java index 902f6034f..fdfe8da4e 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DeptService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DeptService.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DictDetailService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DictDetailService.java index 7e2efb7f7..ecbaa9184 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DictDetailService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DictDetailService.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DictService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DictService.java index 05077b7e6..83569f9cf 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DictService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DictService.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/JobService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/JobService.java index dab9f586b..5543ede69 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/JobService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/JobService.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/MenuService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/MenuService.java index 1116d10af..894849de2 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/MenuService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/MenuService.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/MonitorService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/MonitorService.java index 478225aea..f7e34ad96 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/MonitorService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/MonitorService.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java index 9901cd752..8fc1be999 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/UserService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/UserService.java index a3cc4f248..7ab5d41d8 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/UserService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/UserService.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/VerifyService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/VerifyService.java index 4ca39b9db..cc4a6b5ea 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/VerifyService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/VerifyService.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptDto.java index bc236a113..17b70e406 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptDto.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptQueryCriteria.java index 4d8cdf2a3..bc070df87 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptQueryCriteria.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptQueryCriteria.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptSmallDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptSmallDto.java index 4dc64e581..2a62266bb 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptSmallDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptSmallDto.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDetailDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDetailDto.java index a4b931b69..646cb0e80 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDetailDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDetailDto.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDetailQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDetailQueryCriteria.java index 91a01b1d4..9fc90f780 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDetailQueryCriteria.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDetailQueryCriteria.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDto.java index 048b4a194..3e4e26362 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDto.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictQueryCriteria.java index 7207c6169..b3972d2e2 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictQueryCriteria.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictQueryCriteria.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictSmallDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictSmallDto.java index 98fc6eeb7..8e3e1a646 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictSmallDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictSmallDto.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobDto.java index 8836d550f..47a2bdf44 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobDto.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobQueryCriteria.java index ee851dc62..4a98146ef 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobQueryCriteria.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobQueryCriteria.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobSmallDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobSmallDto.java index 09cfa624b..5f9532a81 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobSmallDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobSmallDto.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuDto.java index d60dd2903..f8baea189 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuDto.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuQueryCriteria.java index bd43e8db9..1869c2156 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuQueryCriteria.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuQueryCriteria.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleDto.java index fc74d84b7..85a165420 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleDto.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleQueryCriteria.java index 5454fc44b..44a30ffca 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleQueryCriteria.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleQueryCriteria.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleSmallDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleSmallDto.java index 99215e633..1fddf74ac 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleSmallDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleSmallDto.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDto.java index 923e2d427..ad37234cf 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDto.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserLoginDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserLoginDto.java index e5b101f05..dce8f9a83 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserLoginDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserLoginDto.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserQueryCriteria.java index ad8e77553..ee62949a2 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserQueryCriteria.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserQueryCriteria.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DataServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DataServiceImpl.java index 336a9be0b..57ddefdf3 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DataServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DataServiceImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java index 89233a2b9..d15e1a2da 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictDetailServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictDetailServiceImpl.java index 51ef1114c..7044585c1 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictDetailServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictDetailServiceImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictServiceImpl.java index 3beb828b9..6ec087136 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictServiceImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/JobServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/JobServiceImpl.java index 7c72fe627..20cdb7dbe 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/JobServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/JobServiceImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java index 2ad44d10d..b23bf58fa 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MonitorServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MonitorServiceImpl.java index 4868bab62..803e87d8a 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MonitorServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MonitorServiceImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java index a429cc3bd..39a42aeb6 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java index d8c831777..57df17d33 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/VerifyServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/VerifyServiceImpl.java index e58b3eaca..ead7ba5a2 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/VerifyServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/VerifyServiceImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/DeptMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/DeptMapper.java index b0fb9049f..21c197632 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/DeptMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/DeptMapper.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/DeptSmallMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/DeptSmallMapper.java index 75076001f..5b3ba63a6 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/DeptSmallMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/DeptSmallMapper.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/DictDetailMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/DictDetailMapper.java index 3f9fe84ea..52b4020e6 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/DictDetailMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/DictDetailMapper.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/DictMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/DictMapper.java index 1047b3bb7..58818acdc 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/DictMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/DictMapper.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/DictSmallMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/DictSmallMapper.java index 80ccc4e3a..a9707c595 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/DictSmallMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/DictSmallMapper.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/JobMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/JobMapper.java index 377193027..1012ab6a3 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/JobMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/JobMapper.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/JobSmallMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/JobSmallMapper.java index 36a59cf36..b5ad149e7 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/JobSmallMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/JobSmallMapper.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/MenuMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/MenuMapper.java index 6d8bffaba..666cd6fdf 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/MenuMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/MenuMapper.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/RoleMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/RoleMapper.java index 5dc551df6..fdabbe8cd 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/RoleMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/RoleMapper.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/RoleSmallMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/RoleSmallMapper.java index db034b5c3..dd8e95860 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/RoleSmallMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/RoleSmallMapper.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/UserLoginMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/UserLoginMapper.java index fbb881397..19b77282a 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/UserLoginMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/UserLoginMapper.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/UserMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/UserMapper.java index 510c21b4f..9f40d60ab 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/UserMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/UserMapper.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-tools/src/main/java/me/zhengjie/config/MultipartConfig.java b/eladmin-tools/src/main/java/me/zhengjie/config/MultipartConfig.java index cf04de5c9..56a3d3811 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/config/MultipartConfig.java +++ b/eladmin-tools/src/main/java/me/zhengjie/config/MultipartConfig.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-tools/src/main/java/me/zhengjie/domain/AlipayConfig.java b/eladmin-tools/src/main/java/me/zhengjie/domain/AlipayConfig.java index def695d99..deabb360d 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/domain/AlipayConfig.java +++ b/eladmin-tools/src/main/java/me/zhengjie/domain/AlipayConfig.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-tools/src/main/java/me/zhengjie/domain/EmailConfig.java b/eladmin-tools/src/main/java/me/zhengjie/domain/EmailConfig.java index b4fc1e6d1..3f8bd18b4 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/domain/EmailConfig.java +++ b/eladmin-tools/src/main/java/me/zhengjie/domain/EmailConfig.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-tools/src/main/java/me/zhengjie/domain/LocalStorage.java b/eladmin-tools/src/main/java/me/zhengjie/domain/LocalStorage.java index 59fd0ab85..51d5cf6c9 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/domain/LocalStorage.java +++ b/eladmin-tools/src/main/java/me/zhengjie/domain/LocalStorage.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-tools/src/main/java/me/zhengjie/domain/QiniuConfig.java b/eladmin-tools/src/main/java/me/zhengjie/domain/QiniuConfig.java index 0247e6737..f9140b1d6 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/domain/QiniuConfig.java +++ b/eladmin-tools/src/main/java/me/zhengjie/domain/QiniuConfig.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-tools/src/main/java/me/zhengjie/domain/QiniuContent.java b/eladmin-tools/src/main/java/me/zhengjie/domain/QiniuContent.java index db69a6a6a..b7511db06 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/domain/QiniuContent.java +++ b/eladmin-tools/src/main/java/me/zhengjie/domain/QiniuContent.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-tools/src/main/java/me/zhengjie/domain/enums/AliPayStatusEnum.java b/eladmin-tools/src/main/java/me/zhengjie/domain/enums/AliPayStatusEnum.java index 5f5b042df..23870f89e 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/domain/enums/AliPayStatusEnum.java +++ b/eladmin-tools/src/main/java/me/zhengjie/domain/enums/AliPayStatusEnum.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-tools/src/main/java/me/zhengjie/domain/vo/EmailVo.java b/eladmin-tools/src/main/java/me/zhengjie/domain/vo/EmailVo.java index 1fb759f5c..1715d3966 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/domain/vo/EmailVo.java +++ b/eladmin-tools/src/main/java/me/zhengjie/domain/vo/EmailVo.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-tools/src/main/java/me/zhengjie/domain/vo/TradeVo.java b/eladmin-tools/src/main/java/me/zhengjie/domain/vo/TradeVo.java index 01c1c2fdd..b4f977488 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/domain/vo/TradeVo.java +++ b/eladmin-tools/src/main/java/me/zhengjie/domain/vo/TradeVo.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-tools/src/main/java/me/zhengjie/repository/AliPayRepository.java b/eladmin-tools/src/main/java/me/zhengjie/repository/AliPayRepository.java index 61183b43d..4d8e36f4c 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/repository/AliPayRepository.java +++ b/eladmin-tools/src/main/java/me/zhengjie/repository/AliPayRepository.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-tools/src/main/java/me/zhengjie/repository/EmailRepository.java b/eladmin-tools/src/main/java/me/zhengjie/repository/EmailRepository.java index 7765602c2..ba8d1da2e 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/repository/EmailRepository.java +++ b/eladmin-tools/src/main/java/me/zhengjie/repository/EmailRepository.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-tools/src/main/java/me/zhengjie/repository/LocalStorageRepository.java b/eladmin-tools/src/main/java/me/zhengjie/repository/LocalStorageRepository.java index 8c1e85af0..8978b4fba 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/repository/LocalStorageRepository.java +++ b/eladmin-tools/src/main/java/me/zhengjie/repository/LocalStorageRepository.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-tools/src/main/java/me/zhengjie/repository/QiNiuConfigRepository.java b/eladmin-tools/src/main/java/me/zhengjie/repository/QiNiuConfigRepository.java index 9379f55b3..494b378a0 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/repository/QiNiuConfigRepository.java +++ b/eladmin-tools/src/main/java/me/zhengjie/repository/QiNiuConfigRepository.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-tools/src/main/java/me/zhengjie/repository/QiniuContentRepository.java b/eladmin-tools/src/main/java/me/zhengjie/repository/QiniuContentRepository.java index 55f813f5c..10b0e157a 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/repository/QiniuContentRepository.java +++ b/eladmin-tools/src/main/java/me/zhengjie/repository/QiniuContentRepository.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-tools/src/main/java/me/zhengjie/rest/AliPayController.java b/eladmin-tools/src/main/java/me/zhengjie/rest/AliPayController.java index fe70b04ab..7a065f191 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/rest/AliPayController.java +++ b/eladmin-tools/src/main/java/me/zhengjie/rest/AliPayController.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-tools/src/main/java/me/zhengjie/rest/EmailController.java b/eladmin-tools/src/main/java/me/zhengjie/rest/EmailController.java index eb7832c8b..9ce5258c0 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/rest/EmailController.java +++ b/eladmin-tools/src/main/java/me/zhengjie/rest/EmailController.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-tools/src/main/java/me/zhengjie/rest/LocalStorageController.java b/eladmin-tools/src/main/java/me/zhengjie/rest/LocalStorageController.java index 2b61260de..beb0ec3c0 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/rest/LocalStorageController.java +++ b/eladmin-tools/src/main/java/me/zhengjie/rest/LocalStorageController.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-tools/src/main/java/me/zhengjie/rest/QiniuController.java b/eladmin-tools/src/main/java/me/zhengjie/rest/QiniuController.java index 2988c7264..f17ce3bbf 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/rest/QiniuController.java +++ b/eladmin-tools/src/main/java/me/zhengjie/rest/QiniuController.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/AliPayService.java b/eladmin-tools/src/main/java/me/zhengjie/service/AliPayService.java index be19c9055..51e8951c9 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/AliPayService.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/AliPayService.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/EmailService.java b/eladmin-tools/src/main/java/me/zhengjie/service/EmailService.java index d62cadc24..d055eed08 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/EmailService.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/EmailService.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/LocalStorageService.java b/eladmin-tools/src/main/java/me/zhengjie/service/LocalStorageService.java index 71c57d27d..8b7e95cf0 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/LocalStorageService.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/LocalStorageService.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/QiNiuService.java b/eladmin-tools/src/main/java/me/zhengjie/service/QiNiuService.java index 5321208ec..b75a5aa16 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/QiNiuService.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/QiNiuService.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/dto/LocalStorageDto.java b/eladmin-tools/src/main/java/me/zhengjie/service/dto/LocalStorageDto.java index 14221c2a2..830ab66cc 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/dto/LocalStorageDto.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/dto/LocalStorageDto.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/dto/LocalStorageQueryCriteria.java b/eladmin-tools/src/main/java/me/zhengjie/service/dto/LocalStorageQueryCriteria.java index bea1cc7c2..e9302c553 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/dto/LocalStorageQueryCriteria.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/dto/LocalStorageQueryCriteria.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/dto/PictureQueryCriteria.java b/eladmin-tools/src/main/java/me/zhengjie/service/dto/PictureQueryCriteria.java index e7d4f1b1c..899d1bb1f 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/dto/PictureQueryCriteria.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/dto/PictureQueryCriteria.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/dto/QiniuQueryCriteria.java b/eladmin-tools/src/main/java/me/zhengjie/service/dto/QiniuQueryCriteria.java index f5c2240b8..0a758ad2c 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/dto/QiniuQueryCriteria.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/dto/QiniuQueryCriteria.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/impl/AliPayServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/AliPayServiceImpl.java index c539bec46..d065d508a 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/impl/AliPayServiceImpl.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/AliPayServiceImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/impl/EmailServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/EmailServiceImpl.java index a2488d059..2403877c5 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/impl/EmailServiceImpl.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/EmailServiceImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/impl/LocalStorageServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/LocalStorageServiceImpl.java index b1fbf5f17..5ef939d34 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/impl/LocalStorageServiceImpl.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/LocalStorageServiceImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java index fe622245b..01229feb0 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/mapstruct/LocalStorageMapper.java b/eladmin-tools/src/main/java/me/zhengjie/service/mapstruct/LocalStorageMapper.java index 4c6d9555d..0d54c53ec 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/mapstruct/LocalStorageMapper.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/mapstruct/LocalStorageMapper.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-tools/src/main/java/me/zhengjie/utils/AlipayUtils.java b/eladmin-tools/src/main/java/me/zhengjie/utils/AlipayUtils.java index 203f7db70..1ae60382d 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/utils/AlipayUtils.java +++ b/eladmin-tools/src/main/java/me/zhengjie/utils/AlipayUtils.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/eladmin-tools/src/main/java/me/zhengjie/utils/QiNiuUtil.java b/eladmin-tools/src/main/java/me/zhengjie/utils/QiNiuUtil.java index 8091a95d5..9d9ed8958 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/utils/QiNiuUtil.java +++ b/eladmin-tools/src/main/java/me/zhengjie/utils/QiNiuUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 Zheng Jie + * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. From 4061a0785045644d3354cd872dc28d4dbcca64ad Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Wed, 15 Jan 2025 16:44:28 +0800 Subject: [PATCH 26/54] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E7=94=9F=E6=88=90=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/template/admin/Controller.ftl | 6 ++-- .../main/resources/template/admin/Entity.ftl | 19 ++++++++++++ .../template/admin/QueryCriteria.ftl | 30 +++++++++++++++++++ .../system/service/impl/UserServiceImpl.java | 2 +- 4 files changed, 52 insertions(+), 5 deletions(-) diff --git a/eladmin-generator/src/main/resources/template/admin/Controller.ftl b/eladmin-generator/src/main/resources/template/admin/Controller.ftl index 39e372f2a..215fc953f 100644 --- a/eladmin-generator/src/main/resources/template/admin/Controller.ftl +++ b/eladmin-generator/src/main/resources/template/admin/Controller.ftl @@ -39,13 +39,12 @@ import ${package}.service.dto.${className}Dto; **/ @RestController @RequiredArgsConstructor -@Api(tags = "${apiAlias}管理") +@Api(tags = "${apiAlias}") @RequestMapping("/api/${changeClassName}") public class ${className}Controller { private final ${className}Service ${changeClassName}Service; - @Log("导出数据") @ApiOperation("导出数据") @GetMapping(value = "/download") @PreAuthorize("@el.check('${changeClassName}:list')") @@ -54,7 +53,6 @@ public class ${className}Controller { } @GetMapping - @Log("查询${apiAlias}") @ApiOperation("查询${apiAlias}") @PreAuthorize("@el.check('${changeClassName}:list')") public ResponseEntity> query${className}(${className}QueryCriteria criteria, Pageable pageable){ @@ -83,7 +81,7 @@ public class ${className}Controller { @Log("删除${apiAlias}") @ApiOperation("删除${apiAlias}") @PreAuthorize("@el.check('${changeClassName}:del')") - public ResponseEntity delete${className}(@RequestBody ${pkColumnType}[] ids) { + public ResponseEntity delete${className}(@ApiParam(value = "传ID数组[]") @RequestBody ${pkColumnType}[] ids) { ${changeClassName}Service.deleteAll(ids); return new ResponseEntity<>(HttpStatus.OK); } diff --git a/eladmin-generator/src/main/resources/template/admin/Entity.ftl b/eladmin-generator/src/main/resources/template/admin/Entity.ftl index 71e28af3c..0945eef3b 100644 --- a/eladmin-generator/src/main/resources/template/admin/Entity.ftl +++ b/eladmin-generator/src/main/resources/template/admin/Entity.ftl @@ -34,6 +34,25 @@ import java.sql.Timestamp; <#if hasBigDecimal> import java.math.BigDecimal; +<#assign notBlankUsed = false> +<#assign notNullUsed = false> +<#if columns??> + <#list columns as column> + <#if column.istNotNull && column.columnKey != 'PRI'> + <#if column.columnType = 'String'> + <#assign notBlankUsed = true> + <#else> + <#assign notNullUsed = true> + + + + +<#if notBlankUsed> +import javax.validation.constraints.NotBlank; + +<#if notNullUsed> +import javax.validation.constraints.NotNull; + import java.io.Serializable; /** diff --git a/eladmin-generator/src/main/resources/template/admin/QueryCriteria.ftl b/eladmin-generator/src/main/resources/template/admin/QueryCriteria.ftl index fd4595365..541d642e9 100644 --- a/eladmin-generator/src/main/resources/template/admin/QueryCriteria.ftl +++ b/eladmin-generator/src/main/resources/template/admin/QueryCriteria.ftl @@ -42,31 +42,61 @@ public class ${className}QueryCriteria{ <#if column.queryType = '='> /** 精确 */ @Query + <#if column.remark != ''> + @ApiModelProperty(value = "${column.remark}") + <#else> + @ApiModelProperty(value = "${column.changeColumnName}") + private ${column.columnType} ${column.changeColumnName}; <#if column.queryType = 'Like'> /** 模糊 */ @Query(type = Query.Type.INNER_LIKE) + <#if column.remark != ''> + @ApiModelProperty(value = "${column.remark}") + <#else> + @ApiModelProperty(value = "${column.changeColumnName}") + private ${column.columnType} ${column.changeColumnName}; <#if column.queryType = '!='> /** 不等于 */ @Query(type = Query.Type.NOT_EQUAL) + <#if column.remark != ''> + @ApiModelProperty(value = "${column.remark}") + <#else> + @ApiModelProperty(value = "${column.changeColumnName}") + private ${column.columnType} ${column.changeColumnName}; <#if column.queryType = 'NotNull'> /** 不为空 */ @Query(type = Query.Type.NOT_NULL) + <#if column.remark != ''> + @ApiModelProperty(value = "${column.remark}") + <#else> + @ApiModelProperty(value = "${column.changeColumnName}") + private ${column.columnType} ${column.changeColumnName}; <#if column.queryType = '>='> /** 大于等于 */ @Query(type = Query.Type.GREATER_THAN) + <#if column.remark != ''> + @ApiModelProperty(value = "${column.remark}") + <#else> + @ApiModelProperty(value = "${column.changeColumnName}") + private ${column.columnType} ${column.changeColumnName}; <#if column.queryType = '<='> /** 小于等于 */ @Query(type = Query.Type.LESS_THAN) + <#if column.remark != ''> + @ApiModelProperty(value = "${column.remark}") + <#else> + @ApiModelProperty(value = "${column.changeColumnName}") + private ${column.columnType} ${column.changeColumnName}; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java index 57df17d33..2b2860676 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java @@ -183,7 +183,7 @@ public UserDto findByName(String userName) { public UserLoginDto getLoginData(String userName) { User user = userRepository.findByUsername(userName); if (user == null) { - throw new EntityNotFoundException(User.class, "name", userName); + return null; } else { return userLoginMapper.toDto(user); } From 311396f86cd8ac9f64afb8354ce5a8c75c7c5ec6 Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Wed, 15 Jan 2025 18:14:14 +0800 Subject: [PATCH 27/54] =?UTF-8?q?refactor:=20=E7=A7=BB=E9=99=A4=E5=86=97?= =?UTF-8?q?=E4=BD=99=E7=B1=BB=EF=BC=8C=E4=BC=98=E5=8C=96DTO=E5=92=8C?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6=E6=B3=A8=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/me/zhengjie/base/BaseDTO.java | 9 ++ .../java/me/zhengjie/base/BaseEntity.java | 7 +- .../config/webConfig}/MultipartConfig.java | 4 +- .../exception/BadConfigurationException.java | 98 ------------------- .../java/me/zhengjie/domain/vo/TableInfo.java | 15 +-- .../me/zhengjie/service/GeneratorService.java | 1 - .../src/main/resources/template/admin/Dto.ftl | 5 +- .../template/admin/QueryCriteria.ftl | 1 + .../main/java/me/zhengjie/domain/SysLog.java | 25 +++-- .../zhengjie/service/dto/SysLogErrorDto.java | 10 ++ .../service/dto/SysLogQueryCriteria.java | 5 + .../zhengjie/service/dto/SysLogSmallDto.java | 7 ++ .../modules/maint/domain/Database.java | 10 +- .../{util => domain/enums}/DataTypeEnum.java | 2 +- .../modules/maint/service/dto/AppDto.java | 34 ++----- .../maint/service/dto/AppQueryCriteria.java | 6 +- .../maint/service/dto/DatabaseDto.java | 21 ++-- .../service/dto/DatabaseQueryCriteria.java | 10 +- .../modules/maint/service/dto/DeployDto.java | 15 ++- .../maint/service/dto/DeployHistoryDto.java | 25 ++--- .../dto/DeployHistoryQueryCriteria.java | 7 +- .../service/dto/DeployQueryCriteria.java | 6 +- .../maint/service/dto/ServerDeployDto.java | 7 ++ .../dto/ServerDeployQueryCriteria.java | 6 +- .../modules/maint/util/ExecuteShellUtil.java | 5 +- .../modules/maint/util/ScpClientUtil.java | 25 +++-- .../zhengjie/modules/maint/util/SqlUtils.java | 66 +++++++------ .../quartz/service/dto/JobQueryCriteria.java | 4 + .../service/impl/QuartzJobServiceImpl.java | 2 - .../modules/quartz/task/TestTask.java | 2 +- .../modules/quartz/utils/ExecutionJob.java | 12 +-- .../security/config/enums/LoginCodeEnum.java | 7 +- .../security/service/dto/AuthUserDto.java | 5 + .../security/service/dto/AuthorityDto.java | 2 + .../security/service/dto/JwtUserDto.java | 3 + .../security/service/dto/OnlineUserDto.java | 35 ++----- .../modules/system/domain/vo/MenuMetaVo.java | 4 + .../modules/system/domain/vo/MenuVo.java | 9 ++ .../modules/system/domain/vo/UserPassVo.java | 3 + .../modules/system/service/dto/DeptDto.java | 11 +++ .../system/service/dto/DeptQueryCriteria.java | 6 ++ .../system/service/dto/DeptSmallDto.java | 3 + .../system/service/dto/DictDetailDto.java | 6 ++ .../service/dto/DictDetailQueryCriteria.java | 3 + .../modules/system/service/dto/DictDto.java | 5 + .../system/service/dto/DictQueryCriteria.java | 2 + .../system/service/dto/DictSmallDto.java | 2 + .../modules/system/service/dto/JobDto.java | 5 + .../system/service/dto/JobQueryCriteria.java | 4 + .../system/service/dto/JobSmallDto.java | 3 + .../modules/system/service/dto/MenuDto.java | 19 ++++ .../system/service/dto/MenuQueryCriteria.java | 5 + .../modules/system/service/dto/RoleDto.java | 8 ++ .../system/service/dto/RoleQueryCriteria.java | 3 + .../system/service/dto/RoleSmallDto.java | 5 + .../modules/system/service/dto/UserDto.java | 17 ++++ .../system/service/dto/UserLoginDto.java | 3 + .../system/service/dto/UserQueryCriteria.java | 7 ++ .../system/service/impl/DataServiceImpl.java | 3 +- .../service/impl/MonitorServiceImpl.java | 4 +- .../java/me/zhengjie/domain/vo/EmailVo.java | 5 +- .../java/me/zhengjie/domain/vo/TradeVo.java | 21 ++-- .../repository/QiNiuConfigRepository.java | 2 +- .../zhengjie/service/LocalStorageService.java | 2 +- .../zhengjie/service/dto/LocalStorageDto.java | 7 ++ .../dto/LocalStorageQueryCriteria.java | 3 + .../service/dto/PictureQueryCriteria.java | 40 -------- .../service/dto/QiniuQueryCriteria.java | 3 + 68 files changed, 371 insertions(+), 356 deletions(-) rename {eladmin-tools/src/main/java/me/zhengjie/config => eladmin-common/src/main/java/me/zhengjie/config/webConfig}/MultipartConfig.java (91%) delete mode 100644 eladmin-common/src/main/java/me/zhengjie/exception/BadConfigurationException.java rename eladmin-system/src/main/java/me/zhengjie/modules/maint/{util => domain/enums}/DataTypeEnum.java (98%) delete mode 100644 eladmin-tools/src/main/java/me/zhengjie/service/dto/PictureQueryCriteria.java diff --git a/eladmin-common/src/main/java/me/zhengjie/base/BaseDTO.java b/eladmin-common/src/main/java/me/zhengjie/base/BaseDTO.java index e9e7cc238..84dad94d1 100644 --- a/eladmin-common/src/main/java/me/zhengjie/base/BaseDTO.java +++ b/eladmin-common/src/main/java/me/zhengjie/base/BaseDTO.java @@ -1,5 +1,7 @@ package me.zhengjie.base; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import org.apache.commons.lang3.builder.ToStringBuilder; @@ -15,14 +17,21 @@ @Setter public class BaseDTO implements Serializable { + @ApiModelProperty(value = "创建人") private String createBy; + @ApiModelProperty(value = "修改人") private String updateBy; + @ApiModelProperty(value = "创建时间: yyyy-MM-dd HH:mm:ss", hidden = true) + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") private Timestamp createTime; + @ApiModelProperty(value = "更新时间: yyyy-MM-dd HH:mm:ss", hidden = true) + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") private Timestamp updateTime; + @Override public String toString() { ToStringBuilder builder = new ToStringBuilder(this); diff --git a/eladmin-common/src/main/java/me/zhengjie/base/BaseEntity.java b/eladmin-common/src/main/java/me/zhengjie/base/BaseEntity.java index 2ecc43039..a774e0362 100644 --- a/eladmin-common/src/main/java/me/zhengjie/base/BaseEntity.java +++ b/eladmin-common/src/main/java/me/zhengjie/base/BaseEntity.java @@ -15,6 +15,7 @@ */ package me.zhengjie.base; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -54,12 +55,14 @@ public class BaseEntity implements Serializable { @CreationTimestamp @Column(name = "create_time", updatable = false) - @ApiModelProperty(value = "创建时间", hidden = true) + @ApiModelProperty(value = "创建时间: yyyy-MM-dd HH:mm:ss", hidden = true) + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") private Timestamp createTime; @UpdateTimestamp @Column(name = "update_time") - @ApiModelProperty(value = "更新时间", hidden = true) + @ApiModelProperty(value = "更新时间: yyyy-MM-dd HH:mm:ss", hidden = true) + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") private Timestamp updateTime; /* 分组校验 */ diff --git a/eladmin-tools/src/main/java/me/zhengjie/config/MultipartConfig.java b/eladmin-common/src/main/java/me/zhengjie/config/webConfig/MultipartConfig.java similarity index 91% rename from eladmin-tools/src/main/java/me/zhengjie/config/MultipartConfig.java rename to eladmin-common/src/main/java/me/zhengjie/config/webConfig/MultipartConfig.java index 56a3d3811..acd59601c 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/config/MultipartConfig.java +++ b/eladmin-common/src/main/java/me/zhengjie/config/webConfig/MultipartConfig.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package me.zhengjie.config; +package me.zhengjie.config.webConfig; import org.springframework.boot.web.servlet.MultipartConfigFactory; import org.springframework.context.annotation.Bean; @@ -23,7 +23,7 @@ /** * @date 2018-12-28 - * @author https://blog.csdn.net/llibin1024530411/article/details/79474953 + * @author ... */ @Configuration public class MultipartConfig { diff --git a/eladmin-common/src/main/java/me/zhengjie/exception/BadConfigurationException.java b/eladmin-common/src/main/java/me/zhengjie/exception/BadConfigurationException.java deleted file mode 100644 index ede3691f2..000000000 --- a/eladmin-common/src/main/java/me/zhengjie/exception/BadConfigurationException.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright 2019-2020 the original author or authors. - * - * 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 me.zhengjie.exception; - -/** - * 统一关于错误配置信息 异常 - * - * @author: liaojinlong - * @date: 2020/6/10 18:06 - */ -public class BadConfigurationException extends RuntimeException { - /** - * Constructs a new runtime exception with {@code null} as its - * detail message. The cause is not initialized, and may subsequently be - * initialized by a call to {@link #initCause}. - */ - public BadConfigurationException() { - super(); - } - - /** - * Constructs a new runtime exception with the specified detail message. - * The cause is not initialized, and may subsequently be initialized by a - * call to {@link #initCause}. - * - * @param message the detail message. The detail message is saved for - * later retrieval by the {@link #getMessage()} method. - */ - public BadConfigurationException(String message) { - super(message); - } - - /** - * Constructs a new runtime exception with the specified detail message and - * cause.

Note that the detail message associated with - * {@code cause} is not automatically incorporated in - * this runtime exception's detail message. - * - * @param message the detail message (which is saved for later retrieval - * by the {@link #getMessage()} method). - * @param cause the cause (which is saved for later retrieval by the - * {@link #getCause()} method). (A {@code null} value is - * permitted, and indicates that the cause is nonexistent or - * unknown.) - * @since 1.4 - */ - public BadConfigurationException(String message, Throwable cause) { - super(message, cause); - } - - /** - * Constructs a new runtime exception with the specified cause and a - * detail message of {@code (cause==null ? null : cause.toString())} - * (which typically contains the class and detail message of - * {@code cause}). This constructor is useful for runtime exceptions - * that are little more than wrappers for other throwables. - * - * @param cause the cause (which is saved for later retrieval by the - * {@link #getCause()} method). (A {@code null} value is - * permitted, and indicates that the cause is nonexistent or - * unknown.) - * @since 1.4 - */ - public BadConfigurationException(Throwable cause) { - super(cause); - } - - /** - * Constructs a new runtime exception with the specified detail - * message, cause, suppression enabled or disabled, and writable - * stack trace enabled or disabled. - * - * @param message the detail message. - * @param cause the cause. (A {@code null} value is permitted, - * and indicates that the cause is nonexistent or unknown.) - * @param enableSuppression whether or not suppression is enabled - * or disabled - * @param writableStackTrace whether or not the stack trace should - * be writable - * @since 1.7 - */ - protected BadConfigurationException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { - super(message, cause, enableSuppression, writableStackTrace); - } -} diff --git a/eladmin-generator/src/main/java/me/zhengjie/domain/vo/TableInfo.java b/eladmin-generator/src/main/java/me/zhengjie/domain/vo/TableInfo.java index b967422f1..c900a6540 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/domain/vo/TableInfo.java +++ b/eladmin-generator/src/main/java/me/zhengjie/domain/vo/TableInfo.java @@ -15,6 +15,8 @@ */ package me.zhengjie.domain.vo; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -29,20 +31,19 @@ @NoArgsConstructor public class TableInfo { - /** 表名称 */ + @ApiModelProperty(value = "表名称") private Object tableName; - /** 创建日期 */ + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期:yyyy-MM-dd HH:mm:ss") private Object createTime; - /** 数据库引擎 */ + @ApiModelProperty(value = "数据库引擎") private Object engine; - /** 编码集 */ + @ApiModelProperty(value = "编码集") private Object coding; - /** 备注 */ + @ApiModelProperty(value = "备注") private Object remark; - - } diff --git a/eladmin-generator/src/main/java/me/zhengjie/service/GeneratorService.java b/eladmin-generator/src/main/java/me/zhengjie/service/GeneratorService.java index 51a1d6b4d..6e59160ae 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/service/GeneratorService.java +++ b/eladmin-generator/src/main/java/me/zhengjie/service/GeneratorService.java @@ -20,7 +20,6 @@ import me.zhengjie.domain.vo.TableInfo; import me.zhengjie.utils.PageResult; import org.springframework.http.ResponseEntity; -import org.springframework.scheduling.annotation.Async; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.List; diff --git a/eladmin-generator/src/main/resources/template/admin/Dto.ftl b/eladmin-generator/src/main/resources/template/admin/Dto.ftl index 8df3cefc4..3dab87ac6 100644 --- a/eladmin-generator/src/main/resources/template/admin/Dto.ftl +++ b/eladmin-generator/src/main/resources/template/admin/Dto.ftl @@ -27,6 +27,7 @@ import java.io.Serializable; import com.alibaba.fastjson.annotation.JSONField; import com.alibaba.fastjson.serializer.ToStringSerializer; +import io.swagger.annotations.ApiModelProperty; /** * @website https://eladmin.vip @@ -40,7 +41,9 @@ public class ${className}Dto implements Serializable { <#list columns as column> <#if column.remark != ''> - /** ${column.remark} */ + @ApiModelProperty(value = "${column.remark}") + <#else> + @ApiModelProperty(value = "${column.changeColumnName}") <#if column.columnKey = 'PRI'> <#if !auto && pkColumnType = 'Long'> diff --git a/eladmin-generator/src/main/resources/template/admin/QueryCriteria.ftl b/eladmin-generator/src/main/resources/template/admin/QueryCriteria.ftl index 541d642e9..d6bd59256 100644 --- a/eladmin-generator/src/main/resources/template/admin/QueryCriteria.ftl +++ b/eladmin-generator/src/main/resources/template/admin/QueryCriteria.ftl @@ -28,6 +28,7 @@ import java.util.List; <#if queryColumns??> import me.zhengjie.annotation.Query; +import io.swagger.annotations.ApiModelProperty; /** * @website https://eladmin.vip diff --git a/eladmin-logging/src/main/java/me/zhengjie/domain/SysLog.java b/eladmin-logging/src/main/java/me/zhengjie/domain/SysLog.java index 0ad695f85..f15a333c8 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/domain/SysLog.java +++ b/eladmin-logging/src/main/java/me/zhengjie/domain/SysLog.java @@ -15,6 +15,8 @@ */ package me.zhengjie.domain; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; @@ -36,41 +38,44 @@ public class SysLog implements Serializable { @Id @Column(name = "log_id") + @ApiModelProperty(value = "ID") @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - /** 操作用户 */ + @ApiModelProperty(value = "操作用户") private String username; - /** 描述 */ + @ApiModelProperty(value = "描述") private String description; - /** 方法名 */ + @ApiModelProperty(value = "方法名") private String method; - /** 参数 */ + @ApiModelProperty(value = "参数") private String params; - /** 日志类型 */ + @ApiModelProperty(value = "日志类型") private String logType; - /** 请求ip */ + @ApiModelProperty(value = "请求ip") private String requestIp; - /** 地址 */ + @ApiModelProperty(value = "地址") private String address; - /** 浏览器 */ + @ApiModelProperty(value = "浏览器") private String browser; - /** 请求耗时 */ + @ApiModelProperty(value = "请求耗时") private Long time; - /** 异常详细 */ + @ApiModelProperty(value = "异常详细") private byte[] exceptionDetail; /** 创建日期 */ @CreationTimestamp + @ApiModelProperty(value = "创建日期:yyyy-MM-dd HH:mm:ss") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") private Timestamp createTime; public SysLog(String logType, Long time) { diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/dto/SysLogErrorDto.java b/eladmin-logging/src/main/java/me/zhengjie/service/dto/SysLogErrorDto.java index 72c8eb406..fd66068a2 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/service/dto/SysLogErrorDto.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/dto/SysLogErrorDto.java @@ -15,6 +15,7 @@ */ package me.zhengjie.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.sql.Timestamp; @@ -26,21 +27,30 @@ @Data public class SysLogErrorDto implements Serializable { + @ApiModelProperty(value = "ID") private Long id; + @ApiModelProperty(value = "用户名") private String username; + @ApiModelProperty(value = "描述") private String description; + @ApiModelProperty(value = "方法") private String method; + @ApiModelProperty(value = "参数") private String params; + @ApiModelProperty(value = "浏览器") private String browser; + @ApiModelProperty(value = "请求ip") private String requestIp; + @ApiModelProperty(value = "地址") private String address; + @ApiModelProperty(value = "创建时间") private Timestamp createTime; } \ No newline at end of file diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/dto/SysLogQueryCriteria.java b/eladmin-logging/src/main/java/me/zhengjie/service/dto/SysLogQueryCriteria.java index 76db0491d..769919c8d 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/service/dto/SysLogQueryCriteria.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/dto/SysLogQueryCriteria.java @@ -15,6 +15,7 @@ */ package me.zhengjie.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import me.zhengjie.annotation.Query; import java.sql.Timestamp; @@ -28,15 +29,19 @@ @Data public class SysLogQueryCriteria { + @ApiModelProperty(value = "模糊查询") @Query(blurry = "username,description,address,requestIp,method,params") private String blurry; @Query + @ApiModelProperty(value = "用户名") private String username; @Query + @ApiModelProperty(value = "日志类型") private String logType; + @ApiModelProperty(value = "创建时间") @Query(type = Query.Type.BETWEEN) private List createTime; } diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/dto/SysLogSmallDto.java b/eladmin-logging/src/main/java/me/zhengjie/service/dto/SysLogSmallDto.java index 836aef376..55894dbd7 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/service/dto/SysLogSmallDto.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/dto/SysLogSmallDto.java @@ -15,6 +15,7 @@ */ package me.zhengjie.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.sql.Timestamp; @@ -26,15 +27,21 @@ @Data public class SysLogSmallDto implements Serializable { + @ApiModelProperty(value = "描述") private String description; + @ApiModelProperty(value = "请求IP") private String requestIp; + @ApiModelProperty(value = "耗时") private Long time; + @ApiModelProperty(value = "地址") private String address; + @ApiModelProperty(value = "浏览器") private String browser; + @ApiModelProperty(value = "创建时间") private Timestamp createTime; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/Database.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/Database.java index a6bcff96b..babf3ba62 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/Database.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/Database.java @@ -36,19 +36,19 @@ public class Database extends BaseEntity implements Serializable { @Id @Column(name = "db_id") - @ApiModelProperty(value = "ID", hidden = true) + @ApiModelProperty(value = "ID", hidden = true) private String id; - @ApiModelProperty(value = "数据库名称") + @ApiModelProperty(value = "数据库名称") private String name; - @ApiModelProperty(value = "数据库连接地址") + @ApiModelProperty(value = "数据库连接地址") private String jdbcUrl; - @ApiModelProperty(value = "数据库密码") + @ApiModelProperty(value = "数据库密码") private String pwd; - @ApiModelProperty(value = "用户名") + @ApiModelProperty(value = "用户名") private String userName; public void copy(Database source){ diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/util/DataTypeEnum.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/enums/DataTypeEnum.java similarity index 98% rename from eladmin-system/src/main/java/me/zhengjie/modules/maint/util/DataTypeEnum.java rename to eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/enums/DataTypeEnum.java index 4fa92b4fc..6d4ab1c91 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/util/DataTypeEnum.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/domain/enums/DataTypeEnum.java @@ -17,7 +17,7 @@ * */ -package me.zhengjie.modules.maint.util; +package me.zhengjie.modules.maint.domain.enums; import lombok.extern.slf4j.Slf4j; /** diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/AppDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/AppDto.java index 84d2649fb..df88534a1 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/AppDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/AppDto.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.maint.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import me.zhengjie.base.BaseDTO; @@ -28,44 +29,27 @@ @Setter public class AppDto extends BaseDTO implements Serializable { - /** - * 应用编号 - */ + @ApiModelProperty(value = "ID") private Long id; - /** - * 应用名称 - */ + @ApiModelProperty(value = "应用名称") private String name; - /** - * 端口 - */ + @ApiModelProperty(value = "端口") private Integer port; - /** - * 上传目录 - */ + @ApiModelProperty(value = "上传目录") private String uploadPath; - /** - * 部署目录 - */ + @ApiModelProperty(value = "部署目录") private String deployPath; - /** - * 备份目录 - */ + @ApiModelProperty(value = "备份目录") private String backupPath; - /** - * 启动脚本 - */ + @ApiModelProperty(value = "启动脚本") private String startScript; - /** - * 部署脚本 - */ + @ApiModelProperty(value = "部署脚本") private String deployScript; - } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/AppQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/AppQueryCriteria.java index 6bb6aff88..9932a3e03 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/AppQueryCriteria.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/AppQueryCriteria.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.maint.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import me.zhengjie.annotation.Query; import java.sql.Timestamp; @@ -27,12 +28,11 @@ @Data public class AppQueryCriteria{ - /** - * 模糊 - */ + @ApiModelProperty(value = "模糊") @Query(type = Query.Type.INNER_LIKE) private String name; + @ApiModelProperty(value = "创建时间") @Query(type = Query.Type.BETWEEN) private List createTime; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DatabaseDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DatabaseDto.java index ddf8d3f3a..04b9155bd 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DatabaseDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DatabaseDto.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.maint.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import me.zhengjie.base.BaseDTO; @@ -28,28 +29,18 @@ @Setter public class DatabaseDto extends BaseDTO implements Serializable { - /** - * id - */ + @ApiModelProperty(value = "ID") private String id; - /** - * 数据库名称 - */ + @ApiModelProperty(value = "数据库名称") private String name; - /** - * 数据库连接地址 - */ + @ApiModelProperty(value = "数据库连接地址") private String jdbcUrl; - /** - * 数据库密码 - */ + @ApiModelProperty(value = "数据库密码") private String pwd; - /** - * 用户名 - */ + @ApiModelProperty(value = "用户名") private String userName; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DatabaseQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DatabaseQueryCriteria.java index 680550f59..dceb0f832 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DatabaseQueryCriteria.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DatabaseQueryCriteria.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.maint.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import me.zhengjie.annotation.Query; import java.sql.Timestamp; @@ -27,18 +28,15 @@ @Data public class DatabaseQueryCriteria{ - /** - * 模糊 - */ + @ApiModelProperty(value = "模糊") @Query(type = Query.Type.INNER_LIKE) private String name; - /** - * 精确 - */ @Query + @ApiModelProperty(value = "数据库连接地址") private String jdbcUrl; + @ApiModelProperty(value = "创建时间") @Query(type = Query.Type.BETWEEN) private List createTime; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployDto.java index ef9371c1e..6eda1529f 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployDto.java @@ -16,6 +16,7 @@ package me.zhengjie.modules.maint.service.dto; import cn.hutool.core.collection.CollectionUtil; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import me.zhengjie.base.BaseDTO; @@ -33,23 +34,19 @@ @Setter public class DeployDto extends BaseDTO implements Serializable { - /** - * 部署编号 - */ + @ApiModelProperty(value = "ID") private String id; + @ApiModelProperty(value = "应用") private AppDto app; - /** - * 服务器 - */ + @ApiModelProperty(value = "服务器") private Set deploys; + @ApiModelProperty(value = "服务器名称") private String servers; - /** - * 服务状态 - */ + @ApiModelProperty(value = "服务状态") private String status; public String getServers() { diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployHistoryDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployHistoryDto.java index ae8ee1d7e..d08b99756 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployHistoryDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployHistoryDto.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.maint.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.sql.Timestamp; @@ -26,33 +27,21 @@ @Data public class DeployHistoryDto implements Serializable { - /** - * 编号 - */ + @ApiModelProperty(value = "ID") private String id; - /** - * 应用名称 - */ + @ApiModelProperty(value = "应用名称") private String appName; - /** - * 部署IP - */ + @ApiModelProperty(value = "部署IP") private String ip; - /** - * 部署时间 - */ + @ApiModelProperty(value = "部署时间") private Timestamp deployDate; - /** - * 部署人员 - */ + @ApiModelProperty(value = "部署人员") private String deployUser; - /** - * 部署编号 - */ + @ApiModelProperty(value = "部署编号") private Long deployId; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployHistoryQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployHistoryQueryCriteria.java index 8326c0ebb..469f66615 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployHistoryQueryCriteria.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployHistoryQueryCriteria.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.maint.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import me.zhengjie.annotation.Query; import java.sql.Timestamp; @@ -27,15 +28,15 @@ @Data public class DeployHistoryQueryCriteria{ - /** - * 精确 - */ + @ApiModelProperty(value = "模糊查询") @Query(blurry = "appName,ip,deployUser") private String blurry; @Query + @ApiModelProperty(value = "部署编号") private Long deployId; + @ApiModelProperty(value = "部署时间") @Query(type = Query.Type.BETWEEN) private List deployDate; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployQueryCriteria.java index 4b050fbd7..cd6da2b03 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployQueryCriteria.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/DeployQueryCriteria.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.maint.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import me.zhengjie.annotation.Query; import java.sql.Timestamp; @@ -27,12 +28,11 @@ @Data public class DeployQueryCriteria{ - /** - * 模糊 - */ + @ApiModelProperty(value = "应用名称") @Query(type = Query.Type.INNER_LIKE, propName = "name", joinName = "app") private String appName; + @ApiModelProperty(value = "创建时间") @Query(type = Query.Type.BETWEEN) private List createTime; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/ServerDeployDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/ServerDeployDto.java index 656191b91..a916517b8 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/ServerDeployDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/ServerDeployDto.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.maint.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import me.zhengjie.base.BaseDTO; @@ -29,16 +30,22 @@ @Setter public class ServerDeployDto extends BaseDTO implements Serializable { + @ApiModelProperty(value = "ID") private Long id; + @ApiModelProperty(value = "名称") private String name; + @ApiModelProperty(value = "IP") private String ip; + @ApiModelProperty(value = "端口") private Integer port; + @ApiModelProperty(value = "账号") private String account; + @ApiModelProperty(value = "密码") private String password; @Override diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/ServerDeployQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/ServerDeployQueryCriteria.java index 85a2abb0e..cdc20da35 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/ServerDeployQueryCriteria.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/dto/ServerDeployQueryCriteria.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.maint.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import me.zhengjie.annotation.Query; import java.sql.Timestamp; @@ -27,12 +28,11 @@ @Data public class ServerDeployQueryCriteria{ - /** - * 模糊 - */ + @ApiModelProperty(value = "模糊查询") @Query(blurry = "name,ip,account") private String blurry; + @ApiModelProperty(value = "创建时间") @Query(type = Query.Type.BETWEEN) private List createTime; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/util/ExecuteShellUtil.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/util/ExecuteShellUtil.java index 35b84d2cc..1fc60791b 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/util/ExecuteShellUtil.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/util/ExecuteShellUtil.java @@ -20,15 +20,14 @@ import com.jcraft.jsch.JSch; import com.jcraft.jsch.Session; import lombok.extern.slf4j.Slf4j; - import java.io.*; import java.util.Vector; /** * 执行shell命令 * - * @author: ZhangHouYing - * @date: 2019/8/10 + * @author ZhangHouYing + * @date 2019/8/10 */ @Slf4j public class ExecuteShellUtil { diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/util/ScpClientUtil.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/util/ScpClientUtil.java index b2ebc2af0..92ba08442 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/util/ScpClientUtil.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/util/ScpClientUtil.java @@ -18,6 +18,7 @@ import ch.ethz.ssh2.Connection; import ch.ethz.ssh2.SCPClient; import com.google.common.collect.Maps; +import me.zhengjie.utils.StringUtils; import java.io.IOException; import java.util.Map; @@ -26,17 +27,20 @@ /** * 远程执行linux命令 - * @author: ZhangHouYing - * @date: 2019-08-10 10:06 + * @author ZhangHouYing + * @date 2019-08-10 10:06 */ public class ScpClientUtil { - static private Map instance = Maps.newHashMap(); + private final String ip; + private final int port; + private final String username; + private final String password; + + static private final Map instance = Maps.newHashMap(); static synchronized public ScpClientUtil getInstance(String ip, int port, String username, String password) { - if (instance.get(ip) == null) { - instance.put(ip, new ScpClientUtil(ip, port, username, password)); - } + instance.computeIfAbsent(ip, i -> new ScpClientUtil(i, port, username, password)); return instance.get(ip); } @@ -81,7 +85,7 @@ public void putFile(String localFile, String remoteFileName, String remoteTarget System.err.println("authentication failed"); } SCPClient client = new SCPClient(conn); - if ((mode == null) || (mode.length() == 0)) { + if (StringUtils.isBlank(mode)) { mode = "0600"; } if (remoteFileName == null) { @@ -95,11 +99,4 @@ public void putFile(String localFile, String remoteFileName, String remoteTarget conn.close(); } } - - private String ip; - private int port; - private String username; - private String password; - - } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/util/SqlUtils.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/util/SqlUtils.java index 84aafb79f..ac4c9d2aa 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/util/SqlUtils.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/util/SqlUtils.java @@ -17,16 +17,19 @@ import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.util.StringUtils; -import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; +import me.zhengjie.modules.maint.domain.enums.DataTypeEnum; import me.zhengjie.utils.CloseUtil; import javax.sql.DataSource; import java.io.BufferedReader; import java.io.File; -import java.io.FileInputStream; -import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; -import java.sql.*; +import java.nio.file.Files; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; import java.util.List; /** @@ -113,7 +116,6 @@ private static void releaseConnection(Connection connection) { connection.close(); } catch (Exception e) { log.error(e.getMessage(),e); - log.error("connection close error:" + e.getMessage()); } } } @@ -126,7 +128,7 @@ public static boolean testConnection(String jdbcUrl, String userName, String pas return true; } } catch (Exception e) { - log.info("Get connection failed:" + e.getMessage()); + log.error("Get connection failed:{}", e.getMessage()); } finally { releaseConnection(connection); } @@ -146,27 +148,26 @@ public static String executeFile(String jdbcUrl, String userName, String passwor return "success"; } - /** * 批量执行sql * @param connection / * @param sqlList / */ public static void batchExecute(Connection connection, List sqlList) { - Statement st = null; - try { - st = connection.createStatement(); + try (Statement st = connection.createStatement()) { for (String sql : sqlList) { + // 去除末尾的分号 if (sql.endsWith(";")) { sql = sql.substring(0, sql.length() - 1); } - st.addBatch(sql); + // 检查 SQL 语句是否为空 + if (!sql.trim().isEmpty()) { + st.addBatch(sql); + } } st.executeBatch(); - } catch (SQLException throwables) { - throwables.printStackTrace(); - } finally { - CloseUtil.close(st); + } catch (SQLException e) { + log.error("SQL脚本批量执行发生异常: {},错误代码: {}", e.getMessage(), e.getErrorCode()); } } @@ -174,29 +175,31 @@ public static void batchExecute(Connection connection, List sqlList) { * 将文件中的sql语句以;为单位读取到列表中 * @param sqlFile / * @return / - * @throws Exception e - */ - private static List readSqlList(File sqlFile) throws Exception { - List sqlList = Lists.newArrayList(); + */ + private static List readSqlList(File sqlFile) { + List sqlList = new ArrayList<>(); StringBuilder sb = new StringBuilder(); - try (BufferedReader reader = new BufferedReader(new InputStreamReader( - new FileInputStream(sqlFile), StandardCharsets.UTF_8))) { - String tmp; - while ((tmp = reader.readLine()) != null) { - log.info("line:{}", tmp); - if (tmp.endsWith(";")) { - sb.append(tmp); + try (BufferedReader reader = Files.newBufferedReader(sqlFile.toPath(), StandardCharsets.UTF_8)) { + String line; + while ((line = reader.readLine()) != null) { + log.info("line: {}", line); + sb.append(line.trim()); + + if (line.trim().endsWith(";")) { sqlList.add(sb.toString()); - sb.delete(0, sb.length()); + // 清空 StringBuilder + sb.setLength(0); } else { - sb.append(tmp); + // 在行之间加一个空格 + sb.append(" "); } } - if (!"".endsWith(sb.toString().trim())) { - sqlList.add(sb.toString()); + if (sb.length() > 0) { + sqlList.add(sb.toString().trim()); } + } catch (Exception e) { + log.error("读取SQL文件时发生异常: {}", e.getMessage()); } - return sqlList; } @@ -228,5 +231,4 @@ private static String sanitizeJdbcUrl(String jdbcUrl) { } return jdbcUrl; } - } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/dto/JobQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/dto/JobQueryCriteria.java index 8365ccd30..bb2c67e5b 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/dto/JobQueryCriteria.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/dto/JobQueryCriteria.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.quartz.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import me.zhengjie.annotation.Query; import java.sql.Timestamp; @@ -27,12 +28,15 @@ @Data public class JobQueryCriteria { + @ApiModelProperty(value = "任务名称") @Query(type = Query.Type.INNER_LIKE) private String jobName; @Query + @ApiModelProperty(value = "是否成功") private Boolean isSuccess; + @ApiModelProperty(value = "创建时间") @Query(type = Query.Type.BETWEEN) private List createTime; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/impl/QuartzJobServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/impl/QuartzJobServiceImpl.java index b6100aa71..b85ef111a 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/impl/QuartzJobServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/impl/QuartzJobServiceImpl.java @@ -29,7 +29,6 @@ import me.zhengjie.utils.*; import org.quartz.CronExpression; import org.springframework.data.domain.Pageable; -import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; @@ -129,7 +128,6 @@ public void delete(Set ids) { } } - @Async @Override @Transactional(rollbackFor = Exception.class) public void executionSubJob(String[] tasks) throws InterruptedException { diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/TestTask.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/TestTask.java index f84ff8207..c530a0077 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/TestTask.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/TestTask.java @@ -32,7 +32,7 @@ public void run(){ } public void run1(String str){ - log.info("run1 执行成功,参数为: {}" + str); + log.info("run1 执行成功,参数为: {}", str); } public void run2(){ diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/ExecutionJob.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/ExecutionJob.java index a2c38c2c7..28c3f64c4 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/ExecutionJob.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/ExecutionJob.java @@ -32,7 +32,6 @@ import org.quartz.JobExecutionContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.scheduling.quartz.QuartzJobBean; import java.util.*; @@ -43,13 +42,14 @@ * @author / * @date 2019-01-07 */ -@Async public class ExecutionJob extends QuartzJobBean { private final Logger logger = LoggerFactory.getLogger(this.getClass()); + // 此处仅供参考,可根据任务执行情况自定义线程池参数 - private final ThreadPoolTaskExecutor executor = SpringBeanHolder.getBean("elAsync"); + private final ThreadPoolTaskExecutor executor = SpringBeanHolder.getBean("taskAsync"); + @Override public void executeInternal(JobExecutionContext context) { @@ -81,7 +81,7 @@ public void executeInternal(JobExecutionContext context) { } // 任务状态 log.setIsSuccess(true); - logger.info("任务执行成功,任务名称:" + quartzJob.getJobName() + ", 执行时间:" + times + "毫秒"); + logger.info("任务执行成功,任务名称:{}, 执行时间:{}毫秒", quartzJob.getJobName(), times); // 判断是否存在子任务 if(StringUtils.isNotBlank(quartzJob.getSubTask())){ String[] tasks = quartzJob.getSubTask().split("[,,]"); @@ -92,7 +92,7 @@ public void executeInternal(JobExecutionContext context) { if(StringUtils.isNotBlank(uuid)) { redisUtils.set(uuid, false); } - logger.error("任务执行失败,任务名称:" + quartzJob.getJobName()); + logger.error("任务执行失败,任务名称:{}", quartzJob.getJobName()); long times = System.currentTimeMillis() - startTime; log.setTime(times); // 任务状态 0:成功 1:失败 @@ -100,8 +100,8 @@ public void executeInternal(JobExecutionContext context) { log.setExceptionDetail(ThrowableUtil.getStackTrace(e)); // 任务如果失败了则暂停 if(quartzJob.getPauseAfterFailure() != null && quartzJob.getPauseAfterFailure()){ - quartzJob.setIsPause(false); //更新状态 + quartzJob.setIsPause(false); quartzJobService.updateIsPause(quartzJob); } if(quartzJob.getEmail() != null){ diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/enums/LoginCodeEnum.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/enums/LoginCodeEnum.java index ce5632a52..f3ad553df 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/enums/LoginCodeEnum.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/enums/LoginCodeEnum.java @@ -18,8 +18,8 @@ /** * 验证码配置枚举 * - * @author: liaojinlong - * @date: 2020/6/10 17:40 + * @author liaojinlong + * @date 2020/6/10 17:40 */ public enum LoginCodeEnum { @@ -39,5 +39,8 @@ public enum LoginCodeEnum { * 闪图 */ GIF, + /** + * 静态 + */ SPEC } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/AuthUserDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/AuthUserDto.java index 6f5d05539..a34c83cd2 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/AuthUserDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/AuthUserDto.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.security.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotBlank; @@ -28,12 +29,16 @@ public class AuthUserDto { @NotBlank + @ApiModelProperty(value = "用户名") private String username; @NotBlank + @ApiModelProperty(value = "密码") private String password; + @ApiModelProperty(value = "验证码") private String code; + @ApiModelProperty(value = "验证码的key") private String uuid = ""; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/AuthorityDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/AuthorityDto.java index 81f50fbaa..824f9e77c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/AuthorityDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/AuthorityDto.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.security.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -30,5 +31,6 @@ @AllArgsConstructor public class AuthorityDto implements GrantedAuthority { + @ApiModelProperty(value = "角色名") private String authority; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/JwtUserDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/JwtUserDto.java index 4c7c88e65..984c51910 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/JwtUserDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/JwtUserDto.java @@ -34,10 +34,13 @@ @AllArgsConstructor public class JwtUserDto implements UserDetails { + @ApiModelProperty(value = "用户") private final UserLoginDto user; + @ApiModelProperty(value = "数据权限") private final List dataScopes; + @ApiModelProperty(value = "角色权限") private final List authorities; @Setter diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/OnlineUserDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/OnlineUserDto.java index a7d037511..826f203d3 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/OnlineUserDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/OnlineUserDto.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.security.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -29,45 +30,27 @@ @NoArgsConstructor public class OnlineUserDto { - /** - * 用户名 - */ + @ApiModelProperty(value = "用户名") private String userName; - /** - * 昵称 - */ + @ApiModelProperty(value = "昵称") private String nickName; - /** - * 岗位 - */ + @ApiModelProperty(value = "岗位") private String dept; - /** - * 浏览器 - */ + @ApiModelProperty(value = "浏览器") private String browser; - /** - * IP - */ + @ApiModelProperty(value = "IP") private String ip; - /** - * 地址 - */ + @ApiModelProperty(value = "地址") private String address; - /** - * token - */ + @ApiModelProperty(value = "token") private String key; - /** - * 登录时间 - */ + @ApiModelProperty(value = "登录时间") private Date loginTime; - - } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/MenuMetaVo.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/MenuMetaVo.java index 6751e122c..a0a45fbfc 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/MenuMetaVo.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/MenuMetaVo.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.system.domain.vo; +import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; import java.io.Serializable; @@ -27,9 +28,12 @@ @AllArgsConstructor public class MenuMetaVo implements Serializable { + @ApiModelProperty(value = "菜单标题") private String title; + @ApiModelProperty(value = "菜单图标") private String icon; + @ApiModelProperty(value = "缓存") private Boolean noCache; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/MenuVo.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/MenuVo.java index 40147aa03..d9c0aec15 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/MenuVo.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/MenuVo.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.system.domain.vo; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.util.List; @@ -27,19 +28,27 @@ @Data public class MenuVo implements Serializable { + @ApiModelProperty(value = "菜单名称") private String name; + @ApiModelProperty(value = "路径") private String path; + @ApiModelProperty(value = "隐藏状态") private Boolean hidden; + @ApiModelProperty(value = "重定向") private String redirect; + @ApiModelProperty(value = "组件") private String component; + @ApiModelProperty(value = "总是显示") private Boolean alwaysShow; + @ApiModelProperty(value = "元数据") private MenuMetaVo meta; + @ApiModelProperty(value = "子路由") private List children; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/UserPassVo.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/UserPassVo.java index fa90914cb..4cb1e2ccd 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/UserPassVo.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/UserPassVo.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.system.domain.vo; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** @@ -25,7 +26,9 @@ @Data public class UserPassVo { + @ApiModelProperty(value = "旧密码") private String oldPass; + @ApiModelProperty(value = "新密码") private String newPass; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptDto.java index 17b70e406..1be9a60d0 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptDto.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.system.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import me.zhengjie.base.BaseDTO; @@ -30,28 +31,38 @@ @Setter public class DeptDto extends BaseDTO implements Serializable { + @ApiModelProperty(value = "ID") private Long id; + @ApiModelProperty(value = "名称") private String name; + @ApiModelProperty(value = "是否启用") private Boolean enabled; + @ApiModelProperty(value = "排序") private Integer deptSort; + @ApiModelProperty(value = "子部门") private List children; + @ApiModelProperty(value = "上级部门") private Long pid; + @ApiModelProperty(value = "子部门数量", hidden = true) private Integer subCount; + @ApiModelProperty(value = "是否有子节点") public Boolean getHasChildren() { return subCount > 0; } + @ApiModelProperty(value = "是否为叶子") public Boolean getLeaf() { return subCount <= 0; } + @ApiModelProperty(value = "部门全名") public String getLabel() { return name; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptQueryCriteria.java index bc070df87..900be67a4 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptQueryCriteria.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptQueryCriteria.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.system.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import me.zhengjie.annotation.DataPermission; import me.zhengjie.annotation.Query; @@ -29,18 +30,23 @@ @DataPermission(fieldName = "id") public class DeptQueryCriteria{ + @ApiModelProperty(value = "名称") @Query(type = Query.Type.INNER_LIKE) private String name; @Query + @ApiModelProperty(value = "是否启用") private Boolean enabled; @Query + @ApiModelProperty(value = "上级部门") private Long pid; + @ApiModelProperty(value = "PID空查询", hidden = true) @Query(type = Query.Type.IS_NULL, propName = "pid") private Boolean pidIsNull; + @ApiModelProperty(value = "创建时间") @Query(type = Query.Type.BETWEEN) private List createTime; } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptSmallDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptSmallDto.java index 2a62266bb..1356d5254 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptSmallDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptSmallDto.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.system.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -25,7 +26,9 @@ @Data public class DeptSmallDto implements Serializable { + @ApiModelProperty(value = "ID") private Long id; + @ApiModelProperty(value = "名称") private String name; } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDetailDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDetailDto.java index 646cb0e80..75c0f48d0 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDetailDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDetailDto.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.system.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import me.zhengjie.base.BaseDTO; @@ -28,13 +29,18 @@ @Setter public class DictDetailDto extends BaseDTO implements Serializable { + @ApiModelProperty(value = "ID") private Long id; + @ApiModelProperty(value = "字典ID") private DictSmallDto dict; + @ApiModelProperty(value = "字典标签") private String label; + @ApiModelProperty(value = "字典值") private String value; + @ApiModelProperty(value = "排序") private Integer dictSort; } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDetailQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDetailQueryCriteria.java index 9fc90f780..11e4e51b7 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDetailQueryCriteria.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDetailQueryCriteria.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.system.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import me.zhengjie.annotation.Query; @@ -25,9 +26,11 @@ @Data public class DictDetailQueryCriteria { + @ApiModelProperty(value = "字典标签") @Query(type = Query.Type.INNER_LIKE) private String label; + @ApiModelProperty(value = "字典名称") @Query(propName = "name",joinName = "dict") private String dictName; } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDto.java index 3e4e26362..bdec264f7 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDto.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.system.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import me.zhengjie.base.BaseDTO; @@ -29,11 +30,15 @@ @Setter public class DictDto extends BaseDTO implements Serializable { + @ApiModelProperty(value = "ID") private Long id; + @ApiModelProperty(value = "字典详情") private List dictDetails; + @ApiModelProperty(value = "名称") private String name; + @ApiModelProperty(value = "描述") private String description; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictQueryCriteria.java index b3972d2e2..e95646312 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictQueryCriteria.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictQueryCriteria.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.system.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import me.zhengjie.annotation.Query; @@ -25,6 +26,7 @@ @Data public class DictQueryCriteria { + @ApiModelProperty(value = "模糊查询") @Query(blurry = "name,description") private String blurry; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictSmallDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictSmallDto.java index 8e3e1a646..7c16fdc35 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictSmallDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictSmallDto.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.system.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import java.io.Serializable; @@ -27,5 +28,6 @@ @Setter public class DictSmallDto implements Serializable { + @ApiModelProperty(value = "ID") private Long id; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobDto.java index 47a2bdf44..9852d3c27 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobDto.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.system.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; @@ -31,12 +32,16 @@ @NoArgsConstructor public class JobDto extends BaseDTO implements Serializable { + @ApiModelProperty(value = "ID") private Long id; + @ApiModelProperty(value = "岗位排序") private Integer jobSort; + @ApiModelProperty(value = "名称") private String name; + @ApiModelProperty(value = "是否启用") private Boolean enabled; public JobDto(String name, Boolean enabled) { diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobQueryCriteria.java index 4a98146ef..90895c2b0 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobQueryCriteria.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobQueryCriteria.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.system.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.NoArgsConstructor; import me.zhengjie.annotation.Query; @@ -29,12 +30,15 @@ @NoArgsConstructor public class JobQueryCriteria { + @ApiModelProperty(value = "岗位名称") @Query(type = Query.Type.INNER_LIKE) private String name; @Query + @ApiModelProperty(value = "岗位状态") private Boolean enabled; + @ApiModelProperty(value = "创建时间") @Query(type = Query.Type.BETWEEN) private List createTime; } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobSmallDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobSmallDto.java index 5f9532a81..50f04a544 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobSmallDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobSmallDto.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.system.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; @@ -27,7 +28,9 @@ @NoArgsConstructor public class JobSmallDto implements Serializable { + @ApiModelProperty(value = "ID") private Long id; + @ApiModelProperty(value = "名称") private String name; } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuDto.java index f8baea189..d086c621c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuDto.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.system.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import me.zhengjie.base.BaseDTO; @@ -30,44 +31,62 @@ @Setter public class MenuDto extends BaseDTO implements Serializable { + @ApiModelProperty(value = "ID") private Long id; + @ApiModelProperty(value = "子节点") private List children; + @ApiModelProperty(value = "类型") private Integer type; + @ApiModelProperty(value = "权限") private String permission; + @ApiModelProperty(value = "菜单标题") private String title; + @ApiModelProperty(value = "排序") private Integer menuSort; + @ApiModelProperty(value = "路径") private String path; + @ApiModelProperty(value = "组件") private String component; + @ApiModelProperty(value = "PID") private Long pid; + @ApiModelProperty(value = "子节点数目") private Integer subCount; + @ApiModelProperty(value = "是否为Iframe") private Boolean iFrame; + @ApiModelProperty(value = "是否缓存") private Boolean cache; + @ApiModelProperty(value = "是否隐藏") private Boolean hidden; + @ApiModelProperty(value = "组件名称") private String componentName; + @ApiModelProperty(value = "图标") private String icon; + @ApiModelProperty(value = "是否存在子节点") public Boolean getHasChildren() { return subCount > 0; } + @ApiModelProperty(value = "是否叶子节点") public Boolean getLeaf() { return subCount <= 0; } + @ApiModelProperty(value = "标题") public String getLabel() { return title; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuQueryCriteria.java index 1869c2156..79027d52e 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuQueryCriteria.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuQueryCriteria.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.system.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import me.zhengjie.annotation.Query; import java.sql.Timestamp; @@ -27,15 +28,19 @@ @Data public class MenuQueryCriteria { + @ApiModelProperty(value = "模糊查询") @Query(blurry = "title,component,permission") private String blurry; + @ApiModelProperty(value = "创建时间") @Query(type = Query.Type.BETWEEN) private List createTime; + @ApiModelProperty(value = "PID空查询", hidden = true) @Query(type = Query.Type.IS_NULL, propName = "pid") private Boolean pidIsNull; @Query + @ApiModelProperty(value = "PID") private Long pid; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleDto.java index 85a165420..5db3fd536 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleDto.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.system.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import me.zhengjie.base.BaseDTO; @@ -30,18 +31,25 @@ @Setter public class RoleDto extends BaseDTO implements Serializable { + @ApiModelProperty(value = "ID") private Long id; + @ApiModelProperty(value = "菜单") private Set menus; + @ApiModelProperty(value = "部门") private Set depts; + @ApiModelProperty(value = "名称") private String name; + @ApiModelProperty(value = "数据权限") private String dataScope; + @ApiModelProperty(value = "级别") private Integer level; + @ApiModelProperty(value = "描述") private String description; @Override diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleQueryCriteria.java index 44a30ffca..bfdbcf067 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleQueryCriteria.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleQueryCriteria.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.system.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import me.zhengjie.annotation.Query; @@ -28,9 +29,11 @@ @Data public class RoleQueryCriteria { + @ApiModelProperty(value = "模糊查询") @Query(blurry = "name,description") private String blurry; + @ApiModelProperty(value = "创建时间") @Query(type = Query.Type.BETWEEN) private List createTime; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleSmallDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleSmallDto.java index 1fddf74ac..d026ff34e 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleSmallDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleSmallDto.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.system.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -25,11 +26,15 @@ @Data public class RoleSmallDto implements Serializable { + @ApiModelProperty(value = "ID") private Long id; + @ApiModelProperty(value = "名称") private String name; + @ApiModelProperty(value = "级别") private Integer level; + @ApiModelProperty(value = "数据权限") private String dataScope; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDto.java index ad37234cf..e27695aaf 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDto.java @@ -16,6 +16,7 @@ package me.zhengjie.modules.system.service.dto; import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import me.zhengjie.base.BaseDTO; @@ -31,37 +32,53 @@ @Setter public class UserDto extends BaseDTO implements Serializable { + @ApiModelProperty(value = "ID") private Long id; + @ApiModelProperty(value = "角色") private Set roles; + @ApiModelProperty(value = "岗位") private Set jobs; + @ApiModelProperty(value = "部门") private DeptSmallDto dept; + @ApiModelProperty(value = "部门ID") private Long deptId; + @ApiModelProperty(value = "用户名") private String username; + @ApiModelProperty(value = "昵称") private String nickName; + @ApiModelProperty(value = "邮箱") private String email; + @ApiModelProperty(value = "电话") private String phone; + @ApiModelProperty(value = "性别") private String gender; + @ApiModelProperty(value = "头像") private String avatarName; + @ApiModelProperty(value = "头像路径") private String avatarPath; + @ApiModelProperty(value = "密码") @JSONField(serialize = false) private String password; + @ApiModelProperty(value = "是否启用") private Boolean enabled; + @ApiModelProperty(value = "管理员") @JSONField(serialize = false) private Boolean isAdmin = false; + @ApiModelProperty(value = "密码重置时间") private Date pwdResetTime; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserLoginDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserLoginDto.java index dce8f9a83..b4f36210f 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserLoginDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserLoginDto.java @@ -16,6 +16,7 @@ package me.zhengjie.modules.system.service.dto; import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; /** * @author Zheng Jie @@ -24,8 +25,10 @@ **/ public class UserLoginDto extends UserDto { + @ApiModelProperty(value = "密码") @JSONField(serialize = false) private String password; + @ApiModelProperty(value = "是否为管理员") private Boolean isAdmin; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserQueryCriteria.java index ee62949a2..e1da3434e 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserQueryCriteria.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserQueryCriteria.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.system.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import me.zhengjie.annotation.Query; import java.io.Serializable; @@ -31,19 +32,25 @@ public class UserQueryCriteria implements Serializable { @Query + @ApiModelProperty(value = "ID") private Long id; + @ApiModelProperty(value = "部门ID集合") @Query(propName = "id", type = Query.Type.IN, joinName = "dept") private Set deptIds = new HashSet<>(); + @ApiModelProperty(value = "模糊查询") @Query(blurry = "email,username,nickName") private String blurry; @Query + @ApiModelProperty(value = "是否启用") private Boolean enabled; + @ApiModelProperty(value = "部门ID") private Long deptId; + @ApiModelProperty(value = "创建时间") @Query(type = Query.Type.BETWEEN) private List createTime; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DataServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DataServiceImpl.java index 57ddefdf3..98fe4fddf 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DataServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DataServiceImpl.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.system.service.impl; +import cn.hutool.core.collection.CollUtil; import lombok.RequiredArgsConstructor; import me.zhengjie.modules.system.domain.Dept; import me.zhengjie.modules.system.service.DataService; @@ -82,7 +83,7 @@ public Set getCustomize(Set deptIds, RoleSmallDto role){ for (Dept dept : depts) { deptIds.add(dept.getId()); List deptChildren = deptService.findByPid(dept.getId()); - if (deptChildren != null && deptChildren.size() != 0) { + if (CollUtil.isNotEmpty(deptChildren)) { deptIds.addAll(deptService.getDeptChildren(deptChildren)); } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MonitorServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MonitorServiceImpl.java index 803e87d8a..99ee9694c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MonitorServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MonitorServiceImpl.java @@ -17,6 +17,7 @@ import cn.hutool.core.date.BetweenFormatter.Level; import cn.hutool.core.date.DateUtil; +import lombok.extern.slf4j.Slf4j; import me.zhengjie.modules.system.service.MonitorService; import me.zhengjie.utils.ElConstant; import me.zhengjie.utils.FileUtil; @@ -37,6 +38,7 @@ * @author Zheng Jie * @date 2020-05-02 */ +@Slf4j @Service public class MonitorServiceImpl implements MonitorService { @@ -61,7 +63,7 @@ public Map getServers(){ resultMap.put("disk", getDiskInfo(os)); resultMap.put("time", DateUtil.format(new Date(), "HH:mm:ss")); } catch (Exception e) { - e.printStackTrace(); + log.error(e.getMessage(), e); } return resultMap; } diff --git a/eladmin-tools/src/main/java/me/zhengjie/domain/vo/EmailVo.java b/eladmin-tools/src/main/java/me/zhengjie/domain/vo/EmailVo.java index 1715d3966..40896e70e 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/domain/vo/EmailVo.java +++ b/eladmin-tools/src/main/java/me/zhengjie/domain/vo/EmailVo.java @@ -15,6 +15,7 @@ */ package me.zhengjie.domain.vo; +import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -32,13 +33,15 @@ @NoArgsConstructor public class EmailVo { - /** 收件人,支持多个收件人 */ @NotEmpty + @ApiModelProperty(value = "收件人") private List tos; @NotBlank + @ApiModelProperty(value = "主题") private String subject; @NotBlank + @ApiModelProperty(value = "内容") private String content; } diff --git a/eladmin-tools/src/main/java/me/zhengjie/domain/vo/TradeVo.java b/eladmin-tools/src/main/java/me/zhengjie/domain/vo/TradeVo.java index b4f977488..b8f5e6c83 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/domain/vo/TradeVo.java +++ b/eladmin-tools/src/main/java/me/zhengjie/domain/vo/TradeVo.java @@ -29,35 +29,30 @@ @Data public class TradeVo { - /** (必填)商品描述 */ @NotBlank + @ApiModelProperty(value = "商品描述") private String body; - /** (必填)商品名称 */ @NotBlank + @ApiModelProperty(value = "商品名称") private String subject; - /** (必填)商户订单号,应该由后台生成 */ - @ApiModelProperty(hidden = true) + @ApiModelProperty(value = "商户订单号", hidden = true) private String outTradeNo; - /** (必填)第三方订单号 */ - @ApiModelProperty(hidden = true) + @ApiModelProperty(value = "第三方订单号", hidden = true) private String tradeNo; - /** (必填)价格 */ @NotBlank + @ApiModelProperty(value = "价格") private String totalAmount; - /** 订单状态,已支付,未支付,作废 */ - @ApiModelProperty(hidden = true) + @ApiModelProperty(value = "订单状态,已支付,未支付,作废", hidden = true) private String state; - /** 创建时间,存入数据库时需要 */ - @ApiModelProperty(hidden = true) + @ApiModelProperty(value = "创建时间", hidden = true) private Timestamp createTime; - /** 作废时间,存入数据库时需要 */ - @ApiModelProperty(hidden = true) + @ApiModelProperty(value = "作废时间", hidden = true) private Date cancelTime; } diff --git a/eladmin-tools/src/main/java/me/zhengjie/repository/QiNiuConfigRepository.java b/eladmin-tools/src/main/java/me/zhengjie/repository/QiNiuConfigRepository.java index 494b378a0..eb9045a86 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/repository/QiNiuConfigRepository.java +++ b/eladmin-tools/src/main/java/me/zhengjie/repository/QiNiuConfigRepository.java @@ -28,7 +28,7 @@ public interface QiNiuConfigRepository extends JpaRepository { /** * 编辑类型 - * @param type + * @param type / */ @Modifying @Query(value = "update QiniuConfig set type = ?1") diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/LocalStorageService.java b/eladmin-tools/src/main/java/me/zhengjie/service/LocalStorageService.java index 8b7e95cf0..08e722705 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/LocalStorageService.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/LocalStorageService.java @@ -57,7 +57,7 @@ public interface LocalStorageService { * 上传 * @param name 文件名称 * @param file 文件 - * @return + * @return / */ LocalStorage create(String name, MultipartFile file); diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/dto/LocalStorageDto.java b/eladmin-tools/src/main/java/me/zhengjie/service/dto/LocalStorageDto.java index 830ab66cc..32642b3e6 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/dto/LocalStorageDto.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/dto/LocalStorageDto.java @@ -15,6 +15,7 @@ */ package me.zhengjie.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import me.zhengjie.base.BaseDTO; @@ -28,15 +29,21 @@ @Setter public class LocalStorageDto extends BaseDTO implements Serializable { + @ApiModelProperty(value = "ID") private Long id; + @ApiModelProperty(value = "真实文件名") private String realName; + @ApiModelProperty(value = "文件名") private String name; + @ApiModelProperty(value = "后缀") private String suffix; + @ApiModelProperty(value = "文件类型") private String type; + @ApiModelProperty(value = "文件大小") private String size; } \ No newline at end of file diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/dto/LocalStorageQueryCriteria.java b/eladmin-tools/src/main/java/me/zhengjie/service/dto/LocalStorageQueryCriteria.java index e9302c553..ae939945e 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/dto/LocalStorageQueryCriteria.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/dto/LocalStorageQueryCriteria.java @@ -15,6 +15,7 @@ */ package me.zhengjie.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.sql.Timestamp; import java.util.List; @@ -28,9 +29,11 @@ @Data public class LocalStorageQueryCriteria{ + @ApiModelProperty(value = "模糊查询") @Query(blurry = "name,suffix,type,createBy,size") private String blurry; + @ApiModelProperty(value = "创建时间") @Query(type = Query.Type.BETWEEN) private List createTime; } \ No newline at end of file diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/dto/PictureQueryCriteria.java b/eladmin-tools/src/main/java/me/zhengjie/service/dto/PictureQueryCriteria.java deleted file mode 100644 index 899d1bb1f..000000000 --- a/eladmin-tools/src/main/java/me/zhengjie/service/dto/PictureQueryCriteria.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2019-2025 Zheng Jie - * - * 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 me.zhengjie.service.dto; - -import lombok.Data; -import me.zhengjie.annotation.Query; -import java.sql.Timestamp; -import java.util.List; - -/** - * sm.ms图床 - * - * @author Zheng Jie - * @date 2019-6-4 09:52:09 - */ -@Data -public class PictureQueryCriteria{ - - @Query(type = Query.Type.INNER_LIKE) - private String filename; - - @Query(type = Query.Type.INNER_LIKE) - private String username; - - @Query(type = Query.Type.BETWEEN) - private List createTime; -} diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/dto/QiniuQueryCriteria.java b/eladmin-tools/src/main/java/me/zhengjie/service/dto/QiniuQueryCriteria.java index 0a758ad2c..fab27714a 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/dto/QiniuQueryCriteria.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/dto/QiniuQueryCriteria.java @@ -15,6 +15,7 @@ */ package me.zhengjie.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import me.zhengjie.annotation.Query; @@ -28,9 +29,11 @@ @Data public class QiniuQueryCriteria{ + @ApiModelProperty(value = "名称查询") @Query(type = Query.Type.INNER_LIKE) private String key; + @ApiModelProperty(value = "创建时间") @Query(type = Query.Type.BETWEEN) private List createTime; } From fe8d271557705ac2f1540635f50cdb186706dfac Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Wed, 15 Jan 2025 18:22:17 +0800 Subject: [PATCH 28/54] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E8=A1=A8=E7=BB=93=E6=9E=84=E5=8F=8A=E6=B3=A8?= =?UTF-8?q?=E9=87=8A=EF=BC=8C=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81=E7=94=9F?= =?UTF-8?q?=E6=88=90=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/me/zhengjie/domain/ColumnInfo.java | 2 +- .../java/me/zhengjie/domain/GenConfig.java | 2 +- .../service/impl/GenConfigServiceImpl.java | 2 +- .../service/impl/GeneratorServiceImpl.java | 1 + sql/eladmin.sql | 653 ++++++++++-------- 5 files changed, 352 insertions(+), 308 deletions(-) diff --git a/eladmin-generator/src/main/java/me/zhengjie/domain/ColumnInfo.java b/eladmin-generator/src/main/java/me/zhengjie/domain/ColumnInfo.java index ebbff39fe..fddc19935 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/domain/ColumnInfo.java +++ b/eladmin-generator/src/main/java/me/zhengjie/domain/ColumnInfo.java @@ -32,7 +32,7 @@ @Setter @Entity @NoArgsConstructor -@Table(name = "code_column_config") +@Table(name = "code_column") public class ColumnInfo implements Serializable { @Id diff --git a/eladmin-generator/src/main/java/me/zhengjie/domain/GenConfig.java b/eladmin-generator/src/main/java/me/zhengjie/domain/GenConfig.java index a6280c0eb..47e87d318 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/domain/GenConfig.java +++ b/eladmin-generator/src/main/java/me/zhengjie/domain/GenConfig.java @@ -32,7 +32,7 @@ @Setter @Entity @NoArgsConstructor -@Table(name = "code_gen_config") +@Table(name = "code_config") public class GenConfig implements Serializable { public GenConfig(String tableName) { diff --git a/eladmin-generator/src/main/java/me/zhengjie/service/impl/GenConfigServiceImpl.java b/eladmin-generator/src/main/java/me/zhengjie/service/impl/GenConfigServiceImpl.java index 36478b529..5801d983f 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/service/impl/GenConfigServiceImpl.java +++ b/eladmin-generator/src/main/java/me/zhengjie/service/impl/GenConfigServiceImpl.java @@ -19,7 +19,6 @@ import me.zhengjie.domain.GenConfig; import me.zhengjie.repository.GenConfigRepository; import me.zhengjie.service.GenConfigService; -import me.zhengjie.utils.StringUtils; import org.springframework.stereotype.Service; import java.io.File; @@ -29,6 +28,7 @@ */ @Service @RequiredArgsConstructor +@SuppressWarnings({"unchecked","all"}) public class GenConfigServiceImpl implements GenConfigService { private final GenConfigRepository genConfigRepository; diff --git a/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java b/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java index 3abade196..fdd0a0ae2 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java +++ b/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java @@ -50,6 +50,7 @@ */ @Service @RequiredArgsConstructor +@SuppressWarnings({"unchecked","all"}) public class GeneratorServiceImpl implements GeneratorService { private static final Logger log = LoggerFactory.getLogger(GeneratorServiceImpl.class); @PersistenceContext diff --git a/sql/eladmin.sql b/sql/eladmin.sql index 29d2d5be0..166afc37f 100644 --- a/sql/eladmin.sql +++ b/sql/eladmin.sql @@ -1,50 +1,56 @@ /* - Navicat Premium Data Transfer + Navicat Premium Dump SQL Source Server : localhost Source Server Type : MySQL - Source Server Version : 100505 + Source Server Version : 110206 (11.2.6-MariaDB) Source Host : localhost:3306 Source Schema : eladmin Target Server Type : MySQL - Target Server Version : 100505 + Target Server Version : 110206 (11.2.6-MariaDB) File Encoding : 65001 - Date: 05/09/2020 10:49:19 + Date: 15/01/2025 18:20:01 */ SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- --- Table structure for code_column_config +-- Table structure for code_column -- ---------------------------- -DROP TABLE IF EXISTS `code_column_config`; -CREATE TABLE `code_column_config` ( +DROP TABLE IF EXISTS `code_column`; +CREATE TABLE `code_column` ( `column_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', - `table_name` varchar(180) DEFAULT NULL, - `column_name` varchar(255) DEFAULT NULL, - `column_type` varchar(255) DEFAULT NULL, - `dict_name` varchar(255) DEFAULT NULL, - `extra` varchar(255) DEFAULT NULL, - `form_show` bit(1) DEFAULT NULL, - `form_type` varchar(255) DEFAULT NULL, - `key_type` varchar(255) DEFAULT NULL, - `list_show` bit(1) DEFAULT NULL, - `not_null` bit(1) DEFAULT NULL, - `query_type` varchar(255) DEFAULT NULL, - `remark` varchar(255) DEFAULT NULL, - `date_annotation` varchar(255) DEFAULT NULL, + `table_name` varchar(180) DEFAULT NULL COMMENT '表名', + `column_name` varchar(255) DEFAULT NULL COMMENT '数据库字段名称', + `column_type` varchar(255) DEFAULT NULL COMMENT '数据库字段类型', + `dict_name` varchar(255) DEFAULT NULL COMMENT '字典名称', + `extra` varchar(255) DEFAULT NULL COMMENT '字段额外的参数', + `form_show` bit(1) DEFAULT NULL COMMENT '是否表单显示', + `form_type` varchar(255) DEFAULT NULL COMMENT '表单类型', + `key_type` varchar(255) DEFAULT NULL COMMENT '数据库字段键类型', + `list_show` bit(1) DEFAULT NULL COMMENT '是否在列表显示', + `not_null` bit(1) DEFAULT NULL COMMENT '是否为空', + `query_type` varchar(255) DEFAULT NULL COMMENT '查询类型', + `remark` varchar(255) DEFAULT NULL COMMENT '描述', + `date_annotation` varchar(255) DEFAULT NULL COMMENT '日期注解', PRIMARY KEY (`column_id`) USING BTREE, KEY `idx_table_name` (`table_name`) -) ENGINE=InnoDB AUTO_INCREMENT=191 ROW_FORMAT=COMPACT COMMENT='代码生成字段信息存储'; +) ENGINE=InnoDB AUTO_INCREMENT=259 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='代码生成字段信息存储'; -- ---------------------------- --- Table structure for code_gen_config +-- Records of code_column -- ---------------------------- -DROP TABLE IF EXISTS `code_gen_config`; -CREATE TABLE `code_gen_config` ( +BEGIN; +COMMIT; + +-- ---------------------------- +-- Table structure for code_config +-- ---------------------------- +DROP TABLE IF EXISTS `code_config`; +CREATE TABLE `code_config` ( `config_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', `table_name` varchar(255) DEFAULT NULL COMMENT '表名', `author` varchar(255) DEFAULT NULL COMMENT '作者', @@ -57,7 +63,13 @@ CREATE TABLE `code_gen_config` ( `api_alias` varchar(255) DEFAULT NULL COMMENT '接口名称', PRIMARY KEY (`config_id`) USING BTREE, KEY `idx_table_name` (`table_name`(100)) -) ENGINE=InnoDB AUTO_INCREMENT=7 ROW_FORMAT=COMPACT COMMENT='代码生成器配置'; +) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='代码生成器配置'; + +-- ---------------------------- +-- Records of code_config +-- ---------------------------- +BEGIN; +COMMIT; -- ---------------------------- -- Table structure for mnt_app @@ -77,7 +89,7 @@ CREATE TABLE `mnt_app` ( `create_time` datetime DEFAULT NULL COMMENT '创建日期', `update_time` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`app_id`) USING BTREE -) ENGINE=InnoDB ROW_FORMAT=COMPACT COMMENT='应用管理'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='应用管理'; -- ---------------------------- -- Records of mnt_app @@ -100,7 +112,7 @@ CREATE TABLE `mnt_database` ( `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`db_id`) USING BTREE -) ENGINE=InnoDB ROW_FORMAT=COMPACT COMMENT='数据库管理'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='数据库管理'; -- ---------------------------- -- Records of mnt_database @@ -120,8 +132,8 @@ CREATE TABLE `mnt_deploy` ( `create_time` datetime DEFAULT NULL, `update_time` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`deploy_id`) USING BTREE, - KEY `FK6sy157pseoxx4fmcqr1vnvvhy` (`app_id`) USING BTREE -) ENGINE=InnoDB ROW_FORMAT=COMPACT COMMENT='部署管理'; + KEY `idx_app_id` (`app_id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='部署管理'; -- ---------------------------- -- Records of mnt_deploy @@ -141,7 +153,7 @@ CREATE TABLE `mnt_deploy_history` ( `ip` varchar(20) NOT NULL COMMENT '服务器IP', `deploy_id` bigint(20) DEFAULT NULL COMMENT '部署编号', PRIMARY KEY (`history_id`) USING BTREE -) ENGINE=InnoDB ROW_FORMAT=COMPACT COMMENT='部署历史管理'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='部署历史管理'; -- ---------------------------- -- Records of mnt_deploy_history @@ -157,8 +169,9 @@ CREATE TABLE `mnt_deploy_server` ( `deploy_id` bigint(20) NOT NULL COMMENT '部署ID', `server_id` bigint(20) NOT NULL COMMENT '服务ID', PRIMARY KEY (`deploy_id`,`server_id`) USING BTREE, - KEY `FKeaaha7jew9a02b3bk9ghols53` (`server_id`) USING BTREE -) ENGINE=InnoDB ROW_FORMAT=COMPACT COMMENT='应用与服务器关联'; + KEY `idx_deploy_id` (`deploy_id`), + KEY `idx_server_id` (`server_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='应用与服务器关联'; -- ---------------------------- -- Records of mnt_deploy_server @@ -183,7 +196,13 @@ CREATE TABLE `mnt_server` ( `update_time` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`server_id`) USING BTREE, KEY `idx_ip` (`ip`) -) ENGINE=InnoDB AUTO_INCREMENT=2 ROW_FORMAT=COMPACT COMMENT='服务器管理'; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='服务器管理'; + +-- ---------------------------- +-- Records of mnt_server +-- ---------------------------- +BEGIN; +COMMIT; -- ---------------------------- -- Table structure for sys_dept @@ -201,21 +220,21 @@ CREATE TABLE `sys_dept` ( `create_time` datetime DEFAULT NULL COMMENT '创建日期', `update_time` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`dept_id`) USING BTREE, - KEY `inx_pid` (`pid`), - KEY `inx_enabled` (`enabled`) -) ENGINE=InnoDB AUTO_INCREMENT=18 ROW_FORMAT=COMPACT COMMENT='部门'; + KEY `idx_pid` (`pid`), + KEY `idx_enabled` (`enabled`) +) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='部门'; -- ---------------------------- -- Records of sys_dept -- ---------------------------- BEGIN; -INSERT INTO `sys_dept` VALUES (2, 7, 1, '研发部', 3, b'1', 'admin', 'admin', '2019-03-25 09:15:32', '2020-08-02 14:48:47'); -INSERT INTO `sys_dept` VALUES (5, 7, 0, '运维部', 4, b'1', 'admin', 'admin', '2019-03-25 09:20:44', '2020-05-17 14:27:27'); -INSERT INTO `sys_dept` VALUES (6, 8, 0, '测试部', 6, b'1', 'admin', 'admin', '2019-03-25 09:52:18', '2020-06-08 11:59:21'); -INSERT INTO `sys_dept` VALUES (7, NULL, 2, '华南分部', 0, b'1', 'admin', 'admin', '2019-03-25 11:04:50', '2020-06-08 12:08:56'); -INSERT INTO `sys_dept` VALUES (8, NULL, 2, '华北分部', 1, b'1', 'admin', 'admin', '2019-03-25 11:04:53', '2020-05-14 12:54:00'); -INSERT INTO `sys_dept` VALUES (15, 8, 0, 'UI部门', 7, b'1', 'admin', 'admin', '2020-05-13 22:56:53', '2020-05-14 12:54:13'); -INSERT INTO `sys_dept` VALUES (17, 2, 0, '研发一组', 999, b'1', 'admin', 'admin', '2020-08-02 14:49:07', '2020-08-02 14:49:07'); +INSERT INTO `sys_dept` (`dept_id`, `pid`, `sub_count`, `name`, `dept_sort`, `enabled`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (2, 7, 1, '研发部', 3, b'1', 'admin', 'admin', '2019-03-25 09:15:32', '2020-08-02 14:48:47'); +INSERT INTO `sys_dept` (`dept_id`, `pid`, `sub_count`, `name`, `dept_sort`, `enabled`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (5, 7, 0, '运维部', 4, b'1', 'admin', 'admin', '2019-03-25 09:20:44', '2020-05-17 14:27:27'); +INSERT INTO `sys_dept` (`dept_id`, `pid`, `sub_count`, `name`, `dept_sort`, `enabled`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (6, 8, 0, '测试部', 6, b'1', 'admin', 'admin', '2019-03-25 09:52:18', '2020-06-08 11:59:21'); +INSERT INTO `sys_dept` (`dept_id`, `pid`, `sub_count`, `name`, `dept_sort`, `enabled`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (7, NULL, 2, '华南分部', 0, b'1', 'admin', 'admin', '2019-03-25 11:04:50', '2020-06-08 12:08:56'); +INSERT INTO `sys_dept` (`dept_id`, `pid`, `sub_count`, `name`, `dept_sort`, `enabled`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (8, NULL, 2, '华北分部', 1, b'1', 'admin', 'admin', '2019-03-25 11:04:53', '2020-05-14 12:54:00'); +INSERT INTO `sys_dept` (`dept_id`, `pid`, `sub_count`, `name`, `dept_sort`, `enabled`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (15, 8, 0, 'UI部门', 7, b'1', 'admin', 'admin', '2020-05-13 22:56:53', '2020-05-14 12:54:13'); +INSERT INTO `sys_dept` (`dept_id`, `pid`, `sub_count`, `name`, `dept_sort`, `enabled`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (17, 2, 0, '研发一组', 999, b'1', 'admin', 'admin', '2020-08-02 14:49:07', '2020-08-02 14:49:07'); COMMIT; -- ---------------------------- @@ -231,15 +250,15 @@ CREATE TABLE `sys_dict` ( `create_time` datetime DEFAULT NULL COMMENT '创建日期', `update_time` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`dict_id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=6 ROW_FORMAT=COMPACT COMMENT='数据字典'; +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='数据字典'; -- ---------------------------- -- Records of sys_dict -- ---------------------------- BEGIN; -INSERT INTO `sys_dict` VALUES (1, 'user_status', '用户状态', NULL, NULL, '2019-10-27 20:31:36', NULL); -INSERT INTO `sys_dict` VALUES (4, 'dept_status', '部门状态', NULL, NULL, '2019-10-27 20:31:36', NULL); -INSERT INTO `sys_dict` VALUES (5, 'job_status', '岗位状态', NULL, NULL, '2019-10-27 20:31:36', NULL); +INSERT INTO `sys_dict` (`dict_id`, `name`, `description`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (1, 'user_status', '用户状态', NULL, NULL, '2019-10-27 20:31:36', NULL); +INSERT INTO `sys_dict` (`dict_id`, `name`, `description`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (4, 'dept_status', '部门状态', NULL, NULL, '2019-10-27 20:31:36', NULL); +INSERT INTO `sys_dict` (`dict_id`, `name`, `description`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (5, 'job_status', '岗位状态', NULL, 'admin', '2019-10-27 20:31:36', '2025-01-14 15:48:29'); COMMIT; -- ---------------------------- @@ -257,19 +276,19 @@ CREATE TABLE `sys_dict_detail` ( `create_time` datetime DEFAULT NULL COMMENT '创建日期', `update_time` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`detail_id`) USING BTREE, - KEY `FK5tpkputc6d9nboxojdbgnpmyb` (`dict_id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=7 ROW_FORMAT=COMPACT COMMENT='数据字典详情'; + KEY `idx_dict_id` (`dict_id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='数据字典详情'; -- ---------------------------- -- Records of sys_dict_detail -- ---------------------------- BEGIN; -INSERT INTO `sys_dict_detail` VALUES (1, 1, '激活', 'true', 1, NULL, NULL, '2019-10-27 20:31:36', NULL); -INSERT INTO `sys_dict_detail` VALUES (2, 1, '禁用', 'false', 2, NULL, NULL, NULL, NULL); -INSERT INTO `sys_dict_detail` VALUES (3, 4, '启用', 'true', 1, NULL, NULL, NULL, NULL); -INSERT INTO `sys_dict_detail` VALUES (4, 4, '停用', 'false', 2, NULL, NULL, '2019-10-27 20:31:36', NULL); -INSERT INTO `sys_dict_detail` VALUES (5, 5, '启用', 'true', 1, NULL, NULL, NULL, NULL); -INSERT INTO `sys_dict_detail` VALUES (6, 5, '停用', 'false', 2, NULL, NULL, '2019-10-27 20:31:36', NULL); +INSERT INTO `sys_dict_detail` (`detail_id`, `dict_id`, `label`, `value`, `dict_sort`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (1, 1, '激活', 'true', 1, NULL, NULL, '2019-10-27 20:31:36', NULL); +INSERT INTO `sys_dict_detail` (`detail_id`, `dict_id`, `label`, `value`, `dict_sort`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (2, 1, '禁用', 'false', 2, NULL, NULL, NULL, NULL); +INSERT INTO `sys_dict_detail` (`detail_id`, `dict_id`, `label`, `value`, `dict_sort`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (3, 4, '启用', 'true', 1, NULL, NULL, NULL, NULL); +INSERT INTO `sys_dict_detail` (`detail_id`, `dict_id`, `label`, `value`, `dict_sort`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (4, 4, '停用', 'false', 2, NULL, NULL, '2019-10-27 20:31:36', NULL); +INSERT INTO `sys_dict_detail` (`detail_id`, `dict_id`, `label`, `value`, `dict_sort`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (5, 5, '启用', 'true', 1, NULL, NULL, NULL, NULL); +INSERT INTO `sys_dict_detail` (`detail_id`, `dict_id`, `label`, `value`, `dict_sort`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (6, 5, '停用', 'false', 2, NULL, NULL, '2019-10-27 20:31:36', NULL); COMMIT; -- ---------------------------- @@ -287,17 +306,17 @@ CREATE TABLE `sys_job` ( `update_time` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`job_id`) USING BTREE, UNIQUE KEY `uniq_name` (`name`), - KEY `inx_enabled` (`enabled`) -) ENGINE=InnoDB AUTO_INCREMENT=13 ROW_FORMAT=COMPACT COMMENT='岗位'; + KEY `idx_enabled` (`enabled`) +) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='岗位'; -- ---------------------------- -- Records of sys_job -- ---------------------------- BEGIN; -INSERT INTO `sys_job` VALUES (8, '人事专员', b'1', 3, NULL, NULL, '2019-03-29 14:52:28', NULL); -INSERT INTO `sys_job` VALUES (10, '产品经理', b'1', 4, NULL, NULL, '2019-03-29 14:55:51', NULL); -INSERT INTO `sys_job` VALUES (11, '全栈开发', b'1', 2, NULL, 'admin', '2019-03-31 13:39:30', '2020-05-05 11:33:43'); -INSERT INTO `sys_job` VALUES (12, '软件测试', b'1', 5, NULL, 'admin', '2019-03-31 13:39:43', '2020-05-10 19:56:26'); +INSERT INTO `sys_job` (`job_id`, `name`, `enabled`, `job_sort`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (8, '人事专员', b'1', 3, NULL, NULL, '2019-03-29 14:52:28', NULL); +INSERT INTO `sys_job` (`job_id`, `name`, `enabled`, `job_sort`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (10, '产品经理', b'1', 4, NULL, NULL, '2019-03-29 14:55:51', NULL); +INSERT INTO `sys_job` (`job_id`, `name`, `enabled`, `job_sort`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (11, '全栈开发', b'1', 2, NULL, 'admin', '2019-03-31 13:39:30', '2020-05-05 11:33:43'); +INSERT INTO `sys_job` (`job_id`, `name`, `enabled`, `job_sort`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (12, '软件测试', b'1', 5, NULL, 'admin', '2019-03-31 13:39:43', '2020-05-10 19:56:26'); COMMIT; -- ---------------------------- @@ -306,21 +325,27 @@ COMMIT; DROP TABLE IF EXISTS `sys_log`; CREATE TABLE `sys_log` ( `log_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', - `description` varchar(255) DEFAULT NULL, - `log_type` varchar(10) DEFAULT NULL, - `method` varchar(255) DEFAULT NULL, - `params` text DEFAULT NULL, - `request_ip` varchar(255) DEFAULT NULL, - `time` bigint(20) DEFAULT NULL, - `username` varchar(255) DEFAULT NULL, - `address` varchar(255) DEFAULT NULL, - `browser` varchar(255) DEFAULT NULL, - `exception_detail` text DEFAULT NULL, - `create_time` datetime DEFAULT NULL, + `description` varchar(255) DEFAULT NULL COMMENT '描述', + `log_type` varchar(10) NOT NULL COMMENT '日志类型:INFI/ERROR', + `method` varchar(255) DEFAULT NULL COMMENT '方法名', + `params` text DEFAULT NULL COMMENT '参数', + `request_ip` varchar(255) DEFAULT NULL COMMENT '请求IP', + `time` bigint(20) DEFAULT NULL COMMENT '执行时间', + `username` varchar(255) DEFAULT NULL COMMENT '用户名', + `address` varchar(255) DEFAULT NULL COMMENT '地址', + `browser` varchar(255) DEFAULT NULL COMMENT '浏览器', + `exception_detail` text DEFAULT NULL COMMENT '异常', + `create_time` datetime NOT NULL COMMENT '创建时间', PRIMARY KEY (`log_id`) USING BTREE, - KEY `log_create_time_index` (`create_time`), - KEY `inx_log_type` (`log_type`) -) ENGINE=InnoDB AUTO_INCREMENT=3537 ROW_FORMAT=COMPACT COMMENT='系统日志'; + KEY `idx_create_time_index` (`create_time`), + KEY `idx_log_type` (`log_type`) +) ENGINE=InnoDB AUTO_INCREMENT=3636 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='系统日志'; + +-- ---------------------------- +-- Records of sys_log +-- ---------------------------- +BEGIN; +COMMIT; -- ---------------------------- -- Table structure for sys_menu @@ -346,91 +371,87 @@ CREATE TABLE `sys_menu` ( `create_time` datetime DEFAULT NULL COMMENT '创建日期', `update_time` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`menu_id`) USING BTREE, - UNIQUE KEY `uniq_title` (`title`), UNIQUE KEY `uniq_name` (`name`), - KEY `inx_pid` (`pid`) -) ENGINE=InnoDB AUTO_INCREMENT=118 ROW_FORMAT=COMPACT COMMENT='系统菜单'; + UNIQUE KEY `uniq_title` (`title`), + KEY `idx_pid` (`pid`) +) ENGINE=InnoDB AUTO_INCREMENT=117 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='系统菜单'; -- ---------------------------- -- Records of sys_menu -- ---------------------------- BEGIN; -INSERT INTO `sys_menu` VALUES (1, NULL, 7, 0, '系统管理', NULL, NULL, 1, 'system', 'system', b'0', b'0', b'0', NULL, NULL, NULL, '2018-12-18 15:11:29', NULL); -INSERT INTO `sys_menu` VALUES (2, 1, 3, 1, '用户管理', 'User', 'system/user/index', 2, 'peoples', 'user', b'0', b'0', b'0', 'user:list', NULL, NULL, '2018-12-18 15:14:44', NULL); -INSERT INTO `sys_menu` VALUES (3, 1, 3, 1, '角色管理', 'Role', 'system/role/index', 3, 'role', 'role', b'0', b'0', b'0', 'roles:list', NULL, NULL, '2018-12-18 15:16:07', NULL); -INSERT INTO `sys_menu` VALUES (5, 1, 3, 1, '菜单管理', 'Menu', 'system/menu/index', 5, 'menu', 'menu', b'0', b'0', b'0', 'menu:list', NULL, NULL, '2018-12-18 15:17:28', NULL); -INSERT INTO `sys_menu` VALUES (6, NULL, 5, 0, '系统监控', NULL, NULL, 10, 'monitor', 'monitor', b'0', b'0', b'0', NULL, NULL, NULL, '2018-12-18 15:17:48', NULL); -INSERT INTO `sys_menu` VALUES (7, 6, 0, 1, '操作日志', 'Log', 'monitor/log/index', 11, 'log', 'logs', b'0', b'1', b'0', NULL, NULL, 'admin', '2018-12-18 15:18:26', '2020-06-06 13:11:57'); -INSERT INTO `sys_menu` VALUES (9, 6, 0, 1, 'SQL监控', 'Sql', 'monitor/sql/index', 18, 'sqlMonitor', 'druid', b'0', b'0', b'0', NULL, NULL, NULL, '2018-12-18 15:19:34', NULL); -INSERT INTO `sys_menu` VALUES (10, NULL, 5, 0, '组件管理', NULL, NULL, 50, 'zujian', 'components', b'0', b'0', b'0', NULL, NULL, NULL, '2018-12-19 13:38:16', NULL); -INSERT INTO `sys_menu` VALUES (11, 10, 0, 1, '图标库', 'Icons', 'components/icons/index', 51, 'icon', 'icon', b'0', b'0', b'0', NULL, NULL, NULL, '2018-12-19 13:38:49', NULL); -INSERT INTO `sys_menu` VALUES (14, 36, 0, 1, '邮件工具', 'Email', 'tools/email/index', 35, 'email', 'email', b'0', b'0', b'0', NULL, NULL, NULL, '2018-12-27 10:13:09', NULL); -INSERT INTO `sys_menu` VALUES (15, 10, 0, 1, '富文本', 'Editor', 'components/Editor', 52, 'fwb', 'tinymce', b'0', b'0', b'0', NULL, NULL, NULL, '2018-12-27 11:58:25', NULL); -INSERT INTO `sys_menu` VALUES (18, 36, 3, 1, '存储管理', 'Storage', 'tools/storage/index', 34, 'qiniu', 'storage', b'0', b'0', b'0', 'storage:list', NULL, NULL, '2018-12-31 11:12:15', NULL); -INSERT INTO `sys_menu` VALUES (19, 36, 0, 1, '支付宝工具', 'AliPay', 'tools/aliPay/index', 37, 'alipay', 'aliPay', b'0', b'0', b'0', NULL, NULL, NULL, '2018-12-31 14:52:38', NULL); -INSERT INTO `sys_menu` VALUES (21, NULL, 2, 0, '多级菜单', NULL, '', 900, 'menu', 'nested', b'0', b'0', b'0', NULL, NULL, 'admin', '2019-01-04 16:22:03', '2020-06-21 17:27:35'); -INSERT INTO `sys_menu` VALUES (22, 21, 2, 0, '二级菜单1', NULL, '', 999, 'menu', 'menu1', b'0', b'0', b'0', NULL, NULL, 'admin', '2019-01-04 16:23:29', '2020-06-21 17:27:20'); -INSERT INTO `sys_menu` VALUES (23, 21, 0, 1, '二级菜单2', NULL, 'nested/menu2/index', 999, 'menu', 'menu2', b'0', b'0', b'0', NULL, NULL, NULL, '2019-01-04 16:23:57', NULL); -INSERT INTO `sys_menu` VALUES (24, 22, 0, 1, '三级菜单1', 'Test', 'nested/menu1/menu1-1', 999, 'menu', 'menu1-1', b'0', b'0', b'0', NULL, NULL, NULL, '2019-01-04 16:24:48', NULL); -INSERT INTO `sys_menu` VALUES (27, 22, 0, 1, '三级菜单2', NULL, 'nested/menu1/menu1-2', 999, 'menu', 'menu1-2', b'0', b'0', b'0', NULL, NULL, NULL, '2019-01-07 17:27:32', NULL); -INSERT INTO `sys_menu` VALUES (28, 1, 3, 1, '任务调度', 'Timing', 'system/timing/index', 999, 'timing', 'timing', b'0', b'0', b'0', 'timing:list', NULL, NULL, '2019-01-07 20:34:40', NULL); -INSERT INTO `sys_menu` VALUES (30, 36, 0, 1, '代码生成', 'GeneratorIndex', 'generator/index', 32, 'dev', 'generator', b'0', b'1', b'0', NULL, NULL, NULL, '2019-01-11 15:45:55', NULL); -INSERT INTO `sys_menu` VALUES (32, 6, 0, 1, '异常日志', 'ErrorLog', 'monitor/log/errorLog', 12, 'error', 'errorLog', b'0', b'0', b'0', NULL, NULL, NULL, '2019-01-13 13:49:03', NULL); -INSERT INTO `sys_menu` VALUES (33, 10, 0, 1, 'Markdown', 'Markdown', 'components/MarkDown', 53, 'markdown', 'markdown', b'0', b'0', b'0', NULL, NULL, NULL, '2019-03-08 13:46:44', NULL); -INSERT INTO `sys_menu` VALUES (34, 10, 0, 1, 'Yaml编辑器', 'YamlEdit', 'components/YamlEdit', 54, 'dev', 'yaml', b'0', b'0', b'0', NULL, NULL, NULL, '2019-03-08 15:49:40', NULL); -INSERT INTO `sys_menu` VALUES (35, 1, 3, 1, '部门管理', 'Dept', 'system/dept/index', 6, 'dept', 'dept', b'0', b'0', b'0', 'dept:list', NULL, NULL, '2019-03-25 09:46:00', NULL); -INSERT INTO `sys_menu` VALUES (36, NULL, 7, 0, '系统工具', NULL, '', 30, 'sys-tools', 'sys-tools', b'0', b'0', b'0', NULL, NULL, NULL, '2019-03-29 10:57:35', NULL); -INSERT INTO `sys_menu` VALUES (37, 1, 3, 1, '岗位管理', 'Job', 'system/job/index', 7, 'Steve-Jobs', 'job', b'0', b'0', b'0', 'job:list', NULL, NULL, '2019-03-29 13:51:18', NULL); -INSERT INTO `sys_menu` VALUES (38, 36, 0, 1, '接口文档', 'Swagger', 'tools/swagger/index', 36, 'swagger', 'swagger2', b'0', b'0', b'0', NULL, NULL, NULL, '2019-03-29 19:57:53', NULL); -INSERT INTO `sys_menu` VALUES (39, 1, 3, 1, '字典管理', 'Dict', 'system/dict/index', 8, 'dictionary', 'dict', b'0', b'0', b'0', 'dict:list', NULL, NULL, '2019-04-10 11:49:04', NULL); -INSERT INTO `sys_menu` VALUES (41, 6, 0, 1, '在线用户', 'OnlineUser', 'monitor/online/index', 10, 'Steve-Jobs', 'online', b'0', b'0', b'0', NULL, NULL, NULL, '2019-10-26 22:08:43', NULL); -INSERT INTO `sys_menu` VALUES (44, 2, 0, 2, '用户新增', NULL, '', 2, '', '', b'0', b'0', b'0', 'user:add', NULL, NULL, '2019-10-29 10:59:46', NULL); -INSERT INTO `sys_menu` VALUES (45, 2, 0, 2, '用户编辑', NULL, '', 3, '', '', b'0', b'0', b'0', 'user:edit', NULL, NULL, '2019-10-29 11:00:08', NULL); -INSERT INTO `sys_menu` VALUES (46, 2, 0, 2, '用户删除', NULL, '', 4, '', '', b'0', b'0', b'0', 'user:del', NULL, NULL, '2019-10-29 11:00:23', NULL); -INSERT INTO `sys_menu` VALUES (48, 3, 0, 2, '角色创建', NULL, '', 2, '', '', b'0', b'0', b'0', 'roles:add', NULL, NULL, '2019-10-29 12:45:34', NULL); -INSERT INTO `sys_menu` VALUES (49, 3, 0, 2, '角色修改', NULL, '', 3, '', '', b'0', b'0', b'0', 'roles:edit', NULL, NULL, '2019-10-29 12:46:16', NULL); -INSERT INTO `sys_menu` VALUES (50, 3, 0, 2, '角色删除', NULL, '', 4, '', '', b'0', b'0', b'0', 'roles:del', NULL, NULL, '2019-10-29 12:46:51', NULL); -INSERT INTO `sys_menu` VALUES (52, 5, 0, 2, '菜单新增', NULL, '', 2, '', '', b'0', b'0', b'0', 'menu:add', NULL, NULL, '2019-10-29 12:55:07', NULL); -INSERT INTO `sys_menu` VALUES (53, 5, 0, 2, '菜单编辑', NULL, '', 3, '', '', b'0', b'0', b'0', 'menu:edit', NULL, NULL, '2019-10-29 12:55:40', NULL); -INSERT INTO `sys_menu` VALUES (54, 5, 0, 2, '菜单删除', NULL, '', 4, '', '', b'0', b'0', b'0', 'menu:del', NULL, NULL, '2019-10-29 12:56:00', NULL); -INSERT INTO `sys_menu` VALUES (56, 35, 0, 2, '部门新增', NULL, '', 2, '', '', b'0', b'0', b'0', 'dept:add', NULL, NULL, '2019-10-29 12:57:09', NULL); -INSERT INTO `sys_menu` VALUES (57, 35, 0, 2, '部门编辑', NULL, '', 3, '', '', b'0', b'0', b'0', 'dept:edit', NULL, NULL, '2019-10-29 12:57:27', NULL); -INSERT INTO `sys_menu` VALUES (58, 35, 0, 2, '部门删除', NULL, '', 4, '', '', b'0', b'0', b'0', 'dept:del', NULL, NULL, '2019-10-29 12:57:41', NULL); -INSERT INTO `sys_menu` VALUES (60, 37, 0, 2, '岗位新增', NULL, '', 2, '', '', b'0', b'0', b'0', 'job:add', NULL, NULL, '2019-10-29 12:58:27', NULL); -INSERT INTO `sys_menu` VALUES (61, 37, 0, 2, '岗位编辑', NULL, '', 3, '', '', b'0', b'0', b'0', 'job:edit', NULL, NULL, '2019-10-29 12:58:45', NULL); -INSERT INTO `sys_menu` VALUES (62, 37, 0, 2, '岗位删除', NULL, '', 4, '', '', b'0', b'0', b'0', 'job:del', NULL, NULL, '2019-10-29 12:59:04', NULL); -INSERT INTO `sys_menu` VALUES (64, 39, 0, 2, '字典新增', NULL, '', 2, '', '', b'0', b'0', b'0', 'dict:add', NULL, NULL, '2019-10-29 13:00:17', NULL); -INSERT INTO `sys_menu` VALUES (65, 39, 0, 2, '字典编辑', NULL, '', 3, '', '', b'0', b'0', b'0', 'dict:edit', NULL, NULL, '2019-10-29 13:00:42', NULL); -INSERT INTO `sys_menu` VALUES (66, 39, 0, 2, '字典删除', NULL, '', 4, '', '', b'0', b'0', b'0', 'dict:del', NULL, NULL, '2019-10-29 13:00:59', NULL); -INSERT INTO `sys_menu` VALUES (73, 28, 0, 2, '任务新增', NULL, '', 2, '', '', b'0', b'0', b'0', 'timing:add', NULL, NULL, '2019-10-29 13:07:28', NULL); -INSERT INTO `sys_menu` VALUES (74, 28, 0, 2, '任务编辑', NULL, '', 3, '', '', b'0', b'0', b'0', 'timing:edit', NULL, NULL, '2019-10-29 13:07:41', NULL); -INSERT INTO `sys_menu` VALUES (75, 28, 0, 2, '任务删除', NULL, '', 4, '', '', b'0', b'0', b'0', 'timing:del', NULL, NULL, '2019-10-29 13:07:54', NULL); -INSERT INTO `sys_menu` VALUES (77, 18, 0, 2, '上传文件', NULL, '', 2, '', '', b'0', b'0', b'0', 'storage:add', NULL, NULL, '2019-10-29 13:09:09', NULL); -INSERT INTO `sys_menu` VALUES (78, 18, 0, 2, '文件编辑', NULL, '', 3, '', '', b'0', b'0', b'0', 'storage:edit', NULL, NULL, '2019-10-29 13:09:22', NULL); -INSERT INTO `sys_menu` VALUES (79, 18, 0, 2, '文件删除', NULL, '', 4, '', '', b'0', b'0', b'0', 'storage:del', NULL, NULL, '2019-10-29 13:09:34', NULL); -INSERT INTO `sys_menu` VALUES (80, 6, 0, 1, '服务监控', 'ServerMonitor', 'monitor/server/index', 14, 'codeConsole', 'server', b'0', b'0', b'0', 'monitor:list', NULL, 'admin', '2019-11-07 13:06:39', '2020-05-04 18:20:50'); -INSERT INTO `sys_menu` VALUES (82, 36, 0, 1, '生成配置', 'GeneratorConfig', 'generator/config', 33, 'dev', 'generator/config/:tableName', b'0', b'1', b'1', '', NULL, NULL, '2019-11-17 20:08:56', NULL); -INSERT INTO `sys_menu` VALUES (83, 10, 0, 1, '图表库', 'Echarts', 'components/Echarts', 50, 'chart', 'echarts', b'0', b'1', b'0', '', NULL, NULL, '2019-11-21 09:04:32', NULL); -INSERT INTO `sys_menu` VALUES (90, NULL, 5, 1, '运维管理', 'Mnt', '', 20, 'mnt', 'mnt', b'0', b'0', b'0', NULL, NULL, NULL, '2019-11-09 10:31:08', NULL); -INSERT INTO `sys_menu` VALUES (92, 90, 3, 1, '服务器', 'ServerDeploy', 'maint/server/index', 22, 'server', 'maint/serverDeploy', b'0', b'0', b'0', 'serverDeploy:list', NULL, NULL, '2019-11-10 10:29:25', NULL); -INSERT INTO `sys_menu` VALUES (93, 90, 3, 1, '应用管理', 'App', 'maint/app/index', 23, 'app', 'maint/app', b'0', b'0', b'0', 'app:list', NULL, NULL, '2019-11-10 11:05:16', NULL); -INSERT INTO `sys_menu` VALUES (94, 90, 3, 1, '部署管理', 'Deploy', 'maint/deploy/index', 24, 'deploy', 'maint/deploy', b'0', b'0', b'0', 'deploy:list', NULL, NULL, '2019-11-10 15:56:55', NULL); -INSERT INTO `sys_menu` VALUES (97, 90, 1, 1, '部署备份', 'DeployHistory', 'maint/deployHistory/index', 25, 'backup', 'maint/deployHistory', b'0', b'0', b'0', 'deployHistory:list', NULL, NULL, '2019-11-10 16:49:44', NULL); -INSERT INTO `sys_menu` VALUES (98, 90, 3, 1, '数据库管理', 'Database', 'maint/database/index', 26, 'database', 'maint/database', b'0', b'0', b'0', 'database:list', NULL, NULL, '2019-11-10 20:40:04', NULL); -INSERT INTO `sys_menu` VALUES (102, 97, 0, 2, '删除', NULL, '', 999, '', '', b'0', b'0', b'0', 'deployHistory:del', NULL, NULL, '2019-11-17 09:32:48', NULL); -INSERT INTO `sys_menu` VALUES (103, 92, 0, 2, '服务器新增', NULL, '', 999, '', '', b'0', b'0', b'0', 'serverDeploy:add', NULL, NULL, '2019-11-17 11:08:33', NULL); -INSERT INTO `sys_menu` VALUES (104, 92, 0, 2, '服务器编辑', NULL, '', 999, '', '', b'0', b'0', b'0', 'serverDeploy:edit', NULL, NULL, '2019-11-17 11:08:57', NULL); -INSERT INTO `sys_menu` VALUES (105, 92, 0, 2, '服务器删除', NULL, '', 999, '', '', b'0', b'0', b'0', 'serverDeploy:del', NULL, NULL, '2019-11-17 11:09:15', NULL); -INSERT INTO `sys_menu` VALUES (106, 93, 0, 2, '应用新增', NULL, '', 999, '', '', b'0', b'0', b'0', 'app:add', NULL, NULL, '2019-11-17 11:10:03', NULL); -INSERT INTO `sys_menu` VALUES (107, 93, 0, 2, '应用编辑', NULL, '', 999, '', '', b'0', b'0', b'0', 'app:edit', NULL, NULL, '2019-11-17 11:10:28', NULL); -INSERT INTO `sys_menu` VALUES (108, 93, 0, 2, '应用删除', NULL, '', 999, '', '', b'0', b'0', b'0', 'app:del', NULL, NULL, '2019-11-17 11:10:55', NULL); -INSERT INTO `sys_menu` VALUES (109, 94, 0, 2, '部署新增', NULL, '', 999, '', '', b'0', b'0', b'0', 'deploy:add', NULL, NULL, '2019-11-17 11:11:22', NULL); -INSERT INTO `sys_menu` VALUES (110, 94, 0, 2, '部署编辑', NULL, '', 999, '', '', b'0', b'0', b'0', 'deploy:edit', NULL, NULL, '2019-11-17 11:11:41', NULL); -INSERT INTO `sys_menu` VALUES (111, 94, 0, 2, '部署删除', NULL, '', 999, '', '', b'0', b'0', b'0', 'deploy:del', NULL, NULL, '2019-11-17 11:12:01', NULL); -INSERT INTO `sys_menu` VALUES (112, 98, 0, 2, '数据库新增', NULL, '', 999, '', '', b'0', b'0', b'0', 'database:add', NULL, NULL, '2019-11-17 11:12:43', NULL); -INSERT INTO `sys_menu` VALUES (113, 98, 0, 2, '数据库编辑', NULL, '', 999, '', '', b'0', b'0', b'0', 'database:edit', NULL, NULL, '2019-11-17 11:12:58', NULL); -INSERT INTO `sys_menu` VALUES (114, 98, 0, 2, '数据库删除', NULL, '', 999, '', '', b'0', b'0', b'0', 'database:del', NULL, NULL, '2019-11-17 11:13:14', NULL); -INSERT INTO `sys_menu` VALUES (116, 36, 0, 1, '生成预览', 'Preview', 'generator/preview', 999, 'java', 'generator/preview/:tableName', b'0', b'1', b'1', NULL, NULL, NULL, '2019-11-26 14:54:36', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (1, NULL, 7, 0, '系统管理', NULL, NULL, 1, 'system', 'system', b'0', b'0', b'0', NULL, NULL, 'admin', '2018-12-18 15:11:29', '2025-01-14 15:48:18'); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (2, 1, 3, 1, '用户管理', 'User', 'system/user/index', 2, 'peoples', 'user', b'0', b'0', b'0', 'user:list', NULL, NULL, '2018-12-18 15:14:44', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (3, 1, 3, 1, '角色管理', 'Role', 'system/role/index', 3, 'role', 'role', b'0', b'0', b'0', 'roles:list', NULL, NULL, '2018-12-18 15:16:07', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (5, 1, 3, 1, '菜单管理', 'Menu', 'system/menu/index', 5, 'menu', 'menu', b'0', b'0', b'0', 'menu:list', NULL, NULL, '2018-12-18 15:17:28', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (6, NULL, 5, 0, '系统监控', NULL, NULL, 10, 'monitor', 'monitor', b'0', b'0', b'0', NULL, NULL, NULL, '2018-12-18 15:17:48', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (7, 6, 0, 1, '操作日志', 'Log', 'monitor/log/index', 11, 'log', 'logs', b'0', b'1', b'0', NULL, NULL, 'admin', '2018-12-18 15:18:26', '2020-06-06 13:11:57'); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (9, 6, 0, 1, 'SQL监控', 'Sql', 'monitor/sql/index', 18, 'sqlMonitor', 'druid', b'0', b'0', b'0', NULL, NULL, NULL, '2018-12-18 15:19:34', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (10, NULL, 5, 0, '组件管理', NULL, NULL, 50, 'zujian', 'components', b'0', b'0', b'0', NULL, NULL, NULL, '2018-12-19 13:38:16', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (11, 10, 0, 1, '图标库', 'Icons', 'components/icons/index', 51, 'icon', 'icon', b'0', b'0', b'0', NULL, NULL, NULL, '2018-12-19 13:38:49', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (14, 36, 0, 1, '邮件工具', 'Email', 'tools/email/index', 35, 'email', 'email', b'0', b'0', b'0', NULL, NULL, NULL, '2018-12-27 10:13:09', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (15, 10, 0, 1, '富文本', 'Editor', 'components/Editor', 52, 'fwb', 'tinymce', b'0', b'0', b'0', NULL, NULL, NULL, '2018-12-27 11:58:25', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (18, 36, 3, 1, '存储管理', 'Storage', 'tools/storage/index', 34, 'qiniu', 'storage', b'0', b'0', b'0', 'storage:list', NULL, NULL, '2018-12-31 11:12:15', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (19, 36, 0, 1, '支付宝工具', 'AliPay', 'tools/aliPay/index', 37, 'alipay', 'aliPay', b'0', b'0', b'0', NULL, NULL, NULL, '2018-12-31 14:52:38', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (21, NULL, 2, 0, '多级菜单', NULL, '', 900, 'menu', 'nested', b'0', b'0', b'0', NULL, NULL, 'admin', '2019-01-04 16:22:03', '2020-06-21 17:27:35'); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (22, 21, 2, 0, '二级菜单1', NULL, '', 999, 'menu', 'menu1', b'0', b'0', b'0', NULL, NULL, 'admin', '2019-01-04 16:23:29', '2020-06-21 17:27:20'); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (23, 21, 0, 1, '二级菜单2', NULL, 'nested/menu2/index', 999, 'menu', 'menu2', b'0', b'0', b'0', NULL, NULL, NULL, '2019-01-04 16:23:57', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (24, 22, 0, 1, '三级菜单1', 'Test', 'nested/menu1/menu1-1', 999, 'menu', 'menu1-1', b'0', b'0', b'0', NULL, NULL, NULL, '2019-01-04 16:24:48', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (27, 22, 0, 1, '三级菜单2', NULL, 'nested/menu1/menu1-2', 999, 'menu', 'menu1-2', b'0', b'0', b'0', NULL, NULL, NULL, '2019-01-07 17:27:32', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (28, 1, 3, 1, '任务调度', 'Timing', 'system/timing/index', 999, 'timing', 'timing', b'0', b'0', b'0', 'timing:list', NULL, NULL, '2019-01-07 20:34:40', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (30, 36, 0, 1, '代码生成', 'GeneratorIndex', 'generator/index', 32, 'dev', 'generator', b'0', b'1', b'0', NULL, NULL, NULL, '2019-01-11 15:45:55', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (32, 6, 0, 1, '异常日志', 'ErrorLog', 'monitor/log/errorLog', 12, 'error', 'errorLog', b'0', b'0', b'0', NULL, NULL, NULL, '2019-01-13 13:49:03', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (33, 10, 0, 1, 'Markdown', 'Markdown', 'components/MarkDown', 53, 'markdown', 'markdown', b'0', b'0', b'0', NULL, NULL, NULL, '2019-03-08 13:46:44', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (34, 10, 0, 1, 'Yaml编辑器', 'YamlEdit', 'components/YamlEdit', 54, 'dev', 'yaml', b'0', b'0', b'0', NULL, NULL, NULL, '2019-03-08 15:49:40', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (35, 1, 3, 1, '部门管理', 'Dept', 'system/dept/index', 6, 'dept', 'dept', b'0', b'0', b'0', 'dept:list', NULL, NULL, '2019-03-25 09:46:00', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (36, NULL, 6, 0, '系统工具', NULL, '', 30, 'sys-tools', 'sys-tools', b'0', b'0', b'0', NULL, NULL, NULL, '2019-03-29 10:57:35', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (37, 1, 3, 1, '岗位管理', 'Job', 'system/job/index', 7, 'Steve-Jobs', 'job', b'0', b'0', b'0', 'job:list', NULL, NULL, '2019-03-29 13:51:18', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (39, 1, 3, 1, '字典管理', 'Dict', 'system/dict/index', 8, 'dictionary', 'dict', b'0', b'0', b'0', 'dict:list', NULL, NULL, '2019-04-10 11:49:04', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (41, 6, 0, 1, '在线用户', 'OnlineUser', 'monitor/online/index', 10, 'Steve-Jobs', 'online', b'0', b'0', b'0', NULL, NULL, NULL, '2019-10-26 22:08:43', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (44, 2, 0, 2, '用户新增', NULL, '', 2, '', '', b'0', b'0', b'0', 'user:add', NULL, NULL, '2019-10-29 10:59:46', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (45, 2, 0, 2, '用户编辑', NULL, '', 3, '', '', b'0', b'0', b'0', 'user:edit', NULL, NULL, '2019-10-29 11:00:08', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (46, 2, 0, 2, '用户删除', NULL, '', 4, '', '', b'0', b'0', b'0', 'user:del', NULL, NULL, '2019-10-29 11:00:23', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (48, 3, 0, 2, '角色创建', NULL, '', 2, '', '', b'0', b'0', b'0', 'roles:add', NULL, NULL, '2019-10-29 12:45:34', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (49, 3, 0, 2, '角色修改', NULL, '', 3, '', '', b'0', b'0', b'0', 'roles:edit', NULL, NULL, '2019-10-29 12:46:16', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (50, 3, 0, 2, '角色删除', NULL, '', 4, '', '', b'0', b'0', b'0', 'roles:del', NULL, NULL, '2019-10-29 12:46:51', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (52, 5, 0, 2, '菜单新增', NULL, '', 2, '', '', b'0', b'0', b'0', 'menu:add', NULL, NULL, '2019-10-29 12:55:07', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (53, 5, 0, 2, '菜单编辑', NULL, '', 3, '', '', b'0', b'0', b'0', 'menu:edit', NULL, NULL, '2019-10-29 12:55:40', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (54, 5, 0, 2, '菜单删除', NULL, '', 4, '', '', b'0', b'0', b'0', 'menu:del', NULL, NULL, '2019-10-29 12:56:00', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (56, 35, 0, 2, '部门新增', NULL, '', 2, '', '', b'0', b'0', b'0', 'dept:add', NULL, NULL, '2019-10-29 12:57:09', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (57, 35, 0, 2, '部门编辑', NULL, '', 3, '', '', b'0', b'0', b'0', 'dept:edit', NULL, NULL, '2019-10-29 12:57:27', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (58, 35, 0, 2, '部门删除', NULL, '', 4, '', '', b'0', b'0', b'0', 'dept:del', NULL, NULL, '2019-10-29 12:57:41', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (60, 37, 0, 2, '岗位新增', NULL, '', 2, '', '', b'0', b'0', b'0', 'job:add', NULL, NULL, '2019-10-29 12:58:27', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (61, 37, 0, 2, '岗位编辑', NULL, '', 3, '', '', b'0', b'0', b'0', 'job:edit', NULL, NULL, '2019-10-29 12:58:45', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (62, 37, 0, 2, '岗位删除', NULL, '', 4, '', '', b'0', b'0', b'0', 'job:del', NULL, NULL, '2019-10-29 12:59:04', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (64, 39, 0, 2, '字典新增', NULL, '', 2, '', '', b'0', b'0', b'0', 'dict:add', NULL, NULL, '2019-10-29 13:00:17', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (65, 39, 0, 2, '字典编辑', NULL, '', 3, '', '', b'0', b'0', b'0', 'dict:edit', NULL, NULL, '2019-10-29 13:00:42', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (66, 39, 0, 2, '字典删除', NULL, '', 4, '', '', b'0', b'0', b'0', 'dict:del', NULL, NULL, '2019-10-29 13:00:59', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (73, 28, 0, 2, '任务新增', NULL, '', 2, '', '', b'0', b'0', b'0', 'timing:add', NULL, NULL, '2019-10-29 13:07:28', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (74, 28, 0, 2, '任务编辑', NULL, '', 3, '', '', b'0', b'0', b'0', 'timing:edit', NULL, NULL, '2019-10-29 13:07:41', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (75, 28, 0, 2, '任务删除', NULL, '', 4, '', '', b'0', b'0', b'0', 'timing:del', NULL, NULL, '2019-10-29 13:07:54', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (77, 18, 0, 2, '上传文件', NULL, '', 2, '', '', b'0', b'0', b'0', 'storage:add', NULL, NULL, '2019-10-29 13:09:09', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (78, 18, 0, 2, '文件编辑', NULL, '', 3, '', '', b'0', b'0', b'0', 'storage:edit', NULL, NULL, '2019-10-29 13:09:22', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (79, 18, 0, 2, '文件删除', NULL, '', 4, '', '', b'0', b'0', b'0', 'storage:del', NULL, NULL, '2019-10-29 13:09:34', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (80, 6, 0, 1, '服务监控', 'ServerMonitor', 'monitor/server/index', 14, 'codeConsole', 'server', b'0', b'0', b'0', 'monitor:list', NULL, 'admin', '2019-11-07 13:06:39', '2020-05-04 18:20:50'); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (82, 36, 0, 1, '生成配置', 'GeneratorConfig', 'generator/config', 33, 'dev', 'generator/config/:tableName', b'0', b'1', b'1', '', NULL, NULL, '2019-11-17 20:08:56', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (83, 10, 0, 1, '图表库', 'Echarts', 'components/Echarts', 50, 'chart', 'echarts', b'0', b'1', b'0', '', NULL, NULL, '2019-11-21 09:04:32', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (90, NULL, 5, 1, '运维管理', 'Mnt', '', 20, 'mnt', 'mnt', b'0', b'0', b'0', NULL, NULL, NULL, '2019-11-09 10:31:08', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (92, 90, 3, 1, '服务器', 'ServerDeploy', 'maint/server/index', 22, 'server', 'maint/serverDeploy', b'0', b'0', b'0', 'serverDeploy:list', NULL, NULL, '2019-11-10 10:29:25', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (93, 90, 3, 1, '应用管理', 'App', 'maint/app/index', 23, 'app', 'maint/app', b'0', b'0', b'0', 'app:list', NULL, NULL, '2019-11-10 11:05:16', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (94, 90, 3, 1, '部署管理', 'Deploy', 'maint/deploy/index', 24, 'deploy', 'maint/deploy', b'0', b'0', b'0', 'deploy:list', NULL, NULL, '2019-11-10 15:56:55', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (97, 90, 1, 1, '部署备份', 'DeployHistory', 'maint/deployHistory/index', 25, 'backup', 'maint/deployHistory', b'0', b'0', b'0', 'deployHistory:list', NULL, NULL, '2019-11-10 16:49:44', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (98, 90, 3, 1, '数据库管理', 'Database', 'maint/database/index', 26, 'database', 'maint/database', b'0', b'0', b'0', 'database:list', NULL, NULL, '2019-11-10 20:40:04', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (102, 97, 0, 2, '删除', NULL, '', 999, '', '', b'0', b'0', b'0', 'deployHistory:del', NULL, NULL, '2019-11-17 09:32:48', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (103, 92, 0, 2, '服务器新增', NULL, '', 999, '', '', b'0', b'0', b'0', 'serverDeploy:add', NULL, NULL, '2019-11-17 11:08:33', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (104, 92, 0, 2, '服务器编辑', NULL, '', 999, '', '', b'0', b'0', b'0', 'serverDeploy:edit', NULL, NULL, '2019-11-17 11:08:57', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (105, 92, 0, 2, '服务器删除', NULL, '', 999, '', '', b'0', b'0', b'0', 'serverDeploy:del', NULL, NULL, '2019-11-17 11:09:15', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (106, 93, 0, 2, '应用新增', NULL, '', 999, '', '', b'0', b'0', b'0', 'app:add', NULL, NULL, '2019-11-17 11:10:03', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (107, 93, 0, 2, '应用编辑', NULL, '', 999, '', '', b'0', b'0', b'0', 'app:edit', NULL, NULL, '2019-11-17 11:10:28', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (108, 93, 0, 2, '应用删除', NULL, '', 999, '', '', b'0', b'0', b'0', 'app:del', NULL, NULL, '2019-11-17 11:10:55', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (109, 94, 0, 2, '部署新增', NULL, '', 999, '', '', b'0', b'0', b'0', 'deploy:add', NULL, NULL, '2019-11-17 11:11:22', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (110, 94, 0, 2, '部署编辑', NULL, '', 999, '', '', b'0', b'0', b'0', 'deploy:edit', NULL, NULL, '2019-11-17 11:11:41', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (111, 94, 0, 2, '部署删除', NULL, '', 999, '', '', b'0', b'0', b'0', 'deploy:del', NULL, NULL, '2019-11-17 11:12:01', NULL); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (116, 36, 0, 1, '生成预览', 'Preview', 'generator/preview', 999, 'java', 'generator/preview/:tableName', b'0', b'1', b'1', NULL, NULL, NULL, '2019-11-26 14:54:36', NULL); COMMIT; -- ---------------------------- @@ -455,17 +476,17 @@ CREATE TABLE `sys_quartz_job` ( `create_time` datetime DEFAULT NULL COMMENT '创建日期', `update_time` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`job_id`) USING BTREE, - KEY `inx_is_pause` (`is_pause`) -) ENGINE=InnoDB AUTO_INCREMENT=7 ROW_FORMAT=COMPACT COMMENT='定时任务'; + KEY `idx_is_pause` (`is_pause`) +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='定时任务'; -- ---------------------------- -- Records of sys_quartz_job -- ---------------------------- BEGIN; -INSERT INTO `sys_quartz_job` VALUES (2, 'testTask', '0/5 * * * * ?', b'1', '测试1', 'run1', 'test', '带参测试,多参使用json', '测试', NULL, NULL, NULL, NULL, 'admin', '2019-08-22 14:08:29', '2020-05-24 13:58:33'); -INSERT INTO `sys_quartz_job` VALUES (3, 'testTask', '0/5 * * * * ?', b'1', '测试', 'run', '', '不带参测试', 'Zheng Jie', '', '5,6', b'1', NULL, 'admin', '2019-09-26 16:44:39', '2020-05-24 14:48:12'); -INSERT INTO `sys_quartz_job` VALUES (5, 'Test', '0/5 * * * * ?', b'1', '任务告警测试', 'run', NULL, '测试', 'test', '', NULL, b'1', 'admin', 'admin', '2020-05-05 20:32:41', '2020-05-05 20:36:13'); -INSERT INTO `sys_quartz_job` VALUES (6, 'testTask', '0/5 * * * * ?', b'1', '测试3', 'run2', NULL, '测试3', 'Zheng Jie', '', NULL, b'1', 'admin', 'admin', '2020-05-05 20:35:41', '2020-05-05 20:36:07'); +INSERT INTO `sys_quartz_job` (`job_id`, `bean_name`, `cron_expression`, `is_pause`, `job_name`, `method_name`, `params`, `description`, `person_in_charge`, `email`, `sub_task`, `pause_after_failure`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (2, 'testTask', '0/5 * * * * ?', b'1', '测试1', 'run1', 'test', '带参测试,多参使用json', '测试', NULL, NULL, NULL, NULL, 'admin', '2019-08-22 14:08:29', '2020-05-24 13:58:33'); +INSERT INTO `sys_quartz_job` (`job_id`, `bean_name`, `cron_expression`, `is_pause`, `job_name`, `method_name`, `params`, `description`, `person_in_charge`, `email`, `sub_task`, `pause_after_failure`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (3, 'testTask', '0/5 * * * * ?', b'1', '测试', 'run', '', '不带参测试', 'Zheng Jie', '', '6', b'1', NULL, 'admin', '2019-09-26 16:44:39', '2020-05-24 14:48:12'); +INSERT INTO `sys_quartz_job` (`job_id`, `bean_name`, `cron_expression`, `is_pause`, `job_name`, `method_name`, `params`, `description`, `person_in_charge`, `email`, `sub_task`, `pause_after_failure`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (5, 'Test', '0/5 * * * * ?', b'1', '任务告警测试', 'run', NULL, '测试', 'test', '', NULL, b'1', 'admin', 'admin', '2020-05-05 20:32:41', '2020-05-05 20:36:13'); +INSERT INTO `sys_quartz_job` (`job_id`, `bean_name`, `cron_expression`, `is_pause`, `job_name`, `method_name`, `params`, `description`, `person_in_charge`, `email`, `sub_task`, `pause_after_failure`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (6, 'testTask', '0/5 * * * * ?', b'1', '测试3', 'run2', NULL, '测试3', 'Zheng Jie', '', NULL, b'1', 'admin', 'admin', '2020-05-05 20:35:41', '2020-05-05 20:36:07'); COMMIT; -- ---------------------------- @@ -474,17 +495,23 @@ COMMIT; DROP TABLE IF EXISTS `sys_quartz_log`; CREATE TABLE `sys_quartz_log` ( `log_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', - `bean_name` varchar(255) DEFAULT NULL, - `create_time` datetime DEFAULT NULL, - `cron_expression` varchar(255) DEFAULT NULL, - `exception_detail` text DEFAULT NULL, - `is_success` bit(1) DEFAULT NULL, - `job_name` varchar(255) DEFAULT NULL, - `method_name` varchar(255) DEFAULT NULL, - `params` varchar(255) DEFAULT NULL, - `time` bigint(20) DEFAULT NULL, + `bean_name` varchar(255) DEFAULT NULL COMMENT 'Bean名称', + `cron_expression` varchar(255) DEFAULT NULL COMMENT 'cron 表达式', + `is_success` bit(1) DEFAULT NULL COMMENT '是否执行成功', + `job_name` varchar(255) DEFAULT NULL COMMENT '任务名称', + `method_name` varchar(255) DEFAULT NULL COMMENT '方法名称', + `params` varchar(255) DEFAULT NULL COMMENT '参数', + `time` bigint(20) DEFAULT NULL COMMENT '执行耗时', + `exception_detail` text DEFAULT NULL COMMENT '异常详情', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`log_id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=151 ROW_FORMAT=COMPACT COMMENT='定时任务日志'; +) ENGINE=InnoDB AUTO_INCREMENT=262 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='定时任务日志'; + +-- ---------------------------- +-- Records of sys_quartz_log +-- ---------------------------- +BEGIN; +COMMIT; -- ---------------------------- -- Table structure for sys_role @@ -502,15 +529,15 @@ CREATE TABLE `sys_role` ( `update_time` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`role_id`) USING BTREE, UNIQUE KEY `uniq_name` (`name`), - KEY `role_name_index` (`name`) -) ENGINE=InnoDB AUTO_INCREMENT=3 ROW_FORMAT=COMPACT COMMENT='角色表'; + KEY `idx_level` (`level`) +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='角色表'; -- ---------------------------- -- Records of sys_role -- ---------------------------- BEGIN; -INSERT INTO `sys_role` VALUES (1, '超级管理员', 1, '-', '全部', NULL, 'admin', '2018-11-23 11:04:37', '2020-08-06 16:10:24'); -INSERT INTO `sys_role` VALUES (2, '普通用户', 2, '-', '本级', NULL, 'admin', '2018-11-23 13:09:06', '2020-09-05 10:45:12'); +INSERT INTO `sys_role` (`role_id`, `name`, `level`, `description`, `data_scope`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (1, '超级管理员', 1, '-', '全部', NULL, 'admin', '2018-11-23 11:04:37', '2020-08-06 16:10:24'); +INSERT INTO `sys_role` (`role_id`, `name`, `level`, `description`, `data_scope`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (2, '普通用户', 2, '-', '本级', NULL, 'admin', '2018-11-23 13:09:06', '2020-09-05 10:45:12'); COMMIT; -- ---------------------------- @@ -518,11 +545,18 @@ COMMIT; -- ---------------------------- DROP TABLE IF EXISTS `sys_roles_depts`; CREATE TABLE `sys_roles_depts` ( - `role_id` bigint(20) NOT NULL, - `dept_id` bigint(20) NOT NULL, + `role_id` bigint(20) NOT NULL COMMENT '角色ID', + `dept_id` bigint(20) NOT NULL COMMENT '部门ID', PRIMARY KEY (`role_id`,`dept_id`) USING BTREE, - KEY `FK7qg6itn5ajdoa9h9o78v9ksur` (`dept_id`) USING BTREE -) ENGINE=InnoDB ROW_FORMAT=COMPACT COMMENT='角色部门关联'; + KEY `idx_role_id` (`role_id`), + KEY `idx_dept_id` (`dept_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='角色部门关联'; + +-- ---------------------------- +-- Records of sys_roles_depts +-- ---------------------------- +BEGIN; +COMMIT; -- ---------------------------- -- Table structure for sys_roles_menus @@ -532,113 +566,110 @@ CREATE TABLE `sys_roles_menus` ( `menu_id` bigint(20) NOT NULL COMMENT '菜单ID', `role_id` bigint(20) NOT NULL COMMENT '角色ID', PRIMARY KEY (`menu_id`,`role_id`) USING BTREE, - KEY `FKcngg2qadojhi3a651a5adkvbq` (`role_id`) USING BTREE -) ENGINE=InnoDB ROW_FORMAT=COMPACT COMMENT='角色菜单关联'; + KEY `idx_menu_id` (`menu_id`), + KEY `idx_role_id` (`role_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='角色菜单关联'; -- ---------------------------- -- Records of sys_roles_menus -- ---------------------------- BEGIN; -INSERT INTO `sys_roles_menus` VALUES (1, 1); -INSERT INTO `sys_roles_menus` VALUES (2, 1); -INSERT INTO `sys_roles_menus` VALUES (3, 1); -INSERT INTO `sys_roles_menus` VALUES (5, 1); -INSERT INTO `sys_roles_menus` VALUES (6, 1); -INSERT INTO `sys_roles_menus` VALUES (7, 1); -INSERT INTO `sys_roles_menus` VALUES (9, 1); -INSERT INTO `sys_roles_menus` VALUES (10, 1); -INSERT INTO `sys_roles_menus` VALUES (11, 1); -INSERT INTO `sys_roles_menus` VALUES (14, 1); -INSERT INTO `sys_roles_menus` VALUES (15, 1); -INSERT INTO `sys_roles_menus` VALUES (18, 1); -INSERT INTO `sys_roles_menus` VALUES (19, 1); -INSERT INTO `sys_roles_menus` VALUES (21, 1); -INSERT INTO `sys_roles_menus` VALUES (22, 1); -INSERT INTO `sys_roles_menus` VALUES (23, 1); -INSERT INTO `sys_roles_menus` VALUES (24, 1); -INSERT INTO `sys_roles_menus` VALUES (27, 1); -INSERT INTO `sys_roles_menus` VALUES (28, 1); -INSERT INTO `sys_roles_menus` VALUES (30, 1); -INSERT INTO `sys_roles_menus` VALUES (32, 1); -INSERT INTO `sys_roles_menus` VALUES (33, 1); -INSERT INTO `sys_roles_menus` VALUES (34, 1); -INSERT INTO `sys_roles_menus` VALUES (35, 1); -INSERT INTO `sys_roles_menus` VALUES (36, 1); -INSERT INTO `sys_roles_menus` VALUES (37, 1); -INSERT INTO `sys_roles_menus` VALUES (38, 1); -INSERT INTO `sys_roles_menus` VALUES (39, 1); -INSERT INTO `sys_roles_menus` VALUES (41, 1); -INSERT INTO `sys_roles_menus` VALUES (44, 1); -INSERT INTO `sys_roles_menus` VALUES (45, 1); -INSERT INTO `sys_roles_menus` VALUES (46, 1); -INSERT INTO `sys_roles_menus` VALUES (48, 1); -INSERT INTO `sys_roles_menus` VALUES (49, 1); -INSERT INTO `sys_roles_menus` VALUES (50, 1); -INSERT INTO `sys_roles_menus` VALUES (52, 1); -INSERT INTO `sys_roles_menus` VALUES (53, 1); -INSERT INTO `sys_roles_menus` VALUES (54, 1); -INSERT INTO `sys_roles_menus` VALUES (56, 1); -INSERT INTO `sys_roles_menus` VALUES (57, 1); -INSERT INTO `sys_roles_menus` VALUES (58, 1); -INSERT INTO `sys_roles_menus` VALUES (60, 1); -INSERT INTO `sys_roles_menus` VALUES (61, 1); -INSERT INTO `sys_roles_menus` VALUES (62, 1); -INSERT INTO `sys_roles_menus` VALUES (64, 1); -INSERT INTO `sys_roles_menus` VALUES (65, 1); -INSERT INTO `sys_roles_menus` VALUES (66, 1); -INSERT INTO `sys_roles_menus` VALUES (73, 1); -INSERT INTO `sys_roles_menus` VALUES (74, 1); -INSERT INTO `sys_roles_menus` VALUES (75, 1); -INSERT INTO `sys_roles_menus` VALUES (77, 1); -INSERT INTO `sys_roles_menus` VALUES (78, 1); -INSERT INTO `sys_roles_menus` VALUES (79, 1); -INSERT INTO `sys_roles_menus` VALUES (80, 1); -INSERT INTO `sys_roles_menus` VALUES (82, 1); -INSERT INTO `sys_roles_menus` VALUES (83, 1); -INSERT INTO `sys_roles_menus` VALUES (90, 1); -INSERT INTO `sys_roles_menus` VALUES (92, 1); -INSERT INTO `sys_roles_menus` VALUES (93, 1); -INSERT INTO `sys_roles_menus` VALUES (94, 1); -INSERT INTO `sys_roles_menus` VALUES (97, 1); -INSERT INTO `sys_roles_menus` VALUES (98, 1); -INSERT INTO `sys_roles_menus` VALUES (102, 1); -INSERT INTO `sys_roles_menus` VALUES (103, 1); -INSERT INTO `sys_roles_menus` VALUES (104, 1); -INSERT INTO `sys_roles_menus` VALUES (105, 1); -INSERT INTO `sys_roles_menus` VALUES (106, 1); -INSERT INTO `sys_roles_menus` VALUES (107, 1); -INSERT INTO `sys_roles_menus` VALUES (108, 1); -INSERT INTO `sys_roles_menus` VALUES (109, 1); -INSERT INTO `sys_roles_menus` VALUES (110, 1); -INSERT INTO `sys_roles_menus` VALUES (111, 1); -INSERT INTO `sys_roles_menus` VALUES (112, 1); -INSERT INTO `sys_roles_menus` VALUES (113, 1); -INSERT INTO `sys_roles_menus` VALUES (114, 1); -INSERT INTO `sys_roles_menus` VALUES (116, 1); -INSERT INTO `sys_roles_menus` VALUES (1, 2); -INSERT INTO `sys_roles_menus` VALUES (2, 2); -INSERT INTO `sys_roles_menus` VALUES (6, 2); -INSERT INTO `sys_roles_menus` VALUES (7, 2); -INSERT INTO `sys_roles_menus` VALUES (9, 2); -INSERT INTO `sys_roles_menus` VALUES (10, 2); -INSERT INTO `sys_roles_menus` VALUES (11, 2); -INSERT INTO `sys_roles_menus` VALUES (14, 2); -INSERT INTO `sys_roles_menus` VALUES (15, 2); -INSERT INTO `sys_roles_menus` VALUES (19, 2); -INSERT INTO `sys_roles_menus` VALUES (21, 2); -INSERT INTO `sys_roles_menus` VALUES (22, 2); -INSERT INTO `sys_roles_menus` VALUES (23, 2); -INSERT INTO `sys_roles_menus` VALUES (24, 2); -INSERT INTO `sys_roles_menus` VALUES (27, 2); -INSERT INTO `sys_roles_menus` VALUES (30, 2); -INSERT INTO `sys_roles_menus` VALUES (32, 2); -INSERT INTO `sys_roles_menus` VALUES (33, 2); -INSERT INTO `sys_roles_menus` VALUES (34, 2); -INSERT INTO `sys_roles_menus` VALUES (36, 2); -INSERT INTO `sys_roles_menus` VALUES (80, 2); -INSERT INTO `sys_roles_menus` VALUES (82, 2); -INSERT INTO `sys_roles_menus` VALUES (83, 2); -INSERT INTO `sys_roles_menus` VALUES (116, 2); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (1, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (1, 2); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (2, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (2, 2); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (3, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (5, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (6, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (6, 2); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (7, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (7, 2); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (9, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (9, 2); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (10, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (10, 2); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (11, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (11, 2); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (14, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (14, 2); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (15, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (15, 2); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (18, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (19, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (19, 2); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (21, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (21, 2); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (22, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (22, 2); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (23, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (23, 2); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (24, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (24, 2); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (27, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (27, 2); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (28, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (30, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (30, 2); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (32, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (32, 2); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (33, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (33, 2); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (34, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (34, 2); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (35, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (36, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (36, 2); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (37, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (39, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (41, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (44, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (45, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (46, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (48, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (49, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (50, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (52, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (53, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (54, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (56, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (57, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (58, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (60, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (61, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (62, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (64, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (65, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (66, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (73, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (74, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (75, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (77, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (78, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (79, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (80, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (80, 2); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (82, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (82, 2); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (83, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (83, 2); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (90, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (92, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (93, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (94, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (97, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (98, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (102, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (103, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (104, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (105, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (106, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (107, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (108, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (109, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (110, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (111, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (116, 1); +INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (116, 2); COMMIT; -- ---------------------------- @@ -657,27 +688,25 @@ CREATE TABLE `sys_user` ( `avatar_path` varchar(255) DEFAULT NULL COMMENT '头像真实路径', `password` varchar(255) DEFAULT NULL COMMENT '密码', `is_admin` bit(1) DEFAULT b'0' COMMENT '是否为admin账号', - `enabled` bit(1) DEFAULT NULL COMMENT '状态:1启用、0禁用', + `enabled` bit(1) DEFAULT NULL COMMENT '状态:1启用、0禁用', `create_by` varchar(255) DEFAULT NULL COMMENT '创建者', `update_by` varchar(255) DEFAULT NULL COMMENT '更新者', `pwd_reset_time` datetime DEFAULT NULL COMMENT '修改密码的时间', `create_time` datetime DEFAULT NULL COMMENT '创建日期', `update_time` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`user_id`) USING BTREE, - UNIQUE KEY `UK_kpubos9gc2cvtkb0thktkbkes` (`email`) USING BTREE, - UNIQUE KEY `username` (`username`) USING BTREE, - UNIQUE KEY `uniq_username` (`username`), - UNIQUE KEY `uniq_email` (`email`), - KEY `FK5rwmryny6jthaaxkogownknqp` (`dept_id`) USING BTREE, - KEY `inx_enabled` (`enabled`) -) ENGINE=InnoDB AUTO_INCREMENT=3 ROW_FORMAT=COMPACT COMMENT='系统用户'; + UNIQUE KEY `uniq_email` (`email`) USING BTREE, + UNIQUE KEY `uniq_username` (`username`) USING BTREE, + KEY `idx_dept_id` (`dept_id`) USING BTREE, + KEY `idx_enabled` (`enabled`) +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='系统用户'; -- ---------------------------- -- Records of sys_user -- ---------------------------- BEGIN; -INSERT INTO `sys_user` VALUES (1, 2, 'admin', '管理员', '男', '18888888888', '201507802@qq.com', 'avatar-20200806032259161.png', '/Users/jie/Documents/work/me/admin/eladmin/~/avatar/avatar-20200806032259161.png', '$2a$10$Egp1/gvFlt7zhlXVfEFw4OfWQCGPw0ClmMcc6FjTnvXNRVf9zdMRa', b'1', 1, NULL, 'admin', '2020-05-03 16:38:31', '2018-08-23 09:11:56', '2020-09-05 10:43:31'); -INSERT INTO `sys_user` VALUES (2, 2, 'test', '测试', '男', '19999999999', '231@qq.com', NULL, NULL, '$2a$10$4XcyudOYTSz6fue6KFNMHeUQnCX5jbBQypLEnGk1PmekXt5c95JcK', b'0', 1, 'admin', 'admin', NULL, '2020-05-05 11:15:49', '2020-09-05 10:43:38'); +INSERT INTO `sys_user` (`user_id`, `dept_id`, `username`, `nick_name`, `gender`, `phone`, `email`, `avatar_name`, `avatar_path`, `password`, `is_admin`, `enabled`, `create_by`, `update_by`, `pwd_reset_time`, `create_time`, `update_time`) VALUES (1, 2, 'admin', '管理员', '男', '18888888888', '201507802@qq.com', 'avatar-20250114101539224.png', '/Users/jie/Documents/work/me/admin/eladmin-mp/eladmin/~/avatar/avatar-20250114101539224.png', '$2a$10$Egp1/gvFlt7zhlXVfEFw4OfWQCGPw0ClmMcc6FjTnvXNRVf9zdMRa', b'1', b'1', NULL, 'admin', '2020-05-03 16:38:31', '2018-08-23 09:11:56', '2020-09-05 10:43:31'); +INSERT INTO `sys_user` (`user_id`, `dept_id`, `username`, `nick_name`, `gender`, `phone`, `email`, `avatar_name`, `avatar_path`, `password`, `is_admin`, `enabled`, `create_by`, `update_by`, `pwd_reset_time`, `create_time`, `update_time`) VALUES (2, 2, 'test', '测试', '男', '19999999999', '231@qq.com', NULL, NULL, '$2a$10$4XcyudOYTSz6fue6KFNMHeUQnCX5jbBQypLEnGk1PmekXt5c95JcK', b'0', b'1', 'admin', 'admin', NULL, '2020-05-05 11:15:49', '2020-09-05 10:43:38'); COMMIT; -- ---------------------------- @@ -687,15 +716,17 @@ DROP TABLE IF EXISTS `sys_users_jobs`; CREATE TABLE `sys_users_jobs` ( `user_id` bigint(20) NOT NULL COMMENT '用户ID', `job_id` bigint(20) NOT NULL COMMENT '岗位ID', - PRIMARY KEY (`user_id`,`job_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; + PRIMARY KEY (`user_id`,`job_id`), + KEY `idx_user_id` (`user_id`), + KEY `idx_job_id` (`job_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci COMMENT='用户与岗位关联表'; -- ---------------------------- -- Records of sys_users_jobs -- ---------------------------- BEGIN; -INSERT INTO `sys_users_jobs` VALUES (1, 11); -INSERT INTO `sys_users_jobs` VALUES (2, 12); +INSERT INTO `sys_users_jobs` (`user_id`, `job_id`) VALUES (1, 11); +INSERT INTO `sys_users_jobs` (`user_id`, `job_id`) VALUES (2, 12); COMMIT; -- ---------------------------- @@ -706,15 +737,16 @@ CREATE TABLE `sys_users_roles` ( `user_id` bigint(20) NOT NULL COMMENT '用户ID', `role_id` bigint(20) NOT NULL COMMENT '角色ID', PRIMARY KEY (`user_id`,`role_id`) USING BTREE, - KEY `FKq4eq273l04bpu4efj0jd0jb98` (`role_id`) USING BTREE -) ENGINE=InnoDB ROW_FORMAT=COMPACT COMMENT='用户角色关联'; + KEY `idx_user_id` (`user_id`), + KEY `idx_role_id` (`role_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='用户角色关联'; -- ---------------------------- -- Records of sys_users_roles -- ---------------------------- BEGIN; -INSERT INTO `sys_users_roles` VALUES (1, 1); -INSERT INTO `sys_users_roles` VALUES (2, 2); +INSERT INTO `sys_users_roles` (`user_id`, `role_id`) VALUES (1, 1); +INSERT INTO `sys_users_roles` (`user_id`, `role_id`) VALUES (2, 2); COMMIT; -- ---------------------------- @@ -734,13 +766,12 @@ CREATE TABLE `tool_alipay_config` ( `sign_type` varchar(255) DEFAULT NULL COMMENT '签名方式', `sys_service_provider_id` varchar(255) DEFAULT NULL COMMENT '商户号', PRIMARY KEY (`config_id`) USING BTREE -) ENGINE=InnoDB ROW_FORMAT=COMPACT COMMENT='支付宝配置类'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='支付宝配置类'; -- ---------------------------- -- Records of tool_alipay_config -- ---------------------------- BEGIN; -INSERT INTO `tool_alipay_config` VALUES (1, '2016091700532697', 'utf-8', 'JSON', 'https://openapi.alipaydev.com/gateway.do', 'http://api.auauz.net/api/aliPay/notify', 'MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC5js8sInU10AJ0cAQ8UMMyXrQ+oHZEkVt5lBwsStmTJ7YikVYgbskx1YYEXTojRsWCb+SH/kDmDU4pK/u91SJ4KFCRMF2411piYuXU/jF96zKrADznYh/zAraqT6hvAIVtQAlMHN53nx16rLzZ/8jDEkaSwT7+HvHiS+7sxSojnu/3oV7BtgISoUNstmSe8WpWHOaWv19xyS+Mce9MY4BfseFhzTICUymUQdd/8hXA28/H6osUfAgsnxAKv7Wil3aJSgaJczWuflYOve0dJ3InZkhw5Cvr0atwpk8YKBQjy5CdkoHqvkOcIB+cYHXJKzOE5tqU7inSwVbHzOLQ3XbnAgMBAAECggEAVJp5eT0Ixg1eYSqFs9568WdetUNCSUchNxDBu6wxAbhUgfRUGZuJnnAll63OCTGGck+EGkFh48JjRcBpGoeoHLL88QXlZZbC/iLrea6gcDIhuvfzzOffe1RcZtDFEj9hlotg8dQj1tS0gy9pN9g4+EBH7zeu+fyv+qb2e/v1l6FkISXUjpkD7RLQr3ykjiiEw9BpeKb7j5s7Kdx1NNIzhkcQKNqlk8JrTGDNInbDM6inZfwwIO2R1DHinwdfKWkvOTODTYa2MoAvVMFT9Bec9FbLpoWp7ogv1JMV9svgrcF9XLzANZ/OQvkbe9TV9GWYvIbxN6qwQioKCWO4GPnCAQKBgQDgW5MgfhX8yjXqoaUy/d1VjI8dHeIyw8d+OBAYwaxRSlCfyQ+tieWcR2HdTzPca0T0GkWcKZm0ei5xRURgxt4DUDLXNh26HG0qObbtLJdu/AuBUuCqgOiLqJ2f1uIbrz6OZUHns+bT/jGW2Ws8+C13zTCZkZt9CaQsrp3QOGDx5wKBgQDTul39hp3ZPwGNFeZdkGoUoViOSd5Lhowd5wYMGAEXWRLlU8z+smT5v0POz9JnIbCRchIY2FAPKRdVTICzmPk2EPJFxYTcwaNbVqL6lN7J2IlXXMiit5QbiLauo55w7plwV6LQmKm9KV7JsZs5XwqF7CEovI7GevFzyD3w+uizAQKBgC3LY1eRhOlpWOIAhpjG6qOoohmeXOphvdmMlfSHq6WYFqbWwmV4rS5d/6LNpNdL6fItXqIGd8I34jzql49taCmi+A2nlR/E559j0mvM20gjGDIYeZUz5MOE8k+K6/IcrhcgofgqZ2ZED1ksHdB/E8DNWCswZl16V1FrfvjeWSNnAoGAMrBplCrIW5xz+J0Hm9rZKrs+AkK5D4fUv8vxbK/KgxZ2KaUYbNm0xv39c+PZUYuFRCz1HDGdaSPDTE6WeWjkMQd5mS6ikl9hhpqFRkyh0d0fdGToO9yLftQKOGE/q3XUEktI1XvXF0xyPwNgUCnq0QkpHyGVZPtGFxwXiDvpvgECgYA5PoB+nY8iDiRaJNko9w0hL4AeKogwf+4TbCw+KWVEn6jhuJa4LFTdSqp89PktQaoVpwv92el/AhYjWOl/jVCm122f9b7GyoelbjMNolToDwe5pF5RnSpEuDdLy9MfE8LnE3PlbE7E5BipQ3UjSebkgNboLHH/lNZA5qvEtvbfvQ==', 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAut9evKRuHJ/2QNfDlLwvN/S8l9hRAgPbb0u61bm4AtzaTGsLeMtScetxTWJnVvAVpMS9luhEJjt+Sbk5TNLArsgzzwARgaTKOLMT1TvWAK5EbHyI+eSrc3s7Awe1VYGwcubRFWDm16eQLv0k7iqiw+4mweHSz/wWyvBJVgwLoQ02btVtAQErCfSJCOmt0Q/oJQjj08YNRV4EKzB19+f5A+HQVAKy72dSybTzAK+3FPtTtNen/+b5wGeat7c32dhYHnGorPkPeXLtsqqUTp1su5fMfd4lElNdZaoCI7osZxWWUo17vBCZnyeXc9fk0qwD9mK6yRAxNbrY72Xx5VqIqwIDAQAB', 'http://api.auauz.net/api/aliPay/return', 'RSA2', '2088102176044281'); COMMIT; -- ---------------------------- @@ -755,7 +786,13 @@ CREATE TABLE `tool_email_config` ( `port` varchar(255) DEFAULT NULL COMMENT '端口', `user` varchar(255) DEFAULT NULL COMMENT '发件者用户名', PRIMARY KEY (`config_id`) USING BTREE -) ENGINE=InnoDB ROW_FORMAT=COMPACT COMMENT='邮箱配置'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='邮箱配置'; + +-- ---------------------------- +-- Records of tool_email_config +-- ---------------------------- +BEGIN; +COMMIT; -- ---------------------------- -- Table structure for tool_local_storage @@ -774,7 +811,7 @@ CREATE TABLE `tool_local_storage` ( `create_time` datetime DEFAULT NULL COMMENT '创建日期', `update_time` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`storage_id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=10 ROW_FORMAT=COMPACT COMMENT='本地存储'; +) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='本地存储'; -- ---------------------------- -- Records of tool_local_storage @@ -795,7 +832,13 @@ CREATE TABLE `tool_qiniu_config` ( `type` varchar(255) DEFAULT NULL COMMENT '空间类型', `zone` varchar(255) DEFAULT NULL COMMENT '机房', PRIMARY KEY (`config_id`) USING BTREE -) ENGINE=InnoDB ROW_FORMAT=COMPACT COMMENT='七牛云配置'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='七牛云配置'; + +-- ---------------------------- +-- Records of tool_qiniu_config +-- ---------------------------- +BEGIN; +COMMIT; -- ---------------------------- -- Table structure for tool_qiniu_content @@ -812,7 +855,7 @@ CREATE TABLE `tool_qiniu_content` ( `update_time` datetime DEFAULT NULL COMMENT '上传或同步的时间', PRIMARY KEY (`content_id`) USING BTREE, UNIQUE KEY `uniq_name` (`name`) -) ENGINE=InnoDB ROW_FORMAT=COMPACT COMMENT='七牛云文件存储'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='七牛云文件存储'; -- ---------------------------- -- Records of tool_qiniu_content @@ -820,4 +863,4 @@ CREATE TABLE `tool_qiniu_content` ( BEGIN; COMMIT; -SET FOREIGN_KEY_CHECKS = 1; \ No newline at end of file +SET FOREIGN_KEY_CHECKS = 1; From 10b43563aa23ed19eaa9d6ed1e0846bdec2778a1 Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Thu, 16 Jan 2025 09:41:47 +0800 Subject: [PATCH 29/54] =?UTF-8?q?refactor:=20=E7=A7=BB=E9=99=A4=E7=BC=93?= =?UTF-8?q?=E5=AD=98=E6=B3=A8=E8=A7=A3=EF=BC=8C=E4=BC=98=E5=8C=96Redis?= =?UTF-8?q?=E7=BC=93=E5=AD=98=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/QuartzJobServiceImpl.java | 1 + .../system/service/impl/DataServiceImpl.java | 49 ++++++++------- .../system/service/impl/DeptServiceImpl.java | 19 +++--- .../service/impl/DictDetailServiceImpl.java | 14 +++-- .../system/service/impl/DictServiceImpl.java | 2 - .../system/service/impl/JobServiceImpl.java | 26 +++++--- .../system/service/impl/MenuServiceImpl.java | 63 ++++++++++++------- .../system/service/impl/RoleServiceImpl.java | 47 ++++++++------ .../system/service/impl/UserServiceImpl.java | 14 +++-- 9 files changed, 142 insertions(+), 93 deletions(-) diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/impl/QuartzJobServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/impl/QuartzJobServiceImpl.java index b85ef111a..20707f07e 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/impl/QuartzJobServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/impl/QuartzJobServiceImpl.java @@ -103,6 +103,7 @@ public void update(QuartzJob resources) { @Override public void updateIsPause(QuartzJob quartzJob) { + // 置换暂停状态 if (quartzJob.getIsPause()) { quartzManage.resumeJob(quartzJob); quartzJob.setIsPause(false); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DataServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DataServiceImpl.java index 98fe4fddf..66daee94d 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DataServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DataServiceImpl.java @@ -23,23 +23,23 @@ import me.zhengjie.modules.system.service.RoleService; import me.zhengjie.modules.system.service.dto.RoleSmallDto; import me.zhengjie.modules.system.service.dto.UserDto; +import me.zhengjie.utils.CacheKey; +import me.zhengjie.utils.RedisUtils; import me.zhengjie.utils.enums.DataScopeEnum; -import org.springframework.cache.annotation.CacheConfig; -import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import java.util.*; +import java.util.concurrent.TimeUnit; /** * @author Zheng Jie - * @website https://eladmin.vip * @description 数据权限服务实现 * @date 2020-05-07 **/ @Service @RequiredArgsConstructor -@CacheConfig(cacheNames = "data", keyGenerator = "keyGenerator") public class DataServiceImpl implements DataService { + private final RedisUtils redisUtils; private final RoleService roleService; private final DeptService deptService; @@ -49,27 +49,32 @@ public class DataServiceImpl implements DataService { * @return / */ @Override - @Cacheable(key = "'user:' + #p0.id") public List getDeptIds(UserDto user) { - // 用于存储部门id - Set deptIds = new HashSet<>(); - // 查询用户角色 - List roleSet = roleService.findByUsersId(user.getId()); - // 获取对应的部门ID - for (RoleSmallDto role : roleSet) { - DataScopeEnum dataScopeEnum = DataScopeEnum.find(role.getDataScope()); - switch (Objects.requireNonNull(dataScopeEnum)) { - case THIS_LEVEL: - deptIds.add(user.getDept().getId()); - break; - case CUSTOMIZE: - deptIds.addAll(getCustomize(deptIds, role)); - break; - default: - return new ArrayList<>(); + String key = CacheKey.DATA_USER + user.getId(); + List ids = redisUtils.getList(key, Long.class); + if (CollUtil.isEmpty(ids)) { + // 用于存储部门id + Set deptIds = new HashSet<>(); + // 查询用户角色 + List roleSet = roleService.findByUsersId(user.getId()); + // 获取对应的部门ID + for (RoleSmallDto role : roleSet) { + DataScopeEnum dataScopeEnum = DataScopeEnum.find(role.getDataScope()); + switch (Objects.requireNonNull(dataScopeEnum)) { + case THIS_LEVEL: + deptIds.add(user.getDept().getId()); + break; + case CUSTOMIZE: + deptIds.addAll(getCustomize(deptIds, role)); + break; + default: + return new ArrayList<>(); + } } + ids = new ArrayList<>(deptIds); + redisUtils.set(key, ids, 1, TimeUnit.DAYS); } - return new ArrayList<>(deptIds); + return new ArrayList<>(ids); } /** diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java index d15e1a2da..0847dd9bc 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.system.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; import lombok.RequiredArgsConstructor; @@ -30,8 +31,6 @@ import me.zhengjie.modules.system.service.DeptService; import me.zhengjie.modules.system.service.mapstruct.DeptMapper; import me.zhengjie.utils.enums.DataScopeEnum; -import org.springframework.cache.annotation.CacheConfig; -import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -39,6 +38,7 @@ import java.io.IOException; import java.lang.reflect.Field; import java.util.*; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** @@ -47,7 +47,6 @@ */ @Service @RequiredArgsConstructor -@CacheConfig(cacheNames = "dept", keyGenerator = "keyGenerator") public class DeptServiceImpl implements DeptService { private final DeptRepository deptRepository; @@ -88,10 +87,14 @@ public List queryAll(DeptQueryCriteria criteria, Boolean isQuery) throw } @Override - @Cacheable(key = "'id:' + #p0") public DeptDto findById(Long id) { - Dept dept = deptRepository.findById(id).orElseGet(Dept::new); - ValidationUtil.isNull(dept.getId(),"Dept","id",id); + String key = CacheKey.DEPT_ID + id; + Dept dept = redisUtils.get(key, Dept.class); + if(dept == null){ + dept = deptRepository.findById(id).orElseGet(Dept::new); + ValidationUtil.isNull(dept.getId(),"Dept","id",id); + redisUtils.set(key, dept, 1, TimeUnit.DAYS); + } return deptMapper.toDto(dept); } @@ -166,7 +169,7 @@ public Set getDeleteDepts(List menuList, Set deptDtos) { for (Dept dept : menuList) { deptDtos.add(deptMapper.toDto(dept)); List depts = deptRepository.findByPid(dept.getId()); - if(depts!=null && depts.size()!=0){ + if(CollUtil.isNotEmpty(depts)){ getDeleteDepts(depts, deptDtos); } } @@ -179,7 +182,7 @@ public List getDeptChildren(List deptList) { deptList.forEach(dept -> { if (dept!=null && dept.getEnabled()) { List depts = deptRepository.findByPid(dept.getId()); - if (depts.size() != 0) { + if (CollUtil.isNotEmpty(depts)) { list.addAll(getDeptChildren(depts)); } list.add(dept.getId()); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictDetailServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictDetailServiceImpl.java index 7044585c1..2a008457a 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictDetailServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictDetailServiceImpl.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.system.service.impl; +import cn.hutool.core.collection.CollUtil; import lombok.RequiredArgsConstructor; import me.zhengjie.utils.PageResult; import me.zhengjie.modules.system.domain.Dict; @@ -26,13 +27,12 @@ import me.zhengjie.modules.system.service.DictDetailService; import me.zhengjie.modules.system.service.dto.DictDetailDto; import me.zhengjie.modules.system.service.mapstruct.DictDetailMapper; -import org.springframework.cache.annotation.CacheConfig; -import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.concurrent.TimeUnit; /** * @author Zheng Jie @@ -40,7 +40,6 @@ */ @Service @RequiredArgsConstructor -@CacheConfig(cacheNames = "dict", keyGenerator = "keyGenerator") public class DictDetailServiceImpl implements DictDetailService { private final DictRepository dictRepository; @@ -74,9 +73,14 @@ public void update(DictDetail resources) { } @Override - @Cacheable(key = "'name:' + #p0") public List getDictByName(String name) { - return dictDetailMapper.toDto(dictDetailRepository.findByDictName(name)); + String key = CacheKey.DICT_NAME + name; + List dictDetails = redisUtils.getList(key, DictDetail.class); + if(CollUtil.isEmpty(dictDetails)){ + dictDetails = dictDetailRepository.findByDictName(name); + redisUtils.set(key, dictDetails, 1 , TimeUnit.DAYS); + } + return dictDetailMapper.toDto(dictDetails); } @Override diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictServiceImpl.java index 6ec087136..042200d00 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictServiceImpl.java @@ -26,7 +26,6 @@ import me.zhengjie.modules.system.service.DictService; import me.zhengjie.modules.system.service.dto.DictDto; import me.zhengjie.modules.system.service.mapstruct.DictMapper; -import org.springframework.cache.annotation.CacheConfig; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; @@ -41,7 +40,6 @@ */ @Service @RequiredArgsConstructor -@CacheConfig(cacheNames = "dict", keyGenerator = "keyGenerator") public class DictServiceImpl implements DictService { private final DictRepository dictRepository; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/JobServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/JobServiceImpl.java index 20cdb7dbe..e6646c29d 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/JobServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/JobServiceImpl.java @@ -27,9 +27,6 @@ import me.zhengjie.modules.system.service.JobService; import me.zhengjie.modules.system.service.dto.JobDto; import me.zhengjie.modules.system.service.mapstruct.JobMapper; -import org.springframework.cache.annotation.CacheConfig; -import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; @@ -37,6 +34,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.*; +import java.util.concurrent.TimeUnit; /** * @author Zheng Jie @@ -44,7 +42,6 @@ */ @Service @RequiredArgsConstructor -@CacheConfig(cacheNames = "job", keyGenerator = "keyGenerator") public class JobServiceImpl implements JobService { private final JobRepository jobRepository; @@ -65,10 +62,14 @@ public List queryAll(JobQueryCriteria criteria) { } @Override - @Cacheable(key = "'id:' + #p0") public JobDto findById(Long id) { - Job job = jobRepository.findById(id).orElseGet(Job::new); - ValidationUtil.isNull(job.getId(),"Job","id",id); + String key = CacheKey.JOB_ID + id; + Job job = redisUtils.get(key, Job.class); + if(job == null){ + job = jobRepository.findById(id).orElseGet(Job::new); + ValidationUtil.isNull(job.getId(),"Job","id",id); + redisUtils.set(key, job, 1, TimeUnit.DAYS); + } return jobMapper.toDto(job); } @@ -83,7 +84,6 @@ public void create(Job resources) { } @Override - @CacheEvict(key = "'id:' + #p0.id") @Transactional(rollbackFor = Exception.class) public void update(Job resources) { Job job = jobRepository.findById(resources.getId()).orElseGet(Job::new); @@ -94,6 +94,8 @@ public void update(Job resources) { ValidationUtil.isNull( job.getId(),"Job","id",resources.getId()); resources.setId(job.getId()); jobRepository.save(resources); + // 删除缓存 + delCaches(resources.getId()); } @Override @@ -123,4 +125,12 @@ public void verification(Set ids) { throw new BadRequestException("所选的岗位中存在用户关联,请解除关联再试!"); } } + + /** + * 删除缓存 + * @param id / + */ + public void delCaches(Long id){ + redisUtils.del(CacheKey.JOB_ID + id); + } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java index b23bf58fa..ae328c028 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.system.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; import lombok.RequiredArgsConstructor; @@ -34,8 +35,6 @@ import me.zhengjie.modules.system.service.dto.RoleSmallDto; import me.zhengjie.modules.system.service.mapstruct.MenuMapper; import me.zhengjie.utils.*; -import org.springframework.cache.annotation.CacheConfig; -import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -43,6 +42,7 @@ import java.io.IOException; import java.lang.reflect.Field; import java.util.*; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** @@ -50,7 +50,6 @@ */ @Service @RequiredArgsConstructor -@CacheConfig(cacheNames = "menu", keyGenerator = "keyGenerator") public class MenuServiceImpl implements MenuService { private final MenuRepository menuRepository; @@ -88,10 +87,14 @@ public List queryAll(MenuQueryCriteria criteria, Boolean isQuery) throw } @Override - @Cacheable(key = "'id:' + #p0") public MenuDto findById(long id) { - Menu menu = menuRepository.findById(id).orElseGet(Menu::new); - ValidationUtil.isNull(menu.getId(),"Menu","id",id); + String key = CacheKey.MENU_ID + id; + Menu menu = redisUtils.get(key, Menu.class); + if(menu == null){ + menu = menuRepository.findById(id).orElseGet(Menu::new); + ValidationUtil.isNull(menu.getId(),"Menu","id",id); + redisUtils.set(key, menu, 1, TimeUnit.DAYS); + } return menuMapper.toDto(menu); } @@ -101,11 +104,16 @@ public MenuDto findById(long id) { * @return / */ @Override - @Cacheable(key = "'user:' + #p0") public List findByUser(Long currentUserId) { - List roles = roleService.findByUsersId(currentUserId); - Set roleIds = roles.stream().map(RoleSmallDto::getId).collect(Collectors.toSet()); - LinkedHashSet

menus = menuRepository.findByRoleIdsAndTypeNot(roleIds, 2); + String key = CacheKey.MENU_USER + currentUserId; + List menus = redisUtils.getList(key, Menu.class); + if (CollUtil.isEmpty(menus)){ + List roles = roleService.findByUsersId(currentUserId); + Set roleIds = roles.stream().map(RoleSmallDto::getId).collect(Collectors.toSet()); + LinkedHashSet data = menuRepository.findByRoleIdsAndTypeNot(roleIds, 2); + menus = new ArrayList<>(data); + redisUtils.set(key, menus, 1, TimeUnit.DAYS); + } return menus.stream().map(menuMapper::toDto).collect(Collectors.toList()); } @@ -194,7 +202,7 @@ public Set getChildMenus(List menuList, Set menuSet) { for (Menu menu : menuList) { menuSet.add(menu); List menus = menuRepository.findByPidOrderByMenuSort(menu.getId()); - if(menus!=null && menus.size()!=0){ + if(CollUtil.isNotEmpty(menus)){ getChildMenus(menus, menuSet); } } @@ -252,7 +260,7 @@ public List buildTree(List menuDtos) { } } } - if(trees.size() == 0){ + if(trees.isEmpty()){ trees = menuDtos.stream().filter(s -> !ids.contains(s.getId())).collect(Collectors.toList()); } return trees; @@ -287,16 +295,7 @@ public List buildMenus(List menuDtos) { menuVo.setChildren(buildMenus(menuDtoList)); // 处理是一级菜单并且没有子菜单的情况 } else if(menuDTO.getPid() == null){ - MenuVo menuVo1 = new MenuVo(); - menuVo1.setMeta(menuVo.getMeta()); - // 非外链 - if(!menuDTO.getIFrame()){ - menuVo1.setPath("index"); - menuVo1.setName(menuVo.getName()); - menuVo1.setComponent(menuVo.getComponent()); - } else { - menuVo1.setPath(menuDTO.getPath()); - } + MenuVo menuVo1 = getMenuVo(menuDTO, menuVo); menuVo.setName(null); menuVo.setMeta(null); menuVo.setComponent("Layout"); @@ -356,4 +355,24 @@ public void delCaches(Long id){ }}); redisUtils.delByKeys(CacheKey.ROLE_ID, roles.stream().map(Role::getId).collect(Collectors.toSet())); } + + /** + * 构建前端路由 + * @param menuDTO / + * @param menuVo / + * @return / + */ + private static MenuVo getMenuVo(MenuDto menuDTO, MenuVo menuVo) { + MenuVo menuVo1 = new MenuVo(); + menuVo1.setMeta(menuVo.getMeta()); + // 非外链 + if(!menuDTO.getIFrame()){ + menuVo1.setPath("index"); + menuVo1.setName(menuVo.getName()); + menuVo1.setComponent(menuVo.getComponent()); + } else { + menuVo1.setPath(menuDTO.getPath()); + } + return menuVo1; + } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java index 39a42aeb6..f43096f4e 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java @@ -15,6 +15,7 @@ */ package me.zhengjie.modules.system.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import lombok.RequiredArgsConstructor; import me.zhengjie.exception.BadRequestException; @@ -34,8 +35,6 @@ import me.zhengjie.modules.system.service.mapstruct.RoleMapper; import me.zhengjie.modules.system.service.mapstruct.RoleSmallMapper; import me.zhengjie.utils.*; -import org.springframework.cache.annotation.CacheConfig; -import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; @@ -44,6 +43,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.*; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** @@ -52,7 +52,6 @@ */ @Service @RequiredArgsConstructor -@CacheConfig(cacheNames = "role", keyGenerator = "keyGenerator") public class RoleServiceImpl implements RoleService { private final RoleRepository roleRepository; @@ -80,11 +79,14 @@ public PageResult queryAll(RoleQueryCriteria criteria, Pageable pageabl } @Override - @Cacheable(key = "'id:' + #p0") - @Transactional(rollbackFor = Exception.class) public RoleDto findById(long id) { - Role role = roleRepository.findById(id).orElseGet(Role::new); - ValidationUtil.isNull(role.getId(), "Role", "id", id); + String key = CacheKey.ROLE_ID + id; + Role role = redisUtils.get(key, Role.class); + if (role == null) { + role = roleRepository.findById(id).orElseGet(Role::new); + ValidationUtil.isNull(role.getId(), "Role", "id", id); + redisUtils.set(key, role, 1, TimeUnit.DAYS); + } return roleMapper.toDto(role); } @@ -152,7 +154,7 @@ public List findByUsersId(Long id) { @Override public Integer findByRoles(Set roles) { - if (roles.size() == 0) { + if (roles.isEmpty()) { return Integer.MAX_VALUE; } Set roleDtos = new HashSet<>(); @@ -163,21 +165,26 @@ public Integer findByRoles(Set roles) { } @Override - @Cacheable(key = "'auth:' + #p0.id") public List buildAuthorities(UserDto user) { - Set permissions = new HashSet<>(); - // 如果是管理员直接返回 - if (user.getIsAdmin()) { - permissions.add("admin"); - return permissions.stream().map(AuthorityDto::new) + String key = CacheKey.ROLE_AUTH + user.getId(); + List authorityDtos = redisUtils.getList(key, AuthorityDto.class); + if (CollUtil.isEmpty(authorityDtos)) { + Set permissions = new HashSet<>(); + // 如果是管理员直接返回 + if (user.getIsAdmin()) { + permissions.add("admin"); + return permissions.stream().map(AuthorityDto::new) + .collect(Collectors.toList()); + } + Set roles = roleRepository.findByUserId(user.getId()); + permissions = roles.stream().flatMap(role -> role.getMenus().stream()) + .map(Menu::getPermission) + .filter(StringUtils::isNotBlank).collect(Collectors.toSet()); + authorityDtos = permissions.stream().map(AuthorityDto::new) .collect(Collectors.toList()); + redisUtils.set(key, authorityDtos, 1, TimeUnit.HOURS); } - Set roles = roleRepository.findByUserId(user.getId()); - permissions = roles.stream().flatMap(role -> role.getMenus().stream()) - .map(Menu::getPermission) - .filter(StringUtils::isNotBlank).collect(Collectors.toSet()); - return permissions.stream().map(AuthorityDto::new) - .collect(Collectors.toList()); + return authorityDtos; } @Override diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java index 2b2860676..d4a3d4a78 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java @@ -30,8 +30,6 @@ import me.zhengjie.modules.system.service.mapstruct.UserLoginMapper; import me.zhengjie.modules.system.service.mapstruct.UserMapper; import me.zhengjie.utils.*; -import org.springframework.cache.annotation.CacheConfig; -import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; @@ -42,6 +40,7 @@ import java.io.File; import java.io.IOException; import java.util.*; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** @@ -50,7 +49,6 @@ */ @Service @RequiredArgsConstructor -@CacheConfig(cacheNames = "user", keyGenerator = "keyGenerator") public class UserServiceImpl implements UserService { private final UserRepository userRepository; @@ -74,11 +72,15 @@ public List queryAll(UserQueryCriteria criteria) { } @Override - @Cacheable(key = "'id:' + #p0") @Transactional(rollbackFor = Exception.class) public UserDto findById(long id) { - User user = userRepository.findById(id).orElseGet(User::new); - ValidationUtil.isNull(user.getId(), "User", "id", id); + String key = CacheKey.USER_ID + id; + User user = redisUtils.get(key, User.class); + if (user == null) { + user = userRepository.findById(id).orElseGet(User::new); + ValidationUtil.isNull(user.getId(), "User", "id", id); + redisUtils.set(key, user, 1, TimeUnit.DAYS); + } return userMapper.toDto(user); } From 7b2fa3c6799a46c04a47a1d938630343961be952 Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Fri, 17 Jan 2025 15:23:29 +0800 Subject: [PATCH 30/54] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E7=BC=93?= =?UTF-8?q?=E5=AD=98=E5=AF=BC=E8=87=B4=E7=9A=84=E7=94=A8=E6=88=B7=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E6=8F=90=E7=A4=BA=E5=AF=86=E7=A0=81=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/UserDetailsServiceImpl.java | 5 +-- .../security/service/dto/JwtUserDto.java | 10 ++---- .../modules/system/service/UserService.java | 3 +- .../modules/system/service/dto/UserDto.java | 2 +- .../system/service/dto/UserLoginDto.java | 34 ------------------- .../system/service/impl/UserServiceImpl.java | 6 ++-- .../service/mapstruct/UserLoginMapper.java | 30 ---------------- 7 files changed, 9 insertions(+), 81 deletions(-) delete mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserLoginDto.java delete mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/UserLoginMapper.java diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserDetailsServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserDetailsServiceImpl.java index 75d1ce21c..6d5d51adf 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserDetailsServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserDetailsServiceImpl.java @@ -19,10 +19,11 @@ import lombok.extern.slf4j.Slf4j; import me.zhengjie.exception.BadRequestException; import me.zhengjie.modules.security.service.dto.JwtUserDto; +import me.zhengjie.modules.system.domain.User; import me.zhengjie.modules.system.service.DataService; import me.zhengjie.modules.system.service.RoleService; import me.zhengjie.modules.system.service.UserService; -import me.zhengjie.modules.system.service.dto.UserLoginDto; +import me.zhengjie.modules.system.service.dto.UserDto; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.stereotype.Service; @@ -43,7 +44,7 @@ public class UserDetailsServiceImpl implements UserDetailsService { public JwtUserDto loadUserByUsername(String username) { JwtUserDto jwtUserDto = userCacheManager.getUserCache(username); if(jwtUserDto == null){ - UserLoginDto user = userService.getLoginData(username); + UserDto user = userService.getLoginData(username); if (user == null) { throw new BadRequestException("用户不存在"); } else { diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/JwtUserDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/JwtUserDto.java index 984c51910..ebb1a1de6 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/JwtUserDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/JwtUserDto.java @@ -20,7 +20,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; -import me.zhengjie.modules.system.service.dto.UserLoginDto; +import me.zhengjie.modules.system.service.dto.UserDto; import org.springframework.security.core.userdetails.UserDetails; import java.util.List; import java.util.Set; @@ -35,7 +35,7 @@ public class JwtUserDto implements UserDetails { @ApiModelProperty(value = "用户") - private final UserLoginDto user; + private final UserDto user; @ApiModelProperty(value = "数据权限") private final List dataScopes; @@ -51,12 +51,6 @@ public Set getRoles() { return authorities.stream().map(AuthorityDto::getAuthority).collect(Collectors.toSet()); } - @Override - @JSONField(serialize = false) - public String getPassword() { - return user.getPassword(); - } - @Override @JSONField(serialize = false) public String getUsername() { diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/UserService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/UserService.java index 7ab5d41d8..4e414c5ae 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/UserService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/UserService.java @@ -18,7 +18,6 @@ import me.zhengjie.utils.PageResult; import me.zhengjie.modules.system.domain.User; import me.zhengjie.modules.system.service.dto.UserDto; -import me.zhengjie.modules.system.service.dto.UserLoginDto; import me.zhengjie.modules.system.service.dto.UserQueryCriteria; import org.springframework.data.domain.Pageable; import org.springframework.web.multipart.MultipartFile; @@ -72,7 +71,7 @@ public interface UserService { * @param userName / * @return / */ - UserLoginDto getLoginData(String userName); + UserDto getLoginData(String userName); /** * 修改密码 diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDto.java index e27695aaf..23f7398d1 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDto.java @@ -68,8 +68,8 @@ public class UserDto extends BaseDTO implements Serializable { @ApiModelProperty(value = "头像路径") private String avatarPath; - @ApiModelProperty(value = "密码") @JSONField(serialize = false) + @ApiModelProperty(value = "密码") private String password; @ApiModelProperty(value = "是否启用") diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserLoginDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserLoginDto.java deleted file mode 100644 index b4f36210f..000000000 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserLoginDto.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2019-2025 Zheng Jie - * - * 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 me.zhengjie.modules.system.service.dto; - -import com.alibaba.fastjson.annotation.JSONField; -import io.swagger.annotations.ApiModelProperty; - -/** - * @author Zheng Jie - * @description 用户缓存时使用 - * @date 2022-05-26 - **/ -public class UserLoginDto extends UserDto { - - @ApiModelProperty(value = "密码") - @JSONField(serialize = false) - private String password; - - @ApiModelProperty(value = "是否为管理员") - private Boolean isAdmin; -} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java index d4a3d4a78..9904d4315 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java @@ -27,7 +27,6 @@ import me.zhengjie.modules.system.repository.UserRepository; import me.zhengjie.modules.system.service.UserService; import me.zhengjie.modules.system.service.dto.*; -import me.zhengjie.modules.system.service.mapstruct.UserLoginMapper; import me.zhengjie.modules.system.service.mapstruct.UserMapper; import me.zhengjie.utils.*; import org.springframework.data.domain.Page; @@ -57,7 +56,6 @@ public class UserServiceImpl implements UserService { private final RedisUtils redisUtils; private final UserCacheManager userCacheManager; private final OnlineUserService onlineUserService; - private final UserLoginMapper userLoginMapper; @Override public PageResult queryAll(UserQueryCriteria criteria, Pageable pageable) { @@ -182,12 +180,12 @@ public UserDto findByName(String userName) { } @Override - public UserLoginDto getLoginData(String userName) { + public UserDto getLoginData(String userName) { User user = userRepository.findByUsername(userName); if (user == null) { return null; } else { - return userLoginMapper.toDto(user); + return userMapper.toDto(user); } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/UserLoginMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/UserLoginMapper.java deleted file mode 100644 index 19b77282a..000000000 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapstruct/UserLoginMapper.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2019-2025 Zheng Jie - * - * 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 me.zhengjie.modules.system.service.mapstruct; - -import me.zhengjie.base.BaseMapper; -import me.zhengjie.modules.system.domain.User; -import me.zhengjie.modules.system.service.dto.UserLoginDto; -import org.mapstruct.Mapper; -import org.mapstruct.ReportingPolicy; - -/** - * @author Zheng Jie - * @date 2018-11-23 - */ -@Mapper(componentModel = "spring",uses = {RoleMapper.class, DeptMapper.class, JobMapper.class},unmappedTargetPolicy = ReportingPolicy.IGNORE) -public interface UserLoginMapper extends BaseMapper { -} From fb422c6a9a4e9a41d1745ad935b245ca74bdda5f Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Sat, 18 Jan 2025 17:55:13 +0800 Subject: [PATCH 31/54] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E6=97=A5=E5=BF=97=E5=8F=82=E6=95=B0=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=EF=BC=8C=E4=BC=98=E5=8C=96=E5=9C=A8=E7=BA=BF=E7=94=A8=E6=88=B7?= =?UTF-8?q?Token=E7=AE=A1=E7=90=86=EF=BC=8C=E4=BC=98=E5=8C=96SQl=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/me/zhengjie/utils/StringUtils.java | 9 ++- .../java/me/zhengjie/aspect/LogAspect.java | 4 ++ .../service/impl/SysLogServiceImpl.java | 71 +++++++++++-------- .../security/security/TokenProvider.java | 18 +++-- .../security/service/OnlineUserService.java | 3 +- .../security/service/dto/OnlineUserDto.java | 3 + .../src/main/resources/spy.properties | 2 +- 7 files changed, 71 insertions(+), 39 deletions(-) diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java b/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java index 6c1893762..c6f1d9585 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java @@ -133,13 +133,13 @@ static String toUnderScoreCase(String s) { */ public static String getIp(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for"); - if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) { + if (ip == null || ip.isEmpty() || UNKNOWN.equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } - if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) { + if (ip == null || ip.isEmpty() || UNKNOWN.equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } - if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) { + if (ip == null || ip.isEmpty() || UNKNOWN.equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } String comma = ","; @@ -169,6 +169,9 @@ public static String getCityInfo(String ip) { return null; } + /** + * 获取浏览器 + */ public static String getBrowser(HttpServletRequest request) { UserAgent ua = UserAgentUtil.parse(request.getHeader("User-Agent")); String browser = ua.getBrowser().toString() + " " + ua.getVersion(); diff --git a/eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java b/eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java index b5f35fdcd..b091d7ba5 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java +++ b/eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java @@ -88,6 +88,10 @@ public void logAfterThrowing(JoinPoint joinPoint, Throwable e) { sysLogService.save(getUsername(), StringUtils.getBrowser(request), StringUtils.getIp(request), (ProceedingJoinPoint)joinPoint, sysLog); } + /** + * 获取用户名 + * @return / + */ public String getUsername() { try { return SecurityUtils.getCurrentUsername(); diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/impl/SysLogServiceImpl.java b/eladmin-logging/src/main/java/me/zhengjie/service/impl/SysLogServiceImpl.java index 866c6339a..74598b8dc 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/service/impl/SysLogServiceImpl.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/impl/SysLogServiceImpl.java @@ -35,8 +35,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.lang.reflect.Method; @@ -50,9 +50,12 @@ @Service @RequiredArgsConstructor public class SysLogServiceImpl implements SysLogService { + private final LogRepository logRepository; private final LogErrorMapper logErrorMapper; private final LogSmallMapper logSmallMapper; + // 定义敏感字段常量数组 + private static final String[] SENSITIVE_KEYS = {"password"}; @Override public Object queryAll(SysLogQueryCriteria criteria, Pageable pageable) { @@ -81,6 +84,8 @@ public void save(String username, String browser, String ip, ProceedingJoinPoint if (sysLog == null) { throw new IllegalArgumentException("Log 不能为 null!"); } + + // 获取方法签名 MethodSignature signature = (MethodSignature) joinPoint.getSignature(); Method method = signature.getMethod(); me.zhengjie.annotation.Log aopLog = method.getAnnotation(me.zhengjie.annotation.Log.class); @@ -88,56 +93,64 @@ public void save(String username, String browser, String ip, ProceedingJoinPoint // 方法路径 String methodName = joinPoint.getTarget().getClass().getName() + "." + signature.getName() + "()"; - // 描述 - sysLog.setDescription(aopLog.value()); - + // 获取参数 + JSONObject params = getParameter(method, joinPoint.getArgs()); + + // 填充基本信息 sysLog.setRequestIp(ip); sysLog.setAddress(StringUtils.getCityInfo(sysLog.getRequestIp())); sysLog.setMethod(methodName); sysLog.setUsername(username); - sysLog.setParams(getParameter(method, joinPoint.getArgs())); - // 记录登录用户,隐藏密码信息 - if(signature.getName().equals("login") && StringUtils.isNotEmpty(sysLog.getParams())){ - JSONObject obj = JSON.parseObject(sysLog.getParams()); - sysLog.setUsername(obj.getString("username")); - sysLog.setParams(JSON.toJSONString(Dict.create().set("username", sysLog.getUsername()))); - } + sysLog.setParams(JSON.toJSONString(params)); sysLog.setBrowser(browser); + sysLog.setDescription(aopLog.value()); + + // 如果没有获取到用户名,尝试从参数中获取 + if(StringUtils.isBlank(sysLog.getUsername())){ + sysLog.setUsername(params.getString("username")); + } + + // 保存 logRepository.save(sysLog); } /** * 根据方法和传入的参数获取请求参数 */ - private String getParameter(Method method, Object[] args) { - List argList = new ArrayList<>(); + private JSONObject getParameter(Method method, Object[] args) { + JSONObject params = new JSONObject(); Parameter[] parameters = method.getParameters(); for (int i = 0; i < parameters.length; i++) { - // 过滤掉不能序列化的类型: MultiPartFile + // 过滤掉 MultiPartFile if (args[i] instanceof MultipartFile) { continue; } - //将RequestBody注解修饰的参数作为请求参数 + // 过滤掉 HttpServletResponse + if (args[i] instanceof HttpServletResponse) { + continue; + } + // 过滤掉 HttpServletRequest + if (args[i] instanceof HttpServletRequest) { + continue; + } + // 将RequestBody注解修饰的参数作为请求参数 RequestBody requestBody = parameters[i].getAnnotation(RequestBody.class); if (requestBody != null) { - argList.add(args[i]); - } - //将RequestParam注解修饰的参数作为请求参数 - RequestParam requestParam = parameters[i].getAnnotation(RequestParam.class); - if (requestParam != null) { - Map map = new HashMap<>(2); + params.putAll((JSONObject) JSON.toJSON(args[i])); + } else { String key = parameters[i].getName(); - if (!StringUtils.isEmpty(requestParam.value())) { - key = requestParam.value(); - } - map.put(key, args[i]); - argList.add(map); + params.put(key, args[i]); } } - if (argList.isEmpty()) { - return ""; + // 遍历敏感字段数组并替换值 + Set keys = params.keySet(); + for (String key : SENSITIVE_KEYS) { + if (keys.contains(key)) { + params.put(key, "******"); + } } - return argList.size() == 1 ? JSON.toJSONString(argList.get(0)) : JSON.toJSONString(argList); + // 返回参数 + return params; } @Override diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenProvider.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenProvider.java index 812f57ac2..46b140a96 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenProvider.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenProvider.java @@ -18,7 +18,6 @@ import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; -import cn.hutool.crypto.digest.DigestUtil; import io.jsonwebtoken.*; import io.jsonwebtoken.io.Decoders; import io.jsonwebtoken.security.Keys; @@ -47,7 +46,7 @@ public class TokenProvider implements InitializingBean { private JwtBuilder jwtBuilder; private final RedisUtils redisUtils; private final SecurityProperties properties; - public static final String AUTHORITIES_UUID_KEY = "uuid"; + public static final String AUTHORITIES_UUID_KEY = "uid"; public static final String AUTHORITIES_UID_KEY = "userId"; public TokenProvider(SecurityProperties properties, RedisUtils redisUtils) { @@ -79,7 +78,7 @@ public String createToken(JwtUserDto user) { // 设置用户ID claims.put(AUTHORITIES_UID_KEY, user.getUser().getId()); // 设置UUID,确保每次Token不一样 - claims.put(AUTHORITIES_UUID_KEY, IdUtil.simpleUUID()); + claims.put(AUTHORITIES_UUID_KEY, IdUtil.objectId()); return jwtBuilder .setClaims(claims) .setSubject(user.getUsername()) @@ -136,7 +135,16 @@ public String getToken(HttpServletRequest request) { */ public String loginKey(String token) { Claims claims = getClaims(token); - String md5Token = DigestUtil.md5Hex(token); - return properties.getOnlineKey() + claims.getSubject() + "-" + md5Token; + return properties.getOnlineKey() + claims.getSubject() + ":" + getId(token); + } + + /** + * 获取登录用户TokenKey + * @param token / + * @return / + */ + public String getId(String token) { + Claims claims = getClaims(token); + return claims.get(AUTHORITIES_UUID_KEY).toString(); } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/OnlineUserService.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/OnlineUserService.java index c27a554c1..553c26cc9 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/OnlineUserService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/OnlineUserService.java @@ -53,11 +53,12 @@ public class OnlineUserService { public void save(JwtUserDto jwtUserDto, String token, HttpServletRequest request){ String dept = jwtUserDto.getUser().getDept().getName(); String ip = StringUtils.getIp(request); + String id = tokenProvider.getId(token); String browser = StringUtils.getBrowser(request); String address = StringUtils.getCityInfo(ip); OnlineUserDto onlineUserDto = null; try { - onlineUserDto = new OnlineUserDto(jwtUserDto.getUsername(), jwtUserDto.getUser().getNickName(), dept, browser , ip, address, EncryptUtils.desEncrypt(token), new Date()); + onlineUserDto = new OnlineUserDto(id, jwtUserDto.getUsername(), jwtUserDto.getUser().getNickName(), dept, browser , ip, address, EncryptUtils.desEncrypt(token), new Date()); } catch (Exception e) { log.error(e.getMessage(),e); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/OnlineUserDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/OnlineUserDto.java index 826f203d3..354ee066b 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/OnlineUserDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/OnlineUserDto.java @@ -30,6 +30,9 @@ @NoArgsConstructor public class OnlineUserDto { + @ApiModelProperty(value = "Token编号") + private String uid; + @ApiModelProperty(value = "用户名") private String userName; diff --git a/eladmin-system/src/main/resources/spy.properties b/eladmin-system/src/main/resources/spy.properties index 7b60caf6b..fc814804a 100644 --- a/eladmin-system/src/main/resources/spy.properties +++ b/eladmin-system/src/main/resources/spy.properties @@ -23,7 +23,7 @@ outagedetectioninterval=2 filter=true # 过滤 Log 时所排除的 sql 关键字,以逗号分隔 -exclude=select 1 +exclude=SELECT 1,INSERT INTO sys_log # 配置记录 Log 例外,可去掉的结果集有error,info,batch,debug,statement,commit,rollback,result,resultset. excludecategories=info,debug,result,commit,resultset \ No newline at end of file From 0a91748fd246e566d09beac1b9593dcd532e17c8 Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Sat, 18 Jan 2025 18:03:56 +0800 Subject: [PATCH 32/54] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96Token=E7=94=9F?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../me/zhengjie/modules/security/security/TokenProvider.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenProvider.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenProvider.java index 46b140a96..73659ca08 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenProvider.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenProvider.java @@ -78,7 +78,7 @@ public String createToken(JwtUserDto user) { // 设置用户ID claims.put(AUTHORITIES_UID_KEY, user.getUser().getId()); // 设置UUID,确保每次Token不一样 - claims.put(AUTHORITIES_UUID_KEY, IdUtil.objectId()); + claims.put(AUTHORITIES_UUID_KEY, IdUtil.simpleUUID()); return jwtBuilder .setClaims(claims) .setSubject(user.getUsername()) From db63c953d49e100b38f65d13b3fc17ead5a831ec Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Tue, 21 Jan 2025 15:00:44 +0800 Subject: [PATCH 33/54] =?UTF-8?q?perf:=20=E6=B7=BB=E5=8A=A0=E6=9D=83?= =?UTF-8?q?=E9=99=90=E6=A3=80=E6=9F=A5=EF=BC=8C=E4=BC=98=E5=8C=96=E8=A7=92?= =?UTF-8?q?=E8=89=B2=E7=BC=93=E5=AD=98=E5=8F=8A=E5=91=BD=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/me/zhengjie/config/AuthorityConfig.java | 5 +++++ .../src/main/java/me/zhengjie/utils/CacheKey.java | 14 +++++++++++--- .../security/service/UserDetailsServiceImpl.java | 8 ++++++-- .../modules/system/service/RoleService.java | 6 +++--- .../system/service/impl/RoleServiceImpl.java | 13 ++++++++++--- .../system/service/impl/UserServiceImpl.java | 1 + 6 files changed, 36 insertions(+), 11 deletions(-) diff --git a/eladmin-common/src/main/java/me/zhengjie/config/AuthorityConfig.java b/eladmin-common/src/main/java/me/zhengjie/config/AuthorityConfig.java index e4daacd67..b65385913 100644 --- a/eladmin-common/src/main/java/me/zhengjie/config/AuthorityConfig.java +++ b/eladmin-common/src/main/java/me/zhengjie/config/AuthorityConfig.java @@ -28,6 +28,11 @@ @Service(value = "el") public class AuthorityConfig { + /** + * 判断接口是否有权限 + * @param permissions 权限 + * @return / + */ public Boolean check(String ...permissions){ // 获取当前用户的所有权限 List elPermissions = SecurityUtils.getCurrentUser().getAuthorities().stream().map(GrantedAuthority::getAuthority).collect(Collectors.toList()); diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/CacheKey.java b/eladmin-common/src/main/java/me/zhengjie/utils/CacheKey.java index 7485713f1..e8fb08609 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/CacheKey.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/CacheKey.java @@ -16,9 +16,9 @@ package me.zhengjie.utils; /** - * @author: liaojinlong - * @date: 2020/6/11 15:49 - * @apiNote: 关于缓存的Key集合 + * @author liaojinlong + * @date 2020/6/11 15:49 + * @description 关于缓存的Key集合 */ public interface CacheKey { @@ -26,31 +26,39 @@ public interface CacheKey { * 用户 */ String USER_ID = "user::id:"; + /** * 数据 */ String DATA_USER = "data::user:"; + /** * 菜单 */ String MENU_ID = "menu::id:"; String MENU_USER = "menu::user:"; + /** * 角色授权 */ String ROLE_AUTH = "role::auth:"; + String ROLE_USER = "role::user:"; + /** * 角色信息 */ String ROLE_ID = "role::id:"; + /** * 部门 */ String DEPT_ID = "dept::id:"; + /** * 岗位 */ String JOB_ID = "job::id:"; + /** * 数据字典 */ diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserDetailsServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserDetailsServiceImpl.java index 6d5d51adf..1e0723d19 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserDetailsServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserDetailsServiceImpl.java @@ -18,14 +18,15 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import me.zhengjie.exception.BadRequestException; +import me.zhengjie.modules.security.service.dto.AuthorityDto; import me.zhengjie.modules.security.service.dto.JwtUserDto; -import me.zhengjie.modules.system.domain.User; import me.zhengjie.modules.system.service.DataService; import me.zhengjie.modules.system.service.RoleService; import me.zhengjie.modules.system.service.UserService; import me.zhengjie.modules.system.service.dto.UserDto; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.stereotype.Service; +import java.util.List; /** * @author Zheng Jie @@ -51,7 +52,10 @@ public JwtUserDto loadUserByUsername(String username) { if (!user.getEnabled()) { throw new BadRequestException("账号未激活!"); } - jwtUserDto = new JwtUserDto(user, dataService.getDeptIds(user), roleService.buildAuthorities(user), user.getPassword()); + // 获取用户的权限 + List authorities = roleService.buildPermissions(user); + // 初始化JwtUserDto + jwtUserDto = new JwtUserDto(user, dataService.getDeptIds(user), authorities, user.getPassword()); // 添加缓存数据 userCacheManager.addUserCache(username, jwtUserDto); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java index 8fc1be999..d1743cd9b 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java @@ -67,10 +67,10 @@ public interface RoleService { /** * 根据用户ID查询 - * @param id 用户ID + * @param userId 用户ID * @return / */ - List findByUsersId(Long id); + List findByUsersId(Long userId); /** * 根据角色查询角色级别 @@ -120,7 +120,7 @@ public interface RoleService { * @param user 用户信息 * @return 权限信息 */ - List buildAuthorities(UserDto user); + List buildPermissions(UserDto user); /** * 验证是否被用户关联 diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java index f43096f4e..7fba169ba 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java @@ -148,8 +148,14 @@ public void delete(Set ids) { } @Override - public List findByUsersId(Long id) { - return roleSmallMapper.toDto(new ArrayList<>(roleRepository.findByUserId(id))); + public List findByUsersId(Long userId) { + String key = CacheKey.ROLE_USER + userId; + List roles = redisUtils.getList(key, RoleSmallDto.class); + if (CollUtil.isEmpty(roles)) { + roles = roleSmallMapper.toDto(new ArrayList<>(roleRepository.findByUserId(userId))); + redisUtils.set(key, roles, 1, TimeUnit.DAYS); + } + return roles; } @Override @@ -165,7 +171,7 @@ public Integer findByRoles(Set roles) { } @Override - public List buildAuthorities(UserDto user) { + public List buildPermissions(UserDto user) { String key = CacheKey.ROLE_AUTH + user.getId(); List authorityDtos = redisUtils.getList(key, AuthorityDto.class); if (CollUtil.isEmpty(authorityDtos)) { @@ -225,6 +231,7 @@ public void delCaches(Long id, List users) { redisUtils.delByKeys(CacheKey.DATA_USER, userIds); redisUtils.delByKeys(CacheKey.MENU_USER, userIds); redisUtils.delByKeys(CacheKey.ROLE_AUTH, userIds); + redisUtils.delByKeys(CacheKey.ROLE_USER, userIds); } redisUtils.del(CacheKey.ROLE_ID + id); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java index 9904d4315..15782d231 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java @@ -119,6 +119,7 @@ public void update(User resources) throws Exception { redisUtils.del(CacheKey.DATA_USER + resources.getId()); redisUtils.del(CacheKey.MENU_USER + resources.getId()); redisUtils.del(CacheKey.ROLE_AUTH + resources.getId()); + redisUtils.del(CacheKey.ROLE_USER + resources.getId()); } // 修改部门会影响 数据权限 if (!Objects.equals(resources.getDept(),user.getDept())) { From 31b033afe89356950c2cf19672047455b99a8d1b Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Tue, 21 Jan 2025 15:20:02 +0800 Subject: [PATCH 34/54] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E7=BC=93=E5=AD=98=E7=AE=A1=E7=90=86=EF=BC=8C=E7=BB=9F?= =?UTF-8?q?=E4=B8=80=E8=BD=AC=E6=8D=A2=E4=B8=BA=E5=B0=8F=E5=86=99=20close?= =?UTF-8?q?=20https://github.com/elunez/eladmin/issues/866?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zhengjie/modules/security/service/UserCacheManager.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserCacheManager.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserCacheManager.java index 51b335374..1333ed213 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserCacheManager.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserCacheManager.java @@ -44,6 +44,8 @@ public class UserCacheManager { * @return JwtUserDto */ public JwtUserDto getUserCache(String userName) { + // 转小写 + userName = StringUtils.lowerCase(userName); if (StringUtils.isNotEmpty(userName)) { // 获取数据 return redisUtils.get(LoginProperties.cacheKey + userName, JwtUserDto.class); @@ -57,6 +59,8 @@ public JwtUserDto getUserCache(String userName) { */ @Async public void addUserCache(String userName, JwtUserDto user) { + // 转小写 + userName = StringUtils.lowerCase(userName); if (StringUtils.isNotEmpty(userName)) { // 添加数据, 避免数据同时过期 long time = idleTime + RandomUtil.randomInt(900, 1800); @@ -71,6 +75,8 @@ public void addUserCache(String userName, JwtUserDto user) { */ @Async public void cleanUserCache(String userName) { + // 转小写 + userName = StringUtils.lowerCase(userName); if (StringUtils.isNotEmpty(userName)) { // 清除数据 redisUtils.del(LoginProperties.cacheKey + userName); From b6295a7bdfc7320d67b8dd74d86b0e30abcf3ffa Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Tue, 21 Jan 2025 15:35:20 +0800 Subject: [PATCH 35/54] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E9=87=8D?= =?UTF-8?q?=E7=BD=AE=E5=AF=86=E7=A0=81=E5=90=8E=EF=BC=8C=E6=9C=AA=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E7=BC=93=E5=AD=98=E7=9A=84=E9=97=AE=E9=A2=98=20close?= =?UTF-8?q?=20https://github.com/elunez/eladmin/issues/866?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/system/service/impl/UserServiceImpl.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java index 15782d231..706938854 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java @@ -200,6 +200,15 @@ public void updatePass(String username, String pass) { @Override @Transactional(rollbackFor = Exception.class) public void resetPwd(Set ids, String pwd) { + List users = userRepository.findAllById(ids); + // 清除缓存 + users.forEach(user -> { + // 清除缓存 + flushCache(user.getUsername()); + // 强制退出 + onlineUserService.kickOutForUsername(user.getUsername()); + }); + // 重置密码 userRepository.resetPwd(ids, pwd); } From 0edf43c78e988f3afe9539dad1bdec3fe422ee52 Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Tue, 21 Jan 2025 16:00:41 +0800 Subject: [PATCH 36/54] =?UTF-8?q?feat:=20=E2=9C=A8=EF=B8=8F=E6=9B=B4?= =?UTF-8?q?=E6=96=B0Spring=20Boot=E7=89=88=E6=9C=AC=E8=87=B32.7.18?= =?UTF-8?q?=E5=B9=B6=E9=87=8D=E6=9E=84=E5=AE=89=E5=85=A8=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- .../main/java/me/zhengjie/base/BaseEntity.java | 2 +- .../security/config/SpringSecurityConfig.java | 16 +++++++--------- pom.xml | 3 ++- 4 files changed, 11 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 615ec89d4..066e050b1 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ #### 项目简介 -一个基于 Spring Boot 2.6.4 、 Spring Boot Jpa、 JWT、Spring Security、Redis、Vue的前后端分离的后台管理系统 +一个基于 Spring Boot 2.7.18 、 Spring Boot Jpa、 JWT、Spring Security、Redis、Vue的前后端分离的后台管理系统 现已发布基于 mybatis-plus 版本,项目地址:[https://github.com/elunez/eladmin-mp](https://github.com/elunez/eladmin-mp)、[https://gitee.com/elunez/eladmin-mp](https://gitee.com/elunez/eladmin-mp)。 diff --git a/eladmin-common/src/main/java/me/zhengjie/base/BaseEntity.java b/eladmin-common/src/main/java/me/zhengjie/base/BaseEntity.java index a774e0362..7f5a0d9f5 100644 --- a/eladmin-common/src/main/java/me/zhengjie/base/BaseEntity.java +++ b/eladmin-common/src/main/java/me/zhengjie/base/BaseEntity.java @@ -35,7 +35,7 @@ /** * 通用字段, is_del 根据需求自行添加 * @author Zheng Jie - * @Date 2019年10月24日20:46:32 + * @date 2019年10月24日20:46:32 */ @Getter @Setter diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SpringSecurityConfig.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SpringSecurityConfig.java index 1aaeacc41..f085281b2 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SpringSecurityConfig.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SpringSecurityConfig.java @@ -18,7 +18,6 @@ import lombok.RequiredArgsConstructor; import me.zhengjie.modules.security.security.*; import me.zhengjie.modules.security.service.OnlineUserService; -import me.zhengjie.modules.security.service.UserCacheManager; import me.zhengjie.utils.AnonTagUtils; import me.zhengjie.utils.enums.RequestMethodEnum; import org.springframework.context.ApplicationContext; @@ -27,12 +26,11 @@ import org.springframework.http.HttpMethod; import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.config.core.GrantedAuthorityDefaults; import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.security.web.SecurityFilterChain; import org.springframework.web.filter.CorsFilter; import java.util.*; @@ -40,10 +38,9 @@ * @author Zheng Jie */ @Configuration -@EnableWebSecurity @RequiredArgsConstructor @EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true) -public class SpringSecurityConfig extends WebSecurityConfigurerAdapter { +public class SpringSecurityConfig { private final TokenProvider tokenProvider; private final CorsFilter corsFilter; @@ -65,11 +62,11 @@ public PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } - @Override - protected void configure(HttpSecurity httpSecurity) throws Exception { + @Bean + protected SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception { // 获取匿名标记 Map> anonymousUrls = AnonTagUtils.getAnonymousUrl(applicationContext); - httpSecurity + return httpSecurity // 禁用 CSRF .csrf().disable() .addFilter(corsFilter) @@ -124,7 +121,8 @@ protected void configure(HttpSecurity httpSecurity) throws Exception { .antMatchers(anonymousUrls.get(RequestMethodEnum.ALL.getType()).toArray(new String[0])).permitAll() // 所有请求都需要认证 .anyRequest().authenticated() - .and().apply(securityConfigurerAdapter()); + .and().apply(securityConfigurerAdapter()) + .and().build(); } private TokenConfigurer securityConfigurerAdapter() { diff --git a/pom.xml b/pom.xml index d59e0f036..45a718a86 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ org.springframework.boot spring-boot-starter-parent - 2.6.6 + 2.7.18 @@ -120,6 +120,7 @@ mysql mysql-connector-java + 8.0.31 runtime From 8e4f44a670356c794464ee70ffb42943b058b21c Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Tue, 21 Jan 2025 16:31:25 +0800 Subject: [PATCH 37/54] =?UTF-8?q?style:=20=F0=9F=93=9A=EF=B8=8F=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0Spring=E6=97=A5=E5=BF=97=E7=BA=A7=E5=88=AB=E6=8E=A7?= =?UTF-8?q?=E5=88=B6=E4=B8=BAwarn?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eladmin-system/src/main/resources/logback.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/eladmin-system/src/main/resources/logback.xml b/eladmin-system/src/main/resources/logback.xml index f991c4147..6ed7c43dd 100644 --- a/eladmin-system/src/main/resources/logback.xml +++ b/eladmin-system/src/main/resources/logback.xml @@ -17,6 +17,9 @@ + + + From f9799cdfb3776b9cc1b5712b6a56ef94f25a4a6b Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Tue, 21 Jan 2025 16:35:40 +0800 Subject: [PATCH 38/54] =?UTF-8?q?style:=20=F0=9F=93=9A=EF=B8=8F=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 066e050b1..f9684227d 100644 --- a/README.md +++ b/README.md @@ -82,15 +82,29 @@ - annotation 为系统自定义注解 - aspect 自定义注解的切面 - base 提供了Entity、DTO基类和mapstruct的通用mapper - - config 自定义权限实现、redis配置、swagger配置、Rsa配置等 + - config 项目通用配置 + - Web配置跨域与静态资源映射、Swagger配置,文件上传临时路径配置 + - Redis配置,Redission配置, 异步线程池配置 + - 权限拦截配置、AuthorityConfig、Druid 删除广告配置 - exception 项目统一异常的处理 - - utils 系统通用工具类 + - utils 系统通用工具类,列举一些常用的工具类 + - BigDecimaUtils 金额计算工具类 + - RequestHolder 请求工具类 + - SecurityUtils 安全工具类 + - StringUtils 字符串工具类 + - SpringBeanHolder Spring Bean工具类 + - RedisUtils Redis工具类 + - EncryptUtils 加密工具类 + - FileUtil 文件工具类 - eladmin-system 系统核心模块(系统启动入口) - - config 配置跨域与静态资源,与数据权限 - - thread 线程池相关 - - modules 系统相关模块(登录授权、系统监控、定时任务、运维管理等) + - sysrunner 程序启动后处理数据 + - modules 系统相关模块(登录授权、系统监控、定时任务、系统模块、运维模块) - eladmin-logging 系统日志模块 - eladmin-tools 系统第三方工具模块 + - email 邮件工具 + - qiniu 七牛云存储工具 + - alipay 支付宝支付工具 + - local-storage 本地存储工具 - eladmin-generator 系统代码生成模块 ``` From 4e4ca2082867a4c4cd425e6e5c9e98a59832d0d0 Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Wed, 22 Jan 2025 10:17:28 +0800 Subject: [PATCH 39/54] =?UTF-8?q?feat:=20=E5=8D=87=E7=BA=A7=E9=83=A8?= =?UTF-8?q?=E5=88=86=E4=BE=9D=E8=B5=96=E4=BA=8E=E4=BC=98=E5=8C=96=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=EF=BC=88=E5=8D=87=E7=BA=A7fastjson2=EF=BC=8C=E4=B8=8D?= =?UTF-8?q?=E5=86=8D=E5=85=BC=E5=AE=B9fastjson1=EF=BC=89=EF=BC=8C=E5=85=B6?= =?UTF-8?q?=E4=BB=96=E5=8D=87=E7=BA=A7=E7=9C=8B=E8=AF=A6=E6=83=85=20?= =?UTF-8?q?=E5=8D=87=E7=BA=A7=20hutool=EF=BC=9A5.8.35=20=E5=8D=87=E7=BA=A7?= =?UTF-8?q?=20oshi-core=EF=BC=9A6.6.5=20=E5=8D=87=E7=BA=A7=20mica-ip2regio?= =?UTF-8?q?n=EF=BC=9A2.7.18.9=20=E5=8D=87=E7=BA=A7=20poi=EF=BC=9A5.4.0=20?= =?UTF-8?q?=E5=8D=87=E7=BA=A7=20commons-text=EF=BC=9A1.13.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eladmin-common/pom.xml | 6 +- .../zhengjie/config/RedisConfiguration.java | 38 ++++------ .../zhengjie/config/RemoveDruidAdConfig.java | 2 +- .../config/webConfig/ConfigurerAdapter.java | 11 +-- .../config/webConfig/SwaggerConfig.java | 2 +- .../java/me/zhengjie/utils/SecurityUtils.java | 6 +- .../me/zhengjie/utils/SpringBeanHolder.java | 2 +- eladmin-generator/pom.xml | 4 +- .../src/main/resources/template/admin/Dto.ftl | 4 +- eladmin-logging/pom.xml | 4 +- .../service/impl/SysLogServiceImpl.java | 4 +- eladmin-system/pom.xml | 26 +++---- .../maint/websocket/WebSocketServer.java | 2 +- .../modules/quartz/utils/QuartzRunnable.java | 2 +- .../security/service/dto/JwtUserDto.java | 2 +- .../zhengjie/modules/system/domain/Dept.java | 2 +- .../zhengjie/modules/system/domain/Menu.java | 3 +- .../zhengjie/modules/system/domain/Role.java | 2 +- .../modules/system/service/dto/UserDto.java | 2 +- eladmin-tools/pom.xml | 4 +- .../service/impl/QiNiuServiceImpl.java | 2 +- pom.xml | 74 ++++++++++++------- 22 files changed, 104 insertions(+), 100 deletions(-) diff --git a/eladmin-common/pom.xml b/eladmin-common/pom.xml index dd010d626..e1510a7a3 100644 --- a/eladmin-common/pom.xml +++ b/eladmin-common/pom.xml @@ -1,7 +1,5 @@ - + eladmin me.zhengjie @@ -9,7 +7,7 @@ 4.0.0 - 5.8.21 + 5.8.35 eladmin-common diff --git a/eladmin-common/src/main/java/me/zhengjie/config/RedisConfiguration.java b/eladmin-common/src/main/java/me/zhengjie/config/RedisConfiguration.java index 1f757fe40..cdd47e4b9 100644 --- a/eladmin-common/src/main/java/me/zhengjie/config/RedisConfiguration.java +++ b/eladmin-common/src/main/java/me/zhengjie/config/RedisConfiguration.java @@ -15,9 +15,9 @@ */ package me.zhengjie.config; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.parser.ParserConfig; -import com.alibaba.fastjson.serializer.SerializerFeature; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONFactory; +import com.alibaba.fastjson2.JSONWriter; import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.digest.DigestUtils; import org.springframework.cache.Cache; @@ -33,8 +33,8 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.RedisSerializationContext; import org.springframework.data.redis.serializer.RedisSerializer; +import org.springframework.data.redis.serializer.SerializationException; import org.springframework.data.redis.serializer.StringRedisSerializer; - import java.nio.charset.StandardCharsets; import java.time.Duration; import java.util.HashMap; @@ -65,25 +65,13 @@ public RedisCacheConfiguration redisCacheConfiguration(){ @Bean(name = "redisTemplate") public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate template = new RedisTemplate<>(); - //序列化 + // 指定 key 和 value 的序列化方案 FastJsonRedisSerializer fastJsonRedisSerializer = new FastJsonRedisSerializer<>(Object.class); // value值的序列化采用fastJsonRedisSerializer template.setValueSerializer(fastJsonRedisSerializer); template.setHashValueSerializer(fastJsonRedisSerializer); - // fastjson 升级到 1.2.83 后需要指定序列化白名单 - ParserConfig.getGlobalInstance().addAccept("me.zhengjie.domain"); - ParserConfig.getGlobalInstance().addAccept("me.zhengjie.service.dto"); - // 模块内的实体类 - ParserConfig.getGlobalInstance().addAccept("me.zhengjie.modules.mnt.domain"); - ParserConfig.getGlobalInstance().addAccept("me.zhengjie.modules.quartz.domain"); - ParserConfig.getGlobalInstance().addAccept("me.zhengjie.modules.system.domain"); - // 模块内的 Dto - ParserConfig.getGlobalInstance().addAccept("me.zhengjie.modules.mnt.service.dto"); - ParserConfig.getGlobalInstance().addAccept("me.zhengjie.modules.quartz.service.dto"); - ParserConfig.getGlobalInstance().addAccept("me.zhengjie.modules.security.service.dto"); - ParserConfig.getGlobalInstance().addAccept("me.zhengjie.modules.system.service.dto"); - // 分页返回数据 - ParserConfig.getGlobalInstance().addAccept("me.zhengjie.utils.PageResult"); + // 设置fastJson的序列化白名单 + JSONFactory.getDefaultObjectReaderProvider().addAutoTypeAccept("me.zhengjie"); // key的序列化采用StringRedisSerializer template.setKeySerializer(new StringRedisSerializer()); template.setHashKeySerializer(new StringRedisSerializer()); @@ -92,7 +80,7 @@ public RedisTemplate redisTemplate(RedisConnectionFactory redisC } /** - * 缓存管理器,需要指定使用 + * 缓存管理器 * @param redisConnectionFactory / * @return 缓存管理器 */ @@ -132,7 +120,7 @@ public KeyGenerator keyGenerator() { } @Bean - @SuppressWarnings("all") + @SuppressWarnings({"unchecked","all"}) public CacheErrorHandler errorHandler() { return new SimpleCacheErrorHandler() { @Override @@ -174,15 +162,17 @@ static class FastJsonRedisSerializer implements RedisSerializer { } @Override - public byte[] serialize(T t) { + public byte[] serialize(T t) throws SerializationException + { if (t == null) { return new byte[0]; } - return JSON.toJSONString(t, SerializerFeature.WriteClassName).getBytes(StandardCharsets.UTF_8); + return JSON.toJSONString(t, JSONWriter.Feature.WriteClassName).getBytes(StandardCharsets.UTF_8); } @Override - public T deserialize(byte[] bytes) { + public T deserialize(byte[] bytes) throws SerializationException + { if (bytes == null || bytes.length == 0) { return null; } diff --git a/eladmin-common/src/main/java/me/zhengjie/config/RemoveDruidAdConfig.java b/eladmin-common/src/main/java/me/zhengjie/config/RemoveDruidAdConfig.java index f432de471..8757ead1a 100644 --- a/eladmin-common/src/main/java/me/zhengjie/config/RemoveDruidAdConfig.java +++ b/eladmin-common/src/main/java/me/zhengjie/config/RemoveDruidAdConfig.java @@ -21,7 +21,7 @@ * @date 2025-01-11 **/ @Configuration -@SuppressWarnings("all") +@SuppressWarnings({"unchecked","all"}) @ConditionalOnWebApplication @AutoConfigureAfter(DruidDataSourceAutoConfigure.class) @ConditionalOnProperty(name = "spring.datasource.druid.stat-view-servlet.enabled", diff --git a/eladmin-common/src/main/java/me/zhengjie/config/webConfig/ConfigurerAdapter.java b/eladmin-common/src/main/java/me/zhengjie/config/webConfig/ConfigurerAdapter.java index 547ae7faa..72c54bbe4 100644 --- a/eladmin-common/src/main/java/me/zhengjie/config/webConfig/ConfigurerAdapter.java +++ b/eladmin-common/src/main/java/me/zhengjie/config/webConfig/ConfigurerAdapter.java @@ -15,9 +15,9 @@ */ package me.zhengjie.config.webConfig; -import com.alibaba.fastjson.serializer.SerializerFeature; -import com.alibaba.fastjson.support.config.FastJsonConfig; -import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter; +import com.alibaba.fastjson2.JSONWriter; +import com.alibaba.fastjson2.support.config.FastJsonConfig; +import com.alibaba.fastjson2.support.spring.http.converter.FastJsonHttpMessageConverter; import me.zhengjie.config.properties.FileProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -74,13 +74,14 @@ public void addResourceHandlers(ResourceHandlerRegistry registry) { @Override public void configureMessageConverters(List> converters) { - // 使用 fastjson 序列化,会导致 @JsonIgnore 失效,可以使用 @JSONField(serialize = false) 替换 + // 配置 FastJsonHttpMessageConverter FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter(); List supportMediaTypeList = new ArrayList<>(); supportMediaTypeList.add(MediaType.APPLICATION_JSON); FastJsonConfig config = new FastJsonConfig(); config.setDateFormat("yyyy-MM-dd HH:mm:ss"); - config.setSerializerFeatures(SerializerFeature.DisableCircularReferenceDetect); + // 开启引用检测 + config.setWriterFeatures(JSONWriter.Feature.ReferenceDetection); converter.setFastJsonConfig(config); converter.setSupportedMediaTypes(supportMediaTypeList); converter.setDefaultCharset(StandardCharsets.UTF_8); diff --git a/eladmin-common/src/main/java/me/zhengjie/config/webConfig/SwaggerConfig.java b/eladmin-common/src/main/java/me/zhengjie/config/webConfig/SwaggerConfig.java index cef733444..2b73c897d 100644 --- a/eladmin-common/src/main/java/me/zhengjie/config/webConfig/SwaggerConfig.java +++ b/eladmin-common/src/main/java/me/zhengjie/config/webConfig/SwaggerConfig.java @@ -67,7 +67,7 @@ public class SwaggerConfig { private final ApplicationContext applicationContext; @Bean - @SuppressWarnings("all") + @SuppressWarnings({"unchecked","all"}) public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .enable(enabled) diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/SecurityUtils.java b/eladmin-common/src/main/java/me/zhengjie/utils/SecurityUtils.java index fb98424ac..1c1f81341 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/SecurityUtils.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/SecurityUtils.java @@ -18,9 +18,9 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.jwt.JWT; import cn.hutool.jwt.JWTUtil; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; import lombok.extern.slf4j.Slf4j; import me.zhengjie.utils.enums.DataScopeEnum; import org.springframework.beans.factory.annotation.Value; diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/SpringBeanHolder.java b/eladmin-common/src/main/java/me/zhengjie/utils/SpringBeanHolder.java index ca9cdfc06..ef7ac7b35 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/SpringBeanHolder.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/SpringBeanHolder.java @@ -31,7 +31,7 @@ * @date 2019-01-07 */ @Slf4j -@SuppressWarnings("all") +@SuppressWarnings({"unchecked","all"}) public class SpringBeanHolder implements ApplicationContextAware, DisposableBean { private static ApplicationContext applicationContext = null; diff --git a/eladmin-generator/pom.xml b/eladmin-generator/pom.xml index 3584959b7..46b8e757b 100644 --- a/eladmin-generator/pom.xml +++ b/eladmin-generator/pom.xml @@ -1,7 +1,5 @@ - + eladmin me.zhengjie diff --git a/eladmin-generator/src/main/resources/template/admin/Dto.ftl b/eladmin-generator/src/main/resources/template/admin/Dto.ftl index 3dab87ac6..cc0f8f060 100644 --- a/eladmin-generator/src/main/resources/template/admin/Dto.ftl +++ b/eladmin-generator/src/main/resources/template/admin/Dto.ftl @@ -24,8 +24,8 @@ import java.math.BigDecimal; import java.io.Serializable; <#if !auto && pkColumnType = 'Long'> -import com.alibaba.fastjson.annotation.JSONField; -import com.alibaba.fastjson.serializer.ToStringSerializer; +import com.alibaba.fastjson2.annotation.JSONField; +import com.alibaba.fastjson2.serializer.ToStringSerializer; import io.swagger.annotations.ApiModelProperty; diff --git a/eladmin-logging/pom.xml b/eladmin-logging/pom.xml index 8613702d7..db4808cb5 100644 --- a/eladmin-logging/pom.xml +++ b/eladmin-logging/pom.xml @@ -1,7 +1,5 @@ - + eladmin me.zhengjie diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/impl/SysLogServiceImpl.java b/eladmin-logging/src/main/java/me/zhengjie/service/impl/SysLogServiceImpl.java index 74598b8dc..bcff37107 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/service/impl/SysLogServiceImpl.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/impl/SysLogServiceImpl.java @@ -17,8 +17,8 @@ import cn.hutool.core.lang.Dict; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; import lombok.RequiredArgsConstructor; import me.zhengjie.domain.SysLog; import me.zhengjie.repository.LogRepository; diff --git a/eladmin-system/pom.xml b/eladmin-system/pom.xml index a7b837ccd..667dacb62 100644 --- a/eladmin-system/pom.xml +++ b/eladmin-system/pom.xml @@ -1,7 +1,5 @@ - + eladmin me.zhengjie @@ -63,22 +61,22 @@ - - ch.ethz.ganymed - ganymed-ssh2 - build210 - - - com.jcraft - jsch - 0.1.55 - + + ch.ethz.ganymed + ganymed-ssh2 + build210 + + + com.jcraft + jsch + 0.1.55 + com.github.oshi oshi-core - 6.1.4 + 6.6.5 diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/websocket/WebSocketServer.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/websocket/WebSocketServer.java index 2441707f1..c48a7b95a 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/websocket/WebSocketServer.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/websocket/WebSocketServer.java @@ -15,7 +15,7 @@ */ package me.zhengjie.modules.maint.websocket; -import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson2.JSON; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import javax.websocket.*; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzRunnable.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzRunnable.java index a8f708dc3..0b4751a44 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzRunnable.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzRunnable.java @@ -45,7 +45,7 @@ public class QuartzRunnable implements Callable { } @Override - @SuppressWarnings("all") + @SuppressWarnings({"unchecked","all"}) public Object call() throws Exception { ReflectionUtils.makeAccessible(method); if (StringUtils.isNotBlank(params)) { diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/JwtUserDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/JwtUserDto.java index ebb1a1de6..819a9bd4b 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/JwtUserDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/JwtUserDto.java @@ -15,7 +15,7 @@ */ package me.zhengjie.modules.security.service.dto; -import com.alibaba.fastjson.annotation.JSONField; +import com.alibaba.fastjson2.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java index 3130f19fd..4f9a669b3 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java @@ -15,7 +15,7 @@ */ package me.zhengjie.modules.system.domain; -import com.alibaba.fastjson.annotation.JSONField; +import com.alibaba.fastjson2.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java index 0e6496704..34734e2e7 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java @@ -15,12 +15,11 @@ */ package me.zhengjie.modules.system.domain; -import com.alibaba.fastjson.annotation.JSONField; +import com.alibaba.fastjson2.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import me.zhengjie.base.BaseEntity; - import javax.persistence.*; import javax.validation.constraints.NotNull; import java.io.Serializable; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java index 127a758df..1225e5ea8 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java @@ -15,7 +15,7 @@ */ package me.zhengjie.modules.system.domain; -import com.alibaba.fastjson.annotation.JSONField; +import com.alibaba.fastjson2.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDto.java index 23f7398d1..f8ee0b513 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDto.java @@ -15,7 +15,7 @@ */ package me.zhengjie.modules.system.service.dto; -import com.alibaba.fastjson.annotation.JSONField; +import com.alibaba.fastjson2.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; diff --git a/eladmin-tools/pom.xml b/eladmin-tools/pom.xml index 7c85d8b06..24cd54cda 100644 --- a/eladmin-tools/pom.xml +++ b/eladmin-tools/pom.xml @@ -1,7 +1,5 @@ - + eladmin me.zhengjie diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java index 01229feb0..0fe81f3b9 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java @@ -15,7 +15,7 @@ */ package me.zhengjie.service.impl; -import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson2.JSON; import com.qiniu.common.QiniuException; import com.qiniu.http.Response; import com.qiniu.storage.BucketManager; diff --git a/pom.xml b/pom.xml index 45a718a86..e9304dd79 100644 --- a/pom.xml +++ b/pom.xml @@ -25,13 +25,11 @@ - 2.17.0 1.2.9 UTF-8 UTF-8 1.8 - 2.9.2 - 1.2.83 + 2.0.54 1.2.19 2.11.1 1.4.2.Final @@ -54,6 +52,13 @@ org.springframework.boot spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-json + + @@ -108,11 +113,24 @@ - com.github.xiaoymin knife4j-spring-boot-starter 3.0.3 + + + + io.swagger + swagger-annotations + + + + + + + io.swagger + swagger-annotations + 1.5.22 @@ -131,11 +149,11 @@ ${druid.version} - + net.dreamlu mica-ip2region - 2.7.12 + 2.7.18.9 @@ -149,12 +167,12 @@ org.apache.poi poi - 5.2.0 + 5.4.0 org.apache.poi poi-ooxml - 5.2.0 + 5.4.0 xerces @@ -162,11 +180,30 @@ 2.12.2 - + - com.alibaba - fastjson - ${fastjson.version} + com.alibaba.fastjson2 + fastjson2 + ${fastjson2.version} + + + + com.alibaba.fastjson2 + fastjson2-extension-spring5 + ${fastjson2.version} + + + + + com.github.whvcse + easy-captcha + 1.6.2 + + + + org.apache.commons + commons-text + 1.13.0 @@ -186,19 +223,6 @@ javax.inject 1 - - - - com.github.whvcse - easy-captcha - 1.6.2 - - - - org.apache.commons - commons-text - 1.10.0 - From 41ccc1f6e6cdba523be3c459854ef316a4d5dcd8 Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Sat, 25 Jan 2025 10:19:56 +0800 Subject: [PATCH 40/54] =?UTF-8?q?refactor:=20=E4=BB=8ECacheConfig=E6=B3=A8?= =?UTF-8?q?=E8=A7=A3=E4=B8=AD=E7=A7=BB=E9=99=A4keyGenerator=EF=BC=8C?= =?UTF-8?q?=E4=BC=98=E5=8C=96Redis=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zhengjie/config/RedisConfiguration.java | 20 +++++++++++-------- .../maint/websocket/WebSocketServer.java | 5 ++--- .../service/impl/AliPayServiceImpl.java | 2 +- .../service/impl/EmailServiceImpl.java | 2 +- .../service/impl/QiNiuServiceImpl.java | 2 +- 5 files changed, 17 insertions(+), 14 deletions(-) diff --git a/eladmin-common/src/main/java/me/zhengjie/config/RedisConfiguration.java b/eladmin-common/src/main/java/me/zhengjie/config/RedisConfiguration.java index cdd47e4b9..f246837ea 100644 --- a/eladmin-common/src/main/java/me/zhengjie/config/RedisConfiguration.java +++ b/eladmin-common/src/main/java/me/zhengjie/config/RedisConfiguration.java @@ -19,8 +19,9 @@ import com.alibaba.fastjson2.JSONFactory; import com.alibaba.fastjson2.JSONWriter; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.codec.digest.DigestUtils; +import org.apache.commons.codec.digest.MurmurHash3; import org.springframework.cache.Cache; +import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.cache.annotation.EnableCaching; import org.springframework.cache.interceptor.CacheErrorHandler; import org.springframework.cache.interceptor.KeyGenerator; @@ -47,7 +48,10 @@ @Slf4j @Configuration @EnableCaching -public class RedisConfiguration { +public class RedisConfiguration extends CachingConfigurerSupport { + + // 自动识别json对象白名单配置(仅允许解析的包名,范围越小越安全) + private static final String[] WHITELIST_STR = {"me.zhengjie" }; /** * 设置 redis 数据默认过期时间,默认2小时 @@ -71,7 +75,9 @@ public RedisTemplate redisTemplate(RedisConnectionFactory redisC template.setValueSerializer(fastJsonRedisSerializer); template.setHashValueSerializer(fastJsonRedisSerializer); // 设置fastJson的序列化白名单 - JSONFactory.getDefaultObjectReaderProvider().addAutoTypeAccept("me.zhengjie"); + for (String pack : WHITELIST_STR) { + JSONFactory.getDefaultObjectReaderProvider().addAutoTypeAccept(pack); + } // key的序列化采用StringRedisSerializer template.setKeySerializer(new StringRedisSerializer()); template.setHashKeySerializer(new StringRedisSerializer()); @@ -93,9 +99,7 @@ public RedisCacheManager cacheManager(RedisConnectionFactory redisConnectionFact } /** - * 自定义缓存key生成策略,需要在缓存注解中使用keyGenerator才会生效 - * 默认是使用SimpleKeyGenerator生成的key - * 继承 CachingConfigurerSupport 后,才会默认生效这个生成器,暂时没找到其他方式默认生效,如果有请PR,谢谢 + * 自定义缓存key生成策略 */ @Bean public KeyGenerator keyGenerator() { @@ -114,8 +118,8 @@ public KeyGenerator keyGenerator() { } // 转为JSON字符串 String jsonString = JSON.toJSONString(container); - // 做SHA256 Hash计算,得到一个SHA256摘要作为Key - return DigestUtils.sha256Hex(jsonString); + // 使用 MurmurHash 生成 hash + return Integer.toHexString(MurmurHash3.hash32x86(jsonString.getBytes())); }; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/websocket/WebSocketServer.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/websocket/WebSocketServer.java index c48a7b95a..8a832e5b2 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/websocket/WebSocketServer.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/websocket/WebSocketServer.java @@ -36,7 +36,7 @@ public class WebSocketServer { /** * concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。 */ - private static final CopyOnWriteArraySet webSocketSet = new CopyOnWriteArraySet(); + private static final CopyOnWriteArraySet webSocketSet = new CopyOnWriteArraySet<>(); /** * 与某个客户端的连接会话,需要通过它来给客户端发送数据 @@ -85,8 +85,7 @@ public void onMessage(String message, Session session) { @OnError public void onError(Session session, Throwable error) { - log.error("发生错误"); - error.printStackTrace(); + log.error("发生错误", error); } /** * 实现服务器主动推送 diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/impl/AliPayServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/AliPayServiceImpl.java index d065d508a..c3ac26074 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/impl/AliPayServiceImpl.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/AliPayServiceImpl.java @@ -38,7 +38,7 @@ */ @Service @RequiredArgsConstructor -@CacheConfig(cacheNames = "aliPay", keyGenerator = "keyGenerator") +@CacheConfig(cacheNames = "aliPay") public class AliPayServiceImpl implements AliPayService { private final AliPayRepository alipayRepository; diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/impl/EmailServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/EmailServiceImpl.java index 2403877c5..0615e4e95 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/impl/EmailServiceImpl.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/EmailServiceImpl.java @@ -37,7 +37,7 @@ */ @Service @RequiredArgsConstructor -@CacheConfig(cacheNames = "email", keyGenerator = "keyGenerator") +@CacheConfig(cacheNames = "email") public class EmailServiceImpl implements EmailService { private final EmailRepository emailRepository; diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java index 0fe81f3b9..0e4d3c630 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java @@ -51,7 +51,7 @@ */ @Service @RequiredArgsConstructor -@CacheConfig(cacheNames = "qiNiu", keyGenerator = "keyGenerator") +@CacheConfig(cacheNames = "qiNiu") public class QiNiuServiceImpl implements QiNiuService { private final QiNiuConfigRepository qiNiuConfigRepository; From 0a51ae51233e11641f820938818a5679656c6131 Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Sat, 25 Jan 2025 13:39:10 +0800 Subject: [PATCH 41/54] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96Redis=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=EF=BC=8C=E6=B7=BB=E5=8A=A0AutoConfigureBefore?= =?UTF-8?q?=E6=B3=A8=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/me/zhengjie/config/RedisConfiguration.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/eladmin-common/src/main/java/me/zhengjie/config/RedisConfiguration.java b/eladmin-common/src/main/java/me/zhengjie/config/RedisConfiguration.java index f246837ea..399e51bdc 100644 --- a/eladmin-common/src/main/java/me/zhengjie/config/RedisConfiguration.java +++ b/eladmin-common/src/main/java/me/zhengjie/config/RedisConfiguration.java @@ -20,6 +20,8 @@ import com.alibaba.fastjson2.JSONWriter; import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.digest.MurmurHash3; +import org.springframework.boot.autoconfigure.AutoConfigureBefore; +import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; import org.springframework.cache.Cache; import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.cache.annotation.EnableCaching; @@ -48,6 +50,7 @@ @Slf4j @Configuration @EnableCaching +@AutoConfigureBefore(RedisAutoConfiguration.class) public class RedisConfiguration extends CachingConfigurerSupport { // 自动识别json对象白名单配置(仅允许解析的包名,范围越小越安全) From 61f8dc32cf80e1091fe6c046783a0ccadb056da7 Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Sat, 25 Jan 2025 13:43:20 +0800 Subject: [PATCH 42/54] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96Redis=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=EF=BC=8C=E6=B7=BB=E5=8A=A0AutoConfigureBefore?= =?UTF-8?q?=E6=B3=A8=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/me/zhengjie/config/RedissonConfiguration.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/eladmin-common/src/main/java/me/zhengjie/config/RedissonConfiguration.java b/eladmin-common/src/main/java/me/zhengjie/config/RedissonConfiguration.java index cd5f28851..d7e0c70e0 100644 --- a/eladmin-common/src/main/java/me/zhengjie/config/RedissonConfiguration.java +++ b/eladmin-common/src/main/java/me/zhengjie/config/RedissonConfiguration.java @@ -21,11 +21,14 @@ import org.redisson.api.RedissonClient; import org.redisson.config.Config; import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.AutoConfigureBefore; +import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Data @Configuration +@AutoConfigureBefore(RedisAutoConfiguration.class) public class RedissonConfiguration { @Value("${spring.redis.host}") From 429f375f8274023ee55e94f01f334777415001d8 Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Sat, 25 Jan 2025 14:43:27 +0800 Subject: [PATCH 43/54] =?UTF-8?q?feat:=20=E2=9C=A8=EF=B8=8F=E5=8D=87?= =?UTF-8?q?=E7=BA=A7mysql-connector=E8=87=B39.2.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index e9304dd79..31438c6b0 100644 --- a/pom.xml +++ b/pom.xml @@ -133,12 +133,11 @@ 1.5.22 - - mysql - mysql-connector-java - 8.0.31 + com.mysql + mysql-connector-j + 9.2.0 runtime From 6226763f47c83688c0a14761b678e82972a9387f Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Tue, 11 Feb 2025 17:35:32 +0800 Subject: [PATCH 44/54] =?UTF-8?q?fix:=20=E2=9C=A8=EF=B8=8F=E5=AF=BC?= =?UTF-8?q?=E5=87=BAexcel=E4=BD=BF=E7=94=A8LinkedHashMap=E6=9B=BF=E4=BB=A3?= =?UTF-8?q?HashMap=E4=BB=A5=E4=BF=9D=E6=8C=81=E6=8F=92=E5=85=A5=E9=A1=BA?= =?UTF-8?q?=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/me/zhengjie/utils/FileUtil.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java b/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java index c83249446..abfb78f09 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java @@ -33,10 +33,7 @@ import java.security.MessageDigest; import java.text.DecimalFormat; import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -217,7 +214,7 @@ public static void downloadExcel(List> list, HttpServletResp BigExcelWriter writer = ExcelUtil.getBigWriter(file); // 处理数据以防止CSV注入 List> sanitizedList = list.parallelStream().map(map -> { - Map sanitizedMap = new HashMap<>(); + Map sanitizedMap = new LinkedHashMap<>(); map.forEach((key, value) -> { if (value instanceof String) { String strValue = (String) value; From 332cf6c5fada54ad20a142b1a8f75517972de503 Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Tue, 18 Feb 2025 15:50:04 +0800 Subject: [PATCH 45/54] =?UTF-8?q?fix:=20=E7=A7=BB=E9=99=A4JwtUserDto?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=E5=AF=86=E7=A0=81=E5=AD=97=E6=AE=B5=EF=BC=8C?= =?UTF-8?q?=E7=A1=AE=E4=BF=9D=E5=AF=86=E7=A0=81=E4=B8=8D=E8=A2=AB=E5=BA=8F?= =?UTF-8?q?=E5=88=97=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/security/rest/AuthController.java | 4 ---- .../security/service/UserDetailsServiceImpl.java | 2 +- .../modules/security/service/dto/JwtUserDto.java | 11 ++++++----- .../zhengjie/modules/system/service/dto/UserDto.java | 1 - 4 files changed, 7 insertions(+), 11 deletions(-) diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthController.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthController.java index 5665646fd..5244508f8 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthController.java @@ -100,8 +100,6 @@ public ResponseEntity login(@Validated @RequestBody AuthUserDto authUser SecurityContextHolder.getContext().setAuthentication(authentication); // 生成令牌 String token = tokenProvider.createToken(jwtUser); - // 将密码设置为空 - jwtUser.setPassword(null); // 返回 token 与 用户信息 Map authInfo = new HashMap(2) {{ put("token", properties.getTokenStartWith() + token); @@ -121,8 +119,6 @@ public ResponseEntity login(@Validated @RequestBody AuthUserDto authUser @GetMapping(value = "/info") public ResponseEntity getUserInfo() { JwtUserDto jwtUser = (JwtUserDto) SecurityUtils.getCurrentUser(); - // 将密码设置为空 - jwtUser.setPassword(null); return ResponseEntity.ok(jwtUser); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserDetailsServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserDetailsServiceImpl.java index 1e0723d19..a28c9e7c1 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserDetailsServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserDetailsServiceImpl.java @@ -55,7 +55,7 @@ public JwtUserDto loadUserByUsername(String username) { // 获取用户的权限 List authorities = roleService.buildPermissions(user); // 初始化JwtUserDto - jwtUserDto = new JwtUserDto(user, dataService.getDeptIds(user), authorities, user.getPassword()); + jwtUserDto = new JwtUserDto(user, dataService.getDeptIds(user), authorities); // 添加缓存数据 userCacheManager.addUserCache(username, jwtUserDto); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/JwtUserDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/JwtUserDto.java index 819a9bd4b..9cc062709 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/JwtUserDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/JwtUserDto.java @@ -19,7 +19,6 @@ import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Getter; -import lombok.Setter; import me.zhengjie.modules.system.service.dto.UserDto; import org.springframework.security.core.userdetails.UserDetails; import java.util.List; @@ -43,14 +42,16 @@ public class JwtUserDto implements UserDetails { @ApiModelProperty(value = "角色权限") private final List authorities; - @Setter - @ApiModelProperty(value = "密码") - private String password; - public Set getRoles() { return authorities.stream().map(AuthorityDto::getAuthority).collect(Collectors.toSet()); } + @Override + @JSONField(serialize = false) + public String getPassword() { + return user.getPassword(); + } + @Override @JSONField(serialize = false) public String getUsername() { diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDto.java index f8ee0b513..9ec687407 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDto.java @@ -68,7 +68,6 @@ public class UserDto extends BaseDTO implements Serializable { @ApiModelProperty(value = "头像路径") private String avatarPath; - @JSONField(serialize = false) @ApiModelProperty(value = "密码") private String password; From c31c9c04b4d9f4ade5fe7bfd35d577b6f2a823e9 Mon Sep 17 00:00:00 2001 From: pcshao Date: Thu, 19 Jun 2025 16:47:10 +0800 Subject: [PATCH 46/54] fix and close https://github.com/elunez/eladmin/issues/874 (#880) --- .../me/zhengjie/service/impl/SysLogServiceImpl.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/impl/SysLogServiceImpl.java b/eladmin-logging/src/main/java/me/zhengjie/service/impl/SysLogServiceImpl.java index bcff37107..455f7b867 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/service/impl/SysLogServiceImpl.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/impl/SysLogServiceImpl.java @@ -18,6 +18,7 @@ import cn.hutool.core.lang.Dict; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import lombok.RequiredArgsConstructor; import me.zhengjie.domain.SysLog; @@ -136,7 +137,14 @@ private JSONObject getParameter(Method method, Object[] args) { // 将RequestBody注解修饰的参数作为请求参数 RequestBody requestBody = parameters[i].getAnnotation(RequestBody.class); if (requestBody != null) { - params.putAll((JSONObject) JSON.toJSON(args[i])); + // [el-async-1] ERROR o.s.a.i.SimpleAsyncUncaughtExceptionHandler - Unexpected exception occurred invoking async method: public void me.zhengjie.service.impl.SysLogServiceImpl.save(java.lang.String,java.lang.String,java.lang.String,org.aspectj.lang.ProceedingJoinPoint,me.zhengjie.domain.SysLog) + // java.lang.ClassCastException: com.alibaba.fastjson2.JSONArray cannot be cast to com.alibaba.fastjson2.JSONObject + Object json = JSON.toJSON(args[i]); + if (json instanceof JSONArray) { + params.put("reqBodyList", json); + } else { + params.putAll((JSONObject) json); + } } else { String key = parameters[i].getName(); params.put(key, args[i]); From 7f618b6475beb7242ca78c6da1a3206d46735f5f Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Thu, 19 Jun 2025 17:17:40 +0800 Subject: [PATCH 47/54] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96RedisUtils?= =?UTF-8?q?=E5=8F=8D=E5=BA=8F=E5=88=97=E5=8C=96=E9=80=BB=E8=BE=91=EF=BC=8C?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E9=9D=9E=E7=9B=AE=E6=A0=87=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E7=9A=84=E5=80=BC=E8=BD=AC=E6=8D=A2=E4=B8=BA=E7=9B=AE=E6=A0=87?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/me/zhengjie/utils/RedisUtils.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/RedisUtils.java b/eladmin-common/src/main/java/me/zhengjie/utils/RedisUtils.java index 21480065e..806431ccc 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/RedisUtils.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/RedisUtils.java @@ -16,6 +16,7 @@ package me.zhengjie.utils; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson2.JSON; import com.google.common.collect.Lists; import com.google.common.collect.Sets; import org.slf4j.Logger; @@ -234,7 +235,10 @@ public T get(String key, Class clazz) { if (value == null) { return null; } - if (clazz.isInstance(value)) { + // 如果 value 不是目标类型,则尝试将其反序列化为 clazz 类型 + if (!clazz.isInstance(value)) { + return JSON.parseObject(value.toString(), clazz); + } else if (clazz.isInstance(value)) { return clazz.cast(value); } else { return null; From caa7c6698fb5cb4ba0c93b2e79f8f19eea38ec02 Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Thu, 19 Jun 2025 17:47:29 +0800 Subject: [PATCH 48/54] =?UTF-8?q?fix:=20TokenProvider=E7=B1=BB=E4=B8=AD?= =?UTF-8?q?=E5=A4=8D=E7=94=A8JwtBuilder=E5=AE=9E=E4=BE=8B=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E5=B9=B6=E5=8F=91=E7=8E=AF=E5=A2=83=E4=B8=8BToken?= =?UTF-8?q?=E7=94=9F=E6=88=90=E9=94=99=E8=AF=AF=20close=20https://github.c?= =?UTF-8?q?om/elunez/eladmin/issues/870?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../security/security/TokenProvider.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenProvider.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenProvider.java index 73659ca08..e1eb0c0e2 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenProvider.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenProvider.java @@ -42,8 +42,8 @@ @Component public class TokenProvider implements InitializingBean { + private Key signingKey; private JwtParser jwtParser; - private JwtBuilder jwtBuilder; private final RedisUtils redisUtils; private final SecurityProperties properties; public static final String AUTHORITIES_UUID_KEY = "uid"; @@ -56,13 +56,13 @@ public TokenProvider(SecurityProperties properties, RedisUtils redisUtils) { @Override public void afterPropertiesSet() { + // 解码Base64密钥并创建签名密钥 byte[] keyBytes = Decoders.BASE64.decode(properties.getBase64Secret()); - Key key = Keys.hmacShaKeyFor(keyBytes); + this.signingKey = Keys.hmacShaKeyFor(keyBytes); + // 初始化 JwtParser jwtParser = Jwts.parserBuilder() - .setSigningKey(key) + .setSigningKey(signingKey) // 使用预生成的签名密钥 .build(); - jwtBuilder = Jwts.builder() - .signWith(key, SignatureAlgorithm.HS512); } /** @@ -79,9 +79,14 @@ public String createToken(JwtUserDto user) { claims.put(AUTHORITIES_UID_KEY, user.getUser().getId()); // 设置UUID,确保每次Token不一样 claims.put(AUTHORITIES_UUID_KEY, IdUtil.simpleUUID()); - return jwtBuilder + // 直接调用 Jwts.builder() 创建新实例 + return Jwts.builder() + // 设置自定义 Claims .setClaims(claims) + // 设置主题 .setSubject(user.getUsername()) + // 使用预生成的签名密钥和算法签名 + .signWith(signingKey, SignatureAlgorithm.HS512) .compact(); } From e602b759bbdc4e89aeb327fd40048a32a4de1e5e Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Fri, 20 Jun 2025 11:29:39 +0800 Subject: [PATCH 49/54] =?UTF-8?q?fix:=20=E5=A2=9E=E5=8A=A0=E5=BA=94?= =?UTF-8?q?=E7=94=A8=E5=90=8D=E7=A7=B0=E7=89=B9=E6=AE=8A=E5=AD=97=E7=AC=A6?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E4=B8=8E=E5=91=BD=E4=BB=A4=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E5=AE=89=E5=85=A8=E6=80=A7=E4=BC=98=E5=8C=96=EF=BC=8C=E9=81=BF?= =?UTF-8?q?=E5=85=8D=E6=BD=9C=E5=9C=A8=E6=81=B6=E6=84=8F=E6=94=BB=E5=87=BB?= =?UTF-8?q?=E9=A3=8E=E9=99=A9=EF=BC=8C=E5=85=B3=E8=81=94=20#873?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit close https://github.com/elunez/eladmin/issues/873 --- .../modules/maint/service/impl/AppServiceImpl.java | 12 +++++++++++- .../maint/service/impl/DeployServiceImpl.java | 10 +++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/AppServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/AppServiceImpl.java index d7aeb296e..9fee61820 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/AppServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/AppServiceImpl.java @@ -56,7 +56,7 @@ public List queryAll(AppQueryCriteria criteria){ @Override public AppDto findById(Long id) { - App app = appRepository.findById(id).orElseGet(App::new); + App app = appRepository.findById(id).orElseGet(App::new); ValidationUtil.isNull(app.getId(),"App","id",id); return appMapper.toDto(app); } @@ -64,6 +64,11 @@ public AppDto findById(Long id) { @Override @Transactional(rollbackFor = Exception.class) public void create(App resources) { + // 验证应用名称是否存在恶意攻击payload,https://github.com/elunez/eladmin/issues/873 + String appName = resources.getName(); + if (appName.contains(";") || appName.contains("|") || appName.contains("&")) { + throw new IllegalArgumentException("非法的应用名称,请勿包含[; | &]等特殊字符"); + } verification(resources); appRepository.save(resources); } @@ -71,6 +76,11 @@ public void create(App resources) { @Override @Transactional(rollbackFor = Exception.class) public void update(App resources) { + // 验证应用名称是否存在恶意攻击payload,https://github.com/elunez/eladmin/issues/873 + String appName = resources.getName(); + if (appName.contains(";") || appName.contains("|") || appName.contains("&")) { + throw new IllegalArgumentException("非法的应用名称,请勿包含[; | &]等特殊字符"); + } verification(resources); App app = appRepository.findById(resources.getId()).orElseGet(App::new); ValidationUtil.isNull(app.getId(),"App","id",resources.getId()); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/DeployServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/DeployServiceImpl.java index 41a259884..350cff2e7 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/DeployServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/maint/service/impl/DeployServiceImpl.java @@ -263,9 +263,13 @@ public String serverStatus(Deploy resources) { return "执行完毕"; } - private boolean checkFile(ExecuteShellUtil executeShellUtil, AppDto appDTO) { - String result = executeShellUtil.executeForResult("find " + appDTO.getDeployPath() + " -name " + appDTO.getName()); - return result.indexOf(appDTO.getName())>0; + private boolean checkFile(ExecuteShellUtil executeShellUtil, AppDto app) { + String deployPath = app.getDeployPath(); + String appName = app.getName(); + // 使用安全的命令执行方式,避免直接拼接字符串,https://github.com/elunez/eladmin/issues/873 + String[] command = {"find", deployPath, "-name", appName}; + String result = executeShellUtil.executeForResult(Arrays.toString(command)); + return result.contains(appName); } /** From 50140d8a2c61fe4b227b757387cee240def1240a Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Tue, 24 Jun 2025 10:02:34 +0800 Subject: [PATCH 50/54] =?UTF-8?q?refactor:=20=F0=9F=A7=AC=EF=B8=8F?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=90=AF=E5=8A=A8=E7=B1=BB=E4=B8=AD=E6=89=93?= =?UTF-8?q?=E5=8D=B0=E7=AB=AF=E5=8F=A3=E7=A1=AC=E7=BC=96=E7=A0=81=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eladmin-system/src/main/java/me/zhengjie/AppRun.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/eladmin-system/src/main/java/me/zhengjie/AppRun.java b/eladmin-system/src/main/java/me/zhengjie/AppRun.java index d9ac36bf3..441d124c1 100644 --- a/eladmin-system/src/main/java/me/zhengjie/AppRun.java +++ b/eladmin-system/src/main/java/me/zhengjie/AppRun.java @@ -22,6 +22,7 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.ApplicationPidFileWriter; +import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.data.jpa.repository.config.EnableJpaAuditing; import org.springframework.scheduling.annotation.EnableAsync; @@ -48,10 +49,11 @@ public static void main(String[] args) { // 监控应用的PID,启动时可指定PID路径:--spring.pid.file=/home/eladmin/app.pid // 或者在 application.yml 添加文件路径,方便 kill,kill `cat /home/eladmin/app.pid` springApplication.addListeners(new ApplicationPidFileWriter()); - springApplication.run(args); + ConfigurableApplicationContext context = springApplication.run(args); + String port = context.getEnvironment().getProperty("server.port"); log.info("---------------------------------------------"); - log.info("Local: {}", "http://localhost:8000"); - log.info("Swagger: {}", "http://localhost:8000/doc.html"); + log.info("Local: http://localhost:{}", port); + log.info("Swagger: http://localhost:{}/doc.html", port); log.info("---------------------------------------------"); } From 7728306d5a2ea1af22f5c0b798d07e0f7a8aee5f Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Wed, 25 Jun 2025 15:58:42 +0800 Subject: [PATCH 51/54] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E4=BA=9A?= =?UTF-8?q?=E9=A9=AC=E9=80=8AS3=E5=8D=8F=E8=AE=AE=E4=BA=91=E5=AD=98?= =?UTF-8?q?=E5=82=A8=E6=94=AF=E6=8C=81=EF=BC=8C=E7=A7=BB=E9=99=A4=E4=B8=83?= =?UTF-8?q?=E7=89=9B=E4=BA=91=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81=E5=92=8C?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6=EF=BC=8C=E6=9B=B4=E6=96=B0?= =?UTF-8?q?Sql=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/me/zhengjie/utils/FileUtil.java | 9 +- .../main/resources/config/application-dev.yml | 19 ++ .../resources/config/application-prod.yml | 18 ++ .../src/main/resources/config/application.yml | 5 - eladmin-tools/pom.xml | 8 + .../java/me/zhengjie/config/AmzS3Config.java | 78 ++++++ .../java/me/zhengjie/domain/QiniuConfig.java | 69 ----- .../java/me/zhengjie/domain/QiniuContent.java | 64 ----- .../java/me/zhengjie/domain/S3Storage.java | 72 +++++ .../repository/QiNiuConfigRepository.java | 36 --- ...pository.java => S3StorageRepository.java} | 26 +- .../me/zhengjie/rest/QiniuController.java | 122 -------- .../me/zhengjie/rest/S3StorageController.java | 104 +++++++ .../me/zhengjie/service/QiNiuService.java | 119 -------- .../me/zhengjie/service/S3StorageService.java | 83 ++++++ .../service/dto/QiniuQueryCriteria.java | 39 --- .../service/dto/S3StorageQueryCriteria.java | 39 +++ .../service/impl/QiNiuServiceImpl.java | 234 ---------------- .../service/impl/S3StorageServiceImpl.java | 264 ++++++++++++++++++ .../java/me/zhengjie/utils/QiNiuUtil.java | 71 ----- 20 files changed, 703 insertions(+), 776 deletions(-) create mode 100644 eladmin-tools/src/main/java/me/zhengjie/config/AmzS3Config.java delete mode 100644 eladmin-tools/src/main/java/me/zhengjie/domain/QiniuConfig.java delete mode 100644 eladmin-tools/src/main/java/me/zhengjie/domain/QiniuContent.java create mode 100644 eladmin-tools/src/main/java/me/zhengjie/domain/S3Storage.java delete mode 100644 eladmin-tools/src/main/java/me/zhengjie/repository/QiNiuConfigRepository.java rename eladmin-tools/src/main/java/me/zhengjie/repository/{QiniuContentRepository.java => S3StorageRepository.java} (62%) delete mode 100644 eladmin-tools/src/main/java/me/zhengjie/rest/QiniuController.java create mode 100644 eladmin-tools/src/main/java/me/zhengjie/rest/S3StorageController.java delete mode 100644 eladmin-tools/src/main/java/me/zhengjie/service/QiNiuService.java create mode 100644 eladmin-tools/src/main/java/me/zhengjie/service/S3StorageService.java delete mode 100644 eladmin-tools/src/main/java/me/zhengjie/service/dto/QiniuQueryCriteria.java create mode 100644 eladmin-tools/src/main/java/me/zhengjie/service/dto/S3StorageQueryCriteria.java delete mode 100644 eladmin-tools/src/main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java create mode 100644 eladmin-tools/src/main/java/me/zhengjie/service/impl/S3StorageServiceImpl.java delete mode 100644 eladmin-tools/src/main/java/me/zhengjie/utils/QiNiuUtil.java diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java b/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java index abfb78f09..590f76b68 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java @@ -24,7 +24,6 @@ import org.apache.poi.util.IOUtils; import org.apache.poi.xssf.streaming.SXSSFSheet; import org.springframework.web.multipart.MultipartFile; - import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -136,15 +135,15 @@ public static String getSize(long size) { String resultSize; if (size / GB >= 1) { //如果当前Byte的值大于等于1GB - resultSize = DF.format(size / (float) GB) + "GB "; + resultSize = DF.format(size / (float) GB) + "GB"; } else if (size / MB >= 1) { //如果当前Byte的值大于等于1MB - resultSize = DF.format(size / (float) MB) + "MB "; + resultSize = DF.format(size / (float) MB) + "MB"; } else if (size / KB >= 1) { //如果当前Byte的值大于等于1KB - resultSize = DF.format(size / (float) KB) + "KB "; + resultSize = DF.format(size / (float) KB) + "KB"; } else { - resultSize = size + "B "; + resultSize = size + "B"; } return resultSize; } diff --git a/eladmin-system/src/main/resources/config/application-dev.yml b/eladmin-system/src/main/resources/config/application-dev.yml index e227c7797..952326c09 100644 --- a/eladmin-system/src/main/resources/config/application-dev.yml +++ b/eladmin-system/src/main/resources/config/application-dev.yml @@ -116,3 +116,22 @@ file: # 文件大小 /M maxSize: 100 avatarMaxSize: 5 + +# 亚马逊S3协议云存储配置 +#支持七牛云,阿里云OSS,腾讯云COS,华为云OBS,移动云EOS等 +amz: + s3: + # 地域 + region: test + # 地域对应的 endpoint + endPoint: https://s3.test.com + # 访问的域名 + domain: https://s3.test.com + # 账号的认证信息,或者子账号的认证信息 + accessKey: 填写你的AccessKey + secretKey: 填写你的SecretKey + # 存储桶(Bucket) + defaultBucket: 填写你的存储桶名称 + # 文件存储路径 + timeformat: yyyy-MM + diff --git a/eladmin-system/src/main/resources/config/application-prod.yml b/eladmin-system/src/main/resources/config/application-prod.yml index 77fef99bb..f01c6707e 100644 --- a/eladmin-system/src/main/resources/config/application-prod.yml +++ b/eladmin-system/src/main/resources/config/application-prod.yml @@ -127,3 +127,21 @@ file: # 文件大小 /M maxSize: 100 avatarMaxSize: 5 + +# 亚马逊S3协议云存储配置 +#支持七牛云,阿里云OSS,腾讯云COS,华为云OBS,移动云EOS等 +amz: + s3: + # 地域 + region: test + # 地域对应的 endpoint + endPoint: https://s3.test.com + # 访问的域名 + domain: https://s3.test.com + # 账号的认证信息,或者子账号的认证信息 + accessKey: 填写你的AccessKey + secretKey: 填写你的SecretKey + # 存储桶(Bucket) + defaultBucket: 填写你的存储桶名称 + # 文件存储路径 + timeformat: yyyy-MM \ No newline at end of file diff --git a/eladmin-system/src/main/resources/config/application.yml b/eladmin-system/src/main/resources/config/application.yml index 214872568..3af22f0da 100644 --- a/eladmin-system/src/main/resources/config/application.yml +++ b/eladmin-system/src/main/resources/config/application.yml @@ -63,11 +63,6 @@ task: # 队列容量 queue-capacity: 50 -#七牛云 -qiniu: - # 文件大小 /M - max-size: 15 - #邮箱验证码有效时间/秒 code: expiration: 300 diff --git a/eladmin-tools/pom.xml b/eladmin-tools/pom.xml index 24cd54cda..cde0be3aa 100644 --- a/eladmin-tools/pom.xml +++ b/eladmin-tools/pom.xml @@ -44,5 +44,13 @@ alipay-sdk-java ${alipay.version} + + + + software.amazon.awssdk + s3 + 2.30.13 + compile + diff --git a/eladmin-tools/src/main/java/me/zhengjie/config/AmzS3Config.java b/eladmin-tools/src/main/java/me/zhengjie/config/AmzS3Config.java new file mode 100644 index 000000000..fcf952a8a --- /dev/null +++ b/eladmin-tools/src/main/java/me/zhengjie/config/AmzS3Config.java @@ -0,0 +1,78 @@ +package me.zhengjie.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; +import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider; +import software.amazon.awssdk.regions.Region; +import software.amazon.awssdk.services.s3.S3Client; + +import java.net.URI; + +/** + * @author Zheng Jie + * @date 2025-06-25 + */ +@Data +@Configuration +@ConfigurationProperties(prefix = "amz.s3") +public class AmzS3Config { + + /** + * Amazon S3 的区域配置,例如 "us-west-2"。 + * 该区域决定了 S3 存储桶的地理位置。 + */ + private String region; + + /** + * Amazon S3 的端点 URL + * 该端点用于访问 S3 服务。 + */ + private String endPoint; + + /** + * Amazon S3 的域名 + * 该域名用于构建访问 S3 服务的完整 URL。 + */ + private String domain; + + /** + * Amazon S3 的访问密钥 ID,用于身份验证。 + * 该密钥与 secretKey 一起使用来授权对 S3 服务的访问。 + */ + private String accessKey; + + /** + * Amazon S3 的秘密访问密钥,用于身份验证。 + * 该密钥与 accessKey 一起使用来授权对 S3 服务的访问。 + */ + private String secretKey; + + /** + * 默认的 S3 存储桶名称。 + * 该存储桶用于存储上传的文件和数据。 + */ + private String defaultBucket; + + /** + * 文件上传后存储的文件夹格式,默认为 "yyyy-MM"。 + */ + private String timeformat; + + /** + * 创建并返回一个 AmazonS3 客户端实例。 + * 使用当前配置类的 endPoint, region, accessKey 和 secretKey。 + * 声明为 @Bean 后,Spring 会将其作为单例管理,并在需要时自动注入。 + * + * @return 配置好的 AmazonS3 客户端实例 + */ + @Bean + public S3Client amazonS3Client() { + return S3Client.builder().region(Region.of(region)) + .endpointOverride(URI.create(endPoint)) + .credentialsProvider(StaticCredentialsProvider.create(AwsBasicCredentials.create(accessKey, secretKey))) + .build(); + } +} \ No newline at end of file diff --git a/eladmin-tools/src/main/java/me/zhengjie/domain/QiniuConfig.java b/eladmin-tools/src/main/java/me/zhengjie/domain/QiniuConfig.java deleted file mode 100644 index f9140b1d6..000000000 --- a/eladmin-tools/src/main/java/me/zhengjie/domain/QiniuConfig.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright 2019-2025 Zheng Jie - * - * 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 me.zhengjie.domain; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import javax.persistence.*; -import javax.validation.constraints.NotBlank; -import java.io.Serializable; - -/** - * 七牛云对象存储配置类 - * @author Zheng Jie - * @date 2018-12-31 - */ -@Data -@Entity -@Table(name = "tool_qiniu_config") -public class QiniuConfig implements Serializable { - - @Id - @Column(name = "config_id") - @ApiModelProperty(value = "ID") - private Long id; - - @NotBlank - @ApiModelProperty(value = "accessKey") - private String accessKey; - - @NotBlank - @ApiModelProperty(value = "secretKey") - private String secretKey; - - @NotBlank - @ApiModelProperty(value = "存储空间名称作为唯一的 Bucket 识别符") - private String bucket; - - /** - * Zone表示与机房的对应关系 - * 华东 Zone.zone0() - * 华北 Zone.zone1() - * 华南 Zone.zone2() - * 北美 Zone.zoneNa0() - * 东南亚 Zone.zoneAs0() - */ - @NotBlank - @ApiModelProperty(value = "Zone表示与机房的对应关系") - private String zone; - - @NotBlank - @ApiModelProperty(value = "外链域名,可自定义,需在七牛云绑定") - private String host; - - @ApiModelProperty(value = "空间类型:公开/私有") - private String type = "公开"; -} diff --git a/eladmin-tools/src/main/java/me/zhengjie/domain/QiniuContent.java b/eladmin-tools/src/main/java/me/zhengjie/domain/QiniuContent.java deleted file mode 100644 index b7511db06..000000000 --- a/eladmin-tools/src/main/java/me/zhengjie/domain/QiniuContent.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2019-2025 Zheng Jie - * - * 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 me.zhengjie.domain; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import org.hibernate.annotations.UpdateTimestamp; -import javax.persistence.*; -import java.io.Serializable; -import java.sql.Timestamp; - -/** - * 上传成功后,存储结果 - * @author Zheng Jie - * @date 2018-12-31 - */ -@Data -@Entity -@Table(name = "tool_qiniu_content") -public class QiniuContent implements Serializable { - - @Id - @Column(name = "content_id") - @ApiModelProperty(value = "ID", hidden = true) - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; - - @Column(name = "name") - @ApiModelProperty(value = "文件名") - private String key; - - @ApiModelProperty(value = "空间名") - private String bucket; - - @ApiModelProperty(value = "大小") - private String size; - - @ApiModelProperty(value = "文件地址") - private String url; - - @ApiModelProperty(value = "文件类型") - private String suffix; - - @ApiModelProperty(value = "空间类型:公开/私有") - private String type = "公开"; - - @UpdateTimestamp - @ApiModelProperty(value = "创建或更新时间") - @Column(name = "update_time") - private Timestamp updateTime; -} diff --git a/eladmin-tools/src/main/java/me/zhengjie/domain/S3Storage.java b/eladmin-tools/src/main/java/me/zhengjie/domain/S3Storage.java new file mode 100644 index 000000000..389f6273c --- /dev/null +++ b/eladmin-tools/src/main/java/me/zhengjie/domain/S3Storage.java @@ -0,0 +1,72 @@ +/* +* Copyright 2019-2025 Zheng Jie +* +* 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 me.zhengjie.domain; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.bean.copier.CopyOptions; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import me.zhengjie.base.BaseEntity; +import javax.persistence.*; +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** +* @description S3存储实体类 +* @author Zheng Jie +* @date 2025-06-25 +**/ +@Data +@Entity +@Table(name = "tool_s3_storage") +@EqualsAndHashCode(callSuper = true) +public class S3Storage extends BaseEntity implements Serializable { + + @Id + @Column(name = "storage_id") + @ApiModelProperty(value = "ID", hidden = true) + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @NotBlank + @ApiModelProperty(value = "文件名称") + private String fileName; + + @NotBlank + @ApiModelProperty(value = "真实存储的名称") + private String fileRealName; + + @NotBlank + @ApiModelProperty(value = "文件大小") + private String fileSize; + + @NotBlank + @ApiModelProperty(value = "文件MIME 类型") + private String fileMimeType; + + @NotBlank + @ApiModelProperty(value = "文件类型") + private String fileType; + + @NotBlank + @ApiModelProperty(value = "文件路径") + private String filePath; + + public void copy(S3Storage source){ + BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); + } +} diff --git a/eladmin-tools/src/main/java/me/zhengjie/repository/QiNiuConfigRepository.java b/eladmin-tools/src/main/java/me/zhengjie/repository/QiNiuConfigRepository.java deleted file mode 100644 index eb9045a86..000000000 --- a/eladmin-tools/src/main/java/me/zhengjie/repository/QiNiuConfigRepository.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2019-2025 Zheng Jie - * - * 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 me.zhengjie.repository; - -import me.zhengjie.domain.QiniuConfig; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Modifying; -import org.springframework.data.jpa.repository.Query; - -/** - * @author Zheng Jie - * @date 2018-12-31 - */ -public interface QiNiuConfigRepository extends JpaRepository { - - /** - * 编辑类型 - * @param type / - */ - @Modifying - @Query(value = "update QiniuConfig set type = ?1") - void update(String type); -} diff --git a/eladmin-tools/src/main/java/me/zhengjie/repository/QiniuContentRepository.java b/eladmin-tools/src/main/java/me/zhengjie/repository/S3StorageRepository.java similarity index 62% rename from eladmin-tools/src/main/java/me/zhengjie/repository/QiniuContentRepository.java rename to eladmin-tools/src/main/java/me/zhengjie/repository/S3StorageRepository.java index 10b0e157a..9ad9f2a84 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/repository/QiniuContentRepository.java +++ b/eladmin-tools/src/main/java/me/zhengjie/repository/S3StorageRepository.java @@ -15,20 +15,22 @@ */ package me.zhengjie.repository; -import me.zhengjie.domain.QiniuContent; +import me.zhengjie.domain.S3Storage; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Query; /** - * @author Zheng Jie - * @date 2018-12-31 - */ -public interface QiniuContentRepository extends JpaRepository, JpaSpecificationExecutor { +* @author Zheng Jie +* @date 2025-06-25 +*/ +public interface S3StorageRepository extends JpaRepository, JpaSpecificationExecutor { - /** - * 根据key查询 - * @param key 文件名 - * @return QiniuContent - */ - QiniuContent findByKey(String key); -} + /** + * 根据ID查询文件路径 + * @param id 文件ID + * @return 文件路径 + */ + @Query(value = "SELECT file_path FROM s3_storage WHERE id = ?1", nativeQuery = true) + String selectFilePathById(Long id); +} \ No newline at end of file diff --git a/eladmin-tools/src/main/java/me/zhengjie/rest/QiniuController.java b/eladmin-tools/src/main/java/me/zhengjie/rest/QiniuController.java deleted file mode 100644 index f17ce3bbf..000000000 --- a/eladmin-tools/src/main/java/me/zhengjie/rest/QiniuController.java +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright 2019-2025 Zheng Jie - * - * 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 me.zhengjie.rest; - -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import me.zhengjie.annotation.Log; -import me.zhengjie.domain.QiniuConfig; -import me.zhengjie.domain.QiniuContent; -import me.zhengjie.service.dto.QiniuQueryCriteria; -import me.zhengjie.service.QiNiuService; -import me.zhengjie.utils.PageResult; -import org.springframework.data.domain.Pageable; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; - -/** - * 发送邮件 - * @author 郑杰 - * @date 2018/09/28 6:55:53 - */ -@Slf4j -@RestController -@RequiredArgsConstructor -@RequestMapping("/api/qiNiuContent") -@Api(tags = "工具:七牛云存储管理") -public class QiniuController { - - private final QiNiuService qiNiuService; - - @GetMapping(value = "/config") - public ResponseEntity queryQiNiuConfig(){ - return new ResponseEntity<>(qiNiuService.find(), HttpStatus.OK); - } - - @Log("配置七牛云存储") - @ApiOperation("配置七牛云存储") - @PutMapping(value = "/config") - public ResponseEntity updateQiNiuConfig(@Validated @RequestBody QiniuConfig qiniuConfig){ - qiNiuService.config(qiniuConfig); - qiNiuService.update(qiniuConfig.getType()); - return new ResponseEntity<>(HttpStatus.OK); - } - - @ApiOperation("导出数据") - @GetMapping(value = "/download") - public void exportQiNiu(HttpServletResponse response, QiniuQueryCriteria criteria) throws IOException { - qiNiuService.downloadList(qiNiuService.queryAll(criteria), response); - } - - @ApiOperation("查询文件") - @GetMapping - public ResponseEntity> queryQiNiu(QiniuQueryCriteria criteria, Pageable pageable){ - return new ResponseEntity<>(qiNiuService.queryAll(criteria,pageable),HttpStatus.OK); - } - - @ApiOperation("上传文件") - @PostMapping - public ResponseEntity uploadQiNiu(@RequestParam MultipartFile file){ - QiniuContent qiniuContent = qiNiuService.upload(file,qiNiuService.find()); - Map map = new HashMap<>(3); - map.put("id",qiniuContent.getId()); - map.put("errno",0); - map.put("data",new String[]{qiniuContent.getUrl()}); - return new ResponseEntity<>(map,HttpStatus.OK); - } - - @Log("同步七牛云数据") - @ApiOperation("同步七牛云数据") - @PostMapping(value = "/synchronize") - public ResponseEntity synchronizeQiNiu(){ - qiNiuService.synchronize(qiNiuService.find()); - return new ResponseEntity<>(HttpStatus.OK); - } - - @Log("下载文件") - @ApiOperation("下载文件") - @GetMapping(value = "/download/{id}") - public ResponseEntity downloadQiNiu(@PathVariable Long id){ - Map map = new HashMap<>(1); - map.put("url", qiNiuService.download(qiNiuService.findByContentId(id),qiNiuService.find())); - return new ResponseEntity<>(map,HttpStatus.OK); - } - - @Log("删除文件") - @ApiOperation("删除文件") - @DeleteMapping(value = "/{id}") - public ResponseEntity deleteQiNiu(@PathVariable Long id){ - qiNiuService.delete(qiNiuService.findByContentId(id),qiNiuService.find()); - return new ResponseEntity<>(HttpStatus.OK); - } - - @Log("删除多张图片") - @ApiOperation("删除多张图片") - @DeleteMapping - public ResponseEntity deleteAllQiNiu(@RequestBody Long[] ids) { - qiNiuService.deleteAll(ids, qiNiuService.find()); - return new ResponseEntity<>(HttpStatus.OK); - } -} diff --git a/eladmin-tools/src/main/java/me/zhengjie/rest/S3StorageController.java b/eladmin-tools/src/main/java/me/zhengjie/rest/S3StorageController.java new file mode 100644 index 000000000..964976e19 --- /dev/null +++ b/eladmin-tools/src/main/java/me/zhengjie/rest/S3StorageController.java @@ -0,0 +1,104 @@ +/* + * Copyright 2019-2025 Zheng Jie + * + * 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 me.zhengjie.rest; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import me.zhengjie.annotation.Log; +import me.zhengjie.config.AmzS3Config; +import me.zhengjie.domain.S3Storage; +import me.zhengjie.service.S3StorageService; +import me.zhengjie.service.dto.S3StorageQueryCriteria; +import me.zhengjie.utils.PageResult; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * amz S3 协议云存储管理 + * @author 郑杰 + * @date 2025-06-25 + */ +@Slf4j +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/s3Storage") +@Api(tags = "工具:S3协议云存储管理") +public class S3StorageController { + + private final AmzS3Config amzS3Config; + private final S3StorageService s3StorageService; + + @ApiOperation("导出数据") + @GetMapping(value = "/download") + @PreAuthorize("@el.check('storage:list')") + public void exportS3Storage(HttpServletResponse response, S3StorageQueryCriteria criteria) throws IOException { + s3StorageService.download(s3StorageService.queryAll(criteria), response); + } + + @GetMapping + @ApiOperation("查询文件") + @PreAuthorize("@el.check('storage:list')") + public ResponseEntity> queryS3Storage(S3StorageQueryCriteria criteria, Pageable pageable){ + return new ResponseEntity<>(s3StorageService.queryAll(criteria, pageable),HttpStatus.OK); + } + + @PostMapping + @ApiOperation("上传文件") + public ResponseEntity uploadS3Storage(@RequestParam MultipartFile file){ + S3Storage storage = s3StorageService.upload(file); + Map map = new HashMap<>(3); + map.put("id",storage.getId()); + map.put("errno",0); + map.put("data",new String[]{amzS3Config.getDomain() + "/" + storage.getFilePath()}); + return new ResponseEntity<>(map,HttpStatus.OK); + } + + @Log("下载文件") + @ApiOperation("下载文件") + @GetMapping(value = "/download/{id}") + public ResponseEntity downloadS3Storage(@PathVariable Long id){ + Map map = new HashMap<>(1); + S3Storage storage = s3StorageService.getById(id); + if (storage == null) { + map.put("message", "文件不存在或已被删除"); + return new ResponseEntity<>(map, HttpStatus.NOT_FOUND); + } + // 仅适合公开文件访问,私有文件可以使用服务中的 privateDownload 方法 + String url = amzS3Config.getDomain() + "/" + storage.getFilePath(); + map.put("url", url); + return new ResponseEntity<>(map,HttpStatus.OK); + } + + @Log("删除多个文件") + @DeleteMapping + @ApiOperation("删除多个文件") + @PreAuthorize("@el.check('storage:del')") + public ResponseEntity deleteAllS3Storage(@RequestBody List ids) { + s3StorageService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } +} diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/QiNiuService.java b/eladmin-tools/src/main/java/me/zhengjie/service/QiNiuService.java deleted file mode 100644 index b75a5aa16..000000000 --- a/eladmin-tools/src/main/java/me/zhengjie/service/QiNiuService.java +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright 2019-2025 Zheng Jie - * - * 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 me.zhengjie.service; - -import me.zhengjie.domain.QiniuConfig; -import me.zhengjie.domain.QiniuContent; -import me.zhengjie.service.dto.QiniuQueryCriteria; -import me.zhengjie.utils.PageResult; -import org.springframework.data.domain.Pageable; -import org.springframework.web.multipart.MultipartFile; - -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.List; - -/** - * @author Zheng Jie - * @date 2018-12-31 - */ -public interface QiNiuService { - - /** - * 查配置 - * @return QiniuConfig - */ - QiniuConfig find(); - - /** - * 修改配置 - * @param qiniuConfig 配置 - * @return QiniuConfig - */ - QiniuConfig config(QiniuConfig qiniuConfig); - - /** - * 分页查询 - * @param criteria 条件 - * @param pageable 分页参数 - * @return / - */ - PageResult queryAll(QiniuQueryCriteria criteria, Pageable pageable); - - /** - * 查询全部 - * @param criteria 条件 - * @return / - */ - List queryAll(QiniuQueryCriteria criteria); - - /** - * 上传文件 - * @param file 文件 - * @param qiniuConfig 配置 - * @return QiniuContent - */ - QiniuContent upload(MultipartFile file, QiniuConfig qiniuConfig); - - /** - * 查询文件 - * @param id 文件ID - * @return QiniuContent - */ - QiniuContent findByContentId(Long id); - - /** - * 下载文件 - * @param content 文件信息 - * @param config 配置 - * @return String - */ - String download(QiniuContent content, QiniuConfig config); - - /** - * 删除文件 - * @param content 文件 - * @param config 配置 - */ - void delete(QiniuContent content, QiniuConfig config); - - /** - * 同步数据 - * @param config 配置 - */ - void synchronize(QiniuConfig config); - - /** - * 删除文件 - * @param ids 文件ID数组 - * @param config 配置 - */ - void deleteAll(Long[] ids, QiniuConfig config); - - /** - * 更新数据 - * @param type 类型 - */ - void update(String type); - - /** - * 导出数据 - * @param queryAll / - * @param response / - * @throws IOException / - */ - void downloadList(List queryAll, HttpServletResponse response) throws IOException; -} diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/S3StorageService.java b/eladmin-tools/src/main/java/me/zhengjie/service/S3StorageService.java new file mode 100644 index 000000000..1cb3d3eb9 --- /dev/null +++ b/eladmin-tools/src/main/java/me/zhengjie/service/S3StorageService.java @@ -0,0 +1,83 @@ +/* +* Copyright 2019-2025 Zheng Jie +* +* 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 me.zhengjie.service; + +import me.zhengjie.domain.S3Storage; +import me.zhengjie.service.dto.S3StorageQueryCriteria; +import me.zhengjie.utils.PageResult; +import org.springframework.data.domain.Pageable; +import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.List; +import java.util.Map; + +/** +* @description 服务接口 +* @author Zheng Jie +* @date 2025-06-25 +**/ +public interface S3StorageService { + + /** + * 查询数据分页 + * @param criteria 条件 + * @param pageable 分页参数 + * @return PageResult + */ + PageResult queryAll(S3StorageQueryCriteria criteria, Pageable pageable); + + /** + * 查询所有数据不分页 + * @param criteria 条件参数 + * @return List + */ + List queryAll(S3StorageQueryCriteria criteria); + + /** + * 多选删除 + * @param ids / + */ + void deleteAll(List ids); + + /** + * 导出数据 + * @param all 待导出的数据 + * @param response / + * @throws IOException / + */ + void download(List all, HttpServletResponse response) throws IOException; + + /** + * 私有化下载,仅供参考,还有许多方式 + * @param id 文件ID + */ + Map privateDownload(Long id); + + /** + * 上传文件 + * @param file 上传的文件 + * @return S3Storage 对象,包含文件存储信息 + */ + S3Storage upload(MultipartFile file); + + /** + * 根据ID获取文件信息 + * @param id 文件ID + * @return S3Storage 对象,包含文件存储信息 + */ + S3Storage getById(Long id); +} \ No newline at end of file diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/dto/QiniuQueryCriteria.java b/eladmin-tools/src/main/java/me/zhengjie/service/dto/QiniuQueryCriteria.java deleted file mode 100644 index fab27714a..000000000 --- a/eladmin-tools/src/main/java/me/zhengjie/service/dto/QiniuQueryCriteria.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2019-2025 Zheng Jie - * - * 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 me.zhengjie.service.dto; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import me.zhengjie.annotation.Query; - -import java.sql.Timestamp; -import java.util.List; - -/** - * @author Zheng Jie - * @date 2019-6-4 09:54:37 - */ -@Data -public class QiniuQueryCriteria{ - - @ApiModelProperty(value = "名称查询") - @Query(type = Query.Type.INNER_LIKE) - private String key; - - @ApiModelProperty(value = "创建时间") - @Query(type = Query.Type.BETWEEN) - private List createTime; -} diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/dto/S3StorageQueryCriteria.java b/eladmin-tools/src/main/java/me/zhengjie/service/dto/S3StorageQueryCriteria.java new file mode 100644 index 000000000..539a1bdcc --- /dev/null +++ b/eladmin-tools/src/main/java/me/zhengjie/service/dto/S3StorageQueryCriteria.java @@ -0,0 +1,39 @@ +/* +* Copyright 2019-2025 Zheng Jie +* +* 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 me.zhengjie.service.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import me.zhengjie.annotation.Query; +import java.sql.Timestamp; +import java.util.List; + +/** +* @author Zheng Jie +* @date 2025-06-25 +**/ +@Data +public class S3StorageQueryCriteria { + + @Query(type = Query.Type.INNER_LIKE) + @ApiModelProperty(value = "文件名称") + private String fileName; + + @Query(type = Query.Type.BETWEEN) + @ApiModelProperty(value = "创建时间") + private List createTime; + +} \ No newline at end of file diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java deleted file mode 100644 index 0e4d3c630..000000000 --- a/eladmin-tools/src/main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java +++ /dev/null @@ -1,234 +0,0 @@ -/* - * Copyright 2019-2025 Zheng Jie - * - * 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 me.zhengjie.service.impl; - -import com.alibaba.fastjson2.JSON; -import com.qiniu.common.QiniuException; -import com.qiniu.http.Response; -import com.qiniu.storage.BucketManager; -import com.qiniu.storage.Configuration; -import com.qiniu.storage.UploadManager; -import com.qiniu.storage.model.DefaultPutRet; -import com.qiniu.storage.model.FileInfo; -import com.qiniu.util.Auth; -import lombok.RequiredArgsConstructor; -import me.zhengjie.domain.QiniuConfig; -import me.zhengjie.domain.QiniuContent; -import me.zhengjie.repository.QiniuContentRepository; -import me.zhengjie.service.dto.QiniuQueryCriteria; -import me.zhengjie.utils.*; -import me.zhengjie.exception.BadRequestException; -import me.zhengjie.repository.QiNiuConfigRepository; -import me.zhengjie.service.QiNiuService; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.cache.annotation.CacheConfig; -import org.springframework.cache.annotation.CachePut; -import org.springframework.cache.annotation.Cacheable; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.*; - -/** - * @author Zheng Jie - * @date 2018-12-31 - */ -@Service -@RequiredArgsConstructor -@CacheConfig(cacheNames = "qiNiu") -public class QiNiuServiceImpl implements QiNiuService { - - private final QiNiuConfigRepository qiNiuConfigRepository; - private final QiniuContentRepository qiniuContentRepository; - - @Value("${qiniu.max-size}") - private Long maxSize; - - @Override - @Cacheable(key = "'config'") - public QiniuConfig find() { - Optional qiniuConfig = qiNiuConfigRepository.findById(1L); - return qiniuConfig.orElseGet(QiniuConfig::new); - } - - @Override - @CachePut(key = "'config'") - @Transactional(rollbackFor = Exception.class) - public QiniuConfig config(QiniuConfig qiniuConfig) { - qiniuConfig.setId(1L); - String http = "http://", https = "https://"; - if (!(qiniuConfig.getHost().toLowerCase().startsWith(http)||qiniuConfig.getHost().toLowerCase().startsWith(https))) { - throw new BadRequestException("外链域名必须以http://或者https://开头"); - } - return qiNiuConfigRepository.save(qiniuConfig); - } - - @Override - public PageResult queryAll(QiniuQueryCriteria criteria, Pageable pageable){ - return PageUtil.toPage(qiniuContentRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable)); - } - - @Override - public List queryAll(QiniuQueryCriteria criteria) { - return qiniuContentRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public QiniuContent upload(MultipartFile file, QiniuConfig qiniuConfig) { - FileUtil.checkSize(maxSize, file.getSize()); - if(qiniuConfig.getId() == null){ - throw new BadRequestException("请先添加相应配置,再操作"); - } - // 构造一个带指定Zone对象的配置类 - Configuration cfg = new Configuration(QiNiuUtil.getRegion(qiniuConfig.getZone())); - UploadManager uploadManager = new UploadManager(cfg); - Auth auth = Auth.create(qiniuConfig.getAccessKey(), qiniuConfig.getSecretKey()); - String upToken = auth.uploadToken(qiniuConfig.getBucket()); - try { - String key = file.getOriginalFilename(); - if(qiniuContentRepository.findByKey(key) != null) { - key = QiNiuUtil.getKey(key); - } - Response response = uploadManager.put(file.getBytes(), key, upToken); - //解析上传成功的结果 - - DefaultPutRet putRet = JSON.parseObject(response.bodyString(), DefaultPutRet.class); - QiniuContent content = qiniuContentRepository.findByKey(FileUtil.getFileNameNoEx(putRet.key)); - if(content == null){ - //存入数据库 - QiniuContent qiniuContent = new QiniuContent(); - qiniuContent.setSuffix(FileUtil.getExtensionName(putRet.key)); - qiniuContent.setBucket(qiniuConfig.getBucket()); - qiniuContent.setType(qiniuConfig.getType()); - qiniuContent.setKey(FileUtil.getFileNameNoEx(putRet.key)); - qiniuContent.setUrl(qiniuConfig.getHost()+"/"+putRet.key); - qiniuContent.setSize(FileUtil.getSize(Integer.parseInt(String.valueOf(file.getSize())))); - return qiniuContentRepository.save(qiniuContent); - } - return content; - } catch (Exception e) { - throw new BadRequestException(e.getMessage()); - } - } - - @Override - public QiniuContent findByContentId(Long id) { - QiniuContent qiniuContent = qiniuContentRepository.findById(id).orElseGet(QiniuContent::new); - ValidationUtil.isNull(qiniuContent.getId(),"QiniuContent", "id",id); - return qiniuContent; - } - - @Override - public String download(QiniuContent content,QiniuConfig config){ - String finalUrl; - String type = "公开"; - if(type.equals(content.getType())){ - finalUrl = content.getUrl(); - } else { - Auth auth = Auth.create(config.getAccessKey(), config.getSecretKey()); - // 1小时,可以自定义链接过期时间 - long expireInSeconds = 3600; - finalUrl = auth.privateDownloadUrl(content.getUrl(), expireInSeconds); - } - return finalUrl; - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void delete(QiniuContent content, QiniuConfig config) { - //构造一个带指定Zone对象的配置类 - Configuration cfg = new Configuration(QiNiuUtil.getRegion(config.getZone())); - Auth auth = Auth.create(config.getAccessKey(), config.getSecretKey()); - BucketManager bucketManager = new BucketManager(auth, cfg); - try { - bucketManager.delete(content.getBucket(), content.getKey() + "." + content.getSuffix()); - qiniuContentRepository.delete(content); - } catch (QiniuException ex) { - qiniuContentRepository.delete(content); - } - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void synchronize(QiniuConfig config) { - if(config.getId() == null){ - throw new BadRequestException("请先添加相应配置,再操作"); - } - //构造一个带指定Zone对象的配置类 - Configuration cfg = new Configuration(QiNiuUtil.getRegion(config.getZone())); - Auth auth = Auth.create(config.getAccessKey(), config.getSecretKey()); - BucketManager bucketManager = new BucketManager(auth, cfg); - //文件名前缀 - String prefix = ""; - //每次迭代的长度限制,最大1000,推荐值 1000 - int limit = 1000; - //指定目录分隔符,列出所有公共前缀(模拟列出目录效果)。缺省值为空字符串 - String delimiter = ""; - //列举空间文件列表 - BucketManager.FileListIterator fileListIterator = bucketManager.createFileListIterator(config.getBucket(), prefix, limit, delimiter); - while (fileListIterator.hasNext()) { - //处理获取的file list结果 - QiniuContent qiniuContent; - FileInfo[] items = fileListIterator.next(); - for (FileInfo item : items) { - if(qiniuContentRepository.findByKey(FileUtil.getFileNameNoEx(item.key)) == null){ - qiniuContent = new QiniuContent(); - qiniuContent.setSize(FileUtil.getSize(Integer.parseInt(String.valueOf(item.fsize)))); - qiniuContent.setSuffix(FileUtil.getExtensionName(item.key)); - qiniuContent.setKey(FileUtil.getFileNameNoEx(item.key)); - qiniuContent.setType(config.getType()); - qiniuContent.setBucket(config.getBucket()); - qiniuContent.setUrl(config.getHost()+"/"+item.key); - qiniuContentRepository.save(qiniuContent); - } - } - } - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteAll(Long[] ids, QiniuConfig config) { - for (Long id : ids) { - delete(findByContentId(id), config); - } - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void update(String type) { - qiNiuConfigRepository.update(type); - } - - @Override - public void downloadList(List queryAll, HttpServletResponse response) throws IOException { - List> list = new ArrayList<>(); - for (QiniuContent content : queryAll) { - Map map = new LinkedHashMap<>(); - map.put("文件名", content.getKey()); - map.put("文件类型", content.getSuffix()); - map.put("空间名称", content.getBucket()); - map.put("文件大小", content.getSize()); - map.put("空间类型", content.getType()); - map.put("创建日期", content.getUpdateTime()); - list.add(map); - } - FileUtil.downloadExcel(list, response); - } -} diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/impl/S3StorageServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/S3StorageServiceImpl.java new file mode 100644 index 000000000..56d3ab3bb --- /dev/null +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/S3StorageServiceImpl.java @@ -0,0 +1,264 @@ +/* +* Copyright 2019-2025 Zheng Jie +* +* 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 me.zhengjie.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import me.zhengjie.config.AmzS3Config; +import me.zhengjie.domain.S3Storage; +import me.zhengjie.exception.BadRequestException; +import me.zhengjie.repository.S3StorageRepository; +import me.zhengjie.service.S3StorageService; +import me.zhengjie.service.dto.S3StorageQueryCriteria; +import me.zhengjie.utils.*; +import org.apache.commons.io.IOUtils; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; +import software.amazon.awssdk.core.ResponseInputStream; +import software.amazon.awssdk.core.sync.RequestBody; +import software.amazon.awssdk.core.waiters.WaiterResponse; +import software.amazon.awssdk.services.s3.S3Client; +import software.amazon.awssdk.services.s3.model.*; +import software.amazon.awssdk.services.s3.waiters.S3Waiter; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.*; + +/** +* @description 服务实现 +* @author Zheng Jie +* @date 2025-06-25 +**/ +@Slf4j +@Service +@RequiredArgsConstructor +public class S3StorageServiceImpl implements S3StorageService { + + private final S3Client s3Client; + private final AmzS3Config amzS3Config; + private final S3StorageRepository s3StorageRepository; + + @Override + public S3Storage getById(Long id) { + return s3StorageRepository.findById(id).orElse(null); + } + + @Override + public PageResult queryAll(S3StorageQueryCriteria criteria, Pageable pageable){ + Page page = s3StorageRepository.findAll((root, criteriaQuery, criteriaBuilder) + -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); + return PageUtil.toPage(page); + } + + @Override + public List queryAll(S3StorageQueryCriteria criteria){ + return s3StorageRepository.findAll((root, criteriaQuery, criteriaBuilder) + -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteAll(List ids) { + // 检查桶是否存在 + String bucketName = amzS3Config.getDefaultBucket(); + if (!bucketExists(bucketName)) { + throw new BadRequestException("存储桶不存在,请检查配置或权限。"); + } + // 遍历 ID 列表,删除对应的文件和数据库记录 + for (Long id : ids) { + String filePath = s3StorageRepository.selectFilePathById(id); + if (filePath == null) { + System.err.println("未找到 ID 为 " + id + " 的文件记录,无法删除。"); + continue; + } + try { + // 创建 DeleteObjectRequest,指定存储桶和文件键 + DeleteObjectRequest deleteObjectRequest = DeleteObjectRequest.builder() + .bucket(bucketName) + .key(filePath) + .build(); + // 调用 deleteObject 方法 + s3Client.deleteObject(deleteObjectRequest); + // 删除数据库数据 + s3StorageRepository.deleteById(id); + } catch (S3Exception e) { + // 处理 AWS 特定的异常 + log.error("从 S3 删除文件时出错: {}", e.awsErrorDetails().errorMessage(), e); + } + } + } + + @Override + public S3Storage upload(MultipartFile file) { + String bucketName = amzS3Config.getDefaultBucket(); + // 检查存储桶是否存在 + if (!bucketExists(bucketName)) { + log.warn("存储桶 {} 不存在,尝试创建...", bucketName); + if (createBucket(bucketName)){ + log.info("存储桶 {} 创建成功。", bucketName); + } else { + throw new BadRequestException("存储桶创建失败,请检查配置或权限。"); + } + } + // 获取文件名 + String originalName = file.getOriginalFilename(); + if (StringUtils.isBlank(originalName)) { + throw new IllegalArgumentException("文件名不能为空"); + } + // 生成存储路径和文件名 + String folder = DateUtil.format(new Date(), amzS3Config.getTimeformat()); + String fileName = IdUtil.simpleUUID() + "." + FileUtil.getExtensionName(originalName); + String filePath = folder + "/" + fileName; + // 构建上传请求 + PutObjectRequest putObjectRequest = PutObjectRequest.builder() + .bucket(amzS3Config.getDefaultBucket()) + .key(filePath) + .build(); + // 创建 S3Storage 实例 + S3Storage s3Storage = new S3Storage(); + try { + // 上传文件到 S3 + s3Client.putObject(putObjectRequest, RequestBody.fromInputStream(file.getInputStream(), file.getSize())); + // 设置 S3Storage 属性 + s3Storage.setFileMimeType(FileUtil.getMimeType(originalName)); + s3Storage.setFileName(originalName); + s3Storage.setFileRealName(fileName); + s3Storage.setFileSize(FileUtil.getSize(file.getSize())); + s3Storage.setFileType(FileUtil.getExtensionName(originalName)); + s3Storage.setFilePath(filePath); + // 保存入库 + s3StorageRepository.save(s3Storage); + } catch (IOException e) { + throw new RuntimeException(e); + } + // 设置地址 + return s3Storage; + } + + @Override + public void download(List all, HttpServletResponse response) throws IOException { + List> list = new ArrayList<>(); + for (S3Storage s3Storage : all) { + Map map = new LinkedHashMap<>(); + map.put("文件名称", s3Storage.getFileName()); + map.put("真实存储的名称", s3Storage.getFileRealName()); + map.put("文件大小", s3Storage.getFileSize()); + map.put("文件MIME 类型", s3Storage.getFileMimeType()); + map.put("文件类型", s3Storage.getFileType()); + map.put("文件路径", s3Storage.getFilePath()); + map.put("创建者", s3Storage.getCreateBy()); + map.put("更新者", s3Storage.getUpdateBy()); + map.put("创建日期", s3Storage.getCreateTime()); + map.put("更新时间", s3Storage.getUpdateTime()); + list.add(map); + } + FileUtil.downloadExcel(list, response); + } + + public Map privateDownload(Long id) { + S3Storage storage = s3StorageRepository.findById(id).orElse(null); + if (storage == null) { + throw new BadRequestException("文件不存在或已被删除"); + } + // 创建 GetObjectRequest,指定存储桶和文件键 + GetObjectRequest getObjectRequest = GetObjectRequest.builder() + .bucket(amzS3Config.getDefaultBucket()) + .key(storage.getFilePath()) + .build(); + String base64Data; + // 使用 try-with-resources 确保流能被自动关闭 + // s3Client.getObject() 返回一个 ResponseInputStream,它是一个包含S3对象数据的输入流 + try (ResponseInputStream s3InputStream = s3Client.getObject(getObjectRequest)) { + // 使用 IOUtils.toByteArray 将输入流直接转换为字节数组 + byte[] fileBytes = IOUtils.toByteArray(s3InputStream); + // 使用 Java 内置的 Base64 编码器将字节数组转换为 Base64 字符串 + base64Data = Base64.getEncoder().encodeToString(fileBytes); + } catch (S3Exception e) { + // 处理 AWS 特定的异常 + throw new BadRequestException("从 S3 下载文件时出错: " + e.awsErrorDetails().errorMessage()); + } catch (IOException e) { + // 处理通用的 IO 异常 (IOUtils.toByteArray 可能会抛出) + throw new BadRequestException("读取 S3 输入流时出错: " + e.getMessage()); + } + // 构造返回数据 + Map responseData = new HashMap<>(); + // 文件名 + responseData.put("fileName", storage.getFileName()); + // 文件类型 + responseData.put("fileMimeType", storage.getFileMimeType()); + // 文件内容 + responseData.put("base64Data", base64Data); + return responseData; + } + + /** + * 检查云存储桶是否存在 + * @param bucketName 存储桶名称 + */ + @SuppressWarnings({"all"}) + private boolean bucketExists(String bucketName) { + try { + HeadBucketRequest headBucketRequest = HeadBucketRequest.builder() + .bucket(bucketName) + .build(); + s3Client.headBucket(headBucketRequest); + return true; + } catch (S3Exception e) { + // 如果状态码是 404 (Not Found), 说明存储桶不存在 + if (e.statusCode() == 404) { + log.error("存储桶 '{}' 不存在。", bucketName); + return false; + } + // 其他异常 (如 403 Forbidden) 说明存在问题,但不能断定它不存在 + throw new BadRequestException("检查存储桶时出错: " + e.awsErrorDetails().errorMessage()); + } + } + + /** + * 创建云存储桶 + * @param bucketName 存储桶名称 + */ + private boolean createBucket(String bucketName) { + try { + // 使用 S3Waiter 等待存储桶创建完成 + S3Waiter s3Waiter = s3Client.waiter(); + CreateBucketRequest bucketRequest = CreateBucketRequest.builder() + .bucket(bucketName) + .acl(BucketCannedACL.PRIVATE) + .build(); + s3Client.createBucket(bucketRequest); + // 等待直到存储桶创建完成 + HeadBucketRequest bucketRequestWait = HeadBucketRequest.builder() + .bucket(bucketName) + .build(); + // 使用 WaiterResponse 等待存储桶存在 + WaiterResponse waiterResponse = s3Waiter.waitUntilBucketExists(bucketRequestWait); + waiterResponse.matched().response().ifPresent(response -> + log.info("存储桶 '{}' 创建成功,状态: {}", bucketName, response.sdkHttpResponse().statusCode()) + ); + } catch (BucketAlreadyOwnedByYouException e) { + log.warn("存储桶 '{}' 已经被您拥有,无需重复创建。", bucketName); + } catch (S3Exception e) { + throw new BadRequestException("创建存储桶时出错: " + e.awsErrorDetails().errorMessage()); + } + return true; + } +} \ No newline at end of file diff --git a/eladmin-tools/src/main/java/me/zhengjie/utils/QiNiuUtil.java b/eladmin-tools/src/main/java/me/zhengjie/utils/QiNiuUtil.java deleted file mode 100644 index 9d9ed8958..000000000 --- a/eladmin-tools/src/main/java/me/zhengjie/utils/QiNiuUtil.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2019-2025 Zheng Jie - * - * 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 me.zhengjie.utils; - -import com.qiniu.storage.Region; -import java.text.SimpleDateFormat; -import java.util.Date; - -/** - * 七牛云存储工具类 - * @author Zheng Jie - * @date 2018-12-31 - */ -public class QiNiuUtil { - - private static final String HUAD = "华东"; - - private static final String HUAB = "华北"; - - private static final String HUAN = "华南"; - - private static final String BEIM = "北美"; - - /** - * 得到机房的对应关系 - * @param zone 机房名称 - * @return Region - */ - public static Region getRegion(String zone){ - - if(HUAD.equals(zone)){ - return Region.huadong(); - } else if(HUAB.equals(zone)){ - return Region.huabei(); - } else if(HUAN.equals(zone)){ - return Region.huanan(); - } else if (BEIM.equals(zone)){ - return Region.beimei(); - // 否则就是东南亚 - } else { - return Region.qvmHuadong(); - } - } - - /** - * 默认不指定key的情况下,以文件内容的hash值作为文件名 - * @param file 文件名 - * @return String - */ - public static String getKey(String file){ - SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); - Date date = new Date(); - return FileUtil.getFileNameNoEx(file) + "-" + - sdf.format(date) + - "." + - FileUtil.getExtensionName(file); - } -} From 2af6d064ebae8fcd9fb65ede57fb19a8dad3cb3e Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Wed, 25 Jun 2025 15:58:58 +0800 Subject: [PATCH 52/54] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E4=BA=9A?= =?UTF-8?q?=E9=A9=AC=E9=80=8AS3=E5=8D=8F=E8=AE=AE=E4=BA=91=E5=AD=98?= =?UTF-8?q?=E5=82=A8=E6=94=AF=E6=8C=81=EF=BC=8C=E7=A7=BB=E9=99=A4=E4=B8=83?= =?UTF-8?q?=E7=89=9B=E4=BA=91=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81=E5=92=8C?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6=EF=BC=8C=E6=9B=B4=E6=96=B0?= =?UTF-8?q?Sql=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sql/eladmin.sql | 68 ++++++++++++++++++------------------------------- 1 file changed, 25 insertions(+), 43 deletions(-) diff --git a/sql/eladmin.sql b/sql/eladmin.sql index 166afc37f..aea1ee750 100644 --- a/sql/eladmin.sql +++ b/sql/eladmin.sql @@ -2,16 +2,16 @@ Navicat Premium Dump SQL Source Server : localhost - Source Server Type : MySQL + Source Server Type : MariaDB Source Server Version : 110206 (11.2.6-MariaDB) Source Host : localhost:3306 Source Schema : eladmin - Target Server Type : MySQL + Target Server Type : MariaDB Target Server Version : 110206 (11.2.6-MariaDB) File Encoding : 65001 - Date: 15/01/2025 18:20:01 + Date: 25/06/2025 15:56:51 */ SET NAMES utf8mb4; @@ -38,7 +38,7 @@ CREATE TABLE `code_column` ( `date_annotation` varchar(255) DEFAULT NULL COMMENT '日期注解', PRIMARY KEY (`column_id`) USING BTREE, KEY `idx_table_name` (`table_name`) -) ENGINE=InnoDB AUTO_INCREMENT=259 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='代码生成字段信息存储'; +) ENGINE=InnoDB AUTO_INCREMENT=266 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='代码生成字段信息存储'; -- ---------------------------- -- Records of code_column @@ -536,7 +536,7 @@ CREATE TABLE `sys_role` ( -- Records of sys_role -- ---------------------------- BEGIN; -INSERT INTO `sys_role` (`role_id`, `name`, `level`, `description`, `data_scope`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (1, '超级管理员', 1, '-', '全部', NULL, 'admin', '2018-11-23 11:04:37', '2020-08-06 16:10:24'); +INSERT INTO `sys_role` (`role_id`, `name`, `level`, `description`, `data_scope`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (1, '管理员', 1, '-', '全部', NULL, 'admin', '2018-11-23 11:04:37', '2025-01-21 14:53:13'); INSERT INTO `sys_role` (`role_id`, `name`, `level`, `description`, `data_scope`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (2, '普通用户', 2, '-', '本级', NULL, 'admin', '2018-11-23 13:09:06', '2020-09-05 10:45:12'); COMMIT; @@ -705,8 +705,8 @@ CREATE TABLE `sys_user` ( -- Records of sys_user -- ---------------------------- BEGIN; -INSERT INTO `sys_user` (`user_id`, `dept_id`, `username`, `nick_name`, `gender`, `phone`, `email`, `avatar_name`, `avatar_path`, `password`, `is_admin`, `enabled`, `create_by`, `update_by`, `pwd_reset_time`, `create_time`, `update_time`) VALUES (1, 2, 'admin', '管理员', '男', '18888888888', '201507802@qq.com', 'avatar-20250114101539224.png', '/Users/jie/Documents/work/me/admin/eladmin-mp/eladmin/~/avatar/avatar-20250114101539224.png', '$2a$10$Egp1/gvFlt7zhlXVfEFw4OfWQCGPw0ClmMcc6FjTnvXNRVf9zdMRa', b'1', b'1', NULL, 'admin', '2020-05-03 16:38:31', '2018-08-23 09:11:56', '2020-09-05 10:43:31'); -INSERT INTO `sys_user` (`user_id`, `dept_id`, `username`, `nick_name`, `gender`, `phone`, `email`, `avatar_name`, `avatar_path`, `password`, `is_admin`, `enabled`, `create_by`, `update_by`, `pwd_reset_time`, `create_time`, `update_time`) VALUES (2, 2, 'test', '测试', '男', '19999999999', '231@qq.com', NULL, NULL, '$2a$10$4XcyudOYTSz6fue6KFNMHeUQnCX5jbBQypLEnGk1PmekXt5c95JcK', b'0', b'1', 'admin', 'admin', NULL, '2020-05-05 11:15:49', '2020-09-05 10:43:38'); +INSERT INTO `sys_user` (`user_id`, `dept_id`, `username`, `nick_name`, `gender`, `phone`, `email`, `avatar_name`, `avatar_path`, `password`, `is_admin`, `enabled`, `create_by`, `update_by`, `pwd_reset_time`, `create_time`, `update_time`) VALUES (1, 2, 'admin', '管理员', '男', '18888888888', '201507802@qq.com', 'avatar-20250122102642222.png', '/Users/jie/Documents/work/private/eladmin/~/avatar/avatar-20250122102642222.png', '$2a$10$Egp1/gvFlt7zhlXVfEFw4OfWQCGPw0ClmMcc6FjTnvXNRVf9zdMRa', b'1', b'1', NULL, 'admin', '2020-05-03 16:38:31', '2018-08-23 09:11:56', '2025-01-22 10:26:42'); +INSERT INTO `sys_user` (`user_id`, `dept_id`, `username`, `nick_name`, `gender`, `phone`, `email`, `avatar_name`, `avatar_path`, `password`, `is_admin`, `enabled`, `create_by`, `update_by`, `pwd_reset_time`, `create_time`, `update_time`) VALUES (2, 7, 'test', '测试', '男', '19999999999', '231@qq.com', NULL, NULL, '$2a$10$4XcyudOYTSz6fue6KFNMHeUQnCX5jbBQypLEnGk1PmekXt5c95JcK', b'0', b'1', 'admin', 'admin', NULL, '2020-05-05 11:15:49', '2025-01-21 14:53:04'); COMMIT; -- ---------------------------- @@ -820,47 +820,29 @@ BEGIN; COMMIT; -- ---------------------------- --- Table structure for tool_qiniu_config +-- Table structure for tool_s3_storage -- ---------------------------- -DROP TABLE IF EXISTS `tool_qiniu_config`; -CREATE TABLE `tool_qiniu_config` ( - `config_id` bigint(20) NOT NULL COMMENT 'ID', - `access_key` text DEFAULT NULL COMMENT 'accessKey', - `bucket` varchar(255) DEFAULT NULL COMMENT 'Bucket 识别符', - `host` varchar(255) NOT NULL COMMENT '外链域名', - `secret_key` text DEFAULT NULL COMMENT 'secretKey', - `type` varchar(255) DEFAULT NULL COMMENT '空间类型', - `zone` varchar(255) DEFAULT NULL COMMENT '机房', - PRIMARY KEY (`config_id`) USING BTREE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='七牛云配置'; - --- ---------------------------- --- Records of tool_qiniu_config --- ---------------------------- -BEGIN; -COMMIT; - --- ---------------------------- --- Table structure for tool_qiniu_content --- ---------------------------- -DROP TABLE IF EXISTS `tool_qiniu_content`; -CREATE TABLE `tool_qiniu_content` ( - `content_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', - `bucket` varchar(255) DEFAULT NULL COMMENT 'Bucket 识别符', - `name` varchar(180) DEFAULT NULL COMMENT '文件名称', - `size` varchar(255) DEFAULT NULL COMMENT '文件大小', - `type` varchar(255) DEFAULT NULL COMMENT '文件类型:私有或公开', - `url` varchar(255) DEFAULT NULL COMMENT '文件url', - `suffix` varchar(255) DEFAULT NULL COMMENT '文件后缀', - `update_time` datetime DEFAULT NULL COMMENT '上传或同步的时间', - PRIMARY KEY (`content_id`) USING BTREE, - UNIQUE KEY `uniq_name` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='七牛云文件存储'; +DROP TABLE IF EXISTS `tool_s3_storage`; +CREATE TABLE `tool_s3_storage` ( + `storage_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', + `file_name` varchar(255) NOT NULL COMMENT '文件名称', + `file_real_name` varchar(255) NOT NULL COMMENT '真实存储的名称', + `file_size` varchar(100) NOT NULL COMMENT '文件大小', + `file_mime_type` varchar(50) NOT NULL COMMENT '文件MIME 类型', + `file_type` varchar(50) NOT NULL COMMENT '文件类型', + `file_path` tinytext NOT NULL COMMENT '文件路径', + `create_by` varchar(255) NOT NULL COMMENT '创建者', + `update_by` varchar(255) NOT NULL COMMENT '更新者', + `create_time` datetime NOT NULL COMMENT '创建日期', + `update_time` datetime NOT NULL COMMENT '更新时间', + PRIMARY KEY (`storage_id`) +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='s3 协议对象存储'; -- ---------------------------- --- Records of tool_qiniu_content +-- Records of tool_s3_storage -- ---------------------------- BEGIN; +INSERT INTO `tool_s3_storage` (`storage_id`, `file_name`, `file_real_name`, `file_size`, `file_mime_type`, `file_type`, `file_path`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (4, 'tx.jpg', '2ca1de24d8fa422eae4ede30e97c46d8.jpg', '29.67KB', 'image/jpeg', 'jpg', '2025-06/2ca1de24d8fa422eae4ede30e97c46d8.jpg', 'admin', 'admin', '2025-06-25 15:48:22', '2025-06-25 15:48:22'); COMMIT; SET FOREIGN_KEY_CHECKS = 1; From 696e4c24b6a540207223d4262e08b83d85384b15 Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Wed, 25 Jun 2025 16:20:19 +0800 Subject: [PATCH 53/54] =?UTF-8?q?docs:=20=E6=9B=B4=E6=96=B0README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index f9684227d..4b8224787 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ - 定时任务:整合Quartz做定时任务,加入任务日志,任务运行情况一目了然 - 代码生成:高灵活度生成前后端代码,减少大量重复的工作任务 - 邮件工具:配合富文本,发送html格式的邮件 -- 七牛云存储:可同步七牛云存储的数据到系统,无需登录七牛云直接操作云数据 +- 亚马逊S3云存储:支持市面上大多数对象存储,兼容亚马逊S3协议,如七牛云,阿里云等 - 支付宝支付:整合了支付宝支付并且提供了测试账号,可自行测试 - 服务监控:监控服务器的负载情况 - 运维管理:一键部署你的应用 @@ -71,7 +71,7 @@ - `eladmin-logging` 为系统的日志模块,其他模块如果需要记录日志需要引入该模块 -- `eladmin-tools` 为第三方工具模块,包含:邮件、七牛云存储、本地存储、支付宝 +- `eladmin-tools` 为第三方工具模块,包含:邮件、亚马逊S3云存储、本地存储、支付宝 - `eladmin-generator` 为系统的代码生成模块,支持生成前后端CRUD代码 @@ -102,7 +102,7 @@ - eladmin-logging 系统日志模块 - eladmin-tools 系统第三方工具模块 - email 邮件工具 - - qiniu 七牛云存储工具 + - amazon 亚马逊S3云存储工具 - alipay 支付宝支付工具 - local-storage 本地存储工具 - eladmin-generator 系统代码生成模块 From 8c398e003c7b0373eaed04add2ed51ed2a81941e Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Wed, 25 Jun 2025 16:21:02 +0800 Subject: [PATCH 54/54] =?UTF-8?q?feat:=20=E7=A7=BB=E9=99=A4=E4=B8=83?= =?UTF-8?q?=E7=89=9B=E4=BA=91=E5=AD=98=E5=82=A8=E7=9B=B8=E5=85=B3=E4=BE=9D?= =?UTF-8?q?=E8=B5=96=EF=BC=8C=E6=9B=B4=E6=96=B0pom.xml=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eladmin-tools/pom.xml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/eladmin-tools/pom.xml b/eladmin-tools/pom.xml index cde0be3aa..a53107979 100644 --- a/eladmin-tools/pom.xml +++ b/eladmin-tools/pom.xml @@ -12,7 +12,6 @@ 1.4.7 - 7.9.3 4.22.57.ALL @@ -31,13 +30,6 @@ ${mail.version} - - - com.qiniu - qiniu-java-sdk - ${qiniu.version} - - com.alipay.sdk