[Fix]同步

This commit is contained in:
xiezubing1
2021-11-08 17:09:14 +08:00
parent bbbe83b737
commit 41b81f0682
18 changed files with 369 additions and 349 deletions

19
pom.xml
View File

@ -3,7 +3,7 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi</artifactId> <artifactId>ruoyi</artifactId>
<version>3.7.0</version> <version>3.7.0</version>
@ -11,7 +11,7 @@
<name>ruoyi</name> <name>ruoyi</name>
<url>http://www.ruoyi.vip</url> <url>http://www.ruoyi.vip</url>
<description>若依管理系统</description> <description>若依管理系统</description>
<properties> <properties>
<ruoyi.version>3.7.0</ruoyi.version> <ruoyi.version>3.7.0</ruoyi.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@ -22,7 +22,8 @@
<bitwalker.version>1.21</bitwalker.version> <bitwalker.version>1.21</bitwalker.version>
<swagger.version>3.0.0</swagger.version> <swagger.version>3.0.0</swagger.version>
<kaptcha.version>2.3.2</kaptcha.version> <kaptcha.version>2.3.2</kaptcha.version>
<mybatis-spring-boot.version>2.2.0</mybatis-spring-boot.version> <!--<mybatis-spring-boot.version>2.2.0</mybatis-spring-boot.version>-->
<mybatis-plus.version>3.4.2</mybatis-plus.version>
<pagehelper.boot.version>1.4.0</pagehelper.boot.version> <pagehelper.boot.version>1.4.0</pagehelper.boot.version>
<fastjson.version>1.2.78</fastjson.version> <fastjson.version>1.2.78</fastjson.version>
<oshi.version>5.8.2</oshi.version> <oshi.version>5.8.2</oshi.version>
@ -34,7 +35,7 @@
<velocity.version>1.7</velocity.version> <velocity.version>1.7</velocity.version>
<jwt.version>0.9.1</jwt.version> <jwt.version>0.9.1</jwt.version>
</properties> </properties>
<!-- 依赖声明 --> <!-- 依赖声明 -->
<dependencyManagement> <dependencyManagement>
<dependencies> <dependencies>
@ -63,10 +64,16 @@
</dependency> </dependency>
<!-- SpringBoot集成mybatis框架 --> <!-- SpringBoot集成mybatis框架 -->
<dependency> <!--<dependency>
<groupId>org.mybatis.spring.boot</groupId> <groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId> <artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis-spring-boot.version}</version> <version>${mybatis-spring-boot.version}</version>
</dependency>-->
<!-- Mybatis-Plus 集成mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency> </dependency>
<!-- pagehelper 分页插件 --> <!-- pagehelper 分页插件 -->
@ -263,4 +270,4 @@
</pluginRepository> </pluginRepository>
</pluginRepositories> </pluginRepositories>
</project> </project>

View File

@ -6,7 +6,7 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
/** /**
* 启动程序 * 启动程序
* *
* @author ruoyi * @author ruoyi
*/ */
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class }) @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })

View File

