From 32933c2840a9903cbf4ab04f342db31d487f37d6 Mon Sep 17 00:00:00 2001 From: 77 <77@77.com> Date: Sat, 18 May 2024 01:02:13 +0800 Subject: [PATCH] init --- .../ruoyi/web/cache/OnlineUserTodayCache.java | 51 ----------- .../controller/common/CaptchaController.java | 7 +- .../web/listener/UserActionListener.java | 45 +++++++--- .../src/main/resources/application-prod.yml | 14 +-- .../src/main/resources/application.yml | 19 ++++ ruoyi-component/ruoyi-component-core/pom.xml | 4 + .../core/config/ThreadPoolConfig.java | 5 +- .../core/constant/CacheConstants.java | 34 -------- .../component/core/constant/CacheNames.java | 14 +-- .../core/constant/GlobalConstants.java | 10 +++ .../core/constant/UserConstants.java | 5 -- .../core/domain/model/LoginUser.java | 2 + .../core/executor/ExecutorConstant.java | 34 ++++++++ .../mapper/generator/GenTableColumnMapper.xml | 8 +- .../mapper/generator/GenTableMapper.xml | 24 +++--- .../aspectj/RepeatSubmitAspect.java | 3 +- .../component/oss/constant/OssConstant.java | 4 +- .../aspectj/RateLimiterAspect.java | 3 +- .../component/satoken/utils/LoginHelper.java | 9 +- .../security/config/SecurityConfig.java | 20 +---- .../component/tenant/config/TenantConfig.java | 13 +++ .../component/tenant/filter/TenantFilter.java | 86 +++++++++++++++++++ .../tenant/handle/PlusTenantLineHandler.java | 27 +++--- .../tenant/handle/TenantKeyPrefixHandler.java | 3 + .../component/tenant/helper/TenantHelper.java | 71 +++------------ .../java/com/ruoyi/dk/kit/DkLoginKit.java | 1 + .../system/controller/SysLoginController.java | 25 +++++- .../system/controller/SysMenuController.java | 19 ++++ .../controller/SysTenantController.java | 4 +- .../controller/monitor/CacheController.java | 9 +- .../monitor/SysLogininforController.java | 3 +- .../com/ruoyi/system/domain/SysConfig.java | 2 +- .../com/ruoyi/system/domain/SysDictData.java | 3 +- .../com/ruoyi/system/domain/SysDictType.java | 2 +- .../com/ruoyi/system/domain/SysNotice.java | 4 +- .../com/ruoyi/system/domain/SysOperLog.java | 2 + .../java/com/ruoyi/system/domain/SysPost.java | 3 +- .../system/domain/vo/MenuTreeSelectVo.java | 26 ++++++ .../ruoyi/system/service/ISysMenuService.java | 4 + .../ruoyi/system/service/SysLoginService.java | 22 +++-- .../system/service/SysPermissionService.java | 3 +- .../system/service/SysRegisterService.java | 3 +- .../service/impl/SysDictTypeServiceImpl.java | 9 +- .../service/impl/SysMenuServiceImpl.java | 22 +++++ .../service/impl/SysRoleServiceImpl.java | 8 +- .../service/impl/SysTenantServiceImpl.java | 7 +- .../resources/mapper/system/SysUserMapper.xml | 2 + 47 files changed, 416 insertions(+), 282 deletions(-) delete mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/cache/OnlineUserTodayCache.java create mode 100644 ruoyi-component/ruoyi-component-core/src/main/java/com/ruoyi/component/core/executor/ExecutorConstant.java create mode 100644 ruoyi-component/ruoyi-component-tenant/src/main/java/com/ruoyi/component/tenant/filter/TenantFilter.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MenuTreeSelectVo.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/cache/OnlineUserTodayCache.java b/ruoyi-admin/src/main/java/com/ruoyi/web/cache/OnlineUserTodayCache.java deleted file mode 100644 index ddb9343..0000000 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/cache/OnlineUserTodayCache.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.ruoyi.web.cache; - -import com.ruoyi.component.core.constant.CacheConstants; -import org.redisson.api.RSet; -import org.redisson.api.RedissonClient; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.time.Duration; -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; -import java.util.Set; - -@Component -public class OnlineUserTodayCache { - - @Autowired - private RedissonClient redissonClient; - - private String getKey(LocalDate dateTime){ - String today = dateTime.format(DateTimeFormatter.ofPattern("yyyyMMdd")); - return String.format(CacheConstants.ONLINE_TODAY_TOKEN_KEY,today); - } - - public boolean addOnlineUserId(Long userId, LocalDate dateTime){ - RSet set = redissonClient.getSet(getKey(dateTime)); - boolean res = set.add(userId); - set.expire(Duration.ofDays(3)); - return res; - } - - public Set getAllOnlineToday(){ - RSet set = redissonClient.getSet(getKey(LocalDate.now())); - return set.readAll(); - } - - public Long getOnlineNum(LocalDate time){ - RSet set = redissonClient.getSet(getKey(time)); - return (long) set.size(); - } - - public Long getOnlineTodayNum(){ - RSet set = redissonClient.getSet(getKey(LocalDate.now())); - return (long) set.size(); - } - - public Long getOnlineLastNum(){ - RSet set = redissonClient.getSet(getKey(LocalDate.now().plusDays(-1))); - return (long) set.size(); - } -} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java index 34d11de..5608a13 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java @@ -7,6 +7,7 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.RandomUtil; import com.ruoyi.component.core.constant.CacheConstants; import com.ruoyi.component.core.constant.Constants; +import com.ruoyi.component.core.constant.GlobalConstants; import com.ruoyi.component.core.domain.R; import com.ruoyi.component.core.util.StringUtils; import com.ruoyi.component.core.util.reflect.ReflectUtils; @@ -59,7 +60,7 @@ public class CaptchaController { */ @GetMapping("/captchaSms") public R smsCaptcha(@NotBlank(message = "{user.phonenumber.not.blank}") String phonenumber) { - String key = CacheConstants.CAPTCHA_CODE_KEY + phonenumber; + String key = GlobalConstants.CAPTCHA_CODE_KEY + phonenumber; String code = RandomUtil.randomNumbers(4); RedisUtils.setCacheObject(key, code, Duration.ofMinutes(Constants.CAPTCHA_EXPIRATION)); // 验证码模板id 自行处理 (查数据库或写死均可) @@ -85,7 +86,7 @@ public class CaptchaController { if (!mailProperties.getEnabled()) { return R.fail("当前系统没有开启邮箱功能!"); } - String key = CacheConstants.CAPTCHA_CODE_KEY + email; + String key = GlobalConstants.CAPTCHA_CODE_KEY + email; String code = RandomUtil.randomNumbers(4); RedisUtils.setCacheObject(key, code, Duration.ofMinutes(Constants.CAPTCHA_EXPIRATION)); try { @@ -110,7 +111,7 @@ public class CaptchaController { } // 保存验证码信息 String uuid = IdUtil.simpleUUID(); - String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid; + String verifyKey = GlobalConstants.CAPTCHA_CODE_KEY + uuid; // 生成验证码 CaptchaType captchaType = captchaProperties.getType(); boolean isMath = CaptchaType.MATH == captchaType; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/listener/UserActionListener.java b/ruoyi-admin/src/main/java/com/ruoyi/web/listener/UserActionListener.java index f8f44ef..9c41e0e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/listener/UserActionListener.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/listener/UserActionListener.java @@ -3,17 +3,18 @@ package com.ruoyi.web.listener; import cn.dev33.satoken.config.SaTokenConfig; import cn.dev33.satoken.listener.SaTokenListener; import cn.dev33.satoken.stp.SaLoginModel; +import cn.dev33.satoken.stp.StpUtil; import cn.hutool.http.useragent.UserAgent; import cn.hutool.http.useragent.UserAgentUtil; import com.ruoyi.component.core.constant.CacheConstants; import com.ruoyi.component.core.domain.dto.UserOnlineDTO; import com.ruoyi.component.core.domain.model.LoginUser; import com.ruoyi.component.core.enums.UserType; -import com.ruoyi.component.redis.util.RedisUtils; -import com.ruoyi.component.satoken.utils.LoginHelper; import com.ruoyi.component.core.util.ServletUtils; import com.ruoyi.component.core.util.ip.AddressUtils; -import com.ruoyi.web.cache.OnlineUserTodayCache; +import com.ruoyi.component.redis.util.RedisUtils; +import com.ruoyi.component.satoken.utils.LoginHelper; +import com.ruoyi.component.tenant.helper.TenantHelper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -31,7 +32,6 @@ import java.time.Duration; public class UserActionListener implements SaTokenListener { private final SaTokenConfig tokenConfig; - private final OnlineUserTodayCache onlineUserTodayCache; /** * 每次登录时触发 @@ -54,9 +54,13 @@ public class UserActionListener implements SaTokenListener { dto.setDeptName(user.getDeptName()); dto.setUserType(UserType.SYS_USER.getUserType()); if(tokenConfig.getTimeout() == -1) { - RedisUtils.setCacheObject(CacheConstants.ONLINE_TOKEN_KEY + tokenValue, dto); + TenantHelper.dynamic(user.getTenantId(),() -> { + RedisUtils.setCacheObject(CacheConstants.ONLINE_TOKEN_KEY + tokenValue, dto); + }); } else { - RedisUtils.setCacheObject(CacheConstants.ONLINE_TOKEN_KEY + tokenValue, dto, Duration.ofSeconds(tokenConfig.getTimeout())); + TenantHelper.dynamic(user.getTenantId(),() -> { + RedisUtils.setCacheObject(CacheConstants.ONLINE_TOKEN_KEY + tokenValue, dto, Duration.ofSeconds(tokenConfig.getTimeout())); + }); } log.info("user doLogin, userId:{}, token:{}", loginId, tokenValue); } else if (userType == UserType.APP_USER) { @@ -74,9 +78,13 @@ public class UserActionListener implements SaTokenListener { dto.setUserName(user.getUsername()); dto.setDeptName(user.getDeptName()); if(tokenConfig.getTimeout() == -1) { - RedisUtils.setCacheObject(CacheConstants.ONLINE_TOKEN_KEY + tokenValue, dto); + TenantHelper.dynamic(user.getTenantId(),() -> { + RedisUtils.setCacheObject(CacheConstants.ONLINE_TOKEN_KEY + tokenValue, dto); + }); } else { - RedisUtils.setCacheObject(CacheConstants.ONLINE_TOKEN_KEY + tokenValue, dto, Duration.ofSeconds(tokenConfig.getTimeout())); + TenantHelper.dynamic(user.getTenantId(),() -> { + RedisUtils.setCacheObject(CacheConstants.ONLINE_TOKEN_KEY + tokenValue, dto, Duration.ofSeconds(tokenConfig.getTimeout())); + }); } } } @@ -86,7 +94,12 @@ public class UserActionListener implements SaTokenListener { */ @Override public void doLogout(String loginType, Object loginId, String tokenValue) { - RedisUtils.deleteObject(CacheConstants.ONLINE_TOKEN_KEY + tokenValue); + String tenantId = LoginHelper.getTenantIdByToken(tokenValue); + if(tenantId != null){ + TenantHelper.dynamic(tenantId,() -> { + RedisUtils.deleteObject(CacheConstants.ONLINE_TOKEN_KEY + tokenValue); + }); + } log.info("user doLogout, userId:{}, token:{}", loginId, tokenValue); } @@ -95,7 +108,12 @@ public class UserActionListener implements SaTokenListener { */ @Override public void doKickout(String loginType, Object loginId, String tokenValue) { - RedisUtils.deleteObject(CacheConstants.ONLINE_TOKEN_KEY + tokenValue); + String tenantId = LoginHelper.getTenantIdByToken(tokenValue); + if(tenantId != null){ + TenantHelper.dynamic(tenantId,() -> { + RedisUtils.deleteObject(CacheConstants.ONLINE_TOKEN_KEY + tokenValue); + }); + } log.info("user doLogoutByLoginId, userId:{}, token:{}", loginId, tokenValue); } @@ -104,7 +122,12 @@ public class UserActionListener implements SaTokenListener { */ @Override public void doReplaced(String loginType, Object loginId, String tokenValue) { - RedisUtils.deleteObject(CacheConstants.ONLINE_TOKEN_KEY + tokenValue); + String tenantId = LoginHelper.getTenantIdByToken(tokenValue); + if(tenantId != null){ + TenantHelper.dynamic(tenantId,() -> { + RedisUtils.deleteObject(CacheConstants.ONLINE_TOKEN_KEY + tokenValue); + }); + } log.info("user doReplaced, userId:{}, token:{}", loginId, tokenValue); } diff --git a/ruoyi-admin/src/main/resources/application-prod.yml b/ruoyi-admin/src/main/resources/application-prod.yml index 3ad3df0..4431c3c 100644 --- a/ruoyi-admin/src/main/resources/application-prod.yml +++ b/ruoyi-admin/src/main/resources/application-prod.yml @@ -21,7 +21,7 @@ spring: driverClassName: com.mysql.cj.jdbc.Driver # jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562 # rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题) - url: jdbc:mysql://localhost:4306/cai-v2?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true + url: jdbc:mysql://localhost:5306/dk-sass?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true username: root password: 383200134 # 从库数据源 @@ -92,18 +92,6 @@ redisson: subscriptionConnectionPoolSize: 50 mail: enabled: false -agora: - app-id: 58ff3a37d91d48c7a8ef7a56fb8f62d0 - key: 0cca1a53262c4c74b0a8c653a9b7540e - secret: 4a4f734285f34aea86cef63b2a186f27 -yunxin: - app-key: 0aaefeb8a80a9889987c5346244b58e2 - app-secret: 470345ca2832 -cai: - enable-api-encryption: true - open-pay-proxy: false - proxy-ip: 159.75.218.177 - proxy-host: 7693 springdoc: api-docs: enabled: false diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index d30dce3..7c801a4 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -144,6 +144,25 @@ security: # - /actuator # - /actuator/** +# 多租户配置 +tenant: + # 是否开启 + enable: true + # 排除表 + excludes: + - sys_menu + - sys_tenant + - sys_tenant_package + - sys_role_dept + - sys_role_menu + - sys_user_post + - sys_user_role + - sys_client + - sys_oss_config + - sys_dict_type + - sys_dict_data + - sys_config + # MyBatisPlus配置 # https://baomidou.com/config/ mybatis-plus: diff --git a/ruoyi-component/ruoyi-component-core/pom.xml b/ruoyi-component/ruoyi-component-core/pom.xml index 417761f..cd960f3 100644 --- a/ruoyi-component/ruoyi-component-core/pom.xml +++ b/ruoyi-component/ruoyi-component-core/pom.xml @@ -80,5 +80,9 @@ org.springframework.boot spring-boot-configuration-processor + + com.alibaba + transmittable-thread-local + diff --git a/ruoyi-component/ruoyi-component-core/src/main/java/com/ruoyi/component/core/config/ThreadPoolConfig.java b/ruoyi-component/ruoyi-component-core/src/main/java/com/ruoyi/component/core/config/ThreadPoolConfig.java index 0c6b178..c33dea8 100644 --- a/ruoyi-component/ruoyi-component-core/src/main/java/com/ruoyi/component/core/config/ThreadPoolConfig.java +++ b/ruoyi-component/ruoyi-component-core/src/main/java/com/ruoyi/component/core/config/ThreadPoolConfig.java @@ -25,10 +25,9 @@ import java.util.concurrent.ThreadPoolExecutor; public class ThreadPoolConfig { /** - * 核心线程数 = cpu 核心数 + 1 + * 核心线程数 = cpu 核心数 + 1 TODO 线程池 */ -// private final int core = Runtime.getRuntime().availableProcessors() + 1; - private final int core = 6 + 1; + private final int core = Runtime.getRuntime().availableProcessors() + 1; @Bean(name = "threadPoolTaskExecutor") diff --git a/ruoyi-component/ruoyi-component-core/src/main/java/com/ruoyi/component/core/constant/CacheConstants.java b/ruoyi-component/ruoyi-component-core/src/main/java/com/ruoyi/component/core/constant/CacheConstants.java index 58792a8..db2566c 100644 --- a/ruoyi-component/ruoyi-component-core/src/main/java/com/ruoyi/component/core/constant/CacheConstants.java +++ b/ruoyi-component/ruoyi-component-core/src/main/java/com/ruoyi/component/core/constant/CacheConstants.java @@ -12,38 +12,4 @@ public interface CacheConstants { */ String ONLINE_TOKEN_KEY = "online_tokens:"; - /** - * 单天在线APP用户 - */ - String ONLINE_TODAY_TOKEN_KEY = "online_tokens_today:%s"; - - /** - * 验证码 redis key - */ - String CAPTCHA_CODE_KEY = "captcha_codes:"; - - /** - * 参数管理 cache key - */ - String SYS_CONFIG_KEY = "sys_config:"; - - /** - * 字典管理 cache key - */ - String SYS_DICT_KEY = "sys_dict:"; - - /** - * 防重提交 redis key - */ - String REPEAT_SUBMIT_KEY = "repeat_submit:"; - - /** - * 限流 redis key - */ - String RATE_LIMIT_KEY = "rate_limit:"; - - /** - * 登录账户密码错误次数 redis key - */ - String PWD_ERR_CNT_KEY = "pwd_err_cnt:"; } diff --git a/ruoyi-component/ruoyi-component-core/src/main/java/com/ruoyi/component/core/constant/CacheNames.java b/ruoyi-component/ruoyi-component-core/src/main/java/com/ruoyi/component/core/constant/CacheNames.java index a05f23e..ffae7eb 100644 --- a/ruoyi-component/ruoyi-component-core/src/main/java/com/ruoyi/component/core/constant/CacheNames.java +++ b/ruoyi-component/ruoyi-component-core/src/main/java/com/ruoyi/component/core/constant/CacheNames.java @@ -15,20 +15,15 @@ package com.ruoyi.component.core.constant; */ public interface CacheNames { - /** - * 演示案例 - */ - String DEMO_CACHE = "demo:cache#60s#10m#20"; - /** * 系统配置 */ - String SYS_CONFIG = "sys_config"; + String SYS_CONFIG = GlobalConstants.GLOBAL_REDIS_KEY + "sys_config"; /** * 数据字典 */ - String SYS_DICT = "sys_dict"; + String SYS_DICT = GlobalConstants.GLOBAL_REDIS_KEY + "sys_dict"; /** * 用户账户 @@ -52,9 +47,4 @@ public interface CacheNames { */ String SYS_OSS_CONFIG = GlobalConstants.GLOBAL_REDIS_KEY + "sys_oss_config"; - /** - * 在线用户 - */ - String ONLINE_TOKEN = "online_tokens"; - } diff --git a/ruoyi-component/ruoyi-component-core/src/main/java/com/ruoyi/component/core/constant/GlobalConstants.java b/ruoyi-component/ruoyi-component-core/src/main/java/com/ruoyi/component/core/constant/GlobalConstants.java index 9d2c292..e828803 100644 --- a/ruoyi-component/ruoyi-component-core/src/main/java/com/ruoyi/component/core/constant/GlobalConstants.java +++ b/ruoyi-component/ruoyi-component-core/src/main/java/com/ruoyi/component/core/constant/GlobalConstants.java @@ -36,4 +36,14 @@ public interface GlobalConstants { * 三方认证 redis key */ String SOCIAL_AUTH_CODE_KEY = GLOBAL_REDIS_KEY + "social_auth_codes:"; + + /** + * 字典管理 cache key + */ + String SYS_DICT_KEY = GLOBAL_REDIS_KEY + "sys_dict:"; + + /** + * 参数管理 cache key + */ + String SYS_CONFIG_KEY = GLOBAL_REDIS_KEY + "sys_config:"; } diff --git a/ruoyi-component/ruoyi-component-core/src/main/java/com/ruoyi/component/core/constant/UserConstants.java b/ruoyi-component/ruoyi-component-core/src/main/java/com/ruoyi/component/core/constant/UserConstants.java index c69e3df..db3c185 100644 --- a/ruoyi-component/ruoyi-component-core/src/main/java/com/ruoyi/component/core/constant/UserConstants.java +++ b/ruoyi-component/ruoyi-component-core/src/main/java/com/ruoyi/component/core/constant/UserConstants.java @@ -139,9 +139,4 @@ public interface UserConstants { */ Long ADMIN_ID = 1L; - /** - * 管理员角色key - */ - String ADMIN_ROLE_KEY = "admin"; - } diff --git a/ruoyi-component/ruoyi-component-core/src/main/java/com/ruoyi/component/core/domain/model/LoginUser.java b/ruoyi-component/ruoyi-component-core/src/main/java/com/ruoyi/component/core/domain/model/LoginUser.java index 5a58f7e..fbd2f15 100644 --- a/ruoyi-component/ruoyi-component-core/src/main/java/com/ruoyi/component/core/domain/model/LoginUser.java +++ b/ruoyi-component/ruoyi-component-core/src/main/java/com/ruoyi/component/core/domain/model/LoginUser.java @@ -100,6 +100,8 @@ public class LoginUser implements Serializable { */ private Long roleId; + private String tenantId; + /** * 获取登录id */ diff --git a/ruoyi-component/ruoyi-component-core/src/main/java/com/ruoyi/component/core/executor/ExecutorConstant.java b/ruoyi-component/ruoyi-component-core/src/main/java/com/ruoyi/component/core/executor/ExecutorConstant.java new file mode 100644 index 0000000..2c5b309 --- /dev/null +++ b/ruoyi-component/ruoyi-component-core/src/main/java/com/ruoyi/component/core/executor/ExecutorConstant.java @@ -0,0 +1,34 @@ +package com.ruoyi.component.core.executor; + +import com.alibaba.ttl.threadpool.TtlExecutors; +import com.google.common.util.concurrent.ThreadFactoryBuilder; + +import java.util.concurrent.*; + +public class ExecutorConstant { + + private final static int CPU_NUM = Runtime.getRuntime().availableProcessors(); + + public static Executor COMMON_EXECUTOR; + + static { + ThreadPoolExecutor commonExecutor = new ThreadPoolExecutor(CPU_NUM, + CPU_NUM << 2, + 5, + TimeUnit.SECONDS, + new ArrayBlockingQueue<>(50), + init("commonThreadPool-%d"), + new ThreadPoolExecutor.CallerRunsPolicy()); + COMMON_EXECUTOR = TtlExecutors.getTtlExecutor(commonExecutor); + } + + private static ThreadFactory init(String nameFormat){ + return new ThreadFactoryBuilder().setNameFormat(nameFormat).build(); + } + + private static ThreadPoolExecutor initExecutor(int corePoolSize, int maxPoolSize, int keepAliveTime, TimeUnit timeUnit, + BlockingQueue workQueue, String nameFormat){ + return new ThreadPoolExecutor(corePoolSize, maxPoolSize, keepAliveTime, timeUnit, workQueue, + init(nameFormat)); + } +} diff --git a/ruoyi-component/ruoyi-component-generator/src/main/resources/mapper/generator/GenTableColumnMapper.xml b/ruoyi-component/ruoyi-component-generator/src/main/resources/mapper/generator/GenTableColumnMapper.xml index b0a1715..e05e23e 100644 --- a/ruoyi-component/ruoyi-component-generator/src/main/resources/mapper/generator/GenTableColumnMapper.xml +++ b/ruoyi-component/ruoyi-component-generator/src/main/resources/mapper/generator/GenTableColumnMapper.xml @@ -30,7 +30,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + select table_name, table_comment, create_time, update_time from information_schema.tables where table_schema = (select database()) @@ -68,7 +68,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" order by create_time desc - + select lower(dt.table_name) as table_name, dtc.comments as table_comment, uo.created as create_time, uo.last_ddl_time as update_time from user_tables dt, user_tab_comments dtc, user_objects uo where dt.table_name = dtc.table_name @@ -84,7 +84,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" order by create_time desc - + select table_name, table_comment, create_time, update_time from ( SELECT c.relname AS table_name, @@ -108,7 +108,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" order by create_time desc - + SELECT cast(D.NAME as nvarchar) as table_name, cast(F.VALUE as nvarchar) as table_comment, crdate as create_time, @@ -129,7 +129,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"