- 3.1.0
- 2.5.4
+ 3.3.0
+ 2.5.6
UTF-8
UTF-8
1.8
3.2.0
- 1.2.6
+ 1.2.8
3.0.3
1.5.22
4.1.2
- 2.2.10
+ 2.2.11
1.7
0.9.1
- 3.4.3.3
+ 3.4.3.4
3.9.1
- 5.7.11
+ 5.7.15
29.0-jre
3.0.3
3.0.3
11.6
4.9.1
- 2.5.1
- 3.16.2
+ 2.5.2
+ 3.16.3
2.8.0
2.2.1
3.4.1
+ 1.3.3
+ 2.3.0
1.5.2.Final
+
+ 3.0.1
+
7.8.0
3.13.1
- 5.6.51
- 8.3.0
+ 5.6.58
+ 8.3.3
localhost
@@ -78,6 +83,18 @@
com.github.xiaoymin
knife4j-spring-boot-starter
${knife4j.version}
+
+
+ swagger-annotations
+ io.swagger
+
+
+
+
+
+ io.swagger
+ swagger-annotations
+ ${swagger-annotations.version}
@@ -101,7 +118,11 @@
org.apache.poi
- *
+ poi
+
+
+ org.apache.poi
+ poi-ooxml-schemas
@@ -120,6 +141,13 @@
${jwt.version}
+
+
+ com.sun.xml.bind
+ jaxb-impl
+ ${jaxb.version}
+
+
com.baomidou
@@ -162,12 +190,19 @@
${gateway.version}
+
org.springframework.cloud
spring-cloud-starter-openfeign
${feign.version}
+
+
+ feign-core
+ io.github.openfeign
+
+
-
+
io.github.openfeign
feign-okhttp
@@ -238,13 +273,61 @@
${wildfly-common.version}
-
+
+
+ com.xuxueli
+ xxl-job-core
+ ${xxl-job.version}
+
+
+
+ com.yomahub
+ tlog-spring-boot-configuration
+ ${tlog.version}
+
+
+
+ com.yomahub
+ tlog-webroot
+ ${tlog.version}
+
+
+ javassist
+ org.javassist
+
+
+ guava
+ com.google.guava
+
+
+
+
+
+ com.yomahub
+ tlog-feign
+ ${tlog.version}
+
+
+
+ com.yomahub
+ tlog-xxl-job
+ ${tlog.version}
+
+
+
com.ruoyi
ruoyi-quartz
${ruoyi-vue-plus.version}
+
+
+ com.ruoyi
+ ruoyi-job
+ ${ruoyi-vue-plus.version}
+
+
com.ruoyi
@@ -273,7 +356,7 @@
${ruoyi-vue-plus.version}
-
+
com.ruoyi
ruoyi-oss
@@ -312,6 +395,7 @@
ruoyi-framework
ruoyi-system
ruoyi-quartz
+ ruoyi-job
ruoyi-generator
ruoyi-common
ruoyi-demo
@@ -321,11 +405,6 @@
pom
-
-
-
-
-
@@ -402,48 +481,9 @@
prod
warn
- health,info
+ health, info, logfile
-
-
-
- jdk8
-
- true
- 1.8
-
-
- 1.8
-
-
-
- jdk11
-
- 11
-
-
- 11
- 3.0.1
-
-
-
-
-
- com.sun.xml.bind
- jaxb-impl
- ${jaxb.version}
-
-
-
-
-
-
- com.sun.xml.bind
- jaxb-impl
-
-
-
diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml
index b5fafb847..a768215aa 100644
--- a/ruoyi-admin/pom.xml
+++ b/ruoyi-admin/pom.xml
@@ -5,7 +5,7 @@
ruoyi-vue-plus
com.ruoyi
- 3.1.0
+ 3.3.0
4.0.0
jar
@@ -36,10 +36,20 @@
ruoyi-framework
-
com.ruoyi
- ruoyi-quartz
+ ruoyi-system
+
+
+
+
+
+
+
+
+
+ com.ruoyi
+ ruoyi-job
-
+
${console.log.pattern}
utf-8
@@ -22,7 +22,7 @@
1
-
+
${log.pattern}
utf-8
@@ -42,7 +42,7 @@
60
-
+
${log.pattern}
@@ -64,7 +64,7 @@
60
-
+
${log.pattern}
@@ -86,7 +86,7 @@
60
-
+
${log.pattern}
diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml
index 3b42ff854..ba6f235b6 100644
--- a/ruoyi-common/pom.xml
+++ b/ruoyi-common/pom.xml
@@ -5,7 +5,7 @@
ruoyi-vue-plus
com.ruoyi
- 3.1.0
+ 3.3.0
4.0.0
@@ -37,8 +37,8 @@
- javax.validation
- validation-api
+ org.springframework.boot
+ spring-boot-starter-validation
@@ -74,12 +74,18 @@
snakeyaml
-
+
io.jsonwebtoken
jjwt
+
+
+ com.sun.xml.bind
+ jaxb-impl
+
+
org.springframework.boot
@@ -115,11 +121,13 @@
lombok
+
org.springframework.cloud
spring-cloud-starter-openfeign
+
io.github.openfeign
feign-okhttp
@@ -135,6 +143,11 @@
knife4j-spring-boot-starter
+
+ io.swagger
+ swagger-annotations
+
+
org.springframework.boot
spring-boot-starter-actuator
@@ -151,22 +164,25 @@
redisson-spring-boot-starter
-
-
- com.baomidou
- dynamic-datasource-spring-boot-starter
-
-
-
- p6spy
- p6spy
-
-
com.baomidou
lock4j-redisson-spring-boot-starter
+
+ com.yomahub
+ tlog-spring-boot-configuration
+
+
+
+ com.yomahub
+ tlog-webroot
+
+
+
+ com.yomahub
+ tlog-feign
+
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataScope.java b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataScope.java
index 155f7c3a7..feaa3f42c 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataScope.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataScope.java
@@ -1,10 +1,6 @@
package com.ruoyi.common.annotation;
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
+import java.lang.annotation.*;
/**
* 数据权限过滤注解
@@ -14,20 +10,19 @@ import java.lang.annotation.Target;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
-public @interface DataScope
-{
+public @interface DataScope {
/**
* 部门表的别名
*/
- public String deptAlias() default "";
+ String deptAlias() default "";
/**
* 用户表的别名
*/
- public String userAlias() default "";
+ String userAlias() default "";
- /**
- * 是否过滤用户权限
- */
- public boolean isUser() default false;
+ /**
+ * 是否过滤用户权限
+ */
+ boolean isUser() default false;
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataSource.java b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataSource.java
index 79cd191f8..e7d2250a6 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataSource.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataSource.java
@@ -1,28 +1,23 @@
package com.ruoyi.common.annotation;
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
import com.ruoyi.common.enums.DataSourceType;
+import java.lang.annotation.*;
+
/**
* 自定义多数据源切换注解
- *
+ *
* 优先级:先方法,后类,如果方法覆盖了类上的数据源类型,以方法的为准,否则以类上的为准
*
* @author ruoyi
*/
-@Target({ ElementType.METHOD, ElementType.TYPE })
+@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
-public @interface DataSource
-{
+public @interface DataSource {
/**
* 切换数据源名称
*/
- public DataSourceType value() default DataSourceType.MASTER;
+ DataSourceType value() default DataSourceType.MASTER;
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/ExcelDictFormat.java b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/ExcelDictFormat.java
index a51116b5c..400080ea7 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/ExcelDictFormat.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/ExcelDictFormat.java
@@ -12,19 +12,19 @@ import java.lang.annotation.*;
@Inherited
public @interface ExcelDictFormat {
- /**
- * 如果是字典类型,请设置字典的type值 (如: sys_user_sex)
- */
- String dictType() default "";
+ /**
+ * 如果是字典类型,请设置字典的type值 (如: sys_user_sex)
+ */
+ String dictType() default "";
- /**
- * 读取内容转表达式 (如: 0=男,1=女,2=未知)
- */
- String readConverterExp() default "";
+ /**
+ * 读取内容转表达式 (如: 0=男,1=女,2=未知)
+ */
+ String readConverterExp() default "";
- /**
- * 分隔符,读取字符串组内容
- */
- String separator() default ",";
+ /**
+ * 分隔符,读取字符串组内容
+ */
+ String separator() default ",";
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/Log.java b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/Log.java
index eb05dc7ce..32c39a3b0 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/Log.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/Log.java
@@ -1,41 +1,41 @@
package com.ruoyi.common.annotation;
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.enums.OperatorType;
+import java.lang.annotation.*;
+
/**
* 自定义操作日志记录注解
- *
- * @author ruoyi
*
+ * @author ruoyi
*/
-@Target({ ElementType.PARAMETER, ElementType.METHOD })
+@Target({ElementType.PARAMETER, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
-public @interface Log
-{
+public @interface Log {
/**
- * 模块
+ * 模块
*/
- public String title() default "";
+ String title() default "";
/**
* 功能
*/
- public BusinessType businessType() default BusinessType.OTHER;
+ BusinessType businessType() default BusinessType.OTHER;
/**
* 操作人类别
*/
- public OperatorType operatorType() default OperatorType.MANAGE;
+ OperatorType operatorType() default OperatorType.MANAGE;
/**
* 是否保存请求的参数
*/
- public boolean isSaveRequestData() default true;
+ boolean isSaveRequestData() default true;
+
+ /**
+ * 是否保存响应的参数
+ */
+ boolean isSaveResponseData() default true;
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/RateLimiter.java b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/RateLimiter.java
index 564203861..90db9d776 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/RateLimiter.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/RateLimiter.java
@@ -1,40 +1,36 @@
package com.ruoyi.common.annotation;
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.enums.LimitType;
+import java.lang.annotation.*;
+
/**
* 限流注解
- *
- * @author ruoyi
+ *
+ * @author Lion Li
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
-public @interface RateLimiter
-{
+public @interface RateLimiter {
/**
* 限流key
*/
- public String key() default Constants.RATE_LIMIT_KEY;
+ String key() default Constants.RATE_LIMIT_KEY;
/**
* 限流时间,单位秒
*/
- public int time() default 60;
+ int time() default 60;
/**
* 限流次数
*/
- public int count() default 100;
+ int count() default 100;
/**
* 限流类型
*/
- public LimitType limitType() default LimitType.DEFAULT;
+ LimitType limitType() default LimitType.DEFAULT;
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/RepeatSubmit.java b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/RepeatSubmit.java
index c2bbee476..a87466768 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/RepeatSubmit.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/RepeatSubmit.java
@@ -1,11 +1,6 @@
package com.ruoyi.common.annotation;
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
+import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;
/**
@@ -19,11 +14,16 @@ import java.util.concurrent.TimeUnit;
@Documented
public @interface RepeatSubmit {
- /**
- * 默认使用全局配置
- */
- int intervalTime() default 0;
+ /**
+ * 间隔时间(ms),小于此时间视为重复提交
+ */
+ int interval() default 5000;
- TimeUnit timeUnit() default TimeUnit.MILLISECONDS;
+ TimeUnit timeUnit() default TimeUnit.MILLISECONDS;
+
+ /**
+ * 提示消息
+ */
+ String message() default "不允许重复提交,请稍候再试";
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/config/RuoYiConfig.java b/ruoyi-common/src/main/java/com/ruoyi/common/config/RuoYiConfig.java
index 408295a36..9343a4a08 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/config/RuoYiConfig.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/config/RuoYiConfig.java
@@ -2,7 +2,6 @@ package com.ruoyi.common.config;
import lombok.Data;
import lombok.Getter;
-import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@@ -10,34 +9,42 @@ import org.springframework.stereotype.Component;
/**
* 读取项目相关配置
*
- * @author ruoyi
+ * @author Lion Li
*/
@Data
-@NoArgsConstructor
@Accessors(chain = true)
@Component
@ConfigurationProperties(prefix = "ruoyi")
-public class RuoYiConfig
-{
- /** 项目名称 */
+public class RuoYiConfig {
+
+ /**
+ * 项目名称
+ */
private String name;
- /** 版本 */
+ /**
+ * 版本
+ */
private String version;
- /** 版权年份 */
+ /**
+ * 版权年份
+ */
private String copyrightYear;
- /** 实例演示开关 */
+ /**
+ * 实例演示开关
+ */
private boolean demoEnabled;
- /** 获取地址开关 */
+ /**
+ * 获取地址开关
+ */
@Getter
private static boolean addressEnabled;
- public void setAddressEnabled(boolean addressEnabled)
- {
+ public void setAddressEnabled(boolean addressEnabled) {
RuoYiConfig.addressEnabled = addressEnabled;
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java
index ad636ce04..4b1ae5101 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java
@@ -7,8 +7,7 @@ import io.jsonwebtoken.Claims;
*
* @author ruoyi
*/
-public class Constants
-{
+public class Constants {
/**
* UTF-8 字符集
*/
@@ -134,15 +133,15 @@ public class Constants
*/
public static final String SYS_DICT_KEY = "sys_dict:";
- /**
- * RMI 远程方法调用
- */
- public static final String LOOKUP_RMI = "rmi://";
+ /**
+ * RMI 远程方法调用
+ */
+ public static final String LOOKUP_RMI = "rmi://";
- /**
- * LDAP 远程方法调用
- */
- public static final String LOOKUP_LDAP = "ldap://";
+ /**
+ * LDAP 远程方法调用
+ */
+ public static final String LOOKUP_LDAP = "ldap://";
/** 待审核 */
public static final String AUDIT_WAIT = "0";
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/constant/GenConstants.java b/ruoyi-common/src/main/java/com/ruoyi/common/constant/GenConstants.java
index 1fa328e45..4d0a4e8a7 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/constant/GenConstants.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/constant/GenConstants.java
@@ -2,113 +2,187 @@ package com.ruoyi.common.constant;
/**
* 代码生成通用常量
- *
+ *
* @author ruoyi
*/
-public class GenConstants
-{
- /** 单表(增删改查) */
+public class GenConstants {
+ /**
+ * 单表(增删改查)
+ */
public static final String TPL_CRUD = "crud";
- /** 树表(增删改查) */
+ /**
+ * 树表(增删改查)
+ */
public static final String TPL_TREE = "tree";
- /** 主子表(增删改查) */
+ /**
+ * 主子表(增删改查)
+ */
public static final String TPL_SUB = "sub";
- /** 树编码字段 */
+ /**
+ * 树编码字段
+ */
public static final String TREE_CODE = "treeCode";
- /** 树父编码字段 */
+ /**
+ * 树父编码字段
+ */
public static final String TREE_PARENT_CODE = "treeParentCode";
- /** 树名称字段 */
+ /**
+ * 树名称字段
+ */
public static final String TREE_NAME = "treeName";
- /** 上级菜单ID字段 */
+ /**
+ * 上级菜单ID字段
+ */
public static final String PARENT_MENU_ID = "parentMenuId";
- /** 上级菜单名称字段 */
+ /**
+ * 上级菜单名称字段
+ */
public static final String PARENT_MENU_NAME = "parentMenuName";
- /** 数据库字符串类型 */
- public static final String[] COLUMNTYPE_STR = { "char", "varchar", "nvarchar", "varchar2" };
+ /**
+ * 数据库字符串类型
+ */
+ public static final String[] COLUMNTYPE_STR = {"char", "varchar", "nvarchar", "varchar2"};
- /** 数据库文本类型 */
- public static final String[] COLUMNTYPE_TEXT = { "tinytext", "text", "mediumtext", "longtext" };
+ /**
+ * 数据库文本类型
+ */
+ public static final String[] COLUMNTYPE_TEXT = {"tinytext", "text", "mediumtext", "longtext"};
- /** 数据库时间类型 */
- public static final String[] COLUMNTYPE_TIME = { "datetime", "time", "date", "timestamp" };
+ /**
+ * 数据库时间类型
+ */
+ public static final String[] COLUMNTYPE_TIME = {"datetime", "time", "date", "timestamp"};
- /** 数据库数字类型 */
- public static final String[] COLUMNTYPE_NUMBER = { "tinyint", "smallint", "mediumint", "int", "number", "integer",
- "bit", "bigint", "float", "double", "decimal" };
+ /**
+ * 数据库数字类型
+ */
+ public static final String[] COLUMNTYPE_NUMBER = {"tinyint", "smallint", "mediumint", "int", "number", "integer",
+ "bit", "bigint", "float", "double", "decimal"};
- /** 页面不需要编辑字段 */
- public static final String[] COLUMNNAME_NOT_EDIT = { "id", "create_by", "create_time", "del_flag" };
+ /**
+ * BO对象 不需要添加字段
+ */
+ public static final String[] COLUMNNAME_NOT_ADD = {"create_by", "create_time", "del_flag", "update_by",
+ "update_time", "version"};
- /** 页面不需要显示的列表字段 */
- public static final String[] COLUMNNAME_NOT_LIST = { "id", "create_by", "create_time", "del_flag", "update_by",
- "update_time" };
+ /**
+ * BO对象 不需要编辑字段
+ */
+ public static final String[] COLUMNNAME_NOT_EDIT = {"create_by", "create_time", "del_flag", "update_by",
+ "update_time", "version"};
- /** 页面不需要查询字段 */
- public static final String[] COLUMNNAME_NOT_QUERY = { "id", "create_by", "create_time", "del_flag", "update_by",
- "update_time", "remark" };
+ /**
+ * VO对象 不需要返回字段
+ */
+ public static final String[] COLUMNNAME_NOT_LIST = {"create_by", "create_time", "del_flag", "update_by",
+ "update_time", "version"};
- /** Entity基类字段 */
- public static final String[] BASE_ENTITY = { "createBy", "createTime", "updateBy", "updateTime", "remark" };
+ /**
+ * BO对象 不需要查询字段
+ */
+ public static final String[] COLUMNNAME_NOT_QUERY = {"id", "create_by", "create_time", "del_flag", "update_by",
+ "update_time", "remark", "version"};
- /** Tree基类字段 */
- public static final String[] TREE_ENTITY = { "parentName", "parentId", "orderNum", "ancestors", "children" };
+ /**
+ * Entity基类字段
+ */
+ public static final String[] BASE_ENTITY = {"createBy", "createTime", "updateBy", "updateTime"};
- /** 文本框 */
+ /**
+ * Tree基类字段
+ */
+ public static final String[] TREE_ENTITY = {"parentName", "parentId", "children"};
+
+ /**
+ * 文本框
+ */
public static final String HTML_INPUT = "input";
- /** 文本域 */
+ /**
+ * 文本域
+ */
public static final String HTML_TEXTAREA = "textarea";
- /** 下拉框 */
+ /**
+ * 下拉框
+ */
public static final String HTML_SELECT = "select";
- /** 单选框 */
+ /**
+ * 单选框
+ */
public static final String HTML_RADIO = "radio";
- /** 复选框 */
+ /**
+ * 复选框
+ */
public static final String HTML_CHECKBOX = "checkbox";
- /** 日期控件 */
+ /**
+ * 日期控件
+ */
public static final String HTML_DATETIME = "datetime";
- /** 图片上传控件 */
+ /**
+ * 图片上传控件
+ */
public static final String HTML_IMAGE_UPLOAD = "imageUpload";
- /** 文件上传控件 */
+ /**
+ * 文件上传控件
+ */
public static final String HTML_FILE_UPLOAD = "fileUpload";
- /** 富文本控件 */
+ /**
+ * 富文本控件
+ */
public static final String HTML_EDITOR = "editor";
- /** 字符串类型 */
+ /**
+ * 字符串类型
+ */
public static final String TYPE_STRING = "String";
- /** 整型 */
+ /**
+ * 整型
+ */
public static final String TYPE_INTEGER = "Integer";
- /** 长整型 */
+ /**
+ * 长整型
+ */
public static final String TYPE_LONG = "Long";
- /** 浮点型 */
+ /**
+ * 浮点型
+ */
public static final String TYPE_DOUBLE = "Double";
- /** 高精度计算类型 */
+ /**
+ * 高精度计算类型
+ */
public static final String TYPE_BIGDECIMAL = "BigDecimal";
- /** 时间类型 */
+ /**
+ * 时间类型
+ */
public static final String TYPE_DATE = "Date";
- /** 模糊查询 */
+ /**
+ * 模糊查询
+ */
public static final String QUERY_LIKE = "LIKE";
- /** 需要 */
+ /**
+ * 需要
+ */
public static final String REQUIRE = "1";
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/constant/ScheduleConstants.java b/ruoyi-common/src/main/java/com/ruoyi/common/constant/ScheduleConstants.java
index 8318b8f5f..ec430c26a 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/constant/ScheduleConstants.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/constant/ScheduleConstants.java
@@ -2,7 +2,8 @@ package com.ruoyi.common.constant;
/**
* 任务调度通用常量
- *
+ *
+ * @deprecated 3.4.0删除 迁移至xxl-job
* @author ruoyi
*/
public class ScheduleConstants
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/constant/UserConstants.java b/ruoyi-common/src/main/java/com/ruoyi/common/constant/UserConstants.java
index a936cd838..fa88e7c17 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/constant/UserConstants.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/constant/UserConstants.java
@@ -5,62 +5,96 @@ package com.ruoyi.common.constant;
*
* @author ruoyi
*/
-public class UserConstants
-{
+public class UserConstants {
+
/**
* 平台内系统用户的唯一标志
*/
public static final String SYS_USER = "SYS_USER";
- /** 正常状态 */
+ /**
+ * 正常状态
+ */
public static final String NORMAL = "0";
- /** 异常状态 */
+ /**
+ * 异常状态
+ */
public static final String EXCEPTION = "1";
- /** 用户封禁状态 */
+ /**
+ * 用户封禁状态
+ */
public static final String USER_DISABLE = "1";
- /** 角色封禁状态 */
+ /**
+ * 角色封禁状态
+ */
public static final String ROLE_DISABLE = "1";
- /** 部门正常状态 */
+ /**
+ * 部门正常状态
+ */
public static final String DEPT_NORMAL = "0";
- /** 部门停用状态 */
+ /**
+ * 部门停用状态
+ */
public static final String DEPT_DISABLE = "1";
- /** 字典正常状态 */
+ /**
+ * 字典正常状态
+ */
public static final String DICT_NORMAL = "0";
- /** 是否为系统默认(是) */
+ /**
+ * 是否为系统默认(是)
+ */
public static final String YES = "Y";
- /** 是否菜单外链(是) */
+ /**
+ * 是否菜单外链(是)
+ */
public static final String YES_FRAME = "0";
- /** 是否菜单外链(否) */
+ /**
+ * 是否菜单外链(否)
+ */
public static final String NO_FRAME = "1";
- /** 菜单类型(目录) */
+ /**
+ * 菜单类型(目录)
+ */
public static final String TYPE_DIR = "M";
- /** 菜单类型(菜单) */
+ /**
+ * 菜单类型(菜单)
+ */
public static final String TYPE_MENU = "C";
- /** 菜单类型(按钮) */
+ /**
+ * 菜单类型(按钮)
+ */
public static final String TYPE_BUTTON = "F";
- /** Layout组件标识 */
+ /**
+ * Layout组件标识
+ */
public final static String LAYOUT = "Layout";
- /** ParentView组件标识 */
+ /**
+ * ParentView组件标识
+ */
public final static String PARENT_VIEW = "ParentView";
- /** InnerLink组件标识 */
+ /**
+ * InnerLink组件标识
+ */
public final static String INNER_LINK = "InnerLink";
- /** 校验返回结果码 */
+ /**
+ * 校验返回结果码
+ */
public final static String UNIQUE = "0";
public final static String NOT_UNIQUE = "1";
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java
index 04a21a7b4..bad8f77a5 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java
@@ -4,58 +4,49 @@ import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* web层通用数据处理
*
* @author ruoyi
*/
-public class BaseController
-{
- protected final Logger logger = LoggerFactory.getLogger(this.getClass());
+public class BaseController {
/**
* 返回成功
*/
- public AjaxResult success()
- {
+ public AjaxResult success() {
return AjaxResult.success();
}
/**
* 返回失败消息
*/
- public AjaxResult error()
- {
+ public AjaxResult error() {
return AjaxResult.error();
}
/**
* 返回成功消息
*/
- public AjaxResult success(String message)
- {
+ public AjaxResult success(String message) {
return AjaxResult.success(message);
}
/**
* 返回失败消息
*/
- public AjaxResult error(String message)
- {
+ public AjaxResult error(String message) {
return AjaxResult.error(message);
}
/**
* 响应返回结果
- *
+ *
* @param rows 影响行数
* @return 操作结果
*/
- protected AjaxResult toAjax(int rows)
- {
+ protected AjaxResult toAjax(int rows) {
return rows > 0 ? AjaxResult.success() : AjaxResult.error();
}
@@ -65,48 +56,42 @@ public class BaseController
* @param result 结果
* @return 操作结果
*/
- protected AjaxResult toAjax(boolean result)
- {
+ protected AjaxResult toAjax(boolean result) {
return result ? success() : error();
}
/**
* 页面跳转
*/
- public String redirect(String url)
- {
+ public String redirect(String url) {
return StringUtils.format("redirect:{}", url);
}
/**
* 获取用户缓存信息
*/
- public LoginUser getLoginUser()
- {
+ public LoginUser getLoginUser() {
return SecurityUtils.getLoginUser();
}
/**
* 获取登录用户id
*/
- public Long getUserId()
- {
+ public Long getUserId() {
return getLoginUser().getUserId();
}
/**
* 获取登录部门id
*/
- public Long getDeptId()
- {
+ public Long getDeptId() {
return getLoginUser().getDeptId();
}
/**
* 获取登录用户名
*/
- public String getUsername()
- {
+ public String getUsername() {
return getLoginUser().getUsername();
}
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseEntity.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseEntity.java
index 72d624a9c..18a8d66e9 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseEntity.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseEntity.java
@@ -1,8 +1,10 @@
package com.ruoyi.common.core.domain;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
-import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
@@ -13,11 +15,10 @@ import java.util.Map;
/**
* Entity基类
*
- * @author ruoyi
+ * @author Lion Li
*/
@Data
-@NoArgsConstructor
@Accessors(chain = true)
public class BaseEntity implements Serializable {
@@ -27,42 +28,43 @@ public class BaseEntity implements Serializable {
* 搜索值
*/
@ApiModelProperty(value = "搜索值")
+ @TableField(exist = false)
private String searchValue;
/**
* 创建者
*/
@ApiModelProperty(value = "创建者")
+ @TableField(fill = FieldFill.INSERT)
private String createBy;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
+ @TableField(fill = FieldFill.INSERT)
private Date createTime;
/**
* 更新者
*/
@ApiModelProperty(value = "更新者")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
private String updateBy;
/**
* 更新时间
*/
@ApiModelProperty(value = "更新时间")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
- /**
- * 备注
- */
- @ApiModelProperty(value = "备注")
- private String remark;
-
/**
* 请求参数
*/
+ @JsonIgnore
@ApiModelProperty(value = "请求参数")
+ @TableField(exist = false)
private Map params = new HashMap<>();
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/TreeEntity.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/TreeEntity.java
index 8db10aa2b..c0e62c710 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/TreeEntity.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/TreeEntity.java
@@ -1,9 +1,9 @@
package com.ruoyi.common.core.domain;
+import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
-import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.util.ArrayList;
@@ -12,12 +12,11 @@ import java.util.List;
/**
* Tree基类
*
- * @author ruoyi
+ * @author Lion Li
*/
-@EqualsAndHashCode(callSuper = true)
@Data
-@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
public class TreeEntity extends BaseEntity {
@@ -26,6 +25,7 @@ public class TreeEntity extends BaseEntity {
/**
* 父菜单名称
*/
+ @TableField(exist = false)
@ApiModelProperty(value = "父菜单名称")
private String parentName;
@@ -35,21 +35,10 @@ public class TreeEntity extends BaseEntity {
@ApiModelProperty(value = "父菜单ID")
private Long parentId;
- /**
- * 显示顺序
- */
- @ApiModelProperty(value = "显示顺序")
- private Integer orderNum;
-
- /**
- * 祖级列表
- */
- @ApiModelProperty(value = "祖级列表")
- private String ancestors;
-
/**
* 子部门
*/
+ @TableField(exist = false)
@ApiModelProperty(value = "子部门")
private List> children = new ArrayList<>();
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/TreeSelect.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/TreeSelect.java
new file mode 100644
index 000000000..e69de29bb
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/dto/OperLogDTO.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/dto/OperLogDTO.java
new file mode 100644
index 000000000..773858f64
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/dto/OperLogDTO.java
@@ -0,0 +1,108 @@
+package com.ruoyi.common.core.domain.dto;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 通用操作日志实体
+ *
+ * @author Lion Li
+ */
+
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+public class OperLogDTO implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 日志主键
+ */
+ private Long operId;
+
+ /**
+ * 操作模块
+ */
+ private String title;
+
+ /**
+ * 业务类型(0其它 1新增 2修改 3删除)
+ */
+ private Integer businessType;
+
+ /**
+ * 业务类型数组
+ */
+ private Integer[] businessTypes;
+
+ /**
+ * 请求方法
+ */
+ private String method;
+
+ /**
+ * 请求方式
+ */
+ private String requestMethod;
+
+ /**
+ * 操作类别(0其它 1后台用户 2手机端用户)
+ */
+ private Integer operatorType;
+
+ /**
+ * 操作人员
+ */
+ private String operName;
+
+ /**
+ * 部门名称
+ */
+ private String deptName;
+
+ /**
+ * 请求url
+ */
+ private String operUrl;
+
+ /**
+ * 操作地址
+ */
+ private String operIp;
+
+ /**
+ * 操作地点
+ */
+ private String operLocation;
+
+ /**
+ * 请求参数
+ */
+ private String operParam;
+
+ /**
+ * 返回参数
+ */
+ private String jsonResult;
+
+ /**
+ * 操作状态(0正常 1异常)
+ */
+ private Integer status;
+
+ /**
+ * 错误消息
+ */
+ private String errorMsg;
+
+ /**
+ * 操作时间
+ */
+ private Date operTime;
+
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java
index 62056e027..17ff6606e 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java
@@ -1,48 +1,44 @@
package com.ruoyi.common.core.domain.entity;
-import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.TreeEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
-import lombok.NoArgsConstructor;
+import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
-import java.io.Serializable;
-import java.util.*;
/**
* 部门表 sys_dept
*
- * @author ruoyi
+ * @author Lion Li
*/
@Data
-@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("sys_dept")
-public class SysDept implements Serializable {
+@ApiModel("部门业务对象")
+public class SysDept extends TreeEntity {
private static final long serialVersionUID = 1L;
/**
* 部门ID
*/
- @TableId(value = "dept_id", type = IdType.AUTO)
+ @ApiModelProperty(value = "部门id")
+ @TableId(value = "dept_id")
private Long deptId;
- /**
- * 父部门ID
- */
- private Long parentId;
-
- /**
- * 祖级列表
- */
- private String ancestors;
-
/**
* 部门名称
*/
+ @ApiModelProperty(value = "部门名称")
@NotBlank(message = "部门名称不能为空")
@Size(min = 0, max = 30, message = "部门名称长度不能超过30个字符")
private String deptName;
@@ -50,23 +46,27 @@ public class SysDept implements Serializable {
/**
* 显示顺序
*/
+ @ApiModelProperty(value = "显示顺序")
@NotBlank(message = "显示顺序不能为空")
private String orderNum;
/**
* 负责人
*/
+ @ApiModelProperty(value = "负责人")
private String leader;
/**
* 联系电话
*/
+ @ApiModelProperty(value = "联系电话")
@Size(min = 0, max = 11, message = "联系电话长度不能超过11个字符")
private String phone;
/**
* 邮箱
*/
+ @ApiModelProperty(value = "邮箱")
@Email(message = "邮箱格式不正确")
@Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符")
private String email;
@@ -74,54 +74,20 @@ public class SysDept implements Serializable {
/**
* 部门状态:0正常,1停用
*/
+ @ApiModelProperty(value = "部门状态:0正常,1停用")
private String status;
/**
* 删除标志(0代表存在 2代表删除)
*/
+ @ApiModelProperty(value = "删除标志(0代表存在 2代表删除)")
@TableLogic
private String delFlag;
/**
- * 父部门名称
+ * 祖级列表
*/
- @TableField(exist = false)
- private String parentName;
-
- /**
- * 创建者
- */
- @TableField(fill = FieldFill.INSERT)
- private String createBy;
-
- /**
- * 创建时间
- */
- @TableField(fill = FieldFill.INSERT)
- private Date createTime;
-
- /**
- * 更新者
- */
- @TableField(fill = FieldFill.INSERT_UPDATE)
- private String updateBy;
-
- /**
- * 更新时间
- */
- @TableField(fill = FieldFill.INSERT_UPDATE)
- private Date updateTime;
-
- /**
- * 子部门
- */
- @TableField(exist = false)
- private List children = new ArrayList();
-
- /**
- * 请求参数
- */
- @TableField(exist = false)
- private Map params = new HashMap<>();
+ @ApiModelProperty(value = "祖级列表")
+ private String ancestors;
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictData.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictData.java
index e8bc0f156..3c572bd27 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictData.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictData.java
@@ -2,51 +2,54 @@ package com.ruoyi.common.core.domain.entity;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
-import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.annotation.ExcelDictFormat;
import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.convert.ExcelDictConvert;
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
-import lombok.NoArgsConstructor;
+import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
-import java.io.Serializable;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
/**
* 字典数据表 sys_dict_data
*
- * @author ruoyi
+ * @author Lion Li
*/
@Data
-@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("sys_dict_data")
@ExcelIgnoreUnannotated
-public class SysDictData implements Serializable {
- private static final long serialVersionUID = 1L;
+@ApiModel("字典数据业务对象")
+public class SysDictData extends BaseEntity {
/**
* 字典编码
*/
+ @ApiModelProperty(value = "字典编码")
@ExcelProperty(value = "字典编码")
- @TableId(value = "dict_code", type = IdType.AUTO)
+ @TableId(value = "dict_code")
private Long dictCode;
/**
* 字典排序
*/
+ @ApiModelProperty(value = "字典排序")
@ExcelProperty(value = "字典排序")
private Long dictSort;
/**
* 字典标签
*/
+ @ApiModelProperty(value = "字典标签")
@ExcelProperty(value = "字典标签")
@NotBlank(message = "字典标签不能为空")
@Size(min = 0, max = 100, message = "字典标签长度不能超过100个字符")
@@ -55,6 +58,7 @@ public class SysDictData implements Serializable {
/**
* 字典键值
*/
+ @ApiModelProperty(value = "字典键值")
@ExcelProperty(value = "字典键值")
@NotBlank(message = "字典键值不能为空")
@Size(min = 0, max = 100, message = "字典键值长度不能超过100个字符")
@@ -63,6 +67,7 @@ public class SysDictData implements Serializable {
/**
* 字典类型
*/
+ @ApiModelProperty(value = "字典类型")
@ExcelProperty(value = "字典类型")
@NotBlank(message = "字典类型不能为空")
@Size(min = 0, max = 100, message = "字典类型长度不能超过100个字符")
@@ -71,17 +76,20 @@ public class SysDictData implements Serializable {
/**
* 样式属性(其他样式扩展)
*/
+ @ApiModelProperty(value = "样式属性(其他样式扩展)")
@Size(min = 0, max = 100, message = "样式属性长度不能超过100个字符")
private String cssClass;
/**
* 表格字典样式
*/
+ @ApiModelProperty(value = "表格字典样式")
private String listClass;
/**
* 是否默认(Y是 N否)
*/
+ @ApiModelProperty(value = "是否默认(Y是 N否)")
@ExcelProperty(value = "是否默认", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "sys_yes_no")
private String isDefault;
@@ -89,47 +97,19 @@ public class SysDictData implements Serializable {
/**
* 状态(0正常 1停用)
*/
+ @ApiModelProperty(value = "状态(0正常 1停用)")
@ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
- @ExcelDictFormat(dictType = "sys_common_status")
+ @ExcelDictFormat(dictType = "sys_normal_disable")
private String status;
- /**
- * 创建者
- */
- @TableField(fill = FieldFill.INSERT)
- private String createBy;
-
- /**
- * 创建时间
- */
- @TableField(fill = FieldFill.INSERT)
- private Date createTime;
-
- /**
- * 更新者
- */
- @TableField(fill = FieldFill.INSERT_UPDATE)
- private String updateBy;
-
- /**
- * 更新时间
- */
- @TableField(fill = FieldFill.INSERT_UPDATE)
- private Date updateTime;
-
/**
* 备注
*/
+ @ApiModelProperty(value = "备注")
private String remark;
- /**
- * 请求参数
- */
- @TableField(exist = false)
- private Map params = new HashMap<>();
-
public boolean getDefault() {
- return UserConstants.YES.equals(this.isDefault) ? true : false;
+ return UserConstants.YES.equals(this.isDefault);
}
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictType.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictType.java
index 1108671d8..c6c9b1a29 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictType.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictType.java
@@ -2,44 +2,46 @@ package com.ruoyi.common.core.domain.entity;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
-import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.annotation.ExcelDictFormat;
import com.ruoyi.common.convert.ExcelDictConvert;
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
-import lombok.NoArgsConstructor;
+import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
-import java.io.Serializable;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
/**
* 字典类型表 sys_dict_type
*
- * @author ruoyi
+ * @author Lion Li
*/
@Data
-@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("sys_dict_type")
@ExcelIgnoreUnannotated
-public class SysDictType implements Serializable {
- private static final long serialVersionUID = 1L;
+@ApiModel("字典类型业务对象")
+public class SysDictType extends BaseEntity {
/**
* 字典主键
*/
+ @ApiModelProperty(value = "字典主键")
@ExcelProperty(value = "字典主键")
- @TableId(value = "dict_id", type = IdType.AUTO)
+ @TableId(value = "dict_id")
private Long dictId;
/**
* 字典名称
*/
+ @ApiModelProperty(value = "字典名称")
@ExcelProperty(value = "字典名称")
@NotBlank(message = "字典名称不能为空")
@Size(min = 0, max = 100, message = "字典类型名称长度不能超过100个字符")
@@ -48,6 +50,7 @@ public class SysDictType implements Serializable {
/**
* 字典类型
*/
+ @ApiModelProperty(value = "字典类型")
@ExcelProperty(value = "字典类型")
@NotBlank(message = "字典类型不能为空")
@Size(min = 0, max = 100, message = "字典类型类型长度不能超过100个字符")
@@ -56,43 +59,15 @@ public class SysDictType implements Serializable {
/**
* 状态(0正常 1停用)
*/
+ @ApiModelProperty(value = "状态(0正常 1停用)")
@ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
- @ExcelDictFormat(dictType = "sys_common_status")
+ @ExcelDictFormat(dictType = "sys_normal_disable")
private String status;
- /**
- * 创建者
- */
- @TableField(fill = FieldFill.INSERT)
- private String createBy;
-
- /**
- * 创建时间
- */
- @TableField(fill = FieldFill.INSERT)
- private Date createTime;
-
- /**
- * 更新者
- */
- @TableField(fill = FieldFill.INSERT_UPDATE)
- private String updateBy;
-
- /**
- * 更新时间
- */
- @TableField(fill = FieldFill.INSERT_UPDATE)
- private Date updateTime;
-
/**
* 备注
*/
+ @ApiModelProperty(value = "备注")
private String remark;
- /**
- * 请求参数
- */
- @TableField(exist = false)
- private Map params = new HashMap<>();
-
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java
index 6fc86418e..30d074b75 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java
@@ -1,149 +1,120 @@
package com.ruoyi.common.core.domain.entity;
-import com.baomidou.mybatisplus.annotation.*;
-import com.fasterxml.jackson.annotation.JsonFormat;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.TreeEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
-import lombok.NoArgsConstructor;
+import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
-import java.io.Serializable;
-import java.util.*;
/**
* 菜单权限表 sys_menu
*
- * @author ruoyi
+ * @author Lion Li
*/
@Data
-@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("sys_menu")
-public class SysMenu implements Serializable {
- private static final long serialVersionUID = 1L;
+@ApiModel("菜单权限业务对象")
+public class SysMenu extends TreeEntity {
/**
* 菜单ID
*/
- @TableId(value = "menu_id", type = IdType.AUTO)
+ @ApiModelProperty(value = "菜单ID")
+ @TableId(value = "menu_id")
private Long menuId;
/**
* 菜单名称
*/
+ @ApiModelProperty(value = "菜单名称")
@NotBlank(message = "菜单名称不能为空")
@Size(min = 0, max = 50, message = "菜单名称长度不能超过50个字符")
private String menuName;
- /**
- * 父菜单名称
- */
- @TableField(exist = false)
- private String parentName;
-
- /**
- * 父菜单ID
- */
- private Long parentId;
-
/**
* 显示顺序
*/
+ @ApiModelProperty(value = "显示顺序")
@NotBlank(message = "显示顺序不能为空")
private String orderNum;
/**
* 路由地址
*/
+ @ApiModelProperty(value = "路由地址")
@Size(min = 0, max = 200, message = "路由地址不能超过200个字符")
private String path;
/**
* 组件路径
*/
+ @ApiModelProperty(value = "组件路径")
@Size(min = 0, max = 200, message = "组件路径不能超过255个字符")
private String component;
+ /**
+ * 路由参数
+ */
+ @ApiModelProperty(value = "路由参数")
+ private String query;
+
/**
* 是否为外链(0是 1否)
*/
+ @ApiModelProperty(value = "是否为外链(0是 1否)")
private String isFrame;
/**
* 是否缓存(0缓存 1不缓存)
*/
+ @ApiModelProperty(value = "是否缓存(0缓存 1不缓存)")
private String isCache;
/**
* 类型(M目录 C菜单 F按钮)
*/
+ @ApiModelProperty(value = "类型(M目录 C菜单 F按钮)")
@NotBlank(message = "菜单类型不能为空")
private String menuType;
/**
* 显示状态(0显示 1隐藏)
*/
+ @ApiModelProperty(value = "显示状态(0显示 1隐藏)")
private String visible;
/**
* 菜单状态(0显示 1隐藏)
*/
+ @ApiModelProperty(value = "菜单状态(0显示 1隐藏)")
private String status;
/**
* 权限字符串
*/
+ @ApiModelProperty(value = "权限字符串")
@Size(min = 0, max = 100, message = "权限标识长度不能超过100个字符")
private String perms;
/**
* 菜单图标
*/
+ @ApiModelProperty(value = "菜单图标")
private String icon;
- /**
- * 创建者
- */
- @TableField(fill = FieldFill.INSERT)
- private String createBy;
-
- /**
- * 创建时间
- */
- @TableField(fill = FieldFill.INSERT)
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- private Date createTime;
-
- /**
- * 更新者
- */
- @TableField(fill = FieldFill.INSERT_UPDATE)
- private String updateBy;
-
- /**
- * 更新时间
- */
- @TableField(fill = FieldFill.INSERT_UPDATE)
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- private Date updateTime;
-
/**
* 备注
*/
+ @ApiModelProperty(value = "备注")
private String remark;
- /**
- * 请求参数
- */
- @TableField(exist = false)
- private Map params = new HashMap<>();
-
- /**
- * 子菜单
- */
- @TableField(exist = false)
- private List children = new ArrayList();
-
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysRole.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysRole.java
index 516352458..1d186db52 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysRole.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysRole.java
@@ -2,44 +2,48 @@ package com.ruoyi.common.core.domain.entity;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
-import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.annotation.ExcelDictFormat;
import com.ruoyi.common.convert.ExcelDictConvert;
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
-import java.io.Serializable;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
/**
* 角色表 sys_role
*
- * @author ruoyi
+ * @author Lion Li
*/
@Data
@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("sys_role")
@ExcelIgnoreUnannotated
-public class SysRole implements Serializable {
- private static final long serialVersionUID = 1L;
+public class SysRole extends BaseEntity {
/**
* 角色ID
*/
+ @ApiModelProperty(value = "角色ID")
@ExcelProperty(value = "角色序号")
- @TableId(value = "role_id", type = IdType.AUTO)
+ @TableId(value = "role_id")
private Long roleId;
/**
* 角色名称
*/
+ @ApiModelProperty(value = "角色名称")
@ExcelProperty(value = "角色名称")
@NotBlank(message = "角色名称不能为空")
@Size(min = 0, max = 30, message = "角色名称长度不能超过30个字符")
@@ -48,6 +52,7 @@ public class SysRole implements Serializable {
/**
* 角色权限
*/
+ @ApiModelProperty(value = "角色权限")
@ExcelProperty(value = "角色权限")
@NotBlank(message = "权限字符不能为空")
@Size(min = 0, max = 100, message = "权限字符长度不能超过100个字符")
@@ -56,6 +61,7 @@ public class SysRole implements Serializable {
/**
* 角色排序
*/
+ @ApiModelProperty(value = "角色排序")
@ExcelProperty(value = "角色排序")
@NotBlank(message = "显示顺序不能为空")
private String roleSort;
@@ -63,6 +69,7 @@ public class SysRole implements Serializable {
/**
* 数据范围(1:所有数据权限;2:自定义数据权限;3:本部门数据权限;4:本部门及以下数据权限;5:仅本人数据权限)
*/
+ @ApiModelProperty(value = "数据范围(1:所有数据权限;2:自定义数据权限;3:本部门数据权限;4:本部门及以下数据权限;5:仅本人数据权限)")
@ExcelProperty(value = "数据范围", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "1=所有数据权限,2=自定义数据权限,3=本部门数据权限,4=本部门及以下数据权限,5=仅本人数据权限")
private String dataScope;
@@ -70,16 +77,19 @@ public class SysRole implements Serializable {
/**
* 菜单树选择项是否关联显示( 0:父子不互相关联显示 1:父子互相关联显示)
*/
+ @ApiModelProperty(value = "菜单树选择项是否关联显示( 0:父子不互相关联显示 1:父子互相关联显示)")
private boolean menuCheckStrictly;
/**
* 部门树选择项是否关联显示(0:父子不互相关联显示 1:父子互相关联显示 )
*/
+ @ApiModelProperty(value = "部门树选择项是否关联显示(0:父子不互相关联显示 1:父子互相关联显示 )")
private boolean deptCheckStrictly;
/**
* 角色状态(0正常 1停用)
*/
+ @ApiModelProperty(value = "角色状态(0正常 1停用)")
@ExcelProperty(value = "角色状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "sys_common_status")
private String status;
@@ -87,59 +97,34 @@ public class SysRole implements Serializable {
/**
* 删除标志(0代表存在 2代表删除)
*/
+ @ApiModelProperty(value = "删除标志(0代表存在 2代表删除)")
@TableLogic
private String delFlag;
- /**
- * 创建者
- */
- @TableField(fill = FieldFill.INSERT)
- private String createBy;
-
- /**
- * 创建时间
- */
- @TableField(fill = FieldFill.INSERT)
- private Date createTime;
-
- /**
- * 更新者
- */
- @TableField(fill = FieldFill.INSERT_UPDATE)
- private String updateBy;
-
- /**
- * 更新时间
- */
- @TableField(fill = FieldFill.INSERT_UPDATE)
- private Date updateTime;
-
/**
* 备注
*/
+ @ApiModelProperty(value = "备注")
private String remark;
- /**
- * 请求参数
- */
- @TableField(exist = false)
- private Map params = new HashMap<>();
-
/**
* 用户是否存在此角色标识 默认不存在
*/
+ @ApiModelProperty(value = "用户是否存在此角色标识 默认不存在")
@TableField(exist = false)
private boolean flag = false;
/**
* 菜单组
*/
+ @ApiModelProperty(value = "菜单组")
@TableField(exist = false)
private Long[] menuIds;
/**
* 部门组(数据权限)
*/
+ @ApiModelProperty(value = "部门组(数据权限)")
@TableField(exist = false)
private Long[] deptIds;
@@ -147,6 +132,7 @@ public class SysRole implements Serializable {
this.roleId = roleId;
}
+ @ApiModelProperty(value = "是否管理员")
public boolean isAdmin() {
return isAdmin(this.roleId);
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
index 6e44a3b95..2fa57f5ca 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
@@ -3,46 +3,51 @@ package com.ruoyi.common.core.domain.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
-import java.io.Serializable;
import java.util.Date;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
/**
* 用户对象 sys_user
*
- * @author ruoyi
+ * @author Lion Li
*/
@Data
@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("sys_user")
-public class SysUser implements Serializable {
- private static final long serialVersionUID = 1L;
+@ApiModel("用户信息业务对象")
+public class SysUser extends BaseEntity {
/**
* 用户ID
*/
- @TableId(value = "user_id", type = IdType.AUTO)
+ @ApiModelProperty(value = "用户ID")
+ @TableId(value = "user_id")
private Long userId;
/**
* 部门ID
*/
+ @ApiModelProperty(value = "部门ID")
private Long deptId;
/**
* 用户账号
*/
+ @ApiModelProperty(value = "用户账号")
@NotBlank(message = "用户账号不能为空")
@Size(min = 0, max = 30, message = "用户账号长度不能超过30个字符")
private String userName;
@@ -50,12 +55,14 @@ public class SysUser implements Serializable {
/**
* 用户昵称
*/
+ @ApiModelProperty(value = "用户昵称")
@Size(min = 0, max = 30, message = "用户昵称长度不能超过30个字符")
private String nickName;
/**
* 用户邮箱
*/
+ @ApiModelProperty(value = "用户邮箱")
@Email(message = "邮箱格式不正确")
@Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符")
private String email;
@@ -63,21 +70,25 @@ public class SysUser implements Serializable {
/**
* 手机号码
*/
+ @ApiModelProperty(value = "手机号码")
private String phonenumber;
/**
* 用户性别
*/
+ @ApiModelProperty(value = "用户性别")
private String sex;
/**
* 用户头像
*/
+ @ApiModelProperty(value = "用户头像")
private String avatar;
/**
* 密码
*/
+ @ApiModelProperty(value = "密码")
@TableField(
insertStrategy = FieldStrategy.NOT_EMPTY,
updateStrategy = FieldStrategy.NOT_EMPTY,
@@ -91,94 +102,69 @@ public class SysUser implements Serializable {
return password;
}
- /**
- * 盐加密
- */
- private String salt;
-
/**
* 帐号状态(0正常 1停用)
*/
+ @ApiModelProperty(value = "帐号状态(0正常 1停用)")
private String status;
/**
* 删除标志(0代表存在 2代表删除)
*/
+ @ApiModelProperty(value = "删除标志(0代表存在 2代表删除)")
@TableLogic
private String delFlag;
/**
* 最后登录IP
*/
+ @ApiModelProperty(value = "最后登录IP")
private String loginIp;
/**
* 最后登录时间
*/
+ @ApiModelProperty(value = "最后登录时间")
private Date loginDate;
- /**
- * 创建者
- */
- @TableField(fill = FieldFill.INSERT)
- private String createBy;
-
- /**
- * 创建时间
- */
- @TableField(fill = FieldFill.INSERT)
- private Date createTime;
-
- /**
- * 更新者
- */
- @TableField(fill = FieldFill.INSERT_UPDATE)
- private String updateBy;
-
- /**
- * 更新时间
- */
- @TableField(fill = FieldFill.INSERT_UPDATE)
- private Date updateTime;
-
/**
* 备注
*/
+ @ApiModelProperty(value = "备注")
private String remark;
- /**
- * 请求参数
- */
- @TableField(exist = false)
- private Map params = new HashMap<>();
-
/**
* 部门对象
*/
+ @ApiModelProperty(value = "部门对象")
@TableField(exist = false)
private SysDept dept;
/**
* 角色对象
*/
+ @ApiModelProperty(value = "角色对象")
@TableField(exist = false)
private List roles;
/**
* 角色组
*/
+ @ApiModelProperty(value = "角色组")
@TableField(exist = false)
private Long[] roleIds;
/**
* 岗位组
*/
+ @ApiModelProperty(value = "岗位组")
@TableField(exist = false)
private Long[] postIds;
/**
* 角色ID
*/
+ @ApiModelProperty(value = "角色ID")
@TableField(exist = false)
private Long roleId;
@@ -186,6 +172,7 @@ public class SysUser implements Serializable {
this.userId = userId;
}
+ @ApiModelProperty(value = "是否管理员")
public boolean isAdmin() {
return isAdmin(this.userId);
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java
index ae2c9e252..d47053694 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java
@@ -1,37 +1,43 @@
package com.ruoyi.common.core.domain.model;
-import lombok.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
import lombok.experimental.Accessors;
/**
* 用户登录对象
- *
- * @author ruoyi
+ *
+ * @author Lion Li
*/
@Data
-@NoArgsConstructor
@Accessors(chain = true)
-public class LoginBody
-{
+@ApiModel("用户登录对象")
+public class LoginBody {
+
/**
* 用户名
*/
+ @ApiModelProperty(value = "用户名")
private String username;
/**
* 用户密码
*/
+ @ApiModelProperty(value = "用户密码")
private String password;
/**
* 验证码
*/
+ @ApiModelProperty(value = "验证码")
private String code;
/**
* 唯一标识
*/
+ @ApiModelProperty(value = "唯一标识")
private String uuid = "";
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java
index 7bc072af7..9f7727abb 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java
@@ -2,7 +2,8 @@ package com.ruoyi.common.core.domain.model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.ruoyi.common.core.domain.entity.SysUser;
-import lombok.*;
+import lombok.Data;
+import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
@@ -13,14 +14,14 @@ import java.util.Set;
/**
* 登录用户身份权限
*
- * @author ruoyi
+ * @author Lion Li
*/
@Data
@NoArgsConstructor
@Accessors(chain = true)
-public class LoginUser implements UserDetails
-{
+public class LoginUser implements UserDetails {
+
private static final long serialVersionUID = 1L;
/**
@@ -78,14 +79,12 @@ public class LoginUser implements UserDetails
*/
private SysUser user;
- public LoginUser(SysUser user, Set permissions)
- {
+ public LoginUser(SysUser user, Set permissions) {
this.user = user;
this.permissions = permissions;
}
- public LoginUser(Long userId, Long deptId, SysUser user, Set permissions)
- {
+ public LoginUser(Long userId, Long deptId, SysUser user, Set permissions) {
this.userId = userId;
this.deptId = deptId;
this.user = user;
@@ -94,14 +93,12 @@ public class LoginUser implements UserDetails
@JsonIgnore
@Override
- public String getPassword()
- {
+ public String getPassword() {
return user.getPassword();
}
@Override
- public String getUsername()
- {
+ public String getUsername() {
return user.getUserName();
}
@@ -110,50 +107,39 @@ public class LoginUser implements UserDetails
*/
@JsonIgnore
@Override
- public boolean isAccountNonExpired()
- {
+ public boolean isAccountNonExpired() {
return true;
}
/**
* 指定用户是否解锁,锁定的用户无法进行身份验证
- *
- * @return
*/
@JsonIgnore
@Override
- public boolean isAccountNonLocked()
- {
+ public boolean isAccountNonLocked() {
return true;
}
/**
* 指示是否已过期的用户的凭据(密码),过期的凭据防止认证
- *
- * @return
*/
@JsonIgnore
@Override
- public boolean isCredentialsNonExpired()
- {
+ public boolean isCredentialsNonExpired() {
return true;
}
/**
* 是否可用 ,禁用的用户不能身份验证
- *
- * @return
*/
@JsonIgnore
@Override
- public boolean isEnabled()
- {
+ public boolean isEnabled() {
return true;
}
@Override
- public Collection extends GrantedAuthority> getAuthorities()
- {
+ public Collection extends GrantedAuthority> getAuthorities() {
return null;
}
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java
index 5baa88781..ce6c385ae 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java
@@ -1,11 +1,13 @@
package com.ruoyi.common.core.domain.model;
+import io.swagger.annotations.ApiModel;
+
/**
* 用户注册对象
- *
- * @author ruoyi
+ *
+ * @author Lion Li
*/
-public class RegisterBody extends LoginBody
-{
+@ApiModel("用户注册对象")
+public class RegisterBody extends LoginBody {
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/cache/MybatisPlusRedisCache.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/cache/MybatisPlusRedisCache.java
index 51b9ec38e..c790c663b 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/cache/MybatisPlusRedisCache.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/cache/MybatisPlusRedisCache.java
@@ -18,6 +18,7 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
* 使用方法 配置文件开启 mybatis-plus 二级缓存
* 在 XxxMapper.java 类上添加注解 @CacheNamespace(implementation = MybatisPlusRedisCache.class, eviction = MybatisPlusRedisCache.class)
*
+ * @deprecated 3.4.0删除 推荐使用spirng-cache
* @author Lion Li
*/
@Slf4j
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java
deleted file mode 100644
index 23a25e045..000000000
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java
+++ /dev/null
@@ -1,260 +0,0 @@
-package com.ruoyi.common.core.redis;
-
-import com.google.common.collect.Lists;
-import org.redisson.api.*;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.TimeUnit;
-import java.util.function.Consumer;
-
-/**
- * spring redis 工具类
- *
- * @author shenxinquan
- * @see com.ruoyi.common.utils.RedisUtils
- * @deprecated 3.2.0 删除此类
- **/
-@SuppressWarnings(value = {"unchecked", "rawtypes"})
-@Component
-@Deprecated
-public class RedisCache {
-
- @Autowired
- private RedissonClient redissonClient;
-
- /**
- * 发布通道消息
- *
- * @param channelKey 通道key
- * @param msg 发送数据
- * @param consumer 自定义处理
- */
- public void publish(String channelKey, T msg, Consumer consumer) {
- RTopic topic = redissonClient.getTopic(channelKey);
- topic.publish(msg);
- consumer.accept(msg);
- }
-
- public void publish(String channelKey, T msg) {
- RTopic topic = redissonClient.getTopic(channelKey);
- topic.publish(msg);
- }
-
- /**
- * 订阅通道接收消息
- *
- * @param channelKey 通道key
- * @param clazz 消息类型
- * @param consumer 自定义处理
- */
- public void subscribe(String channelKey, Class clazz, Consumer consumer) {
- RTopic topic = redissonClient.getTopic(channelKey);
- topic.addListener(clazz, (channel, msg) -> consumer.accept(msg));
- }
-
- /**
- * 缓存基本的对象,Integer、String、实体类等
- *
- * @param key 缓存的键值
- * @param value 缓存的值
- */
- public void setCacheObject(final String key, final T value) {
- redissonClient.getBucket(key).set(value);
- }
-
- /**
- * 缓存基本的对象,Integer、String、实体类等
- *
- * @param key 缓存的键值
- * @param value 缓存的值
- * @param timeout 时间
- * @param timeUnit 时间颗粒度
- */
- public void setCacheObject(final String key, final T value, final Integer timeout, final TimeUnit timeUnit) {
- RBucket result = redissonClient.getBucket(key);
- result.set(value);
- result.expire(timeout, timeUnit);
- }
-
- /**
- * 设置有效时间
- *
- * @param key Redis键
- * @param timeout 超时时间
- * @return true=设置成功;false=设置失败
- */
- public boolean expire(final String key, final long timeout) {
- return expire(key, timeout, TimeUnit.SECONDS);
- }
-
- /**
- * 设置有效时间
- *
- * @param key Redis键
- * @param timeout 超时时间
- * @param unit 时间单位
- * @return true=设置成功;false=设置失败
- */
- public boolean expire(final String key, final long timeout, final TimeUnit unit) {
- RBucket rBucket = redissonClient.getBucket(key);
- return rBucket.expire(timeout, unit);
- }
-
- /**
- * 获得缓存的基本对象。
- *
- * @param key 缓存键值
- * @return 缓存键值对应的数据
- */
- public T getCacheObject(final String key) {
- RBucket rBucket = redissonClient.getBucket(key);
- return rBucket.get();
- }
-
- /**
- * 删除单个对象
- *
- * @param key
- */
- public boolean deleteObject(final String key) {
- return redissonClient.getBucket(key).delete();
- }
-
- /* */
-
- /**
- * 删除集合对象
- *
- * @param collection 多个对象
- * @return
- */
- public void deleteObject(final Collection collection) {
- RBatch batch = redissonClient.createBatch();
- collection.forEach(t->{
- batch.getBucket(t.toString()).deleteAsync();
- });
- batch.execute();
- }
-
- /**
- * 缓存List数据
- *
- * @param key 缓存的键值
- * @param dataList 待缓存的List数据
- * @return 缓存的对象
- */
- public boolean setCacheList(final String key, final List dataList) {
- RList rList = redissonClient.getList(key);
- return rList.addAll(dataList);
- }
-
- /**
- * 获得缓存的list对象
- *
- * @param key 缓存的键值
- * @return 缓存键值对应的数据
- */
- public List getCacheList(final String key) {
- RList rList = redissonClient.getList(key);
- return rList.readAll();
- }
-
- /**
- * 缓存Set
- *
- * @param key 缓存键值
- * @param dataSet 缓存的数据
- * @return 缓存数据的对象
- */
- public boolean setCacheSet(final String key, final Set dataSet) {
- RSet rSet = redissonClient.getSet(key);
- return rSet.addAll(dataSet);
- }
-
- /**
- * 获得缓存的set
- *
- * @param key
- * @return
- */
- public Set getCacheSet(final String key) {
- RSet rSet = redissonClient.getSet(key);
- return rSet.readAll();
- }
-
- /**
- * 缓存Map
- *
- * @param key
- * @param dataMap
- */
- public void setCacheMap(final String key, final Map dataMap) {
- if (dataMap != null) {
- RMap rMap = redissonClient.getMap(key);
- rMap.putAll(dataMap);
- }
- }
-
- /**
- * 获得缓存的Map
- *
- * @param key
- * @return
- */
- public Map getCacheMap(final String key) {
- RMap rMap = redissonClient.getMap(key);
- return rMap.getAll(rMap.keySet());
- }
-
- /**
- * 往Hash中存入数据
- *
- * @param key Redis键
- * @param hKey Hash键
- * @param value 值
- */
- public void setCacheMapValue(final String key, final String hKey, final T value) {
- RMap rMap = redissonClient.getMap(key);
- rMap.put(hKey, value);
- }
-
- /**
- * 获取Hash中的数据
- *
- * @param key Redis键
- * @param hKey Hash键
- * @return Hash中的对象
- */
- public T getCacheMapValue(final String key, final String hKey) {
- RMap rMap = redissonClient.getMap(key);
- return rMap.get(hKey);
- }
-
- /**
- * 获取多个Hash中的数据
- *
- * @param key Redis键
- * @param hKeys Hash键集合
- * @return Hash对象集合
- */
- public Map getMultiCacheMapValue(final String key, final Set hKeys) {
- RMap rMap = redissonClient.getMap(key);
- return rMap.getAll(hKeys);
- }
-
- /**
- * 获得缓存的基本对象列表
- *
- * @param pattern 字符串前缀
- * @return 对象列表
- */
- public Collection keys(final String pattern) {
- Iterable iterable = redissonClient.getKeys().getKeysByPattern(pattern);
- return Lists.newArrayList(iterable);
- }
-}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/service/LogininforService.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/service/LogininforService.java
new file mode 100644
index 000000000..1bf34d526
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/service/LogininforService.java
@@ -0,0 +1,9 @@
+package com.ruoyi.common.core.service;
+
+import javax.servlet.http.HttpServletRequest;
+
+public interface LogininforService {
+
+ void recordLogininfor(String username, String status, String message,
+ HttpServletRequest request, Object... args);
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/service/OperLogService.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/service/OperLogService.java
new file mode 100644
index 000000000..71e5647ee
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/service/OperLogService.java
@@ -0,0 +1,9 @@
+package com.ruoyi.common.core.service;
+
+import com.ruoyi.common.core.domain.dto.OperLogDTO;
+import org.springframework.scheduling.annotation.Async;
+
+public interface OperLogService {
+ @Async
+ void recordOper(OperLogDTO operLogDTO);
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/service/TokenService.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/service/TokenService.java
new file mode 100644
index 000000000..d9a9f0acf
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/service/TokenService.java
@@ -0,0 +1,69 @@
+package com.ruoyi.common.core.service;
+
+import com.ruoyi.common.core.domain.model.LoginUser;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * token验证处理
+ *
+ * @author Lion Li
+ */
+public interface TokenService {
+
+ /**
+ * 获取用户身份信息
+ *
+ * @return 用户信息
+ */
+ LoginUser getLoginUser(HttpServletRequest request);
+
+ /**
+ * 设置用户身份信息
+ */
+ void setLoginUser(LoginUser loginUser);
+
+ /**
+ * 删除用户身份信息
+ */
+ void delLoginUser(String token);
+
+ /**
+ * 创建令牌
+ *
+ * @param loginUser 用户信息
+ * @return 令牌
+ */
+ String createToken(LoginUser loginUser);
+
+ /**
+ * 验证令牌有效期,相差不足20分钟,自动刷新缓存
+ *
+ * @param loginUser
+ * @return 令牌
+ */
+ void verifyToken(LoginUser loginUser);
+
+ /**
+ * 刷新令牌有效期
+ *
+ * @param loginUser 登录信息
+ */
+ void refreshToken(LoginUser loginUser);
+
+ /**
+ * 设置用户代理信息
+ *
+ * @param loginUser 登录信息
+ */
+ void setUserAgent(LoginUser loginUser);
+
+ /**
+ * 从令牌中获取用户名
+ *
+ * @param token 令牌
+ * @return 用户名
+ */
+ String getUsernameFromToken(String token);
+
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/BusinessStatus.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/BusinessStatus.java
index 10b7306fe..ce32cb41c 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/BusinessStatus.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/BusinessStatus.java
@@ -2,12 +2,10 @@ package com.ruoyi.common.enums;
/**
* 操作状态
- *
- * @author ruoyi
*
+ * @author ruoyi
*/
-public enum BusinessStatus
-{
+public enum BusinessStatus {
/**
* 成功
*/
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/BusinessType.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/BusinessType.java
index d0d280069..23024fe32 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/BusinessType.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/BusinessType.java
@@ -5,8 +5,7 @@ package com.ruoyi.common.enums;
*
* @author ruoyi
*/
-public enum BusinessType
-{
+public enum BusinessType {
/**
* 其它
*/
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/DataSourceType.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/DataSourceType.java
index d5f546536..d6fe72864 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/DataSourceType.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/DataSourceType.java
@@ -10,16 +10,16 @@ import lombok.Getter;
*/
@AllArgsConstructor
public enum DataSourceType {
- /**
- * 主库
- */
- MASTER("master"),
+ /**
+ * 主库
+ */
+ MASTER("master"),
- /**
- * 从库
- */
- SLAVE("slave");
+ /**
+ * 从库
+ */
+ SLAVE("slave");
- @Getter
- private final String source;
+ @Getter
+ private final String source;
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/HttpMethod.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/HttpMethod.java
index be6f73929..bd1bfcc46 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/HttpMethod.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/HttpMethod.java
@@ -1,36 +1,32 @@
package com.ruoyi.common.enums;
+import org.springframework.lang.Nullable;
+
import java.util.HashMap;
import java.util.Map;
-import org.springframework.lang.Nullable;
/**
* 请求方式
*
* @author ruoyi
*/
-public enum HttpMethod
-{
+public enum HttpMethod {
GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE;
private static final Map mappings = new HashMap<>(16);
- static
- {
- for (HttpMethod httpMethod : values())
- {
+ static {
+ for (HttpMethod httpMethod : values()) {
mappings.put(httpMethod.name(), httpMethod);
}
}
@Nullable
- public static HttpMethod resolve(@Nullable String method)
- {
+ public static HttpMethod resolve(@Nullable String method) {
return (method != null ? mappings.get(method) : null);
}
- public boolean matches(String method)
- {
+ public boolean matches(String method) {
return (this == resolve(method));
}
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/LimitType.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/LimitType.java
index ad01659dc..897f7068f 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/LimitType.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/LimitType.java
@@ -6,8 +6,7 @@ package com.ruoyi.common.enums;
* @author ruoyi
*/
-public enum LimitType
-{
+public enum LimitType {
/**
* 默认策略全局限流
*/
@@ -16,5 +15,10 @@ public enum LimitType
/**
* 根据请求者IP进行限流
*/
- IP
+ IP,
+
+ /**
+ * 实例限流(集群多后端实例)
+ */
+ CLUSTER
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/OperatorType.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/OperatorType.java
index bdd143c1c..3c4127d98 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/OperatorType.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/OperatorType.java
@@ -2,11 +2,10 @@ package com.ruoyi.common.enums;
/**
* 操作人类别
- *
+ *
* @author ruoyi
*/
-public enum OperatorType
-{
+public enum OperatorType {
/**
* 其它
*/
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/ThreadPoolRejectedPolicy.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/ThreadPoolRejectedPolicy.java
index 0c40f341c..5529bb336 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/ThreadPoolRejectedPolicy.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/ThreadPoolRejectedPolicy.java
@@ -15,7 +15,7 @@ import java.util.concurrent.ThreadPoolExecutor;
@AllArgsConstructor
public enum ThreadPoolRejectedPolicy {
- CALLER_RUNS_POLICY("等待", ThreadPoolExecutor.CallerRunsPolicy.class),
+ CALLER_RUNS_POLICY("调用方执行", ThreadPoolExecutor.CallerRunsPolicy.class),
DISCARD_OLDEST_POLICY("放弃最旧的", ThreadPoolExecutor.DiscardOldestPolicy.class),
DISCARD_POLICY("丢弃", ThreadPoolExecutor.DiscardPolicy.class),
ABORT_POLICY("中止", ThreadPoolExecutor.AbortPolicy.class);
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/UserStatus.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/UserStatus.java
index d7ff44a98..673ddebd2 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/UserStatus.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/UserStatus.java
@@ -2,29 +2,25 @@ package com.ruoyi.common.enums;
/**
* 用户状态
- *
+ *
* @author ruoyi
*/
-public enum UserStatus
-{
+public enum UserStatus {
OK("0", "正常"), DISABLE("1", "停用"), DELETED("2", "删除");
private final String code;
private final String info;
- UserStatus(String code, String info)
- {
+ UserStatus(String code, String info) {
this.code = code;
this.info = info;
}
- public String getCode()
- {
+ public String getCode() {
return code;
}
- public String getInfo()
- {
+ public String getInfo() {
return info;
}
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/exception/DemoModeException.java b/ruoyi-common/src/main/java/com/ruoyi/common/exception/DemoModeException.java
index f6ad2ab49..9178131d7 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/exception/DemoModeException.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/exception/DemoModeException.java
@@ -2,14 +2,12 @@ package com.ruoyi.common.exception;
/**
* 演示模式异常
- *
+ *
* @author ruoyi
*/
-public class DemoModeException extends RuntimeException
-{
+public class DemoModeException extends RuntimeException {
private static final long serialVersionUID = 1L;
- public DemoModeException()
- {
+ public DemoModeException() {
}
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/exception/GlobalException.java b/ruoyi-common/src/main/java/com/ruoyi/common/exception/GlobalException.java
index 318b9aecc..5584cbce3 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/exception/GlobalException.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/exception/GlobalException.java
@@ -2,11 +2,10 @@ package com.ruoyi.common.exception;
/**
* 全局异常
- *
+ *
* @author ruoyi
*/
-public class GlobalException extends RuntimeException
-{
+public class GlobalException extends RuntimeException {
private static final long serialVersionUID = 1L;
@@ -17,7 +16,7 @@ public class GlobalException extends RuntimeException
/**
* 错误明细,内部调试错误
- *
+ *
* 和 {@link CommonResult#getDetailMessage()} 一致的设计
*/
private String detailMessage;
@@ -25,33 +24,28 @@ public class GlobalException extends RuntimeException
/**
* 空构造方法,避免反序列化问题
*/
- public GlobalException()
- {
+ public GlobalException() {
}
- public GlobalException(String message)
- {
+ public GlobalException(String message) {
this.message = message;
}
- public String getDetailMessage()
- {
+ public String getDetailMessage() {
return detailMessage;
}
- public GlobalException setDetailMessage(String detailMessage)
- {
+ public GlobalException setDetailMessage(String detailMessage) {
this.detailMessage = detailMessage;
return this;
}
- public String getMessage()
- {
+ @Override
+ public String getMessage() {
return message;
}
- public GlobalException setMessage(String message)
- {
+ public GlobalException setMessage(String message) {
this.message = message;
return this;
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/exception/ServiceException.java b/ruoyi-common/src/main/java/com/ruoyi/common/exception/ServiceException.java
index 734e8fc5d..95ce6d84c 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/exception/ServiceException.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/exception/ServiceException.java
@@ -2,11 +2,10 @@ package com.ruoyi.common.exception;
/**
* 业务异常
- *
+ *
* @author ruoyi
*/
-public final class ServiceException extends RuntimeException
-{
+public final class ServiceException extends RuntimeException {
private static final long serialVersionUID = 1L;
/**
@@ -21,7 +20,7 @@ public final class ServiceException extends RuntimeException
/**
* 错误明细,内部调试错误
- *
+ *
* 和 {@link CommonResult#getDetailMessage()} 一致的设计
*/
private String detailMessage;
@@ -29,44 +28,37 @@ public final class ServiceException extends RuntimeException
/**
* 空构造方法,避免反序列化问题
*/
- public ServiceException()
- {
+ public ServiceException() {
}
- public ServiceException(String message)
- {
+ public ServiceException(String message) {
this.message = message;
}
- public ServiceException(String message, Integer code)
- {
+ public ServiceException(String message, Integer code) {
this.message = message;
this.code = code;
}
- public String getDetailMessage()
- {
+ public String getDetailMessage() {
return detailMessage;
}
- public String getMessage()
- {
+ @Override
+ public String getMessage() {
return message;
}
- public Integer getCode()
- {
+ public Integer getCode() {
return code;
}
- public ServiceException setMessage(String message)
- {
+ public ServiceException setMessage(String message) {
this.message = message;
return this;
}
- public ServiceException setDetailMessage(String detailMessage)
- {
+ public ServiceException setDetailMessage(String detailMessage) {
this.detailMessage = detailMessage;
return this;
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/exception/UtilException.java b/ruoyi-common/src/main/java/com/ruoyi/common/exception/UtilException.java
index 980fa465e..01cc8782b 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/exception/UtilException.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/exception/UtilException.java
@@ -2,25 +2,21 @@ package com.ruoyi.common.exception;
/**
* 工具类异常
- *
+ *
* @author ruoyi
*/
-public class UtilException extends RuntimeException
-{
+public class UtilException extends RuntimeException {
private static final long serialVersionUID = 8247610319171014183L;
- public UtilException(Throwable e)
- {
+ public UtilException(Throwable e) {
super(e.getMessage(), e);
}
- public UtilException(String message)
- {
+ public UtilException(String message) {
super(message);
}
- public UtilException(String message, Throwable throwable)
- {
+ public UtilException(String message, Throwable throwable) {
super(message, throwable);
}
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/exception/base/BaseException.java b/ruoyi-common/src/main/java/com/ruoyi/common/exception/base/BaseException.java
index 5f97a3bab..13c0d2fef 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/exception/base/BaseException.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/exception/base/BaseException.java
@@ -2,14 +2,17 @@ package com.ruoyi.common.exception.base;
import com.ruoyi.common.utils.MessageUtils;
import com.ruoyi.common.utils.StringUtils;
+import lombok.*;
/**
* 基础异常
*
* @author ruoyi
*/
-public class BaseException extends RuntimeException
-{
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+public class BaseException extends RuntimeException {
private static final long serialVersionUID = 1L;
/**
@@ -32,66 +35,39 @@ public class BaseException extends RuntimeException
*/
private String defaultMessage;
- public BaseException(String module, String code, Object[] args, String defaultMessage)
- {
+ public BaseException(String module, String code, Object[] args, String defaultMessage) {
this.module = module;
this.code = code;
this.args = args;
this.defaultMessage = defaultMessage;
}
- public BaseException(String module, String code, Object[] args)
- {
+ public BaseException(String module, String code, Object[] args) {
this(module, code, args, null);
}
- public BaseException(String module, String defaultMessage)
- {
+ public BaseException(String module, String defaultMessage) {
this(module, null, null, defaultMessage);
}
- public BaseException(String code, Object[] args)
- {
+ public BaseException(String code, Object[] args) {
this(null, code, args, null);
}
- public BaseException(String defaultMessage)
- {
+ public BaseException(String defaultMessage) {
this(null, null, null, defaultMessage);
}
@Override
- public String getMessage()
- {
+ public String getMessage() {
String message = null;
- if (!StringUtils.isEmpty(code))
- {
+ if (!StringUtils.isEmpty(code)) {
message = MessageUtils.message(code, args);
}
- if (message == null)
- {
+ if (message == null) {
message = defaultMessage;
}
return message;
}
- public String getModule()
- {
- return module;
- }
-
- public String getCode()
- {
- return code;
- }
-
- public Object[] getArgs()
- {
- return args;
- }
-
- public String getDefaultMessage()
- {
- return defaultMessage;
- }
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/exception/file/FileException.java b/ruoyi-common/src/main/java/com/ruoyi/common/exception/file/FileException.java
index b4c57f6d3..794f4e1a7 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/exception/file/FileException.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/exception/file/FileException.java
@@ -7,12 +7,10 @@ import com.ruoyi.common.exception.base.BaseException;
*
* @author ruoyi
*/
-public class FileException extends BaseException
-{
+public class FileException extends BaseException {
private static final long serialVersionUID = 1L;
- public FileException(String code, Object[] args)
- {
+ public FileException(String code, Object[] args) {
super("file", code, args, null);
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/exception/file/FileNameLengthLimitExceededException.java b/ruoyi-common/src/main/java/com/ruoyi/common/exception/file/FileNameLengthLimitExceededException.java
index 70e0ec9b1..64a5020d0 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/exception/file/FileNameLengthLimitExceededException.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/exception/file/FileNameLengthLimitExceededException.java
@@ -2,15 +2,13 @@ package com.ruoyi.common.exception.file;
/**
* 文件名称超长限制异常类
- *
+ *
* @author ruoyi
*/
-public class FileNameLengthLimitExceededException extends FileException
-{
+public class FileNameLengthLimitExceededException extends FileException {
private static final long serialVersionUID = 1L;
- public FileNameLengthLimitExceededException(int defaultFileNameLength)
- {
- super("upload.filename.exceed.length", new Object[] { defaultFileNameLength });
+ public FileNameLengthLimitExceededException(int defaultFileNameLength) {
+ super("upload.filename.exceed.length", new Object[]{defaultFileNameLength});
}
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/exception/file/FileSizeLimitExceededException.java b/ruoyi-common/src/main/java/com/ruoyi/common/exception/file/FileSizeLimitExceededException.java
index ec6ab054d..93e9e1c60 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/exception/file/FileSizeLimitExceededException.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/exception/file/FileSizeLimitExceededException.java
@@ -2,15 +2,13 @@ package com.ruoyi.common.exception.file;
/**
* 文件名大小限制异常类
- *
+ *
* @author ruoyi
*/
-public class FileSizeLimitExceededException extends FileException
-{
+public class FileSizeLimitExceededException extends FileException {
private static final long serialVersionUID = 1L;
- public FileSizeLimitExceededException(long defaultMaxSize)
- {
- super("upload.exceed.maxSize", new Object[] { defaultMaxSize });
+ public FileSizeLimitExceededException(long defaultMaxSize) {
+ super("upload.exceed.maxSize", new Object[]{defaultMaxSize});
}
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/exception/file/InvalidExtensionException.java b/ruoyi-common/src/main/java/com/ruoyi/common/exception/file/InvalidExtensionException.java
index f1c8e8354..7de92e24c 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/exception/file/InvalidExtensionException.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/exception/file/InvalidExtensionException.java
@@ -1,80 +1,60 @@
package com.ruoyi.common.exception.file;
-import java.util.Arrays;
+import lombok.*;
import org.apache.commons.fileupload.FileUploadException;
+import java.util.Arrays;
+
/**
* 文件上传 误异常类
- *
+ *
* @author ruoyi
*/
-public class InvalidExtensionException extends FileUploadException
-{
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+public class InvalidExtensionException extends FileUploadException {
private static final long serialVersionUID = 1L;
private String[] allowedExtension;
private String extension;
private String filename;
- public InvalidExtensionException(String[] allowedExtension, String extension, String filename)
- {
+ public InvalidExtensionException(String[] allowedExtension, String extension, String filename) {
super("filename : [" + filename + "], extension : [" + extension + "], allowed extension : [" + Arrays.toString(allowedExtension) + "]");
this.allowedExtension = allowedExtension;
this.extension = extension;
this.filename = filename;
}
- public String[] getAllowedExtension()
- {
- return allowedExtension;
- }
-
- public String getExtension()
- {
- return extension;
- }
-
- public String getFilename()
- {
- return filename;
- }
-
- public static class InvalidImageExtensionException extends InvalidExtensionException
- {
+ public static class InvalidImageExtensionException extends InvalidExtensionException {
private static final long serialVersionUID = 1L;
- public InvalidImageExtensionException(String[] allowedExtension, String extension, String filename)
- {
+ public InvalidImageExtensionException(String[] allowedExtension, String extension, String filename) {
super(allowedExtension, extension, filename);
}
}
- public static class InvalidFlashExtensionException extends InvalidExtensionException
- {
+ public static class InvalidFlashExtensionException extends InvalidExtensionException {
private static final long serialVersionUID = 1L;
- public InvalidFlashExtensionException(String[] allowedExtension, String extension, String filename)
- {
+ public InvalidFlashExtensionException(String[] allowedExtension, String extension, String filename) {
super(allowedExtension, extension, filename);
}
}
- public static class InvalidMediaExtensionException extends InvalidExtensionException
- {
+ public static class InvalidMediaExtensionException extends InvalidExtensionException {
private static final long serialVersionUID = 1L;
- public InvalidMediaExtensionException(String[] allowedExtension, String extension, String filename)
- {
+ public InvalidMediaExtensionException(String[] allowedExtension, String extension, String filename) {
super(allowedExtension, extension, filename);
}
}
- public static class InvalidVideoExtensionException extends InvalidExtensionException
- {
+ public static class InvalidVideoExtensionException extends InvalidExtensionException {
private static final long serialVersionUID = 1L;
- public InvalidVideoExtensionException(String[] allowedExtension, String extension, String filename)
- {
+ public InvalidVideoExtensionException(String[] allowedExtension, String extension, String filename) {
super(allowedExtension, extension, filename);
}
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/exception/job/TaskException.java b/ruoyi-common/src/main/java/com/ruoyi/common/exception/job/TaskException.java
index 14b2361d0..59ea3a687 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/exception/job/TaskException.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/exception/job/TaskException.java
@@ -2,7 +2,8 @@ package com.ruoyi.common.exception.job;
/**
* 计划策略异常
- *
+ *
+ * @deprecated 3.4.0删除 迁移至xxl-job
* @author ruoyi
*/
public class TaskException extends Exception
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/exception/user/CaptchaException.java b/ruoyi-common/src/main/java/com/ruoyi/common/exception/user/CaptchaException.java
index 389dbc753..90404854c 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/exception/user/CaptchaException.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/exception/user/CaptchaException.java
@@ -2,15 +2,13 @@ package com.ruoyi.common.exception.user;
/**
* 验证码错误异常类
- *
+ *
* @author ruoyi
*/
-public class CaptchaException extends UserException
-{
+public class CaptchaException extends UserException {
private static final long serialVersionUID = 1L;
- public CaptchaException()
- {
+ public CaptchaException() {
super("user.jcaptcha.error", null);
}
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/exception/user/CaptchaExpireException.java b/ruoyi-common/src/main/java/com/ruoyi/common/exception/user/CaptchaExpireException.java
index 85f94861b..ae5f759f0 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/exception/user/CaptchaExpireException.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/exception/user/CaptchaExpireException.java
@@ -2,15 +2,13 @@ package com.ruoyi.common.exception.user;
/**
* 验证码失效异常类
- *
+ *
* @author ruoyi
*/
-public class CaptchaExpireException extends UserException
-{
+public class CaptchaExpireException extends UserException {
private static final long serialVersionUID = 1L;
- public CaptchaExpireException()
- {
+ public CaptchaExpireException() {
super("user.jcaptcha.expire", null);
}
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserException.java b/ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserException.java
index f25afc5eb..94dbcdd52 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserException.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserException.java
@@ -7,12 +7,10 @@ import com.ruoyi.common.exception.base.BaseException;
*
* @author ruoyi
*/
-public class UserException extends BaseException
-{
+public class UserException extends BaseException {
private static final long serialVersionUID = 1L;
- public UserException(String code, Object[] args)
- {
+ public UserException(String code, Object[] args) {
super("user", code, args, null);
}
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserPasswordNotMatchException.java b/ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserPasswordNotMatchException.java
index a7f3e5ffe..0fab11678 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserPasswordNotMatchException.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserPasswordNotMatchException.java
@@ -2,15 +2,13 @@ package com.ruoyi.common.exception.user;
/**
* 用户密码不正确或不符合规范异常类
- *
+ *
* @author ruoyi
*/
-public class UserPasswordNotMatchException extends UserException
-{
+public class UserPasswordNotMatchException extends UserException {
private static final long serialVersionUID = 1L;
- public UserPasswordNotMatchException()
- {
+ public UserPasswordNotMatchException() {
super("user.password.not.match", null);
}
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/filter/RepeatableFilter.java b/ruoyi-common/src/main/java/com/ruoyi/common/filter/RepeatableFilter.java
index ffe614ceb..0e4b2658b 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/filter/RepeatableFilter.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/filter/RepeatableFilter.java
@@ -12,37 +12,29 @@ import java.io.IOException;
*
* @author ruoyi
*/
-public class RepeatableFilter implements Filter
-{
+public class RepeatableFilter implements Filter {
@Override
- public void init(FilterConfig filterConfig) throws ServletException
- {
+ public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
- throws IOException, ServletException
- {
+ throws IOException, ServletException {
ServletRequest requestWrapper = null;
if (request instanceof HttpServletRequest
- && StringUtils.startsWithIgnoreCase(request.getContentType(), MediaType.APPLICATION_JSON_VALUE))
- {
+ && StringUtils.startsWithIgnoreCase(request.getContentType(), MediaType.APPLICATION_JSON_VALUE)) {
requestWrapper = new RepeatedlyRequestWrapper((HttpServletRequest) request, response);
}
- if (null == requestWrapper)
- {
+ if (null == requestWrapper) {
chain.doFilter(request, response);
- }
- else
- {
+ } else {
chain.doFilter(requestWrapper, response);
}
}
@Override
- public void destroy()
- {
+ public void destroy() {
}
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/filter/RepeatedlyRequestWrapper.java b/ruoyi-common/src/main/java/com/ruoyi/common/filter/RepeatedlyRequestWrapper.java
index 74659bfdd..b6fd0b65a 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/filter/RepeatedlyRequestWrapper.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/filter/RepeatedlyRequestWrapper.java
@@ -18,12 +18,10 @@ import java.nio.charset.StandardCharsets;
*
* @author ruoyi
*/
-public class RepeatedlyRequestWrapper extends HttpServletRequestWrapper
-{
+public class RepeatedlyRequestWrapper extends HttpServletRequestWrapper {
private final byte[] body;
- public RepeatedlyRequestWrapper(HttpServletRequest request, ServletResponse response) throws IOException
- {
+ public RepeatedlyRequestWrapper(HttpServletRequest request, ServletResponse response) throws IOException {
super(request);
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
@@ -32,44 +30,36 @@ public class RepeatedlyRequestWrapper extends HttpServletRequestWrapper
}
@Override
- public BufferedReader getReader() throws IOException
- {
+ public BufferedReader getReader() throws IOException {
return new BufferedReader(new InputStreamReader(getInputStream()));
}
@Override
- public ServletInputStream getInputStream() throws IOException
- {
+ public ServletInputStream getInputStream() throws IOException {
final ByteArrayInputStream bais = new ByteArrayInputStream(body);
- return new ServletInputStream()
- {
+ return new ServletInputStream() {
@Override
- public int read() throws IOException
- {
+ public int read() throws IOException {
return bais.read();
}
@Override
- public int available() throws IOException
- {
+ public int available() throws IOException {
return body.length;
}
@Override
- public boolean isFinished()
- {
+ public boolean isFinished() {
return false;
}
@Override
- public boolean isReady()
- {
+ public boolean isReady() {
return false;
}
@Override
- public void setReadListener(ReadListener readListener)
- {
+ public void setReadListener(ReadListener readListener) {
}
};
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/filter/XssFilter.java b/ruoyi-common/src/main/java/com/ruoyi/common/filter/XssFilter.java
index 7c141671a..f397de1ec 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/filter/XssFilter.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/filter/XssFilter.java
@@ -14,22 +14,18 @@ import java.util.List;
*
* @author ruoyi
*/
-public class XssFilter implements Filter
-{
+public class XssFilter implements Filter {
/**
* 排除链接
*/
public List excludes = new ArrayList<>();
@Override
- public void init(FilterConfig filterConfig) throws ServletException
- {
+ public void init(FilterConfig filterConfig) throws ServletException {
String tempExcludes = filterConfig.getInitParameter("excludes");
- if (StringUtils.isNotEmpty(tempExcludes))
- {
+ if (StringUtils.isNotEmpty(tempExcludes)) {
String[] url = tempExcludes.split(",");
- for (int i = 0; url != null && i < url.length; i++)
- {
+ for (int i = 0; url != null && i < url.length; i++) {
excludes.add(url[i]);
}
}
@@ -37,12 +33,10 @@ public class XssFilter implements Filter
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
- throws IOException, ServletException
- {
+ throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
- if (handleExcludeURL(req, resp))
- {
+ if (handleExcludeURL(req, resp)) {
chain.doFilter(request, response);
return;
}
@@ -50,21 +44,18 @@ public class XssFilter implements Filter
chain.doFilter(xssRequest, response);
}
- private boolean handleExcludeURL(HttpServletRequest request, HttpServletResponse response)
- {
+ private boolean handleExcludeURL(HttpServletRequest request, HttpServletResponse response) {
String url = request.getServletPath();
String method = request.getMethod();
// GET DELETE 不过滤
- if (method == null || method.matches("GET") || method.matches("DELETE"))
- {
+ if (method == null || method.matches("GET") || method.matches("DELETE")) {
return true;
}
return StringUtils.matches(url, excludes);
}
@Override
- public void destroy()
- {
+ public void destroy() {
}
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/filter/XssHttpServletRequestWrapper.java b/ruoyi-common/src/main/java/com/ruoyi/common/filter/XssHttpServletRequestWrapper.java
index 8af1257df..a8ffd66cc 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/filter/XssHttpServletRequestWrapper.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/filter/XssHttpServletRequestWrapper.java
@@ -19,26 +19,21 @@ import java.nio.charset.StandardCharsets;
*
* @author ruoyi
*/
-public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper
-{
+public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {
/**
* @param request
*/
- public XssHttpServletRequestWrapper(HttpServletRequest request)
- {
+ public XssHttpServletRequestWrapper(HttpServletRequest request) {
super(request);
}
@Override
- public String[] getParameterValues(String name)
- {
+ public String[] getParameterValues(String name) {
String[] values = super.getParameterValues(name);
- if (values != null)
- {
+ if (values != null) {
int length = values.length;
String[] escapseValues = new String[length];
- for (int i = 0; i < length; i++)
- {
+ for (int i = 0; i < length; i++) {
// 防xss攻击和过滤前后空格
escapseValues[i] = HtmlUtil.cleanHtmlTag(values[i]).trim();
}
@@ -48,18 +43,15 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper
}
@Override
- public ServletInputStream getInputStream() throws IOException
- {
+ public ServletInputStream getInputStream() throws IOException {
// 非json类型,直接返回
- if (!isJsonRequest())
- {
+ if (!isJsonRequest()) {
return super.getInputStream();
}
// 为空,直接返回
String json = IoUtil.read(super.getInputStream(), StandardCharsets.UTF_8);
- if (StringUtils.isEmpty(json))
- {
+ if (StringUtils.isEmpty(json)) {
return super.getInputStream();
}
@@ -67,34 +59,28 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper
json = HtmlUtil.cleanHtmlTag(json).trim();
byte[] jsonBytes = json.getBytes(StandardCharsets.UTF_8);
final ByteArrayInputStream bis = IoUtil.toStream(jsonBytes);
- return new ServletInputStream()
- {
+ return new ServletInputStream() {
@Override
- public boolean isFinished()
- {
+ public boolean isFinished() {
return true;
}
@Override
- public boolean isReady()
- {
+ public boolean isReady() {
return true;
}
@Override
- public int available() throws IOException
- {
+ public int available() throws IOException {
return jsonBytes.length;
}
@Override
- public void setReadListener(ReadListener readListener)
- {
+ public void setReadListener(ReadListener readListener) {
}
@Override
- public int read() throws IOException
- {
+ public int read() throws IOException {
return bis.read();
}
};
@@ -105,8 +91,7 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper
*
* @param request
*/
- public boolean isJsonRequest()
- {
+ public boolean isJsonRequest() {
String header = super.getHeader(HttpHeaders.CONTENT_TYPE);
return StringUtils.startsWithIgnoreCase(header, MediaType.APPLICATION_JSON_VALUE);
}
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/TokenProperties.java b/ruoyi-common/src/main/java/com/ruoyi/common/properties/TokenProperties.java
similarity index 91%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/TokenProperties.java
rename to ruoyi-common/src/main/java/com/ruoyi/common/properties/TokenProperties.java
index f695c1c62..927a9413d 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/TokenProperties.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/properties/TokenProperties.java
@@ -1,4 +1,4 @@
-package com.ruoyi.framework.config.properties;
+package com.ruoyi.common.properties;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/BeanCopyUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/BeanCopyUtils.java
index 16a252d0f..8bf40d16a 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/BeanCopyUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/BeanCopyUtils.java
@@ -16,51 +16,51 @@ import java.util.stream.Collectors;
*/
public class BeanCopyUtils {
- /**
- * 单对象基于class创建拷贝
- *
- * @param source 数据来源实体
- * @param copyOptions copy条件
- * @param desc 描述对象 转换后的对象
- * @return desc
- */
- public static V oneCopy(T source, CopyOptions copyOptions, Class desc) {
- V v = ReflectUtil.newInstanceIfPossible(desc);
- return oneCopy(source, copyOptions, v);
- }
+ /**
+ * 单对象基于class创建拷贝
+ *
+ * @param source 数据来源实体
+ * @param copyOptions copy条件
+ * @param desc 描述对象 转换后的对象
+ * @return desc
+ */
+ public static V oneCopy(T source, CopyOptions copyOptions, Class desc) {
+ V v = ReflectUtil.newInstanceIfPossible(desc);
+ return oneCopy(source, copyOptions, v);
+ }
- /**
- * 单对象基于对象创建拷贝
- *
- * @param source 数据来源实体
- * @param copyOptions copy条件
- * @param desc 转换后的对象
- * @return desc
- */
- public static V oneCopy(T source, CopyOptions copyOptions, V desc) {
- if (ObjectUtil.isNull(source)) {
- return null;
- }
- return BeanCopier.create(source, desc, copyOptions).copy();
- }
+ /**
+ * 单对象基于对象创建拷贝
+ *
+ * @param source 数据来源实体
+ * @param copyOptions copy条件
+ * @param desc 转换后的对象
+ * @return desc
+ */
+ public static V oneCopy(T source, CopyOptions copyOptions, V desc) {
+ if (ObjectUtil.isNull(source)) {
+ return null;
+ }
+ return BeanCopier.create(source, desc, copyOptions).copy();
+ }
- /**
- * 列表对象基于class创建拷贝
- *
- * @param sourceList 数据来源实体列表
- * @param copyOptions copy条件
- * @param desc 描述对象 转换后的对象
- * @return desc
- */
- public static List listCopy(List sourceList, CopyOptions copyOptions, Class desc) {
- if (ObjectUtil.isNull(sourceList)) {
- return null;
- }
- if (CollUtil.isEmpty(sourceList)) {
- return CollUtil.newArrayList();
- }
- return sourceList.stream()
- .map(source -> oneCopy(source, copyOptions, desc))
- .collect(Collectors.toList());
- }
+ /**
+ * 列表对象基于class创建拷贝
+ *
+ * @param sourceList 数据来源实体列表
+ * @param copyOptions copy条件
+ * @param desc 描述对象 转换后的对象
+ * @return desc
+ */
+ public static List listCopy(List sourceList, CopyOptions copyOptions, Class desc) {
+ if (ObjectUtil.isNull(sourceList)) {
+ return null;
+ }
+ if (CollUtil.isEmpty(sourceList)) {
+ return CollUtil.newArrayList();
+ }
+ return sourceList.stream()
+ .map(source -> oneCopy(source, copyOptions, desc))
+ .collect(Collectors.toList());
+ }
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java
index dbfea97c0..c8c7adb08 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java
@@ -14,8 +14,8 @@ import java.util.Date;
*
* @author ruoyi
*/
-public class DateUtils extends org.apache.commons.lang3.time.DateUtils
-{
+public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
+
public static String YYYY = "yyyy";
public static String YYYY_MM = "yyyy-MM";
@@ -36,8 +36,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
*
* @return Date() 当前日期
*/
- public static Date getNowDate()
- {
+ public static Date getNowDate() {
return new Date();
}
@@ -46,44 +45,34 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
*
* @return String
*/
- public static String getDate()
- {
+ public static String getDate() {
return dateTimeNow(YYYY_MM_DD);
}
- public static final String getTime()
- {
+ public static final String getTime() {
return dateTimeNow(YYYY_MM_DD_HH_MM_SS);
}
- public static final String dateTimeNow()
- {
+ public static final String dateTimeNow() {
return dateTimeNow(YYYYMMDDHHMMSS);
}
- public static final String dateTimeNow(final String format)
- {
+ public static final String dateTimeNow(final String format) {
return parseDateToStr(format, new Date());
}
- public static final String dateTime(final Date date)
- {
+ public static final String dateTime(final Date date) {
return parseDateToStr(YYYY_MM_DD, date);
}
- public static final String parseDateToStr(final String format, final Date date)
- {
+ public static final String parseDateToStr(final String format, final Date date) {
return new SimpleDateFormat(format).format(date);
}
- public static final Date dateTime(final String format, final String ts)
- {
- try
- {
+ public static final Date dateTime(final String format, final String ts) {
+ try {
return new SimpleDateFormat(format).parse(ts);
- }
- catch (ParseException e)
- {
+ } catch (ParseException e) {
throw new RuntimeException(e);
}
}
@@ -91,8 +80,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
/**
* 日期路径 即年/月/日 如2018/08/08
*/
- public static final String datePath()
- {
+ public static final String datePath() {
Date now = new Date();
return DateFormatUtils.format(now, "yyyy/MM/dd");
}
@@ -100,8 +88,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
/**
* 日期路径 即年/月/日 如20180808
*/
- public static final String dateTime()
- {
+ public static final String dateTime() {
Date now = new Date();
return DateFormatUtils.format(now, "yyyyMMdd");
}
@@ -109,18 +96,13 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
/**
* 日期型字符串转化为日期 格式
*/
- public static Date parseDate(Object str)
- {
- if (str == null)
- {
+ public static Date parseDate(Object str) {
+ if (str == null) {
return null;
}
- try
- {
+ try {
return parseDate(str.toString(), parsePatterns);
- }
- catch (ParseException e)
- {
+ } catch (ParseException e) {
return null;
}
}
@@ -128,8 +110,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
/**
* 获取服务器启动时间
*/
- public static Date getServerStartDate()
- {
+ public static Date getServerStartDate() {
long time = ManagementFactory.getRuntimeMXBean().getStartTime();
return new Date(time);
}
@@ -137,8 +118,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
/**
* 计算两个时间差
*/
- public static String getDatePoor(Date endDate, Date nowDate)
- {
+ public static String getDatePoor(Date endDate, Date nowDate) {
long nd = 1000 * 24 * 60 * 60;
long nh = 1000 * 60 * 60;
long nm = 1000 * 60;
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DictUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DictUtils.java
index 39e71a66a..f24d0e8b4 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DictUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DictUtils.java
@@ -12,8 +12,8 @@ import java.util.List;
*
* @author ruoyi
*/
-public class DictUtils
-{
+public class DictUtils {
+
/**
* 分隔符
*/
@@ -22,11 +22,10 @@ public class DictUtils
/**
* 设置字典缓存
*
- * @param key 参数键
+ * @param key 参数键
* @param dictDatas 字典数据列表
*/
- public static void setDictCache(String key, List dictDatas)
- {
+ public static void setDictCache(String key, List dictDatas) {
RedisUtils.setCacheObject(getCacheKey(key), dictDatas);
}
@@ -36,12 +35,10 @@ public class DictUtils
* @param key 参数键
* @return dictDatas 字典数据列表
*/
- public static List getDictCache(String key)
- {
+ public static List getDictCache(String key) {
Object cacheObj = RedisUtils.getCacheObject(getCacheKey(key));
- if (StringUtils.isNotNull(cacheObj))
- {
- List dictDatas = (List)cacheObj;
+ if (StringUtils.isNotNull(cacheObj)) {
+ List dictDatas = (List) cacheObj;
return dictDatas;
}
return null;
@@ -50,60 +47,49 @@ public class DictUtils
/**
* 根据字典类型和字典值获取字典标签
*
- * @param dictType 字典类型
+ * @param dictType 字典类型
* @param dictValue 字典值
* @return 字典标签
*/
- public static String getDictLabel(String dictType, String dictValue)
- {
+ public static String getDictLabel(String dictType, String dictValue) {
return getDictLabel(dictType, dictValue, SEPARATOR);
}
/**
* 根据字典类型和字典标签获取字典值
*
- * @param dictType 字典类型
+ * @param dictType 字典类型
* @param dictLabel 字典标签
* @return 字典值
*/
- public static String getDictValue(String dictType, String dictLabel)
- {
+ public static String getDictValue(String dictType, String dictLabel) {
return getDictValue(dictType, dictLabel, SEPARATOR);
}
/**
* 根据字典类型和字典值获取字典标签
*
- * @param dictType 字典类型
+ * @param dictType 字典类型
* @param dictValue 字典值
* @param separator 分隔符
* @return 字典标签
*/
- public static String getDictLabel(String dictType, String dictValue, String separator)
- {
+ public static String getDictLabel(String dictType, String dictValue, String separator) {
StringBuilder propertyString = new StringBuilder();
List datas = getDictCache(dictType);
- if (StringUtils.containsAny(dictValue, separator) && CollUtil.isNotEmpty(datas))
- {
- for (SysDictData dict : datas)
- {
- for (String value : dictValue.split(separator))
- {
- if (value.equals(dict.getDictValue()))
- {
+ if (StringUtils.containsAny(dictValue, separator) && CollUtil.isNotEmpty(datas)) {
+ for (SysDictData dict : datas) {
+ for (String value : dictValue.split(separator)) {
+ if (value.equals(dict.getDictValue())) {
propertyString.append(dict.getDictLabel() + separator);
break;
}
}
}
- }
- else
- {
- for (SysDictData dict : datas)
- {
- if (dictValue.equals(dict.getDictValue()))
- {
+ } else {
+ for (SysDictData dict : datas) {
+ if (dictValue.equals(dict.getDictValue())) {
return dict.getDictLabel();
}
}
@@ -114,36 +100,27 @@ public class DictUtils
/**
* 根据字典类型和字典标签获取字典值
*
- * @param dictType 字典类型
+ * @param dictType 字典类型
* @param dictLabel 字典标签
* @param separator 分隔符
* @return 字典值
*/
- public static String getDictValue(String dictType, String dictLabel, String separator)
- {
+ public static String getDictValue(String dictType, String dictLabel, String separator) {
StringBuilder propertyString = new StringBuilder();
List datas = getDictCache(dictType);
- if (StringUtils.containsAny(dictLabel, separator) && CollUtil.isNotEmpty(datas))
- {
- for (SysDictData dict : datas)
- {
- for (String label : dictLabel.split(separator))
- {
- if (label.equals(dict.getDictLabel()))
- {
+ if (StringUtils.containsAny(dictLabel, separator) && CollUtil.isNotEmpty(datas)) {
+ for (SysDictData dict : datas) {
+ for (String label : dictLabel.split(separator)) {
+ if (label.equals(dict.getDictLabel())) {
propertyString.append(dict.getDictValue() + separator);
break;
}
}
}
- }
- else
- {
- for (SysDictData dict : datas)
- {
- if (dictLabel.equals(dict.getDictLabel()))
- {
+ } else {
+ for (SysDictData dict : datas) {
+ if (dictLabel.equals(dict.getDictLabel())) {
return dict.getDictValue();
}
}
@@ -156,16 +133,14 @@ public class DictUtils
*
* @param key 字典键
*/
- public static void removeDictCache(String key)
- {
+ public static void removeDictCache(String key) {
RedisUtils.deleteObject(getCacheKey(key));
}
/**
* 清空字典缓存
*/
- public static void clearDictCache()
- {
+ public static void clearDictCache() {
Collection keys = RedisUtils.keys(Constants.SYS_DICT_KEY + "*");
RedisUtils.deleteObject(keys);
}
@@ -176,8 +151,7 @@ public class DictUtils
* @param configKey 参数键
* @return 缓存键key
*/
- public static String getCacheKey(String configKey)
- {
+ public static String getCacheKey(String configKey) {
return Constants.SYS_DICT_KEY + configKey;
}
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/JsonUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/JsonUtils.java
index 7246b0af6..b65c23dc8 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/JsonUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/JsonUtils.java
@@ -24,9 +24,9 @@ public class JsonUtils {
private static ObjectMapper objectMapper = SpringUtils.getBean(ObjectMapper.class);
public static String toJsonString(Object object) {
- if (StringUtils.isNull(object)) {
- return null;
- }
+ if (StringUtils.isNull(object)) {
+ return null;
+ }
try {
return objectMapper.writeValueAsString(object);
} catch (JsonProcessingException e) {
@@ -57,9 +57,9 @@ public class JsonUtils {
}
public static T parseObject(String text, TypeReference typeReference) {
- if (StringUtils.isBlank(text)) {
- return null;
- }
+ if (StringUtils.isBlank(text)) {
+ return null;
+ }
try {
return objectMapper.readValue(text, typeReference);
} catch (IOException e) {
@@ -67,16 +67,17 @@ public class JsonUtils {
}
}
- public static Map parseMap(String text) {
- if (StringUtils.isBlank(text)) {
- return null;
- }
- try {
- return objectMapper.readValue(text, new TypeReference