@ -14,14 +14,14 @@ import org.springframework.web.bind.annotation.RestController;
import com.google.code.kaptcha.Producer; import com.google.code.kaptcha.Producer;
import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.core.redis.RedisUtils;
import com.ruoyi.common.utils.sign.Base64; import com.ruoyi.common.utils.sign.Base64;
import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.system.service.ISysConfigService;
/** /**
* 验证码操作处理 * 验证码操作处理
* *
* @author ruoyi * @author ruoyi
*/ */
@RestController @RestController
@ -34,12 +34,12 @@ public class CaptchaController
private Producer captchaProducerMath; private Producer captchaProducerMath;
@Autowired @Autowired
private RedisCache redisCache; private RedisUtils redisUtils;
// 验证码类型 // 验证码类型
@Value("${ruoyi.captchaType}") @Value("${ruoyi.captchaType}")
private String captchaType; private String captchaType;
@Autowired @Autowired
private ISysConfigService configService; private ISysConfigService configService;
/** /**
@ -77,7 +77,7 @@ public class CaptchaController
image = captchaProducer.createImage(capStr); image = captchaProducer.createImage(capStr);
} }
redisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES); redisUtils.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
// 转换流信息写出 // 转换流信息写出
FastByteArrayOutputStream os = new FastByteArrayOutputStream(); FastByteArrayOutputStream os = new FastByteArrayOutputStream();
try try

View File

@ -17,7 +17,7 @@ import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.core.redis.RedisUtils;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.domain.SysUserOnline; import com.ruoyi.system.domain.SysUserOnline;
@ -25,7 +25,7 @@ import com.ruoyi.system.service.ISysUserOnlineService;
/** /**
* 在线用户监控 * 在线用户监控
* *
* @author ruoyi * @author ruoyi
*/ */
@RestController @RestController
@ -36,17 +36,17 @@ public class SysUserOnlineController extends BaseController
private ISysUserOnlineService userOnlineService; private ISysUserOnlineService userOnlineService;
@Autowired @Autowired
private RedisCache redisCache; private RedisUtils redisUtils;
@PreAuthorize("@ss.hasPermi('monitor:online:list')") @PreAuthorize("@ss.hasPermi('monitor:online:list')")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(String ipaddr, String userName) public TableDataInfo list(String ipaddr, String userName)
{ {
Collection<String> keys = redisCache.keys(Constants.LOGIN_TOKEN_KEY + "*"); Collection<String> keys = redisUtils.keys(Constants.LOGIN_TOKEN_KEY + "*");
List<SysUserOnline> userOnlineList = new ArrayList<SysUserOnline>(); List<SysUserOnline> userOnlineList = new ArrayList<SysUserOnline>();
for (String key : keys) for (String key : keys)
{ {
LoginUser user = redisCache.getCacheObject(key); LoginUser user = redisUtils.getCacheObject(key);
if (StringUtils.isNotEmpty(ipaddr) && StringUtils.isNotEmpty(userName)) if (StringUtils.isNotEmpty(ipaddr) && StringUtils.isNotEmpty(userName))
{ {
if (StringUtils.equals(ipaddr, user.getIpaddr()) && StringUtils.equals(userName, user.getUsername())) if (StringUtils.equals(ipaddr, user.getIpaddr()) && StringUtils.equals(userName, user.getUsername()))
@ -86,7 +86,7 @@ public class SysUserOnlineController extends BaseController
@DeleteMapping("/{tokenId}") @DeleteMapping("/{tokenId}")
public AjaxResult forceLogout(@PathVariable String tokenId) public AjaxResult forceLogout(@PathVariable String tokenId)
{ {
redisCache.deleteObject(Constants.LOGIN_TOKEN_KEY + tokenId); redisUtils.deleteObject(Constants.LOGIN_TOKEN_KEY + tokenId);
return AjaxResult.success(); return AjaxResult.success();
} }
} }

View File

@ -1,57 +1,57 @@
# 数据源配置 # 数据源配置
spring: spring:
datasource: datasource:
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver driverClassName: com.mysql.cj.jdbc.Driver
druid: druid:
# 主库数据源 # 主库数据源
master: master:
url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 url: jdbc:mysql://localhost:3306/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root username: root
password: password password: root
# 从库数据源 # 从库数据源
slave: slave:
# 从数据源开关/默认关闭 # 从数据源开关/默认关闭
enabled: false enabled: false
url: url:
username: username:
password: password:
# 初始连接数 # 初始连接数
initialSize: 5 initialSize: 5
# 最小连接池数量 # 最小连接池数量
minIdle: 10 minIdle: 10
# 最大连接池数量 # 最大连接池数量
maxActive: 20 maxActive: 20
# 配置获取连接等待超时的时间 # 配置获取连接等待超时的时间
maxWait: 60000 maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000 timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒 # 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000 minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒 # 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000 maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效 # 配置检测连接是否有效
validationQuery: SELECT 1 FROM DUAL validationQuery: SELECT 'x'
testWhileIdle: true testWhileIdle: true
testOnBorrow: false testOnBorrow: false
testOnReturn: false testOnReturn: false
webStatFilter: webStatFilter:
enabled: true enabled: true
statViewServlet: statViewServlet:
enabled: true enabled: true
# 设置白名单,不填则允许所有访问 # 设置白名单,不填则允许所有访问
allow: allow:
url-pattern: /druid/* url-pattern: /druid/*
# 控制台管理用户名和密码 # 控制台管理用户名和密码
login-username: ruoyi login-username: ruoyi
login-password: 123456 login-password: 123456
filter: filter:
stat: stat:
enabled: true enabled: true
# 慢SQL记录 # 慢SQL记录
log-slow-sql: true log-slow-sql: true
slow-sql-millis: 1000 slow-sql-millis: 1000
merge-sql: true merge-sql: true
wall: wall:
config: config:
multi-statement-allow: true multi-statement-allow: true

View File

@ -42,7 +42,7 @@ spring:
messages: messages:
# 国际化资源文件路径 # 国际化资源文件路径
basename: i18n/messages basename: i18n/messages
profiles: profiles:
active: druid active: druid
# 文件上传 # 文件上传
servlet: servlet:
@ -65,7 +65,7 @@ spring:
# 数据库索引 # 数据库索引
database: 0 database: 0
# 密码 # 密码
password: password:
# 连接超时时间 # 连接超时时间
timeout: 10s timeout: 10s
lettuce: lettuce:
@ -81,27 +81,39 @@ spring:
# token配置 # token配置
token: token:
# 令牌自定义标识 # 令牌自定义标识
header: Authorization header: Authorization
# 令牌密钥 # 令牌密钥
secret: abcdefghijklmnopqrstuvwxyz secret: abcdefghijklmnopqrstuvwxyz
# 令牌有效期默认30分钟 # 令牌有效期默认30分钟
expireTime: 30 expireTime: 30
# MyBatis配置 # MyBatis-Plus配置
mybatis: mybatis-plus:
# 搜索指定包别名 type-aliases-package: com.ruoyi.**.domain
typeAliasesPackage: com.ruoyi.**.domain mapper-locations: classpath*:mapper/**/*Mapper.xml
# 配置mapper的扫描找到所有的mapper.xml映射文件 #config-location: classpath:mybatis/mybatis-config.xml
mapperLocations: classpath*:mapper/**/*Mapper.xml global-config:
# 加载全局的配置文件 db-config:
configLocation: classpath:mybatis/mybatis-config.xml id-type: auto
#字段策略 0:"忽略判断",1:"非 NULL 判断",2:"非空判断"
field-strategy: 2
refresh-mapper: true
#逻辑删除配置 0:"未删除" 1:"已删除"
logicDeleteValue: 0
logicNotDeleteValue: 1
db-type: mysql
configuration:
map-underscore-to-camel-case: true
cache-enabled: false
# 关闭日志
#logImpl: org.apache.ibatis.logging.nologging.NoLoggingImpl
# PageHelper分页插件 # PageHelper分页插件
pagehelper: pagehelper:
helperDialect: mysql helperDialect: mysql
supportMethodsArguments: true supportMethodsArguments: true
params: count=countSql params: count=countSql
# Swagger配置 # Swagger配置
swagger: swagger:
@ -111,7 +123,7 @@ swagger:
pathMapping: /dev-api pathMapping: /dev-api
# 防止XSS攻击 # 防止XSS攻击
xss: xss:
# 过滤开关 # 过滤开关
enabled: true enabled: true
# 排除链接(多个用逗号分隔) # 排除链接(多个用逗号分隔)

View File

@ -1,31 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<configuration> <configuration>
<!-- 日志存放路径 --> <!-- 日志存放路径 -->
<property name="log.path" value="/home/ruoyi/logs" /> <property name="log.path" value="/home/ruoyi/logs" />
<!-- 日志输出格式 --> <!-- 日志输出格式 -->
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" /> <!--<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />-->
<!-- 控制台输出 --> <!-- 彩色日志依赖的渲染类 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<encoder> <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
<pattern>${log.pattern}</pattern> <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
</encoder> <!-- 彩色日志格式 -->
</appender> <!--
<property name="log.pattern" value="${log.pattern:-%clr(%d{HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(-&#45;&#45;){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<!-- 系统日志输出 --> -->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />-->
<file>${log.path}/sys-info.log</file> <!--<property name="log.pattern" value="%d{HH:mm:ss.SSS} %magenta([%thread]) %customcolor(%-5level) %cyan(%logger{15}) - %msg%n" />-->
<property name="log.pattern" value="%d{HH:mm:ss.SSS} %green(%-5level) [%thread] %cyan(%logger{20}) - [%method,%line] : %msg%n" />
<!-- 控制台输出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!-- 系统日志输出 -->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/sys-info.log</file>
<!-- 循环政策:基于时间创建日志文件 --> <!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 --> <!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern> <fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 --> <!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory> <maxHistory>60</maxHistory>
</rollingPolicy> </rollingPolicy>
<encoder> <encoder>
<pattern>${log.pattern}</pattern> <pattern>${log.pattern}</pattern>
</encoder> </encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 --> <!-- 过滤的级别 -->
<level>INFO</level> <level>INFO</level>
<!-- 匹配时的操作:接收(记录) --> <!-- 匹配时的操作:接收(记录) -->
@ -33,16 +45,16 @@
<!-- 不匹配时的操作:拒绝(不记录) --> <!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch> <onMismatch>DENY</onMismatch>
</filter> </filter>
</appender> </appender>
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/sys-error.log</file> <file>${log.path}/sys-error.log</file>
<!-- 循环政策:基于时间创建日志文件 --> <!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 --> <!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern> <fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 --> <!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory> <maxHistory>60</maxHistory>
</rollingPolicy> </rollingPolicy>
<encoder> <encoder>
<pattern>${log.pattern}</pattern> <pattern>${log.pattern}</pattern>
@ -50,16 +62,16 @@
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 --> <!-- 过滤的级别 -->
<level>ERROR</level> <level>ERROR</level>
<!-- 匹配时的操作:接收(记录) --> <!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch> <onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) --> <!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch> <onMismatch>DENY</onMismatch>
</filter> </filter>
</appender> </appender>
<!-- 用户访问日志输出 --> <!-- 用户访问日志输出 -->
<appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/sys-user.log</file> <file>${log.path}/sys-user.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 按天回滚 daily --> <!-- 按天回滚 daily -->
<fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern> <fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>
@ -70,24 +82,24 @@
<pattern>${log.pattern}</pattern> <pattern>${log.pattern}</pattern>
</encoder> </encoder>
</appender> </appender>
<!-- 系统模块日志级别控制 -->
<logger name="com.ruoyi" level="info" />
<!-- Spring日志级别控制 -->
<logger name="org.springframework" level="warn" />
<root level="info"> <!-- 系统模块日志级别控制 -->
<appender-ref ref="console" /> <logger name="com.ruoyi" level="info" />
</root> <!-- Spring日志级别控制 -->
<logger name="org.springframework" level="warn" />
<!--系统操作日志-->
<root level="info">
<appender-ref ref="console" />
</root>
<!--系统操作日志-->
<root level="info"> <root level="info">
<appender-ref ref="file_info" /> <appender-ref ref="file_info" />
<appender-ref ref="file_error" /> <appender-ref ref="file_error" />
</root> </root>
<!--系统用户操作日志--> <!--系统用户操作日志-->
<logger name="sys-user" level="info"> <logger name="sys-user" level="info">
<appender-ref ref="sys-user"/> <appender-ref ref="sys-user"/>
</logger> </logger>
</configuration> </configuration>

View File

@ -16,5 +16,5 @@ PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
<!-- 使用驼峰命名法转换字段 --> <!-- 使用驼峰命名法转换字段 -->
<!-- <setting name="mapUnderscoreToCamelCase" value="true"/> --> <!-- <setting name="mapUnderscoreToCamelCase" value="true"/> -->
</settings> </settings>
</configuration> </configuration>

View File

@ -35,6 +35,12 @@
<artifactId>spring-boot-starter-security</artifactId> <artifactId>spring-boot-starter-security</artifactId>
</dependency> </dependency>
<!-- Mybatis-Plus 集成mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
<!-- pagehelper 分页插件 --> <!-- pagehelper 分页插件 -->
<dependency> <dependency>
<groupId>com.github.pagehelper</groupId> <groupId>com.github.pagehelper</groupId>
@ -52,7 +58,7 @@
<groupId>org.apache.commons</groupId> <groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId> <artifactId>commons-lang3</artifactId>
</dependency> </dependency>
<!-- JSON工具类 --> <!-- JSON工具类 -->
<dependency> <dependency>
<groupId>com.fasterxml.jackson.core</groupId> <groupId>com.fasterxml.jackson.core</groupId>
@ -127,4 +133,4 @@
</dependencies> </dependencies>
</project> </project>

View File

@ -4,12 +4,12 @@ import java.util.Collection;
import java.util.List; import java.util.List;
import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.entity.SysDictData; import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.core.redis.RedisUtils;
import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.common.utils.spring.SpringUtils;
/** /**
* 字典工具类 * 字典工具类
* *
* @author ruoyi * @author ruoyi
*/ */
public class DictUtils public class DictUtils
@ -21,24 +21,24 @@ public class DictUtils
/** /**
* 设置字典缓存 * 设置字典缓存
* *
* @param key 参数键 * @param key 参数键
* @param dictDatas 字典数据列表 * @param dictDatas 字典数据列表
*/ */
public static void setDictCache(String key, List<SysDictData> dictDatas) public static void setDictCache(String key, List<SysDictData> dictDatas)
{ {
SpringUtils.getBean(RedisCache.class).setCacheObject(getCacheKey(key), dictDatas); SpringUtils.getBean(RedisUtils.class).setCacheObject(getCacheKey(key), dictDatas);
} }
/** /**
* 获取字典缓存 * 获取字典缓存
* *
* @param key 参数键 * @param key 参数键
* @return dictDatas 字典数据列表 * @return dictDatas 字典数据列表
*/ */
public static List<SysDictData> getDictCache(String key) public static List<SysDictData> getDictCache(String key)
{ {
Object cacheObj = SpringUtils.getBean(RedisCache.class).getCacheObject(getCacheKey(key)); Object cacheObj = SpringUtils.getBean(RedisUtils.class).getCacheObject(getCacheKey(key));
if (StringUtils.isNotNull(cacheObj)) if (StringUtils.isNotNull(cacheObj))
{ {
List<SysDictData> dictDatas = StringUtils.cast(cacheObj); List<SysDictData> dictDatas = StringUtils.cast(cacheObj);
@ -49,7 +49,7 @@ public class DictUtils
/** /**
* 根据字典类型和字典值获取字典标签 * 根据字典类型和字典值获取字典标签
* *
* @param dictType 字典类型 * @param dictType 字典类型
* @param dictValue 字典值 * @param dictValue 字典值
* @return 字典标签 * @return 字典标签
@ -61,7 +61,7 @@ public class DictUtils
/** /**
* 根据字典类型和字典标签获取字典值 * 根据字典类型和字典标签获取字典值
* *
* @param dictType 字典类型 * @param dictType 字典类型
* @param dictLabel 字典标签 * @param dictLabel 字典标签
* @return 字典值 * @return 字典值
@ -73,7 +73,7 @@ public class DictUtils
/** /**
* 根据字典类型和字典值获取字典标签 * 根据字典类型和字典值获取字典标签
* *
* @param dictType 字典类型 * @param dictType 字典类型
* @param dictValue 字典值 * @param dictValue 字典值
* @param separator 分隔符 * @param separator 分隔符
@ -113,7 +113,7 @@ public class DictUtils
/** /**
* 根据字典类型和字典标签获取字典值 * 根据字典类型和字典标签获取字典值
* *
* @param dictType 字典类型 * @param dictType 字典类型
* @param dictLabel 字典标签 * @param dictLabel 字典标签
* @param separator 分隔符 * @param separator 分隔符
@ -153,12 +153,12 @@ public class DictUtils
/** /**
* 删除指定字典缓存 * 删除指定字典缓存
* *
* @param key 字典键 * @param key 字典键
*/ */
public static void removeDictCache(String key) public static void removeDictCache(String key)
{ {
SpringUtils.getBean(RedisCache.class).deleteObject(getCacheKey(key)); SpringUtils.getBean(RedisUtils.class).deleteObject(getCacheKey(key));
} }
/** /**
@ -166,13 +166,13 @@ public class DictUtils
*/ */
public static void clearDictCache() public static void clearDictCache()
{ {
Collection<String> keys = SpringUtils.getBean(RedisCache.class).keys(Constants.SYS_DICT_KEY + "*"); Collection<String> keys = SpringUtils.getBean(RedisUtils.class).keys(Constants.SYS_DICT_KEY + "*");
SpringUtils.getBean(RedisCache.class).deleteObject(keys); SpringUtils.getBean(RedisUtils.class).deleteObject(keys);
} }
/** /**
* 设置cache key * 设置cache key
* *
* @param configKey 参数键 * @param configKey 参数键
* @return 缓存键key * @return 缓存键key
*/ */

View File

@ -29,7 +29,7 @@ import com.ruoyi.system.domain.SysOperLog;
/** /**
* 操作日志记录处理 * 操作日志记录处理
* *
* @author ruoyi * @author ruoyi
*/ */
@Aspect @Aspect
@ -51,7 +51,7 @@ public class LogAspect
/** /**
* 拦截异常操作 * 拦截异常操作
* *
* @param joinPoint 切点 * @param joinPoint 切点
* @param e 异常 * @param e 异常
*/ */
@ -108,7 +108,7 @@ public class LogAspect
/** /**
* 获取注解中对方法的描述信息 用于Controller层注解 * 获取注解中对方法的描述信息 用于Controller层注解
* *
* @param log 日志 * @param log 日志
* @param operLog 操作日志 * @param operLog 操作日志
* @throws Exception * @throws Exception
@ -136,7 +136,7 @@ public class LogAspect
/** /**
* 获取请求的参数放到log中 * 获取请求的参数放到log中
* *
* @param operLog 操作日志 * @param operLog 操作日志
* @throws Exception 异常 * @throws Exception 异常
*/ */
@ -183,7 +183,7 @@ public class LogAspect
/** /**
* 判断是否需要过滤的对象。 * 判断是否需要过滤的对象。
* *
* @param o 对象信息。 * @param o 对象信息。
* @return 如果是需要过滤的对象则返回true否则返回false。 * @return 如果是需要过滤的对象则返回true否则返回false。
*/ */

View File

@ -1,132 +1,114 @@
package com.ruoyi.framework.config; //package com.ruoyi.framework.config;
//
import java.io.IOException; //import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
import java.util.ArrayList; //import com.ruoyi.common.utils.StringUtils;
import java.util.Arrays; //import org.apache.ibatis.io.VFS;
import java.util.HashSet; //import org.apache.ibatis.session.SqlSessionFactory;
import java.util.List; //import org.mybatis.spring.boot.autoconfigure.SpringBootVFS;
import javax.sql.DataSource; //import org.springframework.beans.factory.annotation.Autowired;
import org.apache.ibatis.io.VFS; //import org.springframework.context.annotation.Bean;
import org.apache.ibatis.session.SqlSessionFactory; //import org.springframework.context.annotation.Configuration;
import org.mybatis.spring.SqlSessionFactoryBean; //import org.springframework.core.env.Environment;
import org.mybatis.spring.boot.autoconfigure.SpringBootVFS; //import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.core.io.Resource;
import org.springframework.context.annotation.Bean; //import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.context.annotation.Configuration; //import org.springframework.core.io.support.ResourcePatternResolver;
import org.springframework.core.env.Environment; //import org.springframework.core.type.classreading.CachingMetadataReaderFactory;
import org.springframework.core.io.DefaultResourceLoader; //import org.springframework.core.type.classreading.MetadataReader;
import org.springframework.core.io.Resource; //import org.springframework.core.type.classreading.MetadataReaderFactory;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver; //import org.springframework.util.ClassUtils;
import org.springframework.core.io.support.ResourcePatternResolver; //
import org.springframework.core.type.classreading.CachingMetadataReaderFactory; //import javax.sql.DataSource;
import org.springframework.core.type.classreading.MetadataReader; //import java.io.IOException;
import org.springframework.core.type.classreading.MetadataReaderFactory; //import java.util.ArrayList;
import org.springframework.util.ClassUtils; //import java.util.Arrays;
import com.ruoyi.common.utils.StringUtils; //import java.util.HashSet;
//import java.util.List;
/** //
* Mybatis支持*匹配扫描包 ///**
* // * Mybatis支持*匹配扫描包
* @author ruoyi // *
*/ // * @author ruoyi
@Configuration // */
public class MyBatisConfig //@Configuration
{ //public class MyBatisConfig {
@Autowired // @Autowired
private Environment env; // private Environment env;
//
static final String DEFAULT_RESOURCE_PATTERN = "**/*.class"; // static final String DEFAULT_RESOURCE_PATTERN = "**/*.class";
//
public static String setTypeAliasesPackage(String typeAliasesPackage) // public static String setTypeAliasesPackage(String typeAliasesPackage) {
{ // ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
ResourcePatternResolver resolver = (ResourcePatternResolver) new PathMatchingResourcePatternResolver(); // MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resolver);
MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resolver); // List<String> allResult = new ArrayList<>();
List<String> allResult = new ArrayList<String>(); // try {
try // for (String aliasesPackage : typeAliasesPackage.split(",")) {
{ // List<String> result = new ArrayList<>();
for (String aliasesPackage : typeAliasesPackage.split(",")) // aliasesPackage = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX
{ // + ClassUtils.convertClassNameToResourcePath(aliasesPackage.trim()) + "/" + DEFAULT_RESOURCE_PATTERN;
List<String> result = new ArrayList<String>(); // Resource[] resources = resolver.getResources(aliasesPackage);
aliasesPackage = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX // if (resources != null && resources.length > 0) {
+ ClassUtils.convertClassNameToResourcePath(aliasesPackage.trim()) + "/" + DEFAULT_RESOURCE_PATTERN; // MetadataReader metadataReader = null;
Resource[] resources = resolver.getResources(aliasesPackage); // for (Resource resource : resources) {
if (resources != null && resources.length > 0) // if (resource.isReadable()) {
{ // metadataReader = metadataReaderFactory.getMetadataReader(resource);
MetadataReader metadataReader = null; // try {
for (Resource resource : resources) // result.add(Class.forName(metadataReader.getClassMetadata().getClassName()).getPackage().getName());
{ // } catch (ClassNotFoundException e) {
if (resource.isReadable()) // e.printStackTrace();
{ // }
metadataReader = metadataReaderFactory.getMetadataReader(resource); // }
try // }
{ // }
result.add(Class.forName(metadataReader.getClassMetadata().getClassName()).getPackage().getName()); // if (result.size() > 0) {
} // HashSet<String> hashResult = new HashSet<>(result);
catch (ClassNotFoundException e) // allResult.addAll(hashResult);
{ // }
e.printStackTrace(); // }
} // if (allResult.size() > 0) {
} // typeAliasesPackage = String.join(",", (String[]) allResult.toArray(new String[0]));
} // } else {
} // throw new RuntimeException("mybatis typeAliasesPackage 路径扫描错误,参数typeAliasesPackage:" + typeAliasesPackage + "未找到任何包");
if (result.size() > 0) // }
{ // } catch (IOException e) {
HashSet<String> hashResult = new HashSet<String>(result); // e.printStackTrace();
allResult.addAll(hashResult); // }
} // return typeAliasesPackage;
} // }
if (allResult.size() > 0) //
{ // public Resource[] resolveMapperLocations(String[] mapperLocations) {
typeAliasesPackage = String.join(",", (String[]) allResult.toArray(new String[0])); // ResourcePatternResolver resourceResolver = new PathMatchingResourcePatternResolver();
} // List<Resource> resources = new ArrayList<>();
else // if (mapperLocations != null) {
{ // for (String mapperLocation : mapperLocations) {
throw new RuntimeException("mybatis typeAliasesPackage 路径扫描错误,参数typeAliasesPackage:" + typeAliasesPackage + "未找到任何包"); // try {
} // Resource[] mappers = resourceResolver.getResources(mapperLocation);
} // resources.addAll(Arrays.asList(mappers));
catch (IOException e) // } catch (IOException e) {
{ // // ignore
e.printStackTrace(); // }
} // }
return typeAliasesPackage; // }
} // return resources.toArray(new Resource[resources.size()]);
// }
public Resource[] resolveMapperLocations(String[] mapperLocations) //
{ // @Bean
ResourcePatternResolver resourceResolver = new PathMatchingResourcePatternResolver(); // public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception
List<Resource> resources = new ArrayList<Resource>(); // {
if (mapperLocations != null) // String typeAliasesPackage = env.getProperty("mybatis-plus.type-aliases-package");
{ // String mapperLocations = env.getProperty("mybatis-plus.mapper-locations");
for (String mapperLocation : mapperLocations) // String configLocation = env.getProperty("mybatis.configLocation");
{ // typeAliasesPackage = setTypeAliasesPackage(typeAliasesPackage);
try // VFS.addImplClass(SpringBootVFS.class);
{ //
Resource[] mappers = resourceResolver.getResources(mapperLocation); // // final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
resources.addAll(Arrays.asList(mappers)); // MybatisSqlSessionFactoryBean sessionFactory=new MybatisSqlSessionFactoryBean();
} // sessionFactory.setDataSource(dataSource);
catch (IOException e) // sessionFactory.setTypeAliasesPackage(typeAliasesPackage);
{ // sessionFactory.setMapperLocations(resolveMapperLocations(StringUtils.split(mapperLocations, ",")));
// ignore // sessionFactory.setConfigLocation(new DefaultResourceLoader().getResource(configLocation));
} // //如果有enum也需要在第二步return之前加入,直接配置是没用的
} // //sessionFactory.setTypeEnumsPackage("com.ruoyi.**.enums");
} // return sessionFactory.getObject();
return resources.toArray(new Resource[resources.size()]); // }
} //}
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception
{
String typeAliasesPackage = env.getProperty("mybatis.typeAliasesPackage");
String mapperLocations = env.getProperty("mybatis.mapperLocations");
String configLocation = env.getProperty("mybatis.configLocation");
typeAliasesPackage = setTypeAliasesPackage(typeAliasesPackage);
VFS.addImplClass(SpringBootVFS.class);
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
sessionFactory.setTypeAliasesPackage(typeAliasesPackage);
sessionFactory.setMapperLocations(resolveMapperLocations(StringUtils.split(mapperLocations, ",")));
sessionFactory.setConfigLocation(new DefaultResourceLoader().getResource(configLocation));
return sessionFactory.getObject();
}
}

View File

@ -10,7 +10,7 @@ import org.springframework.stereotype.Component;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.annotation.RepeatSubmit; import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.core.redis.RedisUtils;
import com.ruoyi.common.filter.RepeatedlyRequestWrapper; import com.ruoyi.common.filter.RepeatedlyRequestWrapper;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.http.HttpHelper; import com.ruoyi.common.utils.http.HttpHelper;
@ -19,7 +19,7 @@ import com.ruoyi.framework.interceptor.RepeatSubmitInterceptor;
/** /**
* 判断请求url和数据是否和上一次相同 * 判断请求url和数据是否和上一次相同
* 如果和上次相同,则是重复提交表单。 有效时间为10秒内。 * 如果和上次相同,则是重复提交表单。 有效时间为10秒内。
* *
* @author ruoyi * @author ruoyi
*/ */
@Component @Component
@ -34,7 +34,7 @@ public class SameUrlDataInterceptor extends RepeatSubmitInterceptor
private String header; private String header;
@Autowired @Autowired
private RedisCache redisCache; private RedisUtils redisUtils;
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Override @Override
@ -69,7 +69,7 @@ public class SameUrlDataInterceptor extends RepeatSubmitInterceptor
// 唯一标识指定key + 消息头) // 唯一标识指定key + 消息头)
String cacheRepeatKey = Constants.REPEAT_SUBMIT_KEY + submitKey; String cacheRepeatKey = Constants.REPEAT_SUBMIT_KEY + submitKey;
Object sessionObj = redisCache.getCacheObject(cacheRepeatKey); Object sessionObj = redisUtils.getCacheObject(cacheRepeatKey);
if (sessionObj != null) if (sessionObj != null)
{ {
Map<String, Object> sessionMap = (Map<String, Object>) sessionObj; Map<String, Object> sessionMap = (Map<String, Object>) sessionObj;
@ -84,7 +84,7 @@ public class SameUrlDataInterceptor extends RepeatSubmitInterceptor
} }
Map<String, Object> cacheMap = new HashMap<String, Object>(); Map<String, Object> cacheMap = new HashMap<String, Object>();
cacheMap.put(url, nowDataMap); cacheMap.put(url, nowDataMap);
redisCache.setCacheObject(cacheRepeatKey, cacheMap, annotation.interval(), TimeUnit.MILLISECONDS); redisUtils.setCacheObject(cacheRepeatKey, cacheMap, annotation.interval(), TimeUnit.MILLISECONDS);
return false; return false;
} }

View File

@ -10,7 +10,7 @@ import org.springframework.stereotype.Component;
import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.core.redis.RedisUtils;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.exception.user.CaptchaException; import com.ruoyi.common.exception.user.CaptchaException;
import com.ruoyi.common.exception.user.CaptchaExpireException; import com.ruoyi.common.exception.user.CaptchaExpireException;
@ -26,7 +26,7 @@ import com.ruoyi.system.service.ISysUserService;
/** /**
* 登录校验方法 * 登录校验方法
* *
* @author ruoyi * @author ruoyi
*/ */
@Component @Component
@ -39,8 +39,8 @@ public class SysLoginService
private AuthenticationManager authenticationManager; private AuthenticationManager authenticationManager;
@Autowired @Autowired
private RedisCache redisCache; private RedisUtils redisUtils;
@Autowired @Autowired
private ISysUserService userService; private ISysUserService userService;
@ -49,7 +49,7 @@ public class SysLoginService
/** /**
* 登录验证 * 登录验证
* *
* @param username 用户名 * @param username 用户名
* @param password 密码 * @param password 密码
* @param code 验证码 * @param code 验证码
@ -94,7 +94,7 @@ public class SysLoginService
/** /**
* 校验验证码 * 校验验证码
* *
* @param username 用户名 * @param username 用户名
* @param code 验证码 * @param code 验证码
* @param uuid 唯一标识 * @param uuid 唯一标识
@ -103,8 +103,8 @@ public class SysLoginService
public void validateCaptcha(String username, String code, String uuid) public void validateCaptcha(String username, String code, String uuid)
{ {
String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid; String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid;
String captcha = redisCache.getCacheObject(verifyKey); String captcha = redisUtils.getCacheObject(verifyKey);
redisCache.deleteObject(verifyKey); redisUtils.deleteObject(verifyKey);
if (captcha == null) if (captcha == null)
{ {
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire"))); AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire")));

View File

@ -6,7 +6,7 @@ import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.RegisterBody; import com.ruoyi.common.core.domain.model.RegisterBody;
import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.core.redis.RedisUtils;
import com.ruoyi.common.exception.user.CaptchaException; import com.ruoyi.common.exception.user.CaptchaException;
import com.ruoyi.common.exception.user.CaptchaExpireException; import com.ruoyi.common.exception.user.CaptchaExpireException;
import com.ruoyi.common.utils.MessageUtils; import com.ruoyi.common.utils.MessageUtils;
@ -19,7 +19,7 @@ import com.ruoyi.system.service.ISysUserService;
/** /**
* 注册校验方法 * 注册校验方法
* *
* @author ruoyi * @author ruoyi
*/ */
@Component @Component
@ -32,7 +32,7 @@ public class SysRegisterService
private ISysConfigService configService; private ISysConfigService configService;
@Autowired @Autowired
private RedisCache redisCache; private RedisUtils redisUtils;
/** /**
* 注册 * 注册
@ -92,7 +92,7 @@ public class SysRegisterService
/** /**
* 校验验证码 * 校验验证码
* *
* @param username 用户名 * @param username 用户名
* @param code 验证码 * @param code 验证码
* @param uuid 唯一标识 * @param uuid 唯一标识
@ -101,8 +101,8 @@ public class SysRegisterService
public void validateCaptcha(String username, String code, String uuid) public void validateCaptcha(String username, String code, String uuid)
{ {
String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid; String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid;
String captcha = redisCache.getCacheObject(verifyKey); String captcha = redisUtils.getCacheObject(verifyKey);
redisCache.deleteObject(verifyKey); redisUtils.deleteObject(verifyKey);
if (captcha == null) if (captcha == null)
{ {
throw new CaptchaExpireException(); throw new CaptchaExpireException();

View File

@ -9,7 +9,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.core.redis.RedisUtils;
import com.ruoyi.common.utils.ServletUtils; import com.ruoyi.common.utils.ServletUtils;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.ip.AddressUtils; import com.ruoyi.common.utils.ip.AddressUtils;
@ -47,7 +47,7 @@ public class TokenService
private static final Long MILLIS_MINUTE_TEN = 20 * 60 * 1000L; private static final Long MILLIS_MINUTE_TEN = 20 * 60 * 1000L;
@Autowired @Autowired
private RedisCache redisCache; private RedisUtils redisUtils;
/** /**
* 获取用户身份信息 * 获取用户身份信息
@ -66,7 +66,7 @@ public class TokenService
// 解析对应的权限以及用户信息 // 解析对应的权限以及用户信息
String uuid = (String) claims.get(Constants.LOGIN_USER_KEY); String uuid = (String) claims.get(Constants.LOGIN_USER_KEY);
String userKey = getTokenKey(uuid); String userKey = getTokenKey(uuid);
LoginUser user = redisCache.getCacheObject(userKey); LoginUser user = redisUtils.getCacheObject(userKey);
return user; return user;
} }
catch (Exception e) catch (Exception e)
@ -95,7 +95,7 @@ public class TokenService
if (StringUtils.isNotEmpty(token)) if (StringUtils.isNotEmpty(token))
{ {
String userKey = getTokenKey(token); String userKey = getTokenKey(token);
redisCache.deleteObject(userKey); redisUtils.deleteObject(userKey);
} }
} }
@ -144,7 +144,7 @@ public class TokenService
loginUser.setExpireTime(loginUser.getLoginTime() + expireTime * MILLIS_MINUTE); loginUser.setExpireTime(loginUser.getLoginTime() + expireTime * MILLIS_MINUTE);
// 根据uuid将loginUser缓存 // 根据uuid将loginUser缓存
String userKey = getTokenKey(loginUser.getToken()); String userKey = getTokenKey(loginUser.getToken());
redisCache.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES); redisUtils.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES);
} }
/** /**

View File

@ -1,20 +1,21 @@
package com.ruoyi.quartz.util; package com.ruoyi.quartz.util;
import java.util.Date; import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.constant.ScheduleConstants;
import com.ruoyi.common.utils.ExceptionUtil;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.BeanUtil;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.quartz.domain.SysJob;
import com.ruoyi.quartz.domain.SysJobLog;
import com.ruoyi.quartz.service.ISysJobLogService;
import org.quartz.Job; import org.quartz.Job;
import org.quartz.JobExecutionContext; import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException; import org.quartz.JobExecutionException;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.constant.ScheduleConstants; import java.util.Date;
import com.ruoyi.common.utils.ExceptionUtil;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.quartz.domain.SysJob;
import com.ruoyi.quartz.domain.SysJobLog;
import com.ruoyi.quartz.service.ISysJobLogService;
/** /**
* 抽象quartz调用 * 抽象quartz调用
@ -34,7 +35,7 @@ public abstract class AbstractQuartzJob implements Job
public void execute(JobExecutionContext context) throws JobExecutionException public void execute(JobExecutionContext context) throws JobExecutionException
{ {
SysJob sysJob = new SysJob(); SysJob sysJob = new SysJob();
BeanUtils.copyBeanProp(sysJob, context.getMergedJobDataMap().get(ScheduleConstants.TASK_PROPERTIES)); BeanUtil.copyBeanProp(sysJob, context.getMergedJobDataMap().get(ScheduleConstants.TASK_PROPERTIES));
try try
{ {
before(context, sysJob); before(context, sysJob);

View File

@ -3,7 +3,7 @@ package com.ruoyi.system.service.impl;
import com.ruoyi.common.annotation.DataSource; import com.ruoyi.common.annotation.DataSource;
import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.core.redis.RedisUtils;
import com.ruoyi.common.core.text.Convert; import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.enums.DataSourceType; import com.ruoyi.common.enums.DataSourceType;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
@ -19,7 +19,7 @@ import java.util.List;
/** /**
* 参数配置 服务层实现 * 参数配置 服务层实现
* *
* @author ruoyi * @author ruoyi
*/ */
@Service @Service
@ -29,7 +29,7 @@ public class SysConfigServiceImpl implements ISysConfigService
private SysConfigMapper configMapper; private SysConfigMapper configMapper;
@Autowired @Autowired
private RedisCache redisCache; private RedisUtils redisUtils;
/** /**
* 项目启动时,初始化参数到缓存 * 项目启动时,初始化参数到缓存
@ -42,7 +42,7 @@ public class SysConfigServiceImpl implements ISysConfigService
/** /**
* 查询参数配置信息 * 查询参数配置信息
* *
* @param configId 参数配置ID * @param configId 参数配置ID
* @return 参数配置信息 * @return 参数配置信息
*/ */
@ -57,14 +57,14 @@ public class SysConfigServiceImpl implements ISysConfigService
/** /**
* 根据键名查询参数配置信息 * 根据键名查询参数配置信息
* *
* @param configKey 参数key * @param configKey 参数key
* @return 参数键值 * @return 参数键值
*/ */
@Override @Override
public String selectConfigByKey(String configKey) public String selectConfigByKey(String configKey)
{ {
String configValue = Convert.toStr(redisCache.getCacheObject(getCacheKey(configKey))); String configValue = Convert.toStr(redisUtils.getCacheObject(getCacheKey(configKey)));
if (StringUtils.isNotEmpty(configValue)) if (StringUtils.isNotEmpty(configValue))
{ {
return configValue; return configValue;
@ -74,7 +74,7 @@ public class SysConfigServiceImpl implements ISysConfigService
SysConfig retConfig = configMapper.selectConfig(config); SysConfig retConfig = configMapper.selectConfig(config);
if (StringUtils.isNotNull(retConfig)) if (StringUtils.isNotNull(retConfig))
{ {
redisCache.setCacheObject(getCacheKey(configKey), retConfig.getConfigValue()); redisUtils.setCacheObject(getCacheKey(configKey), retConfig.getConfigValue());
return retConfig.getConfigValue(); return retConfig.getConfigValue();
} }
return StringUtils.EMPTY; return StringUtils.EMPTY;
@ -82,7 +82,7 @@ public class SysConfigServiceImpl implements ISysConfigService
/** /**
* 获取验证码开关 * 获取验证码开关
* *
* @return true开启false关闭 * @return true开启false关闭
*/ */
@Override @Override
@ -98,7 +98,7 @@ public class SysConfigServiceImpl implements ISysConfigService
/** /**
* 查询参数配置列表 * 查询参数配置列表
* *
* @param config 参数配置信息 * @param config 参数配置信息
* @return 参数配置集合 * @return 参数配置集合
*/ */
@ -110,7 +110,7 @@ public class SysConfigServiceImpl implements ISysConfigService
/** /**
* 新增参数配置 * 新增参数配置
* *
* @param config 参数配置信息 * @param config 参数配置信息
* @return 结果 * @return 结果
*/ */
@ -120,14 +120,14 @@ public class SysConfigServiceImpl implements ISysConfigService
int row = configMapper.insertConfig(config); int row = configMapper.insertConfig(config);
if (row > 0) if (row > 0)
{ {
redisCache.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue()); redisUtils.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());
} }
return row; return row;
} }
/** /**
* 修改参数配置 * 修改参数配置
* *
* @param config 参数配置信息 * @param config 参数配置信息
* @return 结果 * @return 结果
*/ */
@ -137,14 +137,14 @@ public class SysConfigServiceImpl implements ISysConfigService
int row = configMapper.updateConfig(config); int row = configMapper.updateConfig(config);
if (row > 0) if (row > 0)
{ {
redisCache.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue()); redisUtils.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());
} }
return row; return row;
} }
/** /**
* 批量删除参数信息 * 批量删除参数信息
* *
* @param configIds 需要删除的参数ID * @param configIds 需要删除的参数ID
* @return 结果 * @return 结果
*/ */
@ -159,7 +159,7 @@ public class SysConfigServiceImpl implements ISysConfigService
throw new ServiceException(String.format("内置参数【%1$s】不能删除 ", config.getConfigKey())); throw new ServiceException(String.format("内置参数【%1$s】不能删除 ", config.getConfigKey()));
} }
configMapper.deleteConfigById(configId); configMapper.deleteConfigById(configId);
redisCache.deleteObject(getCacheKey(config.getConfigKey())); redisUtils.deleteObject(getCacheKey(config.getConfigKey()));
} }
} }
@ -172,7 +172,7 @@ public class SysConfigServiceImpl implements ISysConfigService
List<SysConfig> configsList = configMapper.selectConfigList(new SysConfig()); List<SysConfig> configsList = configMapper.selectConfigList(new SysConfig());
for (SysConfig config : configsList) for (SysConfig config : configsList)
{ {
redisCache.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue()); redisUtils.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());
} }
} }
@ -182,8 +182,8 @@ public class SysConfigServiceImpl implements ISysConfigService
@Override @Override
public void clearConfigCache() public void clearConfigCache()
{ {
Collection<String> keys = redisCache.keys(Constants.SYS_CONFIG_KEY + "*"); Collection<String> keys = redisUtils.keys(Constants.SYS_CONFIG_KEY + "*");
redisCache.deleteObject(keys); redisUtils.deleteObject(keys);
} }
/** /**
@ -198,7 +198,7 @@ public class SysConfigServiceImpl implements ISysConfigService
/** /**
* 校验参数键名是否唯一 * 校验参数键名是否唯一
* *
* @param config 参数配置信息 * @param config 参数配置信息
* @return 结果 * @return 结果
*/ */
@ -216,7 +216,7 @@ public class SysConfigServiceImpl implements ISysConfigService
/** /**
* 设置cache key * 设置cache key
* *
* @param configKey 参数键 * @param configKey 参数键
* @return 缓存键key * @return 缓存键key
*/ */