add 整合 mybatis-plus 重写所有业务

2.X
疯狂的狮子li 2022-01-26 20:33:39 +08:00
parent d3788a4d51
commit 0e9ec77392
130 changed files with 5447 additions and 5840 deletions

View File

@ -45,8 +45,8 @@
| 分布式云存储(未完成) | 七牛、阿里、腾讯 | [OSS使用文档](https://gitee.com/JavaLionLi/RuoYi-Vue-Plus/wikis/pages?sort_id=4359146&doc_id=1469725) | 云存储 | | 分布式云存储(未完成) | 七牛、阿里、腾讯 | [OSS使用文档](https://gitee.com/JavaLionLi/RuoYi-Vue-Plus/wikis/pages?sort_id=4359146&doc_id=1469725) | 云存储 |
| 分布式监控(未完成) | Prometheus、Grafana | [Prometheus文档](https://prometheus.io/docs/introduction/overview/) | 全方位性能监控 | | 分布式监控(未完成) | Prometheus、Grafana | [Prometheus文档](https://prometheus.io/docs/introduction/overview/) | 全方位性能监控 |
| 服务监控 | SpringBoot-Admin | [SpringBoot-Admin文档](https://codecentric.github.io/spring-boot-admin/current/) | 全方位服务监控 | | 服务监控 | SpringBoot-Admin | [SpringBoot-Admin文档](https://codecentric.github.io/spring-boot-admin/current/) | 全方位服务监控 |
| 数据库框架(未完成) | Mybatis-Plus | [Mybatis-Plus文档](https://baomidou.com/guide/) | 快速 CRUD 增加开发效率 | | 数据库框架 | Mybatis-Plus | [Mybatis-Plus文档](https://baomidou.com/guide/) | 快速 CRUD 增加开发效率 |
| 数据库框架(未完成) | P6spy | [p6spy官网](https://p6spy.readthedocs.io/) | 更强劲的 SQL 分析 | | 数据库框架 | P6spy | [p6spy官网](https://p6spy.readthedocs.io/) | 更强劲的 SQL 分析 |
| 多数据源框架 | Dynamic-Datasource | [dynamic-ds文档](https://www.kancloud.cn/tracy5546/dynamic-datasource/content) | 支持主从与多种类数据库异构 | | 多数据源框架 | Dynamic-Datasource | [dynamic-ds文档](https://www.kancloud.cn/tracy5546/dynamic-datasource/content) | 支持主从与多种类数据库异构 |
| 序列化框架 | Jackson | [Jackson官网](https://github.com/FasterXML/jackson) | 统一使用 jackson 高效可靠 | | 序列化框架 | Jackson | [Jackson官网](https://github.com/FasterXML/jackson) | 统一使用 jackson 高效可靠 |
| Redis客户端 | Redisson | [Redisson文档](https://github.com/redisson/redisson/wiki/%E7%9B%AE%E5%BD%95) | 支持单机、集群配置 | | Redis客户端 | Redisson | [Redisson文档](https://github.com/redisson/redisson/wiki/%E7%9B%AE%E5%BD%95) | 支持单机、集群配置 |

View File

@ -158,12 +158,61 @@ logging:
com.alibaba.nacos: warn com.alibaba.nacos: warn
config: classpath:logback.xml config: classpath:logback.xml
# mybatis配置 # MyBatisPlus配置
mybatis: # https://baomidou.com/config/
# 搜索指定包别名 mybatis-plus:
# 不支持多包, 如有需要可在注解配置 或 提升扫包等级
# 例如 com.**.**.mapper
mapperPackage: com.ruoyi.**.mapper
# 对应的 XML 文件位置
mapperLocations: classpath*:mapper/**/*Mapper.xml
# 实体扫描多个package用逗号或者分号分隔
typeAliasesPackage: com.ruoyi.**.domain typeAliasesPackage: com.ruoyi.**.domain
# 配置mapper的扫描找到所有的mapper.xml映射文件 # 启动时是否检查 MyBatis XML 文件的存在,默认不检查
mapperLocations: classpath:mapper/**/*.xml checkConfigLocation: false
# 通过该属性可指定 MyBatis 的执行器MyBatis 的执行器总共有三种:
# SIMPLE每个语句创建新的预处理器 REUSE会复用预处理器 BATCH批量执行所有的更新
executorType: SIMPLE
configuration:
# 自动驼峰命名规则camel case映射
mapUnderscoreToCamelCase: true
# 当设置为 true 的时候,懒加载的对象可能被任何懒属性全部加载,否则,每个属性都按需加载。需要和 lazyLoadingEnabled 一起使用。
aggressiveLazyLoading: true
# MyBatis 自动映射策略
# NONE不启用 PARTIAL只对非嵌套 resultMap 自动映射 FULL对所有 resultMap 自动映射
autoMappingBehavior: PARTIAL
# MyBatis 自动映射时未知列或未知属性处理策
# NONE不做处理 WARNING打印相关警告 FAILING抛出异常和详细信息
autoMappingUnknownColumnBehavior: NONE
# Mybatis一级缓存默认为 SESSION
# SESSION session级别缓存 STATEMENT 关闭一级缓存
localCacheScope: SESSION
# 开启Mybatis二级缓存默认为 true
cacheEnabled: false
# 更详细的日志输出 会有性能损耗 org.apache.ibatis.logging.stdout.StdOutImpl
# 关闭日志记录 (可单纯使用 p6spy 分析) org.apache.ibatis.logging.nologging.NoLoggingImpl
# 默认日志输出 org.apache.ibatis.logging.slf4j.Slf4jImpl
logImpl: org.apache.ibatis.logging.nologging.NoLoggingImpl
global-config:
# 是否打印 Logo banner
banner: true
# 是否初始化 SqlRunner
enableSqlRunner: false
dbConfig:
# 主键类型
# AUTO 自增 NONE 空 INPUT 用户输入 ASSIGN_ID 雪花 ASSIGN_UUID 唯一 UUID
idType: AUTO
# 表名是否使用驼峰转下划线命名,只对表名生效
tableUnderline: true
# 大写命名,对表名和字段名均生效
capitalMode: false
# 逻辑已删除值
logicDeleteValue: 2
# 逻辑未删除值
logicNotDeleteValue: 0
insertStrategy: NOT_NULL
updateStrategy: NOT_NULL
where-strategy: NOT_NULL
# swagger配置 # swagger配置
swagger: swagger:

View File

@ -20,7 +20,7 @@ spring:
# 动态数据源文档 https://www.kancloud.cn/tracy5546/dynamic-datasource/content # 动态数据源文档 https://www.kancloud.cn/tracy5546/dynamic-datasource/content
dynamic: dynamic:
# 性能分析插件(有性能损耗 不建议生产环境使用) # 性能分析插件(有性能损耗 不建议生产环境使用)
p6spy: false p6spy: true
# 开启seata代理开启后默认每个数据源都代理如果某个不需要代理可单独关闭 # 开启seata代理开启后默认每个数据源都代理如果某个不需要代理可单独关闭
seata: false seata: false
druid: druid:

22
pom.xml
View File

@ -25,7 +25,8 @@
<spring-boot.mybatis>2.2.0</spring-boot.mybatis> <spring-boot.mybatis>2.2.0</spring-boot.mybatis>
<swagger.core.version>1.6.2</swagger.core.version> <swagger.core.version>1.6.2</swagger.core.version>
<tobato.version>1.27.2</tobato.version> <tobato.version>1.27.2</tobato.version>
<pagehelper.boot.version>1.4.1</pagehelper.boot.version> <mybatis-plus.version>3.5.1</mybatis-plus.version>
<p6spy.version>3.9.1</p6spy.version>
<druid.version>1.2.8</druid.version> <druid.version>1.2.8</druid.version>
<dynamic-ds.version>3.5.0</dynamic-ds.version> <dynamic-ds.version>3.5.0</dynamic-ds.version>
<commons.io.version>2.11.0</commons.io.version> <commons.io.version>2.11.0</commons.io.version>
@ -197,11 +198,22 @@
<version>${swagger.core.version}</version> <version>${swagger.core.version}</version>
</dependency> </dependency>
<!-- pagehelper 分页插件 -->
<dependency> <dependency>
<groupId>com.github.pagehelper</groupId> <groupId>com.baomidou</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId> <artifactId>mybatis-plus-boot-starter</artifactId>
<version>${pagehelper.boot.version}</version> <version>${mybatis-plus.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-annotation</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<!-- sql性能分析插件 -->
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
<version>${p6spy.version}</version>
</dependency> </dependency>
<!-- io常用工具类 --> <!-- io常用工具类 -->

View File

@ -14,17 +14,15 @@ public interface RemoteLogService {
* *
* *
* @param sysOperLog * @param sysOperLog
* @param source
* @return * @return
*/ */
Boolean saveLog(SysOperLog sysOperLog, String source); Boolean saveLog(SysOperLog sysOperLog);
/** /**
* 访 * 访
* *
* @param sysLogininfor 访 * @param sysLogininfor 访
* @param source
* @return * @return
*/ */
Boolean saveLogininfor(SysLogininfor sysLogininfor, String source); Boolean saveLogininfor(SysLogininfor sysLogininfor);
} }

View File

@ -14,17 +14,15 @@ public interface RemoteUserService {
* *
* *
* @param username * @param username
* @param source
* @return * @return
*/ */
LoginUser getUserInfo(String username, String source); LoginUser getUserInfo(String username);
/** /**
* *
* *
* @param sysUser * @param sysUser
* @param source
* @return * @return
*/ */
Boolean registerUserInfo(SysUser sysUser, String source); Boolean registerUserInfo(SysUser sysUser);
} }

View File

@ -1,11 +1,14 @@
package com.ruoyi.system.api.domain; package com.ruoyi.system.api.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.web.domain.TreeEntity; import com.ruoyi.common.core.web.domain.TreeEntity;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.NoArgsConstructor;
import javax.validation.constraints.Email; import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
@ -20,6 +23,8 @@ import javax.validation.constraints.Size;
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@TableName("sys_dept")
@ApiModel("部门业务对象") @ApiModel("部门业务对象")
public class SysDept extends TreeEntity { public class SysDept extends TreeEntity {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ -28,6 +33,7 @@ public class SysDept extends TreeEntity {
* ID * ID
*/ */
@ApiModelProperty(value = "部门id") @ApiModelProperty(value = "部门id")
@TableId(value = "dept_id")
private Long deptId; private Long deptId;
/** /**
@ -76,6 +82,7 @@ public class SysDept extends TreeEntity {
* 0 2 * 0 2
*/ */
@ApiModelProperty(value = "删除标志0代表存在 2代表删除") @ApiModelProperty(value = "删除标志0代表存在 2代表删除")
@TableLogic
private String delFlag; private String delFlag;
/** /**

View File

@ -2,6 +2,8 @@ package com.ruoyi.system.api.domain;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.constant.UserConstants; import com.ruoyi.common.core.constant.UserConstants;
import com.ruoyi.common.core.web.domain.BaseEntity; import com.ruoyi.common.core.web.domain.BaseEntity;
import com.ruoyi.common.excel.annotation.ExcelDictFormat; import com.ruoyi.common.excel.annotation.ExcelDictFormat;
@ -10,6 +12,7 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size; import javax.validation.constraints.Size;
@ -22,6 +25,8 @@ import javax.validation.constraints.Size;
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@TableName("sys_dict_data")
@ExcelIgnoreUnannotated @ExcelIgnoreUnannotated
@ApiModel("字典数据业务对象") @ApiModel("字典数据业务对象")
public class SysDictData extends BaseEntity { public class SysDictData extends BaseEntity {
@ -31,6 +36,7 @@ public class SysDictData extends BaseEntity {
*/ */
@ApiModelProperty(value = "字典编码") @ApiModelProperty(value = "字典编码")
@ExcelProperty(value = "字典编码") @ExcelProperty(value = "字典编码")
@TableId(value = "dict_code")
private Long dictCode; private Long dictCode;
/** /**

View File

@ -2,6 +2,8 @@ package com.ruoyi.system.api.domain;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.web.domain.BaseEntity; import com.ruoyi.common.core.web.domain.BaseEntity;
import com.ruoyi.common.excel.annotation.ExcelDictFormat; import com.ruoyi.common.excel.annotation.ExcelDictFormat;
import com.ruoyi.common.excel.convert.ExcelDictConvert; import com.ruoyi.common.excel.convert.ExcelDictConvert;
@ -9,7 +11,7 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size; import javax.validation.constraints.Size;
@ -22,6 +24,8 @@ import javax.validation.constraints.Size;
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@TableName("sys_dict_type")
@ExcelIgnoreUnannotated @ExcelIgnoreUnannotated
@ApiModel("字典类型业务对象") @ApiModel("字典类型业务对象")
public class SysDictType extends BaseEntity { public class SysDictType extends BaseEntity {
@ -31,6 +35,7 @@ public class SysDictType extends BaseEntity {
*/ */
@ApiModelProperty(value = "字典主键") @ApiModelProperty(value = "字典主键")
@ExcelProperty(value = "字典主键") @ExcelProperty(value = "字典主键")
@TableId(value = "dict_id")
private Long dictId; private Long dictId;
/** /**

View File

@ -2,12 +2,15 @@ package com.ruoyi.system.api.domain;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.excel.annotation.ExcelDictFormat; import com.ruoyi.common.excel.annotation.ExcelDictFormat;
import com.ruoyi.common.excel.convert.ExcelDictConvert; import com.ruoyi.common.excel.convert.ExcelDictConvert;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.NoArgsConstructor;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
@ -21,6 +24,8 @@ import java.util.Map;
*/ */
@Data @Data
@NoArgsConstructor
@TableName("sys_logininfor")
@ExcelIgnoreUnannotated @ExcelIgnoreUnannotated
@ApiModel("系统访问记录业务对象") @ApiModel("系统访问记录业务对象")
public class SysLogininfor implements Serializable { public class SysLogininfor implements Serializable {
@ -31,6 +36,7 @@ public class SysLogininfor implements Serializable {
*/ */
@ApiModelProperty(value = "访问ID") @ApiModelProperty(value = "访问ID")
@ExcelProperty(value = "序号") @ExcelProperty(value = "序号")
@TableId(value = "info_id")
private Long infoId; private Long infoId;
/** /**
@ -73,6 +79,7 @@ public class SysLogininfor implements Serializable {
* *
*/ */
@ApiModelProperty(value = "请求参数") @ApiModelProperty(value = "请求参数")
@TableField(exist = false)
private Map<String, Object> params = new HashMap<>(); private Map<String, Object> params = new HashMap<>();
} }

View File

@ -2,12 +2,15 @@ package com.ruoyi.system.api.domain;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.excel.annotation.ExcelDictFormat; import com.ruoyi.common.excel.annotation.ExcelDictFormat;
import com.ruoyi.common.excel.convert.ExcelDictConvert; import com.ruoyi.common.excel.convert.ExcelDictConvert;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.NoArgsConstructor;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
@ -21,6 +24,8 @@ import java.util.Map;
*/ */
@Data @Data
@NoArgsConstructor
@TableName("sys_oper_log")
@ExcelIgnoreUnannotated @ExcelIgnoreUnannotated
@ApiModel("操作日志记录业务对象") @ApiModel("操作日志记录业务对象")
public class SysOperLog implements Serializable { public class SysOperLog implements Serializable {
@ -32,6 +37,7 @@ public class SysOperLog implements Serializable {
*/ */
@ApiModelProperty(value = "日志主键") @ApiModelProperty(value = "日志主键")
@ExcelProperty(value = "日志主键") @ExcelProperty(value = "日志主键")
@TableId(value = "oper_id")
private Long operId; private Long operId;
/** /**
@ -53,6 +59,7 @@ public class SysOperLog implements Serializable {
* *
*/ */
@ApiModelProperty(value = "业务类型数组") @ApiModelProperty(value = "业务类型数组")
@TableField(exist = false)
private Integer[] businessTypes; private Integer[] businessTypes;
/** /**
@ -145,6 +152,7 @@ public class SysOperLog implements Serializable {
* *
*/ */
@ApiModelProperty(value = "请求参数") @ApiModelProperty(value = "请求参数")
@TableField(exist = false)
private Map<String, Object> params = new HashMap<>(); private Map<String, Object> params = new HashMap<>();
} }

View File

@ -2,6 +2,10 @@ package com.ruoyi.system.api.domain;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
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.core.web.domain.BaseEntity; import com.ruoyi.common.core.web.domain.BaseEntity;
import com.ruoyi.common.excel.annotation.ExcelDictFormat; import com.ruoyi.common.excel.annotation.ExcelDictFormat;
import com.ruoyi.common.excel.convert.ExcelDictConvert; import com.ruoyi.common.excel.convert.ExcelDictConvert;
@ -9,7 +13,6 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size; import javax.validation.constraints.Size;
@ -23,6 +26,7 @@ import javax.validation.constraints.Size;
@Data @Data
@NoArgsConstructor @NoArgsConstructor
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@TableName("sys_role")
@ExcelIgnoreUnannotated @ExcelIgnoreUnannotated
public class SysRole extends BaseEntity { public class SysRole extends BaseEntity {
@ -31,6 +35,7 @@ public class SysRole extends BaseEntity {
*/ */
@ApiModelProperty(value = "角色ID") @ApiModelProperty(value = "角色ID")
@ExcelProperty(value = "角色序号") @ExcelProperty(value = "角色序号")
@TableId(value = "role_id")
private Long roleId; private Long roleId;
/** /**
@ -91,6 +96,7 @@ public class SysRole extends BaseEntity {
* 0 2 * 0 2
*/ */
@ApiModelProperty(value = "删除标志0代表存在 2代表删除") @ApiModelProperty(value = "删除标志0代表存在 2代表删除")
@TableLogic
private String delFlag; private String delFlag;
/** /**
@ -103,18 +109,21 @@ public class SysRole extends BaseEntity {
* *
*/ */
@ApiModelProperty(value = "用户是否存在此角色标识 默认不存在") @ApiModelProperty(value = "用户是否存在此角色标识 默认不存在")
@TableField(exist = false)
private boolean flag = false; private boolean flag = false;
/** /**
* *
*/ */
@ApiModelProperty(value = "菜单组") @ApiModelProperty(value = "菜单组")
@TableField(exist = false)
private Long[] menuIds; private Long[] menuIds;
/** /**
* *
*/ */
@ApiModelProperty(value = "部门组(数据权限)") @ApiModelProperty(value = "部门组(数据权限)")
@TableField(exist = false)
private Long[] deptIds; private Long[] deptIds;
public SysRole(Long roleId) { public SysRole(Long roleId) {

View File

@ -1,5 +1,6 @@
package com.ruoyi.system.api.domain; package com.ruoyi.system.api.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import com.ruoyi.common.core.web.domain.BaseEntity; import com.ruoyi.common.core.web.domain.BaseEntity;
@ -9,7 +10,6 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import javax.validation.constraints.Email; import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
@ -26,6 +26,7 @@ import java.util.List;
@Data @Data
@NoArgsConstructor @NoArgsConstructor
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@TableName("sys_user")
@ApiModel("用户信息业务对象") @ApiModel("用户信息业务对象")
public class SysUser extends BaseEntity { public class SysUser extends BaseEntity {
@ -33,6 +34,7 @@ public class SysUser extends BaseEntity {
* ID * ID
*/ */
@ApiModelProperty(value = "用户ID") @ApiModelProperty(value = "用户ID")
@TableId(value = "user_id")
private Long userId; private Long userId;
/** /**
@ -94,6 +96,11 @@ public class SysUser extends BaseEntity {
* *
*/ */
@ApiModelProperty(value = "密码") @ApiModelProperty(value = "密码")
@TableField(
insertStrategy = FieldStrategy.NOT_EMPTY,
updateStrategy = FieldStrategy.NOT_EMPTY,
whereStrategy = FieldStrategy.NOT_EMPTY
)
private String password; private String password;
@JsonIgnore @JsonIgnore
@ -112,6 +119,7 @@ public class SysUser extends BaseEntity {
* 0 2 * 0 2
*/ */
@ApiModelProperty(value = "删除标志0代表存在 2代表删除") @ApiModelProperty(value = "删除标志0代表存在 2代表删除")
@TableLogic
private String delFlag; private String delFlag;
/** /**
@ -136,30 +144,35 @@ public class SysUser extends BaseEntity {
* *
*/ */
@ApiModelProperty(value = "部门对象") @ApiModelProperty(value = "部门对象")
@TableField(exist = false)
private SysDept dept; private SysDept dept;
/** /**
* *
*/ */
@ApiModelProperty(value = "角色对象") @ApiModelProperty(value = "角色对象")
@TableField(exist = false)
private List<SysRole> roles; private List<SysRole> roles;
/** /**
* *
*/ */
@ApiModelProperty(value = "角色组") @ApiModelProperty(value = "角色组")
@TableField(exist = false)
private Long[] roleIds; private Long[] roleIds;
/** /**
* *
*/ */
@ApiModelProperty(value = "岗位组") @ApiModelProperty(value = "岗位组")
@TableField(exist = false)
private Long[] postIds; private Long[] postIds;
/** /**
* ID * ID
*/ */
@ApiModelProperty(value = "角色ID") @ApiModelProperty(value = "角色ID")
@TableField(exist = false)
private Long roleId; private Long roleId;
public SysUser(Long userId) { public SysUser(Long userId) {

View File

@ -25,7 +25,7 @@ import javax.servlet.http.HttpServletRequest;
* *
* @author ruoyi * @author ruoyi
*/ */
@RequiredArgsConstructor(onConstructor_ = @Autowired) @RequiredArgsConstructor
@RestController @RestController
public class TokenController { public class TokenController {

View File

@ -2,7 +2,6 @@ package com.ruoyi.auth.service;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.ruoyi.common.core.constant.Constants; import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.constant.UserConstants; import com.ruoyi.common.core.constant.UserConstants;
import com.ruoyi.common.core.enums.UserStatus; import com.ruoyi.common.core.enums.UserStatus;
import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.exception.ServiceException;
@ -52,7 +51,7 @@ public class SysLoginService {
throw new ServiceException("用户名不在指定范围"); throw new ServiceException("用户名不在指定范围");
} }
// 查询用户信息 // 查询用户信息
LoginUser userInfo = remoteUserService.getUserInfo(username, SecurityConstants.INNER); LoginUser userInfo = remoteUserService.getUserInfo(username);
if (ObjectUtil.isNull(userInfo)) { if (ObjectUtil.isNull(userInfo)) {
recordLogininfor(username, Constants.LOGIN_FAIL, "登录用户不存在"); recordLogininfor(username, Constants.LOGIN_FAIL, "登录用户不存在");
@ -101,7 +100,7 @@ public class SysLoginService {
sysUser.setUserName(username); sysUser.setUserName(username);
sysUser.setNickName(username); sysUser.setNickName(username);
sysUser.setPassword(SecurityUtils.encryptPassword(password)); sysUser.setPassword(SecurityUtils.encryptPassword(password));
remoteUserService.registerUserInfo(sysUser, SecurityConstants.INNER); remoteUserService.registerUserInfo(sysUser);
recordLogininfor(username, Constants.REGISTER, "注册成功"); recordLogininfor(username, Constants.REGISTER, "注册成功");
} }
@ -125,6 +124,6 @@ public class SysLoginService {
} else if (Constants.LOGIN_FAIL.equals(status)) { } else if (Constants.LOGIN_FAIL.equals(status)) {
logininfor.setStatus("1"); logininfor.setStatus("1");
} }
remoteLogService.saveLogininfor(logininfor, SecurityConstants.INNER); remoteLogService.saveLogininfor(logininfor);
} }
} }

View File

@ -17,9 +17,9 @@
<module>ruoyi-common-redis</module> <module>ruoyi-common-redis</module>
<module>ruoyi-common-swagger</module> <module>ruoyi-common-swagger</module>
<module>ruoyi-common-security</module> <module>ruoyi-common-security</module>
<module>ruoyi-common-datascope</module>
<module>ruoyi-common-datasource</module> <module>ruoyi-common-datasource</module>
<module>ruoyi-common-web</module> <module>ruoyi-common-web</module>
<module>ruoyi-common-mybatis</module>
<module>ruoyi-common-job</module> <module>ruoyi-common-job</module>
<module>ruoyi-common-dubbo</module> <module>ruoyi-common-dubbo</module>
<module>ruoyi-common-seata</module> <module>ruoyi-common-seata</module>

View File

@ -36,13 +36,6 @@
<version>${project.version}</version> <version>${project.version}</version>
</dependency> </dependency>
<!-- 权限范围 -->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common-datascope</artifactId>
<version>${project.version}</version>
</dependency>
<!-- 多数据源 --> <!-- 多数据源 -->
<dependency> <dependency>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
@ -85,6 +78,13 @@
<version>${project.version}</version> <version>${project.version}</version>
</dependency> </dependency>
<!-- 数据库服务 -->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common-mybatis</artifactId>
<version>${project.version}</version>
</dependency>
<dependency> <dependency>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common-job</artifactId> <artifactId>ruoyi-common-job</artifactId>

View File

@ -35,10 +35,13 @@
<artifactId>transmittable-thread-local</artifactId> <artifactId>transmittable-thread-local</artifactId>
</dependency> </dependency>
<!-- Pagehelper -->
<dependency> <dependency>
<groupId>com.github.pagehelper</groupId> <groupId>org.mybatis.spring.boot</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId> <artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-annotation</artifactId>
</dependency> </dependency>
<!-- Hibernate Validator --> <!-- Hibernate Validator -->

View File

@ -1,28 +0,0 @@
package com.ruoyi.common.core.utils;
import cn.hutool.core.util.ObjectUtil;
import com.github.pagehelper.PageHelper;
import com.ruoyi.common.core.utils.sql.SqlUtil;
import com.ruoyi.common.core.web.page.PageDomain;
import com.ruoyi.common.core.web.page.TableSupport;
/**
*
*
* @author ruoyi
*/
public class PageUtils extends PageHelper {
/**
*
*/
public static void startPage() {
PageDomain pageDomain = TableSupport.buildPageRequest();
Integer pageNum = pageDomain.getPageNum();
Integer pageSize = pageDomain.getPageSize();
if (ObjectUtil.isNotNull(pageNum) && ObjectUtil.isNotNull(pageSize)) {
String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());
Boolean reasonable = pageDomain.getReasonable();
PageHelper.startPage(pageNum, pageSize, orderBy).setReasonable(reasonable);
}
}
}

View File

@ -1,14 +1,8 @@
package com.ruoyi.common.core.web.controller; package com.ruoyi.common.core.web.controller;
import com.github.pagehelper.PageInfo;
import com.ruoyi.common.core.constant.HttpStatus;
import com.ruoyi.common.core.utils.PageUtils;
import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.TableDataInfo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import java.util.List;
/** /**
* web * web
* *
@ -17,26 +11,6 @@ import java.util.List;
@Slf4j @Slf4j
public class BaseController { public class BaseController {
/**
*
*/
protected void startPage() {
PageUtils.startPage();
}
/**
*
*/
@SuppressWarnings({"rawtypes", "unchecked"})
protected TableDataInfo getDataTable(List<?> list) {
TableDataInfo rspData = new TableDataInfo();
rspData.setCode(HttpStatus.SUCCESS);
rspData.setRows(list);
rspData.setMsg("查询成功");
rspData.setTotal(new PageInfo(list).getTotal());
return rspData;
}
/** /**
* *
* *

View File

@ -1,8 +1,9 @@
package com.ruoyi.common.core.web.domain; package com.ruoyi.common.core.web.domain;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
@ -24,36 +25,42 @@ public class BaseEntity implements Serializable {
* *
*/ */
@ApiModelProperty(value = "搜索值") @ApiModelProperty(value = "搜索值")
@TableField(exist = false)
private String searchValue; private String searchValue;
/** /**
* *
*/ */
@ApiModelProperty(value = "创建者") @ApiModelProperty(value = "创建者")
@TableField(fill = FieldFill.INSERT)
private String createBy; private String createBy;
/** /**
* *
*/ */
@ApiModelProperty(value = "创建时间") @ApiModelProperty(value = "创建时间")
@TableField(fill = FieldFill.INSERT)
private Date createTime; private Date createTime;
/** /**
* *
*/ */
@ApiModelProperty(value = "更新者") @ApiModelProperty(value = "更新者")
@TableField(fill = FieldFill.INSERT_UPDATE)
private String updateBy; private String updateBy;
/** /**
* *
*/ */
@ApiModelProperty(value = "更新时间") @ApiModelProperty(value = "更新时间")
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime; private Date updateTime;
/** /**
* *
*/ */
@ApiModelProperty(value = "请求参数") @ApiModelProperty(value = "请求参数")
@TableField(exist = false)
private Map<String, Object> params = new HashMap<>(); private Map<String, Object> params = new HashMap<>();
} }

View File

@ -1,5 +1,6 @@
package com.ruoyi.common.core.web.domain; package com.ruoyi.common.core.web.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@ -23,6 +24,7 @@ public class TreeEntity extends BaseEntity {
/** /**
* *
*/ */
@TableField(exist = false)
@ApiModelProperty(value = "父菜单名称") @ApiModelProperty(value = "父菜单名称")
private String parentName; private String parentName;
@ -35,6 +37,7 @@ public class TreeEntity extends BaseEntity {
/** /**
* *
*/ */
@TableField(exist = false)
@ApiModelProperty(value = "子部门") @ApiModelProperty(value = "子部门")
private List<?> children = new ArrayList<>(); private List<?> children = new ArrayList<>();

View File

@ -1,65 +0,0 @@
package com.ruoyi.common.core.web.page;
import cn.hutool.core.util.ObjectUtil;
import com.ruoyi.common.core.utils.StringUtils;
import lombok.Data;
/**
*
*
* @author ruoyi
*/
@Data
public class PageDomain {
/**
*
*/
private Integer pageNum;
/**
*
*/
private Integer pageSize;
/**
*
*/
private String orderByColumn;
/**
* descasc
*/
private String isAsc = "asc";
/**
*
*/
private Boolean reasonable = true;
public String getOrderBy() {
if (StringUtils.isEmpty(orderByColumn)) {
return "";
}
return StringUtils.toUnderScoreCase(orderByColumn) + " " + isAsc;
}
public void setIsAsc(String isAsc) {
if (StringUtils.isNotEmpty(isAsc)) {
// 兼容前端排序类型
if ("ascending".equals(isAsc)) {
isAsc = "asc";
} else if ("descending".equals(isAsc)) {
isAsc = "desc";
}
this.isAsc = isAsc;
}
}
public Boolean getReasonable() {
if (ObjectUtil.isNull(reasonable)) {
return Boolean.TRUE;
}
return reasonable;
}
}

View File

@ -1,50 +0,0 @@
package com.ruoyi.common.core.web.page;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
*
*
* @author ruoyi
*/
@Data
@NoArgsConstructor
public class TableDataInfo implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
private long total;
/**
*
*/
private List<?> rows;
/**
*
*/
private int code;
/**
*
*/
private String msg;
/**
*
*
* @param list
* @param total
*/
public TableDataInfo(List<?> list, int total) {
this.rows = list;
this.total = total;
}
}

View File

@ -1,52 +0,0 @@
package com.ruoyi.common.core.web.page;
import com.ruoyi.common.core.utils.ServletUtils;
/**
*
*
* @author ruoyi
*/
public class TableSupport {
/**
*
*/
public static final String PAGE_NUM = "pageNum";
/**
*
*/
public static final String PAGE_SIZE = "pageSize";
/**
*
*/
public static final String ORDER_BY_COLUMN = "orderByColumn";
/**
* "desc" "asc".
*/
public static final String IS_ASC = "isAsc";
/**
*
*/
public static final String REASONABLE = "reasonable";
/**
*
*/
public static PageDomain getPageDomain() {
PageDomain pageDomain = new PageDomain();
pageDomain.setPageNum(ServletUtils.getParameterToInt(PAGE_NUM));
pageDomain.setPageSize(ServletUtils.getParameterToInt(PAGE_SIZE));
pageDomain.setOrderByColumn(ServletUtils.getParameter(ORDER_BY_COLUMN));
pageDomain.setIsAsc(ServletUtils.getParameter(IS_ASC));
pageDomain.setReasonable(ServletUtils.getParameterToBool(REASONABLE));
return pageDomain;
}
public static PageDomain buildPageRequest() {
return getPageDomain();
}
}

View File

@ -1,24 +0,0 @@
package com.ruoyi.common.datascope.annotation;
import java.lang.annotation.*;
/**
*
*
* @author ruoyi
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DataScope {
/**
*
*/
String deptAlias() default "";
/**
*
*/
String userAlias() default "";
}

View File

@ -1,128 +0,0 @@
package com.ruoyi.common.datascope.aspect;
import cn.hutool.core.util.ObjectUtil;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.web.domain.BaseEntity;
import com.ruoyi.common.datascope.annotation.DataScope;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.SysRole;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.model.LoginUser;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;
/**
*
*
* @author ruoyi
*/
@Aspect
@Component
public class DataScopeAspect {
/**
*
*/
public static final String DATA_SCOPE_ALL = "1";
/**
*
*/
public static final String DATA_SCOPE_CUSTOM = "2";
/**
*
*/
public static final String DATA_SCOPE_DEPT = "3";
/**
*
*/
public static final String DATA_SCOPE_DEPT_AND_CHILD = "4";
/**
*
*/
public static final String DATA_SCOPE_SELF = "5";
/**
*
*/
public static final String DATA_SCOPE = "dataScope";
@Before("@annotation(controllerDataScope)")
public void doBefore(JoinPoint point, DataScope controllerDataScope) throws Throwable {
clearDataScope(point);
handleDataScope(point, controllerDataScope);
}
protected void handleDataScope(final JoinPoint joinPoint, DataScope controllerDataScope) {
// 获取当前的用户
LoginUser loginUser = SecurityUtils.getLoginUser();
if (ObjectUtil.isNotNull(loginUser)) {
SysUser currentUser = loginUser.getSysUser();
// 如果是超级管理员,则不过滤数据
if (ObjectUtil.isNotNull(currentUser) && !currentUser.isAdmin()) {
dataScopeFilter(joinPoint, currentUser, controllerDataScope.deptAlias(),
controllerDataScope.userAlias());
}
}
}
/**
*
*
* @param joinPoint
* @param user
* @param deptAlias
* @param userAlias
*/
public static void dataScopeFilter(JoinPoint joinPoint, SysUser user, String deptAlias, String userAlias) {
StringBuilder sqlString = new StringBuilder();
for (SysRole role : user.getRoles()) {
String dataScope = role.getDataScope();
if (DATA_SCOPE_ALL.equals(dataScope)) {
sqlString = new StringBuilder();
break;
} else if (DATA_SCOPE_CUSTOM.equals(dataScope)) {
sqlString.append(StringUtils.format(
" OR {}.dept_id IN ( SELECT dept_id FROM sys_role_dept WHERE role_id = {} ) ", deptAlias,
role.getRoleId()));
} else if (DATA_SCOPE_DEPT.equals(dataScope)) {
sqlString.append(StringUtils.format(" OR {}.dept_id = {} ", deptAlias, user.getDeptId()));
} else if (DATA_SCOPE_DEPT_AND_CHILD.equals(dataScope)) {
sqlString.append(StringUtils.format(
" OR {}.dept_id IN ( SELECT dept_id FROM sys_dept WHERE dept_id = {} or find_in_set( {} , ancestors ) )",
deptAlias, user.getDeptId(), user.getDeptId()));
} else if (DATA_SCOPE_SELF.equals(dataScope)) {
if (StringUtils.isNotBlank(userAlias)) {
sqlString.append(StringUtils.format(" OR {}.user_id = {} ", userAlias, user.getUserId()));
} else {
// 数据权限为仅本人且没有userAlias别名不查询任何数据
sqlString.append(" OR 1=0 ");
}
}
}
if (StringUtils.isNotBlank(sqlString.toString())) {
Object params = joinPoint.getArgs()[0];
if (ObjectUtil.isNotNull(params) && params instanceof BaseEntity) {
BaseEntity baseEntity = (BaseEntity) params;
baseEntity.getParams().put(DATA_SCOPE, " AND (" + sqlString.substring(4) + ")");
}
}
}
/**
* sqlparams.dataScope
*/
private void clearDataScope(final JoinPoint joinPoint) {
Object params = joinPoint.getArgs()[0];
if (ObjectUtil.isNotNull(params) && params instanceof BaseEntity) {
BaseEntity baseEntity = (BaseEntity) params;
baseEntity.getParams().put(DATA_SCOPE, "");
}
}
}

View File

@ -1,6 +1,5 @@
package com.ruoyi.common.log.service; package com.ruoyi.common.log.service;
import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.system.api.RemoteLogService; import com.ruoyi.system.api.RemoteLogService;
import com.ruoyi.system.api.domain.SysOperLog; import com.ruoyi.system.api.domain.SysOperLog;
import org.apache.dubbo.config.annotation.DubboReference; import org.apache.dubbo.config.annotation.DubboReference;
@ -23,6 +22,6 @@ public class AsyncLogService {
*/ */
@Async @Async
public void saveSysLog(SysOperLog sysOperLog) { public void saveSysLog(SysOperLog sysOperLog) {
remoteLogService.saveLog(sysOperLog, SecurityConstants.INNER); remoteLogService.saveLog(sysOperLog);
} }
} }

View File

@ -9,19 +9,28 @@
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>ruoyi-common-datascope</artifactId> <artifactId>ruoyi-common-mybatis</artifactId>
<description> <description>
ruoyi-common-datascope权限范围 ruoyi-common-mybatis 数据库服务
</description> </description>
<dependencies> <dependencies>
<!-- RuoYi Common Security -->
<dependency> <dependency>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common-security</artifactId> <artifactId>ruoyi-common-security</artifactId>
<scope>provided</scope>
</dependency> </dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
<!-- sql性能分析插件 -->
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -0,0 +1,26 @@
package com.ruoyi.common.mybatis.annotation;
import java.lang.annotation.*;
/**
*
*
* @author Lion Li
* @version 3.5.0
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DataColumn {
/**
*
*/
String key() default "deptName";
/**
*
*/
String value() default "dept_id";
}

View File

@ -0,0 +1,18 @@
package com.ruoyi.common.mybatis.annotation;
import java.lang.annotation.*;
/**
*
*
* @author Lion Li
* @version 3.5.0
*/
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DataPermission {
DataColumn[] value();
}

View File

@ -0,0 +1,102 @@
package com.ruoyi.common.mybatis.config;
import cn.hutool.core.net.NetUtil;
import com.baomidou.mybatisplus.core.incrementer.DefaultIdentifierGenerator;
import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import com.ruoyi.common.mybatis.interceptor.PlusDataPermissionInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
* mybatis-plus()
*
* @author Lion Li
*/
@EnableTransactionManagement(proxyTargetClass = true)
@Configuration
@MapperScan("${mybatis-plus.mapperPackage}")
public class MybatisPlusConfiguration {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 数据权限处理
interceptor.addInnerInterceptor(dataPermissionInterceptor());
// 分页插件
interceptor.addInnerInterceptor(paginationInnerInterceptor());
// 乐观锁插件
interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor());
return interceptor;
}
/**
*
*/
public PlusDataPermissionInterceptor dataPermissionInterceptor() {
return new PlusDataPermissionInterceptor();
}
/**
*
*/
public PaginationInnerInterceptor paginationInnerInterceptor() {
PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
// 设置最大单页限制数量,默认 500 条,-1 不受限制
paginationInnerInterceptor.setMaxLimit(-1L);
// 分页合理化
paginationInnerInterceptor.setOverflow(true);
return paginationInnerInterceptor;
}
/**
*
*/
public OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor() {
return new OptimisticLockerInnerInterceptor();
}
/**
*
*/
// @Bean
// public MetaObjectHandler metaObjectHandler() {
// return new CreateAndUpdateMetaObjectHandler();
// }
/**
* 使
* ID
*/
@Primary
@Bean
public IdentifierGenerator idGenerator() {
return new DefaultIdentifierGenerator(NetUtil.getLocalhost());
}
/**
* PaginationInnerInterceptor
* https://baomidou.com/pages/97710a/
* OptimisticLockerInnerInterceptor
* https://baomidou.com/pages/0d93c0/
* MetaObjectHandler
* https://baomidou.com/pages/4c6bcf/
* ISqlInjector sql
* https://baomidou.com/pages/42ea4a/
* BlockAttackInnerInterceptor
* https://baomidou.com/pages/f9a237/
* IllegalSQLInnerInterceptor sql(SQL)
* IdentifierGenerator
* https://baomidou.com/pages/568eb2/
* TenantLineInnerInterceptor
* https://baomidou.com/pages/aef2f2/
* DynamicTableNameInnerInterceptor
* https://baomidou.com/pages/2a45ff/
*/
}

View File

@ -0,0 +1,229 @@
package com.ruoyi.common.mybatis.core.mapper;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.enums.SqlMethod;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.TableInfo;
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
import com.baomidou.mybatisplus.core.toolkit.*;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
import com.ruoyi.common.core.utils.BeanCopyUtils;
import org.apache.ibatis.binding.MapperMethod;
import org.apache.ibatis.logging.Log;
import org.apache.ibatis.logging.LogFactory;
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* Mapper ,
*
* @param <M> mapper
* @param <T> table
* @param <V> vo
* @author Lion Li
* @since 2021-05-13
*/
@SuppressWarnings("unchecked")
public interface BaseMapperPlus<M, T, V> extends BaseMapper<T> {
Log log = LogFactory.getLog(BaseMapperPlus.class);
int DEFAULT_BATCH_SIZE = 1000;
default Class<V> currentVoClass() {
return (Class<V>) ReflectionKit.getSuperClassGenericType(this.getClass(), BaseMapperPlus.class, 2);
}
default Class<T> currentModelClass() {
return (Class<T>) ReflectionKit.getSuperClassGenericType(this.getClass(), BaseMapperPlus.class, 1);
}
default Class<M> currentMapperClass() {
return (Class<M>) ReflectionKit.getSuperClassGenericType(this.getClass(), BaseMapperPlus.class, 0);
}
default List<T> selectList() {
return this.selectList(new QueryWrapper<>());
}
/**
*
*/
default boolean insertBatch(Collection<T> entityList) {
return insertBatch(entityList, DEFAULT_BATCH_SIZE);
}
/**
*
*/
default boolean updateBatchById(Collection<T> entityList) {
return updateBatchById(entityList, DEFAULT_BATCH_SIZE);
}
/**
*
*/
default boolean insertOrUpdateBatch(Collection<T> entityList) {
return insertOrUpdateBatch(entityList, DEFAULT_BATCH_SIZE);
}
/**
* ()
*/
default boolean insertBatch(Collection<T> entityList, int batchSize) {
String sqlStatement = SqlHelper.getSqlStatement(this.currentMapperClass(), SqlMethod.INSERT_ONE);
return SqlHelper.executeBatch(this.currentModelClass(), log, entityList, batchSize,
(sqlSession, entity) -> sqlSession.insert(sqlStatement, entity));
}
/**
* ()
*/
default boolean updateBatchById(Collection<T> entityList, int batchSize) {
String sqlStatement = SqlHelper.getSqlStatement(this.currentMapperClass(), SqlMethod.UPDATE_BY_ID);
return SqlHelper.executeBatch(this.currentModelClass(), log, entityList, batchSize,
(sqlSession, entity) -> {
MapperMethod.ParamMap<T> param = new MapperMethod.ParamMap<>();
param.put(Constants.ENTITY, entity);
sqlSession.update(sqlStatement, param);
});
}
/**
* ()
*/
default boolean insertOrUpdateBatch(Collection<T> entityList, int batchSize) {
TableInfo tableInfo = TableInfoHelper.getTableInfo(this.currentModelClass());
Assert.notNull(tableInfo, "error: can not execute. because can not find cache of TableInfo for entity!");
String keyProperty = tableInfo.getKeyProperty();
Assert.notEmpty(keyProperty, "error: can not execute. because can not find column for id from entity!");
return SqlHelper.saveOrUpdateBatch(this.currentModelClass(), getClass(), log, entityList, batchSize, (sqlSession, entity) -> {
Object idVal = tableInfo.getPropertyValue(entity, keyProperty);
String sqlStatement = SqlHelper.getSqlStatement(this.currentMapperClass(), SqlMethod.INSERT_ONE);
return StringUtils.checkValNull(idVal)
|| CollectionUtils.isEmpty(sqlSession.selectList(sqlStatement, entity));
}, (sqlSession, entity) -> {
MapperMethod.ParamMap<T> param = new MapperMethod.ParamMap<>();
param.put(Constants.ENTITY, entity);
String sqlStatement = SqlHelper.getSqlStatement(this.currentMapperClass(), SqlMethod.UPDATE_BY_ID);
sqlSession.update(sqlStatement, param);
});
}
/**
* ()
*/
default boolean insertOrUpdate(T entity) {
if (null != entity) {
TableInfo tableInfo = TableInfoHelper.getTableInfo(this.currentModelClass());
Assert.notNull(tableInfo, "error: can not execute. because can not find cache of TableInfo for entity!");
String keyProperty = tableInfo.getKeyProperty();
Assert.notEmpty(keyProperty, "error: can not execute. because can not find column for id from entity!");
Object idVal = tableInfo.getPropertyValue(entity, tableInfo.getKeyProperty());
return StringUtils.checkValNull(idVal) || Objects.isNull(selectById((Serializable) idVal)) ? insert(entity) > 0 : updateById(entity) > 0;
}
return false;
}
default V selectVoById(Serializable id) {
return selectVoById(id, this.currentVoClass());
}
/**
* ID
*/
default <C> C selectVoById(Serializable id, Class<C> voClass) {
T obj = this.selectById(id);
if (ObjectUtil.isNull(obj)) {
return null;
}
return BeanCopyUtils.copy(obj, voClass);
}
default List<V> selectVoById(Collection<? extends Serializable> idList) {
return selectVoBatchIds(idList, this.currentVoClass());
}
/**
* ID
*/
default <C> List<C> selectVoBatchIds(Collection<? extends Serializable> idList, Class<C> voClass) {
List<T> list = this.selectBatchIds(idList);
if (CollUtil.isEmpty(list)) {
return CollUtil.newArrayList();
}
return BeanCopyUtils.copyList(list, voClass);
}
default List<V> selectVoByMap(Map<String, Object> map) {
return selectVoByMap(map, this.currentVoClass());
}
/**
* columnMap
*/
default <C> List<C> selectVoByMap(Map<String, Object> map, Class<C> voClass) {
List<T> list = this.selectByMap(map);
if (CollUtil.isEmpty(list)) {
return CollUtil.newArrayList();
}
return BeanCopyUtils.copyList(list, voClass);
}
default V selectVoOne(Wrapper<T> wrapper) {
return selectVoOne(wrapper, this.currentVoClass());
}
/**
* entity
*/
default <C> C selectVoOne(Wrapper<T> wrapper, Class<C> voClass) {
T obj = this.selectOne(wrapper);
if (ObjectUtil.isNull(obj)) {
return null;
}
return BeanCopyUtils.copy(obj, voClass);
}
default List<V> selectVoList(Wrapper<T> wrapper) {
return selectVoList(wrapper, this.currentVoClass());
}
/**
* entity
*/
default <C> List<C> selectVoList(Wrapper<T> wrapper, Class<C> voClass) {
List<T> list = this.selectList(wrapper);
if (CollUtil.isEmpty(list)) {
return CollUtil.newArrayList();
}
return BeanCopyUtils.copyList(list, voClass);
}
default <P extends IPage<V>> P selectVoPage(IPage<T> page, Wrapper<T> wrapper) {
return selectVoPage(page, wrapper, this.currentVoClass());
}
/**
* VO
*/
default <C, P extends IPage<C>> P selectVoPage(IPage<T> page, Wrapper<T> wrapper, Class<C> voClass) {
IPage<T> pageData = this.selectPage(page, wrapper);
IPage<C> voPage = new Page<>(pageData.getCurrent(), pageData.getSize(), pageData.getTotal());
if (CollUtil.isEmpty(pageData.getRecords())) {
return (P) voPage;
}
voPage.setRecords(BeanCopyUtils.copyList(pageData.getRecords(), voClass));
return (P) voPage;
}
}

View File

@ -0,0 +1,91 @@
package com.ruoyi.common.mybatis.core.page;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.sql.SqlUtil;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
*
*
* @author Lion Li
*/
@Data
public class PageQuery implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
@ApiModelProperty("分页大小")
private Integer pageSize;
/**
*
*/
@ApiModelProperty("当前页数")
private Integer pageNum;
/**
*
*/
@ApiModelProperty("排序列")
private String orderByColumn;
/**
* descasc
*/
@ApiModelProperty(value = "排序的方向", example = "asc,desc")
private String isAsc;
/**
*
*/
public static final int DEFAULT_PAGE_NUM = 1;
/**
*
*/
public static final int DEFAULT_PAGE_SIZE = Integer.MAX_VALUE;
public <T> Page<T> build() {
Integer pageNum = ObjectUtil.defaultIfNull(getPageNum(), DEFAULT_PAGE_NUM);
Integer pageSize = ObjectUtil.defaultIfNull(getPageSize(), DEFAULT_PAGE_SIZE);
if (pageNum <= 0) {
pageNum = DEFAULT_PAGE_NUM;
}
Page<T> page = new Page<>(pageNum, pageSize);
OrderItem orderItem = buildOrderItem();
if (ObjectUtil.isNotNull(orderItem)) {
page.addOrder(orderItem);
}
return page;
}
private OrderItem buildOrderItem() {
// 兼容前端排序类型
if ("ascending".equals(isAsc)) {
isAsc = "asc";
} else if ("descending".equals(isAsc)) {
isAsc = "desc";
}
if (StringUtils.isNotBlank(orderByColumn)) {
String orderBy = SqlUtil.escapeOrderBySql(orderByColumn);
orderBy = StringUtils.toUnderScoreCase(orderBy);
if ("asc".equals(isAsc)) {
return OrderItem.asc(orderBy);
} else if ("desc".equals(isAsc)) {
return OrderItem.desc(orderBy);
}
}
return null;
}
}

View File

@ -0,0 +1,85 @@
package com.ruoyi.common.mybatis.core.page;
import cn.hutool.http.HttpStatus;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
*
*
* @author Lion Li
*/
@Data
@NoArgsConstructor
@ApiModel("分页响应对象")
public class TableDataInfo<T> implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
@ApiModelProperty("总记录数")
private long total;
/**
*
*/
@ApiModelProperty("列表数据")
private List<T> rows;
/**
*
*/
@ApiModelProperty("消息状态码")
private int code;
/**
*
*/
@ApiModelProperty("消息内容")
private String msg;
/**
*
*
* @param list
* @param total
*/
public TableDataInfo(List<T> list, long total) {
this.rows = list;
this.total = total;
}
public static <T> TableDataInfo<T> build(IPage<T> page) {
TableDataInfo<T> rspData = new TableDataInfo<>();
rspData.setCode(HttpStatus.HTTP_OK);
rspData.setMsg("查询成功");
rspData.setRows(page.getRecords());
rspData.setTotal(page.getTotal());
return rspData;
}
public static <T> TableDataInfo<T> build(List<T> list) {
TableDataInfo<T> rspData = new TableDataInfo<>();
rspData.setCode(HttpStatus.HTTP_OK);
rspData.setMsg("查询成功");
rspData.setRows(list);
rspData.setTotal(list.size());
return rspData;
}
public static <T> TableDataInfo<T> build() {
TableDataInfo<T> rspData = new TableDataInfo<>();
rspData.setCode(HttpStatus.HTTP_OK);
rspData.setMsg("查询成功");
return rspData;
}
}

View File

@ -0,0 +1,72 @@
package com.ruoyi.common.mybatis.enums;
import com.ruoyi.common.core.utils.StringUtils;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
*
* <p>
* spel
* <p>
* user SysUser
* 使 {@link com.ruoyi.common.mybatis.helper.DataPermissionHelper}
* sdss SysDataScopeService
* sdss
*
* @author Lion Li
* @version 3.5.0
*/
@Getter
@AllArgsConstructor
public enum DataScopeType {
/**
*
*/
ALL("1", "", ""),
/**
*
*/
CUSTOM("2", " #{#deptName} IN ( #{@sdss.getRoleCustom( #user.roleId )} ) ", ""),
/**
*
*/
DEPT("3", " #{#deptName} = #{#user.deptId} ", ""),
/**
*
*/
DEPT_AND_CHILD("4", " #{#deptName} IN ( #{@sdss.getDeptAndChild( #user.deptId )} )", ""),
/**
*
*/
SELF("5", " #{#userName} = #{#user.userId} ", " 1 = 0 ");
private final String code;
/**
* spel
*/
private final String sqlTemplate;
/**
* sqlTemplate
*/
private final String elseSql;
public static DataScopeType findCode(String code) {
if (StringUtils.isBlank(code)) {
return null;
}
for (DataScopeType type : values()) {
if (type.getCode().equals(code)) {
return type;
}
}
return null;
}
}

View File

@ -0,0 +1,89 @@
package com.ruoyi.common.mybatis.handler;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpStatus;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.web.domain.BaseEntity;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.model.LoginUser;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import java.util.Date;
/**
* MP
*
* @author Lion Li
* @date 2021/4/25
*/
@Slf4j
public class CreateAndUpdateMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
try {
if (ObjectUtil.isNotNull(metaObject) && metaObject.getOriginalObject() instanceof BaseEntity) {
BaseEntity baseEntity = (BaseEntity) metaObject.getOriginalObject();
Date current = new Date();
// 创建时间为空 则填充
if (ObjectUtil.isNull(baseEntity.getCreateTime())) {
baseEntity.setCreateTime(current);
}
// 更新时间为空 则填充
if (ObjectUtil.isNull(baseEntity.getUpdateTime())) {
baseEntity.setUpdateTime(current);
}
String username = getLoginUsername();
// 当前已登录 且 创建人为空 则填充
if (StringUtils.isNotBlank(username)
&& StringUtils.isBlank(baseEntity.getCreateBy())) {
baseEntity.setCreateBy(username);
}
// 当前已登录 且 更新人为空 则填充
if (StringUtils.isNotBlank(username)
&& StringUtils.isBlank(baseEntity.getUpdateBy())) {
baseEntity.setUpdateBy(username);
}
}
} catch (Exception e) {
throw new ServiceException("自动注入异常 => " + e.getMessage(), HttpStatus.HTTP_UNAUTHORIZED);
}
}
@Override
public void updateFill(MetaObject metaObject) {
try {
if (ObjectUtil.isNotNull(metaObject) && metaObject.getOriginalObject() instanceof BaseEntity) {
BaseEntity baseEntity = (BaseEntity) metaObject.getOriginalObject();
Date current = new Date();
// 更新时间填充(不管为不为空)
baseEntity.setUpdateTime(current);
String username = getLoginUsername();
// 当前已登录 更新人填充(不管为不为空)
if (StringUtils.isNotBlank(username)) {
baseEntity.setUpdateBy(username);
}
}
} catch (Exception e) {
throw new ServiceException("自动注入异常 => " + e.getMessage(), HttpStatus.HTTP_UNAUTHORIZED);
}
}
/**
*
*/
private String getLoginUsername() {
LoginUser loginUser;
try {
loginUser = SecurityUtils.getLoginUser();
} catch (Exception e) {
log.warn("自动注入警告 => 用户未登录");
return null;
}
return loginUser.getUsername();
}
}

View File

@ -0,0 +1,191 @@
package com.ruoyi.common.mybatis.handler;
import cn.hutool.core.annotation.AnnotationUtil;
import cn.hutool.core.collection.ConcurrentHashSet;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ClassUtil;
import cn.hutool.core.util.ObjectUtil;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.SpringUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.mybatis.annotation.DataColumn;
import com.ruoyi.common.mybatis.annotation.DataPermission;
import com.ruoyi.common.mybatis.enums.DataScopeType;
import com.ruoyi.common.mybatis.helper.DataPermissionHelper;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.SysRole;
import com.ruoyi.system.api.domain.SysUser;
import lombok.extern.slf4j.Slf4j;
import net.sf.jsqlparser.JSQLParserException;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.expression.Parenthesis;
import net.sf.jsqlparser.expression.operators.conditional.AndExpression;
import net.sf.jsqlparser.parser.CCJSqlParserUtil;
import org.springframework.context.expression.BeanFactoryResolver;
import org.springframework.expression.BeanResolver;
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.ParserContext;
import org.springframework.expression.common.TemplateParserContext;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
/**
*
*
* @author Lion Li
* @version 3.5.0
*/
@Slf4j
public class PlusDataPermissionHandler {
/**
* ()
*/
private final Map<String, DataPermission> dataPermissionCacheMap = new ConcurrentHashMap<>();
/**
*
*/
private final Set<String> inavlidCacheSet = new ConcurrentHashSet<>();
/**
* spel
*/
private final ExpressionParser parser = new SpelExpressionParser();
private final ParserContext parserContext = new TemplateParserContext();
/**
* bean spel bean
*/
private final BeanResolver beanResolver = new BeanFactoryResolver(SpringUtils.getBeanFactory());
public Expression getSqlSegment(Expression where, String mappedStatementId, boolean isSelect) {
DataColumn[] dataColumns = findAnnotation(mappedStatementId);
if (ArrayUtil.isEmpty(dataColumns)) {
inavlidCacheSet.add(mappedStatementId);
return where;
}
SysUser currentUser = DataPermissionHelper.getVariable("user");
if (ObjectUtil.isNull(currentUser)) {
currentUser = SecurityUtils.getLoginUser().getSysUser();
DataPermissionHelper.setVariable("user", currentUser);
}
// 如果是超级管理员,则不过滤数据
if (ObjectUtil.isNull(currentUser) || currentUser.isAdmin()) {
return where;
}
String dataFilterSql = buildDataFilter(dataColumns, isSelect);
if (StringUtils.isBlank(dataFilterSql)) {
return where;
}
try {
Expression expression = CCJSqlParserUtil.parseExpression(dataFilterSql);
// 数据权限使用单独的括号 防止与其他条件冲突
Parenthesis parenthesis = new Parenthesis(expression);
if (ObjectUtil.isNotNull(where)) {
return new AndExpression(where, parenthesis);
} else {
return parenthesis;
}
} catch (JSQLParserException e) {
throw new ServiceException("数据权限解析异常 => " + e.getMessage());
}
}
/**
* sql
*/
private String buildDataFilter(DataColumn[] dataColumns, boolean isSelect) {
StringBuilder sqlString = new StringBuilder();
// 更新或删除需满足所有条件
String joinStr = isSelect ? " OR " : " AND ";
SysUser user = DataPermissionHelper.getVariable("user");
StandardEvaluationContext context = new StandardEvaluationContext();
context.setBeanResolver(beanResolver);
DataPermissionHelper.getContext().forEach(context::setVariable);
for (SysRole role : user.getRoles()) {
user.setRoleId(role.getRoleId());
// 获取角色权限泛型
DataScopeType type = DataScopeType.findCode(role.getDataScope());
if (ObjectUtil.isNull(type)) {
throw new ServiceException("角色数据范围异常 => " + role.getDataScope());
}
// 全部数据权限直接返回
if (type == DataScopeType.ALL) {
return "";
}
boolean isSuccess = false;
for (DataColumn dataColumn : dataColumns) {
// 不包含 key 变量 则不处理
if (!StringUtils.contains(type.getSqlTemplate(), "#" + dataColumn.key())) {
continue;
}
// 设置注解变量 key 为表达式变量 value 为变量值
context.setVariable(dataColumn.key(), dataColumn.value());
// 解析sql模板并填充
String sql = parser.parseExpression(type.getSqlTemplate(), parserContext).getValue(context, String.class);
sqlString.append(joinStr).append(sql);
isSuccess = true;
}
// 未处理成功则填充兜底方案
if (!isSuccess) {
sqlString.append(joinStr).append(type.getElseSql());
}
}
if (StringUtils.isNotBlank(sqlString.toString())) {
return sqlString.substring(joinStr.length());
}
return "";
}
private DataColumn[] findAnnotation(String mappedStatementId) {
StringBuilder sb = new StringBuilder(mappedStatementId);
int index = sb.lastIndexOf(".");
String clazzName = sb.substring(0, index);
String methodName = sb.substring(index + 1, sb.length());
Class<?> clazz = ClassUtil.loadClass(clazzName);
List<Method> methods = Arrays.stream(ClassUtil.getDeclaredMethods(clazz))
.filter(method -> method.getName().equals(methodName)).collect(Collectors.toList());
DataPermission dataPermission;
// 获取方法注解
for (Method method : methods) {
dataPermission = dataPermissionCacheMap.get(mappedStatementId);
if (ObjectUtil.isNotNull(dataPermission)) {
return dataPermission.value();
}
if (AnnotationUtil.hasAnnotation(method, DataPermission.class)) {
dataPermission = AnnotationUtil.getAnnotation(method, DataPermission.class);
dataPermissionCacheMap.put(mappedStatementId, dataPermission);
return dataPermission.value();
}
}
dataPermission = dataPermissionCacheMap.get(clazz.getName());
if (ObjectUtil.isNotNull(dataPermission)) {
return dataPermission.value();
}
// 获取类注解
if (AnnotationUtil.hasAnnotation(clazz, DataPermission.class)) {
dataPermission = AnnotationUtil.getAnnotation(clazz, DataPermission.class);
dataPermissionCacheMap.put(clazz.getName(), dataPermission);
return dataPermission.value();
}
return null;
}
/**
*
*/
public boolean isInvalid(String mappedStatementId) {
return inavlidCacheSet.contains(mappedStatementId);
}
}

View File

@ -0,0 +1,47 @@
package com.ruoyi.common.mybatis.helper;
import cn.hutool.core.util.ObjectUtil;
import com.ruoyi.common.core.utils.ServletUtils;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;
/**
*
*
* @author Lion Li
* @version 3.5.0
*/
@NoArgsConstructor(access = AccessLevel.PRIVATE)
@SuppressWarnings("unchecked cast")
public class DataPermissionHelper {
private static final String DATA_PERMISSION_KEY = "data:permission";
public static <T> T getVariable(String key) {
Map<String, Object> context = getContext();
return (T) context.get(key);
}
public static void setVariable(String key, Object value) {
Map<String, Object> context = getContext();
context.put(key, value);
}
public static Map<String, Object> getContext() {
HttpServletRequest request = ServletUtils.getRequest();
Object attribute = request.getAttribute(DATA_PERMISSION_KEY);
if (ObjectUtil.isNull(attribute)) {
request.setAttribute(DATA_PERMISSION_KEY, new HashMap<>());
attribute = request.getAttribute(DATA_PERMISSION_KEY);
}
if (attribute instanceof Map) {
return (Map<String, Object>) attribute;
}
throw new NullPointerException("data permission context type exception");
}
}

View File

@ -0,0 +1,108 @@
package com.ruoyi.common.mybatis.interceptor;
import com.baomidou.mybatisplus.core.plugins.InterceptorIgnoreHelper;
import com.baomidou.mybatisplus.core.toolkit.PluginUtils;
import com.baomidou.mybatisplus.extension.parser.JsqlParserSupport;
import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor;
import com.ruoyi.common.mybatis.handler.PlusDataPermissionHandler;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.statement.delete.Delete;
import net.sf.jsqlparser.statement.select.PlainSelect;
import net.sf.jsqlparser.statement.select.Select;
import net.sf.jsqlparser.statement.select.SelectBody;
import net.sf.jsqlparser.statement.select.SetOperationList;
import net.sf.jsqlparser.statement.update.Update;
import org.apache.ibatis.executor.Executor;
import org.apache.ibatis.executor.statement.StatementHandler;
import org.apache.ibatis.mapping.BoundSql;
import org.apache.ibatis.mapping.MappedStatement;
import org.apache.ibatis.mapping.SqlCommandType;
import org.apache.ibatis.session.ResultHandler;
import org.apache.ibatis.session.RowBounds;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
/**
*
*
* @author Lion Li
* @version 3.5.0
*/
public class PlusDataPermissionInterceptor extends JsqlParserSupport implements InnerInterceptor {
private final PlusDataPermissionHandler dataPermissionHandler = new PlusDataPermissionHandler();
@Override
public void beforeQuery(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) throws SQLException {
// 检查忽略注解
if (InterceptorIgnoreHelper.willIgnoreDataPermission(ms.getId())) {
return;
}
// 检查是否无效 无数据权限注解
if (dataPermissionHandler.isInvalid(ms.getId())) {
return;
}
// 解析 sql 分配对应方法
PluginUtils.MPBoundSql mpBs = PluginUtils.mpBoundSql(boundSql);
mpBs.sql(parserSingle(mpBs.sql(), ms.getId()));
}
@Override
public void beforePrepare(StatementHandler sh, Connection connection, Integer transactionTimeout) {
PluginUtils.MPStatementHandler mpSh = PluginUtils.mpStatementHandler(sh);
MappedStatement ms = mpSh.mappedStatement();
SqlCommandType sct = ms.getSqlCommandType();
if (sct == SqlCommandType.UPDATE || sct == SqlCommandType.DELETE) {
if (InterceptorIgnoreHelper.willIgnoreDataPermission(ms.getId())) {
return;
}
PluginUtils.MPBoundSql mpBs = mpSh.mPBoundSql();
mpBs.sql(parserMulti(mpBs.sql(), ms.getId()));
}
}
@Override
protected void processSelect(Select select, int index, String sql, Object obj) {
SelectBody selectBody = select.getSelectBody();
if (selectBody instanceof PlainSelect) {
this.setWhere((PlainSelect) selectBody, (String) obj);
} else if (selectBody instanceof SetOperationList) {
SetOperationList setOperationList = (SetOperationList) selectBody;
List<SelectBody> selectBodyList = setOperationList.getSelects();
selectBodyList.forEach(s -> this.setWhere((PlainSelect) s, (String) obj));
}
}
@Override
protected void processUpdate(Update update, int index, String sql, Object obj) {
Expression sqlSegment = dataPermissionHandler.getSqlSegment(update.getWhere(), (String) obj, false);
if (null != sqlSegment) {
update.setWhere(sqlSegment);
}
}
@Override
protected void processDelete(Delete delete, int index, String sql, Object obj) {
Expression sqlSegment = dataPermissionHandler.getSqlSegment(delete.getWhere(), (String) obj, false);
if (null != sqlSegment) {
delete.setWhere(sqlSegment);
}
}
/**
* where
*
* @param plainSelect
* @param mappedStatementId id
*/
protected void setWhere(PlainSelect plainSelect, String mappedStatementId) {
Expression sqlSegment = dataPermissionHandler.getSqlSegment(plainSelect.getWhere(), mappedStatementId, true);
if (null != sqlSegment) {
plainSelect.setWhere(sqlSegment);
}
}
}

View File

@ -1,4 +1,2 @@
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.ruoyi.common.datascope.aspect.DataScopeAspect com.ruoyi.common.mybatis.config.MybatisPlusConfiguration

View File

@ -1,6 +1,5 @@
package com.ruoyi.common.security.annotation; package com.ruoyi.common.security.annotation;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.EnableAspectJAutoProxy; import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableAsync;
@ -12,8 +11,8 @@ import java.lang.annotation.*;
@Inherited @Inherited
// 表示通过aop框架暴露该代理对象,AopContext能够访问 // 表示通过aop框架暴露该代理对象,AopContext能够访问
@EnableAspectJAutoProxy(exposeProxy = true) @EnableAspectJAutoProxy(exposeProxy = true)
// 指定要扫描的Mapper类的包的路径 //// 指定要扫描的Mapper类的包的路径
@MapperScan("com.ruoyi.**.mapper") //@MapperScan("com.ruoyi.**.mapper")
// 开启线程异步执行 // 开启线程异步执行
@EnableAsync @EnableAsync
public @interface EnableCustomConfig { public @interface EnableCustomConfig {

View File

@ -22,6 +22,11 @@
<artifactId>spring-cloud-starter-gateway</artifactId> <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
<!-- SpringCloud Alibaba Nacos --> <!-- SpringCloud Alibaba Nacos -->
<dependency> <dependency>
<groupId>com.alibaba.cloud</groupId> <groupId>com.alibaba.cloud</groupId>

View File

@ -76,6 +76,11 @@
<artifactId>ruoyi-common-web</artifactId> <artifactId>ruoyi-common-web</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common-mybatis</artifactId>
</dependency>
<!-- RuoYi Common DataSource --> <!-- RuoYi Common DataSource -->
<dependency> <dependency>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>

View File

@ -1,11 +1,13 @@
package com.ruoyi.gen.controller; package com.ruoyi.gen.controller;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.io.IoUtil;
import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.mybatis.core.page.PageQuery;
import com.ruoyi.common.mybatis.core.page.TableDataInfo;
import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.ruoyi.gen.domain.GenTable; import com.ruoyi.gen.domain.GenTable;
import com.ruoyi.gen.domain.GenTableColumn; import com.ruoyi.gen.domain.GenTableColumn;
@ -13,8 +15,6 @@ import com.ruoyi.gen.service.IGenTableColumnService;
import com.ruoyi.gen.service.IGenTableService; import com.ruoyi.gen.service.IGenTableService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -29,7 +29,7 @@ import java.util.Map;
* *
* @author ruoyi * @author ruoyi
*/ */
@RequiredArgsConstructor(onConstructor_ = @Autowired) @RequiredArgsConstructor
@RequestMapping("/gen") @RequestMapping("/gen")
@RestController @RestController
@Api(tags = "代码生成") @Api(tags = "代码生成")
@ -43,10 +43,8 @@ public class GenController extends BaseController {
*/ */
@RequiresPermissions("tool:gen:list") @RequiresPermissions("tool:gen:list")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo genList(GenTable genTable) { public TableDataInfo<GenTable> genList(GenTable genTable, PageQuery pageQuery) {
startPage(); return genTableService.selectPageGenTableList(genTable, pageQuery);
List<GenTable> list = genTableService.selectGenTableList(genTable);
return getDataTable(list);
} }
/** /**
@ -70,18 +68,16 @@ public class GenController extends BaseController {
*/ */
@RequiresPermissions("tool:gen:list") @RequiresPermissions("tool:gen:list")
@GetMapping("/db/list") @GetMapping("/db/list")
public TableDataInfo dataList(GenTable genTable) { public TableDataInfo<GenTable> dataList(GenTable genTable, PageQuery pageQuery) {
startPage(); return genTableService.selectPageDbTableList(genTable, pageQuery);
List<GenTable> list = genTableService.selectDbTableList(genTable);
return getDataTable(list);
} }
/** /**
* *
*/ */
@GetMapping(value = "/column/{talbleId}") @GetMapping(value = "/column/{talbleId}")
public TableDataInfo columnList(Long tableId) { public TableDataInfo<GenTableColumn> columnList(Long tableId) {
TableDataInfo dataInfo = new TableDataInfo(); TableDataInfo<GenTableColumn> dataInfo = new TableDataInfo<>();
List<GenTableColumn> list = genTableColumnService.selectGenTableColumnListByTableId(tableId); List<GenTableColumn> list = genTableColumnService.selectGenTableColumnListByTableId(tableId);
dataInfo.setRows(list); dataInfo.setRows(list);
dataInfo.setTotal(list.size()); dataInfo.setTotal(list.size());
@ -185,9 +181,11 @@ public class GenController extends BaseController {
*/ */
private void genCode(HttpServletResponse response, byte[] data) throws IOException { private void genCode(HttpServletResponse response, byte[] data) throws IOException {
response.reset(); response.reset();
response.addHeader("Access-Control-Allow-Origin", "*");
response.addHeader("Access-Control-Expose-Headers", "Content-Disposition");
response.setHeader("Content-Disposition", "attachment; filename=\"ruoyi.zip\""); response.setHeader("Content-Disposition", "attachment; filename=\"ruoyi.zip\"");
response.addHeader("Content-Length", "" + data.length); response.addHeader("Content-Length", "" + data.length);
response.setContentType("application/octet-stream; charset=UTF-8"); response.setContentType("application/octet-stream; charset=UTF-8");
IOUtils.write(data, response.getOutputStream()); IoUtil.write(response.getOutputStream(), false, data);
} }
} }

View File

@ -1,12 +1,13 @@
package com.ruoyi.gen.domain; package com.ruoyi.gen.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.constant.GenConstants; import com.ruoyi.common.core.constant.GenConstants;
import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.web.domain.BaseEntity; import com.ruoyi.common.core.web.domain.BaseEntity;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
import javax.validation.Valid; import javax.validation.Valid;
@ -16,16 +17,18 @@ import java.util.List;
/** /**
* gen_table * gen_table
* *
* @author ruoyi * @author Lion Li
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@NoArgsConstructor @TableName("gen_table")
public class GenTable extends BaseEntity { public class GenTable extends BaseEntity {
/** /**
* *
*/ */
@TableId(value = "table_id")
private Long tableId; private Long tableId;
/** /**
@ -104,17 +107,20 @@ public class GenTable extends BaseEntity {
/** /**
* *
*/ */
@TableField(exist = false)
private GenTableColumn pkColumn; private GenTableColumn pkColumn;
/** /**
* *
*/ */
@TableField(exist = false)
private GenTable subTable; private GenTable subTable;
/** /**
* *
*/ */
@Valid @Valid
@TableField(exist = false)
private List<GenTableColumn> columns; private List<GenTableColumn> columns;
/** /**
@ -122,29 +128,39 @@ public class GenTable extends BaseEntity {
*/ */
private String options; private String options;
/**
*
*/
private String remark;
/** /**
* *
*/ */
@TableField(exist = false)
private String treeCode; private String treeCode;
/** /**
* *
*/ */
@TableField(exist = false)
private String treeParentCode; private String treeParentCode;
/** /**
* *
*/ */
@TableField(exist = false)
private String treeName; private String treeName;
/** /**
* ID * ID
*/ */
@TableField(exist = false)
private String parentMenuId; private String parentMenuId;
/** /**
* *
*/ */
@TableField(exist = false)
private String parentMenuName; private String parentMenuName;
public boolean isSub() { public boolean isSub() {
@ -178,7 +194,7 @@ public class GenTable extends BaseEntity {
public static boolean isSuperColumn(String tplCategory, String javaField) { public static boolean isSuperColumn(String tplCategory, String javaField) {
if (isTree(tplCategory)) { if (isTree(tplCategory)) {
return StringUtils.equalsAnyIgnoreCase(javaField, return StringUtils.equalsAnyIgnoreCase(javaField,
ArrayUtils.addAll(GenConstants.TREE_ENTITY, GenConstants.BASE_ENTITY)); ArrayUtils.addAll(GenConstants.TREE_ENTITY, GenConstants.BASE_ENTITY));
} }
return StringUtils.equalsAnyIgnoreCase(javaField, GenConstants.BASE_ENTITY); return StringUtils.equalsAnyIgnoreCase(javaField, GenConstants.BASE_ENTITY);
} }

View File

@ -1,27 +1,31 @@
package com.ruoyi.gen.domain; package com.ruoyi.gen.domain;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.web.domain.BaseEntity; import com.ruoyi.common.core.web.domain.BaseEntity;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
/** /**
* gen_table_column * gen_table_column
* *
* @author ruoyi * @author Lion Li
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@NoArgsConstructor @TableName("gen_table_column")
public class GenTableColumn extends BaseEntity { public class GenTableColumn extends BaseEntity {
/** /**
* *
*/ */
@TableId(value = "column_id")
private Long columnId; private Long columnId;
/** /**
@ -37,6 +41,7 @@ public class GenTableColumn extends BaseEntity {
/** /**
* *
*/ */
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String columnComment; private String columnComment;
/** /**
@ -58,36 +63,43 @@ public class GenTableColumn extends BaseEntity {
/** /**
* 1 * 1
*/ */
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String isPk; private String isPk;
/** /**
* 1 * 1
*/ */
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String isIncrement; private String isIncrement;
/** /**
* 1 * 1
*/ */
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String isRequired; private String isRequired;
/** /**
* 1 * 1
*/ */
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String isInsert; private String isInsert;
/** /**
* 1 * 1
*/ */
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String isEdit; private String isEdit;
/** /**
* 1 * 1
*/ */
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String isList; private String isList;
/** /**
* 1 * 1
*/ */
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String isQuery; private String isQuery;
/** /**
@ -111,7 +123,7 @@ public class GenTableColumn extends BaseEntity {
private Integer sort; private Integer sort;
public String getCapJavaField() { public String getCapJavaField() {
return StringUtils.capitalize(javaField); return StringUtils.uncapitalize(javaField);
} }
public boolean isPk() { public boolean isPk() {
@ -176,10 +188,10 @@ public class GenTableColumn extends BaseEntity {
public static boolean isSuperColumn(String javaField) { public static boolean isSuperColumn(String javaField) {
return StringUtils.equalsAnyIgnoreCase(javaField, return StringUtils.equalsAnyIgnoreCase(javaField,
// BaseEntity // BaseEntity
"createBy", "createTime", "updateBy", "updateTime", "remark", "createBy", "createTime", "updateBy", "updateTime",
// TreeEntity // TreeEntity
"parentName", "parentId", "orderNum", "ancestors"); "parentName", "parentId");
} }
public boolean isUsableColumn() { public boolean isUsableColumn() {

View File

@ -1,5 +1,7 @@
package com.ruoyi.gen.mapper; package com.ruoyi.gen.mapper;
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
import com.ruoyi.gen.domain.GenTableColumn; import com.ruoyi.gen.domain.GenTableColumn;
import java.util.List; import java.util.List;
@ -7,9 +9,10 @@ import java.util.List;
/** /**
* *
* *
* @author ruoyi * @author Lion Li
*/ */
public interface GenTableColumnMapper { @InterceptorIgnore(dataPermission = "true")
public interface GenTableColumnMapper extends BaseMapperPlus<GenTableColumnMapper, GenTableColumn, GenTableColumn> {
/** /**
* *
* *
@ -18,43 +21,4 @@ public interface GenTableColumnMapper {
*/ */
List<GenTableColumn> selectDbTableColumnsByName(String tableName); List<GenTableColumn> selectDbTableColumnsByName(String tableName);
/**
*
*
* @param tableId
* @return
*/
List<GenTableColumn> selectGenTableColumnListByTableId(Long tableId);
/**
*
*
* @param genTableColumn
* @return
*/
int insertGenTableColumn(GenTableColumn genTableColumn);
/**
*
*
* @param genTableColumn
* @return
*/
int updateGenTableColumn(GenTableColumn genTableColumn);
/**
*
*
* @param genTableColumns
* @return
*/
int deleteGenTableColumns(List<GenTableColumn> genTableColumns);
/**
*
*
* @param ids ID
* @return
*/
int deleteGenTableColumnByIds(Long[] ids);
} }

View File

@ -1,15 +1,25 @@
package com.ruoyi.gen.mapper; package com.ruoyi.gen.mapper;
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
import com.ruoyi.gen.domain.GenTable; import com.ruoyi.gen.domain.GenTable;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
/** /**
* *
* *
* @author ruoyi * @author Lion Li
*/ */
public interface GenTableMapper { @InterceptorIgnore(dataPermission = "true")
public interface GenTableMapper extends BaseMapperPlus<GenTableMapper, GenTable, GenTable> {
Page<GenTable> selectPageGenTableList(@Param("page") Page<GenTable> page, @Param("genTable") GenTable genTable);
Page<GenTable> selectPageDbTableList(@Param("page") Page<GenTable> page, @Param("genTable") GenTable genTable);
/** /**
* *
* *
@ -57,27 +67,4 @@ public interface GenTableMapper {
*/ */
GenTable selectGenTableByName(String tableName); GenTable selectGenTableByName(String tableName);
/**
*
*
* @param genTable
* @return
*/
int insertGenTable(GenTable genTable);
/**
*
*
* @param genTable
* @return
*/
int updateGenTable(GenTable genTable);
/**
*
*
* @param ids ID
* @return
*/
int deleteGenTableByIds(Long[] ids);
} }

View File

@ -1,12 +1,13 @@
package com.ruoyi.gen.service; package com.ruoyi.gen.service;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.gen.domain.GenTableColumn; import com.ruoyi.gen.domain.GenTableColumn;
import com.ruoyi.gen.mapper.GenTableColumnMapper; import com.ruoyi.gen.mapper.GenTableColumnMapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List; import java.util.List;
/** /**
@ -14,11 +15,11 @@ import java.util.List;
* *
* @author ruoyi * @author ruoyi
*/ */
@RequiredArgsConstructor(onConstructor_ = @Autowired) @RequiredArgsConstructor
@Service @Service
public class GenTableColumnServiceImpl implements IGenTableColumnService { public class GenTableColumnServiceImpl implements IGenTableColumnService {
private final GenTableColumnMapper genTableColumnMapper; private final GenTableColumnMapper baseMapper;
/** /**
* *
@ -28,7 +29,9 @@ public class GenTableColumnServiceImpl implements IGenTableColumnService {
*/ */
@Override @Override
public List<GenTableColumn> selectGenTableColumnListByTableId(Long tableId) { public List<GenTableColumn> selectGenTableColumnListByTableId(Long tableId) {
return genTableColumnMapper.selectGenTableColumnListByTableId(tableId); return baseMapper.selectList(new LambdaQueryWrapper<GenTableColumn>()
.eq(GenTableColumn::getTableId, tableId)
.orderByAsc(GenTableColumn::getSort));
} }
/** /**
@ -39,7 +42,7 @@ public class GenTableColumnServiceImpl implements IGenTableColumnService {
*/ */
@Override @Override
public int insertGenTableColumn(GenTableColumn genTableColumn) { public int insertGenTableColumn(GenTableColumn genTableColumn) {
return genTableColumnMapper.insertGenTableColumn(genTableColumn); return baseMapper.insert(genTableColumn);
} }
/** /**
@ -50,7 +53,7 @@ public class GenTableColumnServiceImpl implements IGenTableColumnService {
*/ */
@Override @Override
public int updateGenTableColumn(GenTableColumn genTableColumn) { public int updateGenTableColumn(GenTableColumn genTableColumn) {
return genTableColumnMapper.updateGenTableColumn(genTableColumn); return baseMapper.updateById(genTableColumn);
} }
/** /**
@ -61,6 +64,6 @@ public class GenTableColumnServiceImpl implements IGenTableColumnService {
*/ */
@Override @Override
public int deleteGenTableColumnByIds(String ids) { public int deleteGenTableColumnByIds(String ids) {
return genTableColumnMapper.deleteGenTableColumnByIds(Convert.toLongArray(ids)); return baseMapper.deleteBatchIds(Arrays.asList(Convert.toLongArray(ids)));
} }
} }

View File

@ -1,12 +1,17 @@
package com.ruoyi.gen.service; package com.ruoyi.gen.service;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.constant.Constants; import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.constant.GenConstants; import com.ruoyi.common.core.constant.GenConstants;
import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.JsonUtils; import com.ruoyi.common.core.utils.JsonUtils;
import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.mybatis.core.page.PageQuery;
import com.ruoyi.common.mybatis.core.page.TableDataInfo;
import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.gen.domain.GenTable; import com.ruoyi.gen.domain.GenTable;
import com.ruoyi.gen.domain.GenTableColumn; import com.ruoyi.gen.domain.GenTableColumn;
@ -22,7 +27,6 @@ import org.apache.commons.io.IOUtils;
import org.apache.velocity.Template; import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext; import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity; import org.apache.velocity.app.Velocity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -31,10 +35,8 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.StringWriter; import java.io.StringWriter;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.LinkedHashMap; import java.util.*;
import java.util.function.Function; import java.util.function.Function;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream; import java.util.zip.ZipOutputStream;
@ -45,11 +47,11 @@ import java.util.zip.ZipOutputStream;
* @author ruoyi * @author ruoyi
*/ */
@Slf4j @Slf4j
@RequiredArgsConstructor(onConstructor_ = @Autowired) @RequiredArgsConstructor
@Service @Service
public class GenTableServiceImpl implements IGenTableService { public class GenTableServiceImpl implements IGenTableService {
private final GenTableMapper genTableMapper; private final GenTableMapper baseMapper;
private final GenTableColumnMapper genTableColumnMapper; private final GenTableColumnMapper genTableColumnMapper;
/** /**
@ -60,11 +62,23 @@ public class GenTableServiceImpl implements IGenTableService {
*/ */
@Override @Override
public GenTable selectGenTableById(Long id) { public GenTable selectGenTableById(Long id) {
GenTable genTable = genTableMapper.selectGenTableById(id); GenTable genTable = baseMapper.selectGenTableById(id);
setTableFromOptions(genTable); setTableFromOptions(genTable);
return genTable; return genTable;
} }
@Override
public TableDataInfo<GenTable> selectPageGenTableList(GenTable genTable, PageQuery pageQuery) {
Page<GenTable> page = baseMapper.selectPageGenTableList(pageQuery.build(), genTable);
return TableDataInfo.build(page);
}
@Override
public TableDataInfo<GenTable> selectPageDbTableList(GenTable genTable, PageQuery pageQuery) {
Page<GenTable> page = baseMapper.selectPageDbTableList(pageQuery.build(), genTable);
return TableDataInfo.build(page);
}
/** /**
* *
* *
@ -73,7 +87,7 @@ public class GenTableServiceImpl implements IGenTableService {
*/ */
@Override @Override
public List<GenTable> selectGenTableList(GenTable genTable) { public List<GenTable> selectGenTableList(GenTable genTable) {
return genTableMapper.selectGenTableList(genTable); return baseMapper.selectGenTableList(genTable);
} }
/** /**
@ -84,7 +98,7 @@ public class GenTableServiceImpl implements IGenTableService {
*/ */
@Override @Override
public List<GenTable> selectDbTableList(GenTable genTable) { public List<GenTable> selectDbTableList(GenTable genTable) {
return genTableMapper.selectDbTableList(genTable); return baseMapper.selectDbTableList(genTable);
} }
/** /**
@ -95,7 +109,7 @@ public class GenTableServiceImpl implements IGenTableService {
*/ */
@Override @Override
public List<GenTable> selectDbTableListByNames(String[] tableNames) { public List<GenTable> selectDbTableListByNames(String[] tableNames) {
return genTableMapper.selectDbTableListByNames(tableNames); return baseMapper.selectDbTableListByNames(tableNames);
} }
/** /**
@ -105,7 +119,7 @@ public class GenTableServiceImpl implements IGenTableService {
*/ */
@Override @Override
public List<GenTable> selectGenTableAll() { public List<GenTable> selectGenTableAll() {
return genTableMapper.selectGenTableAll(); return baseMapper.selectGenTableAll();
} }
/** /**
@ -115,14 +129,14 @@ public class GenTableServiceImpl implements IGenTableService {
* @return * @return
*/ */
@Override @Override
@Transactional @Transactional(rollbackFor = Exception.class)
public void updateGenTable(GenTable genTable) { public void updateGenTable(GenTable genTable) {
String options = JsonUtils.toJsonString(genTable.getParams()); String options = JsonUtils.toJsonString(genTable.getParams());
genTable.setOptions(options); genTable.setOptions(options);
int row = genTableMapper.updateGenTable(genTable); int row = baseMapper.updateById(genTable);
if (row > 0) { if (row > 0) {
for (GenTableColumn cenTableColumn : genTable.getColumns()) { for (GenTableColumn cenTableColumn : genTable.getColumns()) {
genTableColumnMapper.updateGenTableColumn(cenTableColumn); genTableColumnMapper.updateById(cenTableColumn);
} }
} }
} }
@ -134,10 +148,11 @@ public class GenTableServiceImpl implements IGenTableService {
* @return * @return
*/ */
@Override @Override
@Transactional @Transactional(rollbackFor = Exception.class)
public void deleteGenTableByIds(Long[] tableIds) { public void deleteGenTableByIds(Long[] tableIds) {
genTableMapper.deleteGenTableByIds(tableIds); List<Long> ids = Arrays.asList(tableIds);
genTableColumnMapper.deleteGenTableColumnByIds(tableIds); baseMapper.deleteBatchIds(ids);
genTableColumnMapper.delete(new LambdaQueryWrapper<GenTableColumn>().in(GenTableColumn::getTableId, ids));
} }
/** /**
@ -146,20 +161,24 @@ public class GenTableServiceImpl implements IGenTableService {
* @param tableList * @param tableList
*/ */
@Override @Override
@Transactional @Transactional(rollbackFor = Exception.class)
public void importGenTable(List<GenTable> tableList) { public void importGenTable(List<GenTable> tableList) {
String operName = SecurityUtils.getUsername(); String operName = SecurityUtils.getUsername();
try { try {
for (GenTable table : tableList) { for (GenTable table : tableList) {
String tableName = table.getTableName(); String tableName = table.getTableName();
GenUtils.initTable(table, operName); GenUtils.initTable(table, operName);
int row = genTableMapper.insertGenTable(table); int row = baseMapper.insert(table);
if (row > 0) { if (row > 0) {
// 保存列信息 // 保存列信息
List<GenTableColumn> genTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName); List<GenTableColumn> genTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName);
List<GenTableColumn> saveColumns = new ArrayList<>();
for (GenTableColumn column : genTableColumns) { for (GenTableColumn column : genTableColumns) {
GenUtils.initColumnField(column, table); GenUtils.initColumnField(column, table);
genTableColumnMapper.insertGenTableColumn(column); saveColumns.add(column);
}
if (CollUtil.isNotEmpty(saveColumns)) {
genTableColumnMapper.insertBatch(saveColumns);
} }
} }
} }
@ -178,7 +197,7 @@ public class GenTableServiceImpl implements IGenTableService {
public Map<String, String> previewCode(Long tableId) { public Map<String, String> previewCode(Long tableId) {
Map<String, String> dataMap = new LinkedHashMap<>(); Map<String, String> dataMap = new LinkedHashMap<>();
// 查询表信息 // 查询表信息
GenTable table = genTableMapper.selectGenTableById(tableId); GenTable table = baseMapper.selectGenTableById(tableId);
// 设置主子表信息 // 设置主子表信息
setSubTable(table); setSubTable(table);
// 设置主键列信息 // 设置主键列信息
@ -210,7 +229,7 @@ public class GenTableServiceImpl implements IGenTableService {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ZipOutputStream zip = new ZipOutputStream(outputStream); ZipOutputStream zip = new ZipOutputStream(outputStream);
generatorCode(tableName, zip); generatorCode(tableName, zip);
IOUtils.closeQuietly(zip); IoUtil.close(zip);
return outputStream.toByteArray(); return outputStream.toByteArray();
} }
@ -222,7 +241,7 @@ public class GenTableServiceImpl implements IGenTableService {
@Override @Override
public void generatorCode(String tableName) { public void generatorCode(String tableName) {
// 查询表信息 // 查询表信息
GenTable table = genTableMapper.selectGenTableByName(tableName); GenTable table = baseMapper.selectGenTableByName(tableName);
// 设置主子表信息 // 设置主子表信息
setSubTable(table); setSubTable(table);
// 设置主键列信息 // 设置主键列信息
@ -256,9 +275,9 @@ public class GenTableServiceImpl implements IGenTableService {
* @param tableName * @param tableName
*/ */
@Override @Override
@Transactional @Transactional(rollbackFor = Exception.class)
public void synchDb(String tableName) { public void synchDb(String tableName) {
GenTable table = genTableMapper.selectGenTableByName(tableName); GenTable table = baseMapper.selectGenTableByName(tableName);
List<GenTableColumn> tableColumns = table.getColumns(); List<GenTableColumn> tableColumns = table.getColumns();
Map<String, GenTableColumn> tableColumnMap = tableColumns.stream().collect(Collectors.toMap(GenTableColumn::getColumnName, Function.identity())); Map<String, GenTableColumn> tableColumnMap = tableColumns.stream().collect(Collectors.toMap(GenTableColumn::getColumnName, Function.identity()));
@ -268,6 +287,7 @@ public class GenTableServiceImpl implements IGenTableService {
} }
List<String> dbTableColumnNames = dbTableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList()); List<String> dbTableColumnNames = dbTableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList());
List<GenTableColumn> saveColumns = new ArrayList<>();
dbTableColumns.forEach(column -> { dbTableColumns.forEach(column -> {
GenUtils.initColumnField(column, table); GenUtils.initColumnField(column, table);
if (tableColumnMap.containsKey(column.getColumnName())) { if (tableColumnMap.containsKey(column.getColumnName())) {
@ -277,15 +297,19 @@ public class GenTableServiceImpl implements IGenTableService {
// 如果是列表,继续保留字典类型 // 如果是列表,继续保留字典类型
column.setDictType(prevColumn.getDictType()); column.setDictType(prevColumn.getDictType());
} }
genTableColumnMapper.updateGenTableColumn(column); genTableColumnMapper.updateById(column);
} else { } else {
genTableColumnMapper.insertGenTableColumn(column); genTableColumnMapper.insert(column);
} }
}); });
if (CollUtil.isNotEmpty(saveColumns)) {
genTableColumnMapper.insertBatch(saveColumns);
}
List<GenTableColumn> delColumns = tableColumns.stream().filter(column -> !dbTableColumnNames.contains(column.getColumnName())).collect(Collectors.toList()); List<GenTableColumn> delColumns = tableColumns.stream().filter(column -> !dbTableColumnNames.contains(column.getColumnName())).collect(Collectors.toList());
if (CollUtil.isNotEmpty(delColumns)) { if (CollUtil.isNotEmpty(delColumns)) {
genTableColumnMapper.deleteGenTableColumns(delColumns); List<Long> ids = delColumns.stream().map(GenTableColumn::getColumnId).collect(Collectors.toList());
genTableColumnMapper.deleteBatchIds(ids);
} }
} }
@ -302,7 +326,7 @@ public class GenTableServiceImpl implements IGenTableService {
for (String tableName : tableNames) { for (String tableName : tableNames) {
generatorCode(tableName, zip); generatorCode(tableName, zip);
} }
IOUtils.closeQuietly(zip); IoUtil.close(zip);
return outputStream.toByteArray(); return outputStream.toByteArray();
} }
@ -311,7 +335,7 @@ public class GenTableServiceImpl implements IGenTableService {
*/ */
private void generatorCode(String tableName, ZipOutputStream zip) { private void generatorCode(String tableName, ZipOutputStream zip) {
// 查询表信息 // 查询表信息
GenTable table = genTableMapper.selectGenTableByName(tableName); GenTable table = baseMapper.selectGenTableByName(tableName);
// 设置主子表信息 // 设置主子表信息
setSubTable(table); setSubTable(table);
// 设置主键列信息 // 设置主键列信息
@ -403,7 +427,7 @@ public class GenTableServiceImpl implements IGenTableService {
public void setSubTable(GenTable table) { public void setSubTable(GenTable table) {
String subTableName = table.getSubTableName(); String subTableName = table.getSubTableName();
if (StringUtils.isNotEmpty(subTableName)) { if (StringUtils.isNotEmpty(subTableName)) {
table.setSubTable(genTableMapper.selectGenTableByName(subTableName)); table.setSubTable(baseMapper.selectGenTableByName(subTableName));
} }
} }

View File

@ -1,5 +1,7 @@
package com.ruoyi.gen.service; package com.ruoyi.gen.service;
import com.ruoyi.common.mybatis.core.page.PageQuery;
import com.ruoyi.common.mybatis.core.page.TableDataInfo;
import com.ruoyi.gen.domain.GenTable; import com.ruoyi.gen.domain.GenTable;
import java.util.List; import java.util.List;
@ -11,6 +13,11 @@ import java.util.Map;
* @author ruoyi * @author ruoyi
*/ */
public interface IGenTableService { public interface IGenTableService {
TableDataInfo<GenTable> selectPageGenTableList(GenTable genTable, PageQuery pageQuery);
TableDataInfo<GenTable> selectPageDbTableList(GenTable genTable, PageQuery pageQuery);
/** /**
* *
* *

View File

@ -29,99 +29,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="updateTime" column="update_time" /> <result property="updateTime" column="update_time" />
</resultMap> </resultMap>
<sql id="selectGenTableColumnVo">
select column_id, table_id, column_name, column_comment, column_type, java_type, java_field, is_pk, is_increment, is_required, is_insert, is_edit, is_list, is_query, query_type, html_type, dict_type, sort, create_by, create_time, update_by, update_time from gen_table_column
</sql>
<select id="selectGenTableColumnListByTableId" parameterType="GenTableColumn" resultMap="GenTableColumnResult">
<include refid="selectGenTableColumnVo"/>
where table_id = #{tableId}
order by sort
</select>
<select id="selectDbTableColumnsByName" parameterType="String" resultMap="GenTableColumnResult"> <select id="selectDbTableColumnsByName" parameterType="String" resultMap="GenTableColumnResult">
select column_name, (case when (is_nullable = 'no' <![CDATA[ && ]]> column_key != 'PRI') then '1' else null end) as is_required, (case when column_key = 'PRI' then '1' else '0' end) as is_pk, ordinal_position as sort, column_comment, (case when extra = 'auto_increment' then '1' else '0' end) as is_increment, column_type select column_name, (case when (is_nullable = 'no' <![CDATA[ && ]]> column_key != 'PRI') then '1' else null end) as is_required, (case when column_key = 'PRI' then '1' else '0' end) as is_pk, ordinal_position as sort, column_comment, (case when extra = 'auto_increment' then '1' else '0' end) as is_increment, column_type
from information_schema.columns where table_schema = (select database()) and table_name = (#{tableName}) from information_schema.columns where table_schema = (select database()) and table_name = (#{tableName})
order by ordinal_position order by ordinal_position
</select> </select>
<insert id="insertGenTableColumn" parameterType="GenTableColumn" useGeneratedKeys="true" keyProperty="columnId">
insert into gen_table_column (
<if test="tableId != null and tableId != ''">table_id,</if>
<if test="columnName != null and columnName != ''">column_name,</if>
<if test="columnComment != null and columnComment != ''">column_comment,</if>
<if test="columnType != null and columnType != ''">column_type,</if>
<if test="javaType != null and javaType != ''">java_type,</if>
<if test="javaField != null and javaField != ''">java_field,</if>
<if test="isPk != null and isPk != ''">is_pk,</if>
<if test="isIncrement != null and isIncrement != ''">is_increment,</if>
<if test="isRequired != null and isRequired != ''">is_required,</if>
<if test="isInsert != null and isInsert != ''">is_insert,</if>
<if test="isEdit != null and isEdit != ''">is_edit,</if>
<if test="isList != null and isList != ''">is_list,</if>
<if test="isQuery != null and isQuery != ''">is_query,</if>
<if test="queryType != null and queryType != ''">query_type,</if>
<if test="htmlType != null and htmlType != ''">html_type,</if>
<if test="dictType != null and dictType != ''">dict_type,</if>
<if test="sort != null">sort,</if>
<if test="createBy != null and createBy != ''">create_by,</if>
create_time
)values(
<if test="tableId != null and tableId != ''">#{tableId},</if>
<if test="columnName != null and columnName != ''">#{columnName},</if>
<if test="columnComment != null and columnComment != ''">#{columnComment},</if>
<if test="columnType != null and columnType != ''">#{columnType},</if>
<if test="javaType != null and javaType != ''">#{javaType},</if>
<if test="javaField != null and javaField != ''">#{javaField},</if>
<if test="isPk != null and isPk != ''">#{isPk},</if>
<if test="isIncrement != null and isIncrement != ''">#{isIncrement},</if>
<if test="isRequired != null and isRequired != ''">#{isRequired},</if>
<if test="isInsert != null and isInsert != ''">#{isInsert},</if>
<if test="isEdit != null and isEdit != ''">#{isEdit},</if>
<if test="isList != null and isList != ''">#{isList},</if>
<if test="isQuery != null and isQuery != ''">#{isQuery},</if>
<if test="queryType != null and queryType != ''">#{queryType},</if>
<if test="htmlType != null and htmlType != ''">#{htmlType},</if>
<if test="dictType != null and dictType != ''">#{dictType},</if>
<if test="sort != null">#{sort},</if>
<if test="createBy != null and createBy != ''">#{createBy},</if>
sysdate()
)
</insert>
<update id="updateGenTableColumn" parameterType="GenTableColumn">
update gen_table_column
<set>
column_comment = #{columnComment},
java_type = #{javaType},
java_field = #{javaField},
is_insert = #{isInsert},
is_edit = #{isEdit},
is_list = #{isList},
is_query = #{isQuery},
is_required = #{isRequired},
query_type = #{queryType},
html_type = #{htmlType},
dict_type = #{dictType},
sort = #{sort},
update_by = #{updateBy},
update_time = sysdate()
</set>
where column_id = #{columnId}
</update>
<delete id="deleteGenTableColumnByIds" parameterType="Long">
delete from gen_table_column where table_id in
<foreach collection="array" item="tableId" open="(" separator="," close=")">
#{tableId}
</foreach>
</delete>
<delete id="deleteGenTableColumns">
delete from gen_table_column where column_id in
<foreach collection="list" item="item" open="(" separator="," close=")">
#{item.columnId}
</foreach>
</delete>
</mapper> </mapper>

View File

@ -57,6 +57,44 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select table_id, table_name, table_comment, sub_table_name, sub_table_fk_name, class_name, tpl_category, package_name, module_name, business_name, function_name, function_author, gen_type, gen_path, options, create_by, create_time, update_by, update_time, remark from gen_table select table_id, table_name, table_comment, sub_table_name, sub_table_fk_name, class_name, tpl_category, package_name, module_name, business_name, function_name, function_author, gen_type, gen_path, options, create_by, create_time, update_by, update_time, remark from gen_table
</sql> </sql>
<select id="selectPageGenTableList" parameterType="GenTable" resultMap="GenTableResult">
<include refid="selectGenTableVo"/>
<where>
<if test="genTable.tableName != null and genTable.tableName != ''">
AND lower(table_name) like lower(concat('%', #{genTable.tableName}, '%'))
</if>
<if test="genTable.tableComment != null and genTable.tableComment != ''">
AND lower(table_comment) like lower(concat('%', #{genTable.tableComment}, '%'))
</if>
<if test="genTable.params.beginTime != null and genTable.params.beginTime != ''"><!-- 开始时间检索 -->
AND date_format(create_time,'%y%m%d') &gt;= date_format(#{genTable.params.beginTime},'%y%m%d')
</if>
<if test="genTable.params.endTime != null and genTable.params.endTime != ''"><!-- 结束时间检索 -->
AND date_format(create_time,'%y%m%d') &lt;= date_format(#{genTable.params.endTime},'%y%m%d')
</if>
</where>
</select>
<select id="selectPageDbTableList" parameterType="GenTable" resultMap="GenTableResult">
select table_name, table_comment, create_time, update_time from information_schema.tables
where table_schema = (select database())
AND table_name NOT LIKE 'xxl_job_%' AND table_name NOT LIKE 'gen_%'
AND table_name NOT IN (select table_name from gen_table)
<if test="genTable.tableName != null and genTable.tableName != ''">
AND lower(table_name) like lower(concat('%', #{genTable.tableName}, '%'))
</if>
<if test="genTable.tableComment != null and genTable.tableComment != ''">
AND lower(table_comment) like lower(concat('%', #{genTable.tableComment}, '%'))
</if>
<if test="genTable.params.beginTime != null and genTable.params.beginTime != ''"><!-- 开始时间检索 -->
AND date_format(create_time,'%y%m%d') &gt;= date_format(#{genTable.params.beginTime},'%y%m%d')
</if>
<if test="genTable.params.endTime != null and genTable.params.endTime != ''"><!-- 结束时间检索 -->
AND date_format(create_time,'%y%m%d') &lt;= date_format(#{genTable.params.endTime},'%y%m%d')
</if>
order by create_time desc
</select>
<select id="selectGenTableList" parameterType="GenTable" resultMap="GenTableResult"> <select id="selectGenTableList" parameterType="GenTable" resultMap="GenTableResult">
<include refid="selectGenTableVo"/> <include refid="selectGenTableVo"/>
<where> <where>
@ -134,69 +172,4 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
order by c.sort order by c.sort
</select> </select>
<insert id="insertGenTable" parameterType="GenTable" useGeneratedKeys="true" keyProperty="tableId">
insert into gen_table (
<if test="tableName != null">table_name,</if>
<if test="tableComment != null and tableComment != ''">table_comment,</if>
<if test="className != null and className != ''">class_name,</if>
<if test="tplCategory != null and tplCategory != ''">tpl_category,</if>
<if test="packageName != null and packageName != ''">package_name,</if>
<if test="moduleName != null and moduleName != ''">module_name,</if>
<if test="businessName != null and businessName != ''">business_name,</if>
<if test="functionName != null and functionName != ''">function_name,</if>
<if test="functionAuthor != null and functionAuthor != ''">function_author,</if>
<if test="genType != null and genType != ''">gen_type,</if>
<if test="genPath != null and genPath != ''">gen_path,</if>
<if test="remark != null and remark != ''">remark,</if>
<if test="createBy != null and createBy != ''">create_by,</if>
create_time
)values(
<if test="tableName != null">#{tableName},</if>
<if test="tableComment != null and tableComment != ''">#{tableComment},</if>
<if test="className != null and className != ''">#{className},</if>
<if test="tplCategory != null and tplCategory != ''">#{tplCategory},</if>
<if test="packageName != null and packageName != ''">#{packageName},</if>
<if test="moduleName != null and moduleName != ''">#{moduleName},</if>
<if test="businessName != null and businessName != ''">#{businessName},</if>
<if test="functionName != null and functionName != ''">#{functionName},</if>
<if test="functionAuthor != null and functionAuthor != ''">#{functionAuthor},</if>
<if test="genType != null and genType != ''">#{genType},</if>
<if test="genPath != null and genPath != ''">#{genPath},</if>
<if test="remark != null and remark != ''">#{remark},</if>
<if test="createBy != null and createBy != ''">#{createBy},</if>
sysdate()
)
</insert>
<update id="updateGenTable" parameterType="GenTable">
update gen_table
<set>
<if test="tableName != null">table_name = #{tableName},</if>
<if test="tableComment != null and tableComment != ''">table_comment = #{tableComment},</if>
<if test="subTableName != null">sub_table_name = #{subTableName},</if>
<if test="subTableFkName != null">sub_table_fk_name = #{subTableFkName},</if>
<if test="className != null and className != ''">class_name = #{className},</if>
<if test="functionAuthor != null and functionAuthor != ''">function_author = #{functionAuthor},</if>
<if test="genType != null and genType != ''">gen_type = #{genType},</if>
<if test="genPath != null and genPath != ''">gen_path = #{genPath},</if>
<if test="tplCategory != null and tplCategory != ''">tpl_category = #{tplCategory},</if>
<if test="packageName != null and packageName != ''">package_name = #{packageName},</if>
<if test="moduleName != null and moduleName != ''">module_name = #{moduleName},</if>
<if test="businessName != null and businessName != ''">business_name = #{businessName},</if>
<if test="functionName != null and functionName != ''">function_name = #{functionName},</if>
<if test="options != null and options != ''">options = #{options},</if>
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
<if test="remark != null">remark = #{remark},</if>
update_time = sysdate()
</set>
where table_id = #{tableId}
</update>
<delete id="deleteGenTableByIds" parameterType="Long">
delete from gen_table where table_id in
<foreach collection="array" item="tableId" open="(" separator="," close=")">
#{tableId}
</foreach>
</delete>
</mapper> </mapper>

View File

@ -0,0 +1,24 @@
# p6spy 性能分析插件配置文件
modulelist=com.baomidou.mybatisplus.extension.p6spy.MybatisPlusLogFactory,com.p6spy.engine.outage.P6OutageFactory
# 自定义日志打印
logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger
#日志输出到控制台
appender=com.baomidou.mybatisplus.extension.p6spy.StdoutLogger
# 使用日志系统记录 sql
#appender=com.p6spy.engine.spy.appender.Slf4JLogger
# 设置 p6spy driver 代理
#deregisterdrivers=true
# 取消JDBC URL前缀
useprefix=true
# 配置记录 Log 例外,可去掉的结果集有error,info,batch,debug,statement,commit,rollback,result,resultset.
excludecategories=info,debug,result,commit,resultset
# 日期格式
dateformat=yyyy-MM-dd HH:mm:ss
# 实际驱动可多个
#driverlist=org.h2.Driver
# 是否开启慢SQL记录
outagedetection=true
# 慢SQL记录标准 2 秒
outagedetectioninterval=2
# 是否过滤 Log
filter=true

View File

@ -53,12 +53,6 @@
<artifactId>ruoyi-common-datasource</artifactId> <artifactId>ruoyi-common-datasource</artifactId>
</dependency> </dependency>
<!-- RuoYi Common DataScope -->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common-datascope</artifactId>
</dependency>
<!-- RuoYi Common Log --> <!-- RuoYi Common Log -->
<dependency> <dependency>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
@ -81,6 +75,11 @@
<artifactId>ruoyi-common-web</artifactId> <artifactId>ruoyi-common-web</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common-mybatis</artifactId>
</dependency>
<dependency> <dependency>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common-dubbo</artifactId> <artifactId>ruoyi-common-dubbo</artifactId>

View File

@ -3,16 +3,16 @@ package com.ruoyi.system.controller;
import com.ruoyi.common.core.constant.UserConstants; import com.ruoyi.common.core.constant.UserConstants;
import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.common.excel.utils.ExcelUtil; import com.ruoyi.common.excel.utils.ExcelUtil;
import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.mybatis.core.page.PageQuery;
import com.ruoyi.common.mybatis.core.page.TableDataInfo;
import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.domain.SysConfig; import com.ruoyi.system.domain.SysConfig;
import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.system.service.ISysConfigService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -24,7 +24,7 @@ import java.util.List;
* *
* @author ruoyi * @author ruoyi
*/ */
@RequiredArgsConstructor(onConstructor_ = @Autowired) @RequiredArgsConstructor
@RestController @RestController
@RequestMapping("/config") @RequestMapping("/config")
public class SysConfigController extends BaseController { public class SysConfigController extends BaseController {
@ -36,10 +36,8 @@ public class SysConfigController extends BaseController {
*/ */
@RequiresPermissions("system:config:list") @RequiresPermissions("system:config:list")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(SysConfig config) { public TableDataInfo<SysConfig> list(SysConfig config, PageQuery pageQuery) {
startPage(); return configService.selectPageConfigList(config, pageQuery);
List<SysConfig> list = configService.selectConfigList(config);
return getDataTable(list);
} }
@Log(title = "参数管理", businessType = BusinessType.EXPORT) @Log(title = "参数管理", businessType = BusinessType.EXPORT)

View File

@ -1,5 +1,6 @@
package com.ruoyi.system.controller; package com.ruoyi.system.controller;
import cn.hutool.core.util.ArrayUtil;
import com.ruoyi.common.core.constant.UserConstants; import com.ruoyi.common.core.constant.UserConstants;
import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.controller.BaseController;
@ -11,12 +12,9 @@ import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.SysDept; import com.ruoyi.system.api.domain.SysDept;
import com.ruoyi.system.service.ISysDeptService; import com.ruoyi.system.service.ISysDeptService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.Iterator;
import java.util.List; import java.util.List;
/** /**
@ -24,7 +22,7 @@ import java.util.List;
* *
* @author ruoyi * @author ruoyi
*/ */
@RequiredArgsConstructor(onConstructor_ = @Autowired) @RequiredArgsConstructor
@RestController @RestController
@RequestMapping("/dept") @RequestMapping("/dept")
public class SysDeptController extends BaseController { public class SysDeptController extends BaseController {
@ -48,14 +46,8 @@ public class SysDeptController extends BaseController {
@GetMapping("/list/exclude/{deptId}") @GetMapping("/list/exclude/{deptId}")
public AjaxResult excludeChild(@PathVariable(value = "deptId", required = false) Long deptId) { public AjaxResult excludeChild(@PathVariable(value = "deptId", required = false) Long deptId) {
List<SysDept> depts = deptService.selectDeptList(new SysDept()); List<SysDept> depts = deptService.selectDeptList(new SysDept());
Iterator<SysDept> it = depts.iterator(); depts.removeIf(d -> d.getDeptId().equals(deptId)
while (it.hasNext()) { || ArrayUtil.contains(StringUtils.split(d.getAncestors(), ","), deptId + ""));
SysDept d = (SysDept) it.next();
if (d.getDeptId().intValue() == deptId
|| ArrayUtils.contains(StringUtils.split(d.getAncestors(), ","), deptId + "")) {
it.remove();
}
}
return AjaxResult.success(depts); return AjaxResult.success(depts);
} }

View File

@ -3,17 +3,17 @@ package com.ruoyi.system.controller;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.common.excel.utils.ExcelUtil; import com.ruoyi.common.excel.utils.ExcelUtil;
import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.mybatis.core.page.PageQuery;
import com.ruoyi.common.mybatis.core.page.TableDataInfo;
import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.SysDictData; import com.ruoyi.system.api.domain.SysDictData;
import com.ruoyi.system.service.ISysDictDataService; import com.ruoyi.system.service.ISysDictDataService;
import com.ruoyi.system.service.ISysDictTypeService; import com.ruoyi.system.service.ISysDictTypeService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -26,7 +26,7 @@ import java.util.List;
* *
* @author ruoyi * @author ruoyi
*/ */
@RequiredArgsConstructor(onConstructor_ = @Autowired) @RequiredArgsConstructor
@RestController @RestController
@RequestMapping("/dict/data") @RequestMapping("/dict/data")
public class SysDictDataController extends BaseController { public class SysDictDataController extends BaseController {
@ -36,10 +36,8 @@ public class SysDictDataController extends BaseController {
@RequiresPermissions("system:dict:list") @RequiresPermissions("system:dict:list")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(SysDictData dictData) { public TableDataInfo<SysDictData> list(SysDictData dictData, PageQuery pageQuery) {
startPage(); return dictDataService.selectPageDictDataList(dictData, pageQuery);
List<SysDictData> list = dictDataService.selectDictDataList(dictData);
return getDataTable(list);
} }
@Log(title = "字典数据", businessType = BusinessType.EXPORT) @Log(title = "字典数据", businessType = BusinessType.EXPORT)

View File

@ -3,16 +3,16 @@ package com.ruoyi.system.controller;
import com.ruoyi.common.core.constant.UserConstants; import com.ruoyi.common.core.constant.UserConstants;
import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.common.excel.utils.ExcelUtil; import com.ruoyi.common.excel.utils.ExcelUtil;
import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.mybatis.core.page.PageQuery;
import com.ruoyi.common.mybatis.core.page.TableDataInfo;
import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.SysDictType; import com.ruoyi.system.api.domain.SysDictType;
import com.ruoyi.system.service.ISysDictTypeService; import com.ruoyi.system.service.ISysDictTypeService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -24,7 +24,7 @@ import java.util.List;
* *
* @author ruoyi * @author ruoyi
*/ */
@RequiredArgsConstructor(onConstructor_ = @Autowired) @RequiredArgsConstructor
@RestController @RestController
@RequestMapping("/dict/type") @RequestMapping("/dict/type")
public class SysDictTypeController extends BaseController { public class SysDictTypeController extends BaseController {
@ -33,10 +33,8 @@ public class SysDictTypeController extends BaseController {
@RequiresPermissions("system:dict:list") @RequiresPermissions("system:dict:list")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(SysDictType dictType) { public TableDataInfo<SysDictType> list(SysDictType dictType, PageQuery pageQuery) {
startPage(); return dictTypeService.selectPageDictTypeList(dictType, pageQuery);
List<SysDictType> list = dictTypeService.selectDictTypeList(dictType);
return getDataTable(list);
} }
@Log(title = "字典类型", businessType = BusinessType.EXPORT) @Log(title = "字典类型", businessType = BusinessType.EXPORT)

View File

@ -2,16 +2,16 @@ package com.ruoyi.system.controller;
import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.common.excel.utils.ExcelUtil; import com.ruoyi.common.excel.utils.ExcelUtil;
import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.mybatis.core.page.PageQuery;
import com.ruoyi.common.mybatis.core.page.TableDataInfo;
import com.ruoyi.common.security.annotation.InnerAuth; import com.ruoyi.common.security.annotation.InnerAuth;
import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.ruoyi.system.api.domain.SysLogininfor; import com.ruoyi.system.api.domain.SysLogininfor;
import com.ruoyi.system.service.ISysLogininforService; import com.ruoyi.system.service.ISysLogininforService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
@ -22,7 +22,7 @@ import java.util.List;
* *
* @author ruoyi * @author ruoyi
*/ */
@RequiredArgsConstructor(onConstructor_ = @Autowired) @RequiredArgsConstructor
@RestController @RestController
@RequestMapping("/logininfor") @RequestMapping("/logininfor")
public class SysLogininforController extends BaseController { public class SysLogininforController extends BaseController {
@ -31,10 +31,8 @@ public class SysLogininforController extends BaseController {
@RequiresPermissions("system:logininfor:list") @RequiresPermissions("system:logininfor:list")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(SysLogininfor logininfor) { public TableDataInfo<SysLogininfor> list(SysLogininfor logininfor, PageQuery pageQuery) {
startPage(); return logininforService.selectPageLogininforList(logininfor, pageQuery);
List<SysLogininfor> list = logininforService.selectLogininforList(logininfor);
return getDataTable(list);
} }
@Log(title = "登录日志", businessType = BusinessType.EXPORT) @Log(title = "登录日志", businessType = BusinessType.EXPORT)

View File

@ -11,7 +11,6 @@ import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.domain.SysMenu; import com.ruoyi.system.domain.SysMenu;
import com.ruoyi.system.service.ISysMenuService; import com.ruoyi.system.service.ISysMenuService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -22,7 +21,7 @@ import java.util.List;
* *
* @author ruoyi * @author ruoyi
*/ */
@RequiredArgsConstructor(onConstructor_ = @Autowired) @RequiredArgsConstructor
@RestController @RestController
@RequestMapping("/menu") @RequestMapping("/menu")
public class SysMenuController extends BaseController { public class SysMenuController extends BaseController {

View File

@ -2,26 +2,24 @@ package com.ruoyi.system.controller;
import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.mybatis.core.page.PageQuery;
import com.ruoyi.common.mybatis.core.page.TableDataInfo;
import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.domain.SysNotice; import com.ruoyi.system.domain.SysNotice;
import com.ruoyi.system.service.ISysNoticeService; import com.ruoyi.system.service.ISysNoticeService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
@RequiredArgsConstructor(onConstructor_ = @Autowired) @RequiredArgsConstructor
@RestController @RestController
@RequestMapping("/notice") @RequestMapping("/notice")
public class SysNoticeController extends BaseController { public class SysNoticeController extends BaseController {
@ -33,10 +31,8 @@ public class SysNoticeController extends BaseController {
*/ */
@RequiresPermissions("system:notice:list") @RequiresPermissions("system:notice:list")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(SysNotice notice) { public TableDataInfo<SysNotice> list(SysNotice notice, PageQuery pageQuery) {
startPage(); return noticeService.selectPageNoticeList(notice, pageQuery);
List<SysNotice> list = noticeService.selectNoticeList(notice);
return getDataTable(list);
} }
/** /**

View File

@ -2,16 +2,16 @@ package com.ruoyi.system.controller;
import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.common.excel.utils.ExcelUtil; import com.ruoyi.common.excel.utils.ExcelUtil;
import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.mybatis.core.page.PageQuery;
import com.ruoyi.common.mybatis.core.page.TableDataInfo;
import com.ruoyi.common.security.annotation.InnerAuth; import com.ruoyi.common.security.annotation.InnerAuth;
import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.ruoyi.system.api.domain.SysOperLog; import com.ruoyi.system.api.domain.SysOperLog;
import com.ruoyi.system.service.ISysOperLogService; import com.ruoyi.system.service.ISysOperLogService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
@ -22,7 +22,7 @@ import java.util.List;
* *
* @author ruoyi * @author ruoyi
*/ */
@RequiredArgsConstructor(onConstructor_ = @Autowired) @RequiredArgsConstructor
@RestController @RestController
@RequestMapping("/operlog") @RequestMapping("/operlog")
public class SysOperlogController extends BaseController { public class SysOperlogController extends BaseController {
@ -30,10 +30,8 @@ public class SysOperlogController extends BaseController {
@RequiresPermissions("system:operlog:list") @RequiresPermissions("system:operlog:list")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(SysOperLog operLog) { public TableDataInfo<SysOperLog> list(SysOperLog operLog, PageQuery pageQuery) {
startPage(); return operLogService.selectPageOperLogList(operLog, pageQuery);
List<SysOperLog> list = operLogService.selectOperLogList(operLog);
return getDataTable(list);
} }
@Log(title = "操作日志", businessType = BusinessType.EXPORT) @Log(title = "操作日志", businessType = BusinessType.EXPORT)

View File

@ -3,16 +3,16 @@ package com.ruoyi.system.controller;
import com.ruoyi.common.core.constant.UserConstants; import com.ruoyi.common.core.constant.UserConstants;
import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.common.excel.utils.ExcelUtil; import com.ruoyi.common.excel.utils.ExcelUtil;
import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.mybatis.core.page.PageQuery;
import com.ruoyi.common.mybatis.core.page.TableDataInfo;
import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.domain.SysPost; import com.ruoyi.system.domain.SysPost;
import com.ruoyi.system.service.ISysPostService; import com.ruoyi.system.service.ISysPostService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -24,7 +24,7 @@ import java.util.List;
* *
* @author ruoyi * @author ruoyi
*/ */
@RequiredArgsConstructor(onConstructor_ = @Autowired) @RequiredArgsConstructor
@RestController @RestController
@RequestMapping("/post") @RequestMapping("/post")
public class SysPostController extends BaseController { public class SysPostController extends BaseController {
@ -36,10 +36,8 @@ public class SysPostController extends BaseController {
*/ */
@RequiresPermissions("system:post:list") @RequiresPermissions("system:post:list")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(SysPost post) { public TableDataInfo<SysPost> list(SysPost post, PageQuery pageQuery) {
startPage(); return postService.selectPagePostList(post, pageQuery);
List<SysPost> list = postService.selectPostList(post);
return getDataTable(list);
} }
@Log(title = "岗位管理", businessType = BusinessType.EXPORT) @Log(title = "岗位管理", businessType = BusinessType.EXPORT)

View File

@ -16,7 +16,6 @@ import com.ruoyi.system.api.model.LoginUser;
import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.ISysUserService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.dubbo.config.annotation.DubboReference; import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@ -27,7 +26,7 @@ import java.io.IOException;
* *
* @author ruoyi * @author ruoyi
*/ */
@RequiredArgsConstructor(onConstructor_ = @Autowired) @RequiredArgsConstructor
@RestController @RestController
@RequestMapping("/user/profile") @RequestMapping("/user/profile")
public class SysProfileController extends BaseController { public class SysProfileController extends BaseController {

View File

@ -3,10 +3,11 @@ package com.ruoyi.system.controller;
import com.ruoyi.common.core.constant.UserConstants; import com.ruoyi.common.core.constant.UserConstants;
import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.common.excel.utils.ExcelUtil; import com.ruoyi.common.excel.utils.ExcelUtil;
import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.mybatis.core.page.PageQuery;
import com.ruoyi.common.mybatis.core.page.TableDataInfo;
import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.SysRole; import com.ruoyi.system.api.domain.SysRole;
@ -15,7 +16,6 @@ import com.ruoyi.system.domain.SysUserRole;
import com.ruoyi.system.service.ISysRoleService; import com.ruoyi.system.service.ISysRoleService;
import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.ISysUserService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -27,7 +27,7 @@ import java.util.List;
* *
* @author ruoyi * @author ruoyi
*/ */
@RequiredArgsConstructor(onConstructor_ = @Autowired) @RequiredArgsConstructor
@RestController @RestController
@RequestMapping("/role") @RequestMapping("/role")
public class SysRoleController extends BaseController { public class SysRoleController extends BaseController {
@ -37,10 +37,8 @@ public class SysRoleController extends BaseController {
@RequiresPermissions("system:role:list") @RequiresPermissions("system:role:list")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(SysRole role) { public TableDataInfo<SysRole> list(SysRole role, PageQuery pageQuery) {
startPage(); return roleService.selectPageRoleList(role, pageQuery);
List<SysRole> list = roleService.selectRoleList(role);
return getDataTable(list);
} }
@Log(title = "角色管理", businessType = BusinessType.EXPORT) @Log(title = "角色管理", businessType = BusinessType.EXPORT)
@ -142,10 +140,8 @@ public class SysRoleController extends BaseController {
*/ */
@RequiresPermissions("system:role:list") @RequiresPermissions("system:role:list")
@GetMapping("/authUser/allocatedList") @GetMapping("/authUser/allocatedList")
public TableDataInfo allocatedList(SysUser user) { public TableDataInfo<SysUser> allocatedList(SysUser user, PageQuery pageQuery) {
startPage(); return userService.selectAllocatedList(user, pageQuery);
List<SysUser> list = userService.selectAllocatedList(user);
return getDataTable(list);
} }
/** /**
@ -153,10 +149,8 @@ public class SysRoleController extends BaseController {
*/ */
@RequiresPermissions("system:role:list") @RequiresPermissions("system:role:list")
@GetMapping("/authUser/unallocatedList") @GetMapping("/authUser/unallocatedList")
public TableDataInfo unallocatedList(SysUser user) { public TableDataInfo<SysUser> unallocatedList(SysUser user, PageQuery pageQuery) {
startPage(); return userService.selectUnallocatedList(user, pageQuery);
List<SysUser> list = userService.selectUnallocatedList(user);
return getDataTable(list);
} }
/** /**

View File

@ -6,11 +6,12 @@ import com.ruoyi.common.core.constant.UserConstants;
import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.common.excel.core.ExcelResult; import com.ruoyi.common.excel.core.ExcelResult;
import com.ruoyi.common.excel.utils.ExcelUtil; import com.ruoyi.common.excel.utils.ExcelUtil;
import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.mybatis.core.page.PageQuery;
import com.ruoyi.common.mybatis.core.page.TableDataInfo;
import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.SysDept; import com.ruoyi.system.api.domain.SysDept;
@ -19,10 +20,12 @@ import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.domain.vo.SysUserExportVo; import com.ruoyi.system.domain.vo.SysUserExportVo;
import com.ruoyi.system.domain.vo.SysUserImportVo; import com.ruoyi.system.domain.vo.SysUserImportVo;
import com.ruoyi.system.listener.SysUserImportListener; import com.ruoyi.system.listener.SysUserImportListener;
import com.ruoyi.system.service.*; import com.ruoyi.system.service.ISysPermissionService;
import com.ruoyi.system.service.ISysPostService;
import com.ruoyi.system.service.ISysRoleService;
import com.ruoyi.system.service.ISysUserService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@ -39,7 +42,7 @@ import java.util.stream.Collectors;
* *
* @author ruoyi * @author ruoyi
*/ */
@RequiredArgsConstructor(onConstructor_ = @Autowired) @RequiredArgsConstructor
@RestController @RestController
@RequestMapping("/user") @RequestMapping("/user")
public class SysUserController extends BaseController { public class SysUserController extends BaseController {
@ -48,17 +51,14 @@ public class SysUserController extends BaseController {
private final ISysRoleService roleService; private final ISysRoleService roleService;
private final ISysPostService postService; private final ISysPostService postService;
private final ISysPermissionService permissionService; private final ISysPermissionService permissionService;
private final ISysConfigService configService;
/** /**
* *
*/ */
@RequiresPermissions("system:user:list") @RequiresPermissions("system:user:list")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(SysUser user) { public TableDataInfo<SysUser> list(SysUser user, PageQuery pageQuery) {
startPage(); return userService.selectPageUserList(user, pageQuery);
List<SysUser> list = userService.selectUserList(user);
return getDataTable(list);
} }
@Log(title = "用户管理", businessType = BusinessType.EXPORT) @Log(title = "用户管理", businessType = BusinessType.EXPORT)

View File

@ -4,16 +4,15 @@ import com.ruoyi.common.core.constant.CacheConstants;
import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.mybatis.core.page.TableDataInfo;
import com.ruoyi.common.redis.utils.RedisUtils; import com.ruoyi.common.redis.utils.RedisUtils;
import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.ruoyi.system.api.model.LoginUser; import com.ruoyi.system.api.model.LoginUser;
import com.ruoyi.system.domain.SysUserOnline; import com.ruoyi.system.domain.SysUserOnline;
import com.ruoyi.system.service.ISysUserOnlineService; import com.ruoyi.system.service.ISysUserOnlineService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.ArrayList; import java.util.ArrayList;
@ -26,7 +25,7 @@ import java.util.List;
* *
* @author ruoyi * @author ruoyi
*/ */
@RequiredArgsConstructor(onConstructor_ = @Autowired) @RequiredArgsConstructor
@RestController @RestController
@RequestMapping("/online") @RequestMapping("/online")
public class SysUserOnlineController extends BaseController { public class SysUserOnlineController extends BaseController {
@ -35,7 +34,7 @@ public class SysUserOnlineController extends BaseController {
@RequiresPermissions("monitor:online:list") @RequiresPermissions("monitor:online:list")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(String ipaddr, String userName) { public TableDataInfo<SysUserOnline> list(String ipaddr, String userName) {
Collection<String> keys = RedisUtils.keys(CacheConstants.LOGIN_TOKEN_KEY + "*"); Collection<String> keys = RedisUtils.keys(CacheConstants.LOGIN_TOKEN_KEY + "*");
List<SysUserOnline> userOnlineList = new ArrayList<SysUserOnline>(); List<SysUserOnline> userOnlineList = new ArrayList<SysUserOnline>();
for (String key : keys) { for (String key : keys) {
@ -58,7 +57,7 @@ public class SysUserOnlineController extends BaseController {
} }
Collections.reverse(userOnlineList); Collections.reverse(userOnlineList);
userOnlineList.removeAll(Collections.singleton(null)); userOnlineList.removeAll(Collections.singleton(null));
return getDataTable(userOnlineList); return TableDataInfo.build(userOnlineList);
} }
/** /**

View File

@ -2,6 +2,8 @@ package com.ruoyi.system.domain;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.web.domain.BaseEntity; import com.ruoyi.common.core.web.domain.BaseEntity;
import com.ruoyi.common.excel.annotation.ExcelDictFormat; import com.ruoyi.common.excel.annotation.ExcelDictFormat;
import com.ruoyi.common.excel.convert.ExcelDictConvert; import com.ruoyi.common.excel.convert.ExcelDictConvert;
@ -9,7 +11,7 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size; import javax.validation.constraints.Size;
@ -22,6 +24,8 @@ import javax.validation.constraints.Size;
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@TableName("sys_config")
@ExcelIgnoreUnannotated @ExcelIgnoreUnannotated
@ApiModel("参数配置业务对象") @ApiModel("参数配置业务对象")
public class SysConfig extends BaseEntity { public class SysConfig extends BaseEntity {
@ -31,6 +35,7 @@ public class SysConfig extends BaseEntity {
*/ */
@ApiModelProperty(value = "参数主键") @ApiModelProperty(value = "参数主键")
@ExcelProperty(value = "参数主键") @ExcelProperty(value = "参数主键")
@TableId(value = "config_id")
private Long configId; private Long configId;
/** /**

View File

@ -1,11 +1,14 @@
package com.ruoyi.system.domain; package com.ruoyi.system.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.web.domain.TreeEntity; import com.ruoyi.common.core.web.domain.TreeEntity;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
@ -19,6 +22,8 @@ import javax.validation.constraints.Size;
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@TableName("sys_menu")
@ApiModel("菜单权限业务对象") @ApiModel("菜单权限业务对象")
public class SysMenu extends TreeEntity { public class SysMenu extends TreeEntity {
@ -26,6 +31,7 @@ public class SysMenu extends TreeEntity {
* ID * ID
*/ */
@ApiModelProperty(value = "菜单ID") @ApiModelProperty(value = "菜单ID")
@TableId(value = "menu_id")
private Long menuId; private Long menuId;
/** /**
@ -61,6 +67,7 @@ public class SysMenu extends TreeEntity {
* *
*/ */
@ApiModelProperty(value = "路由参数") @ApiModelProperty(value = "路由参数")
@TableField("`query`")
private String query; private String query;
/** /**

View File

@ -1,11 +1,13 @@
package com.ruoyi.system.domain; package com.ruoyi.system.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.web.domain.BaseEntity; import com.ruoyi.common.core.web.domain.BaseEntity;
import com.ruoyi.common.core.xss.Xss; import com.ruoyi.common.core.xss.Xss;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size; import javax.validation.constraints.Size;
@ -18,12 +20,15 @@ import javax.validation.constraints.Size;
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@TableName("sys_notice")
public class SysNotice extends BaseEntity { public class SysNotice extends BaseEntity {
/** /**
* ID * ID
*/ */
@ApiModelProperty(value = "公告ID") @ApiModelProperty(value = "公告ID")
@TableId(value = "notice_id")
private Long noticeId; private Long noticeId;
/** /**

View File

@ -2,6 +2,9 @@ package com.ruoyi.system.domain;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.web.domain.BaseEntity; import com.ruoyi.common.core.web.domain.BaseEntity;
import com.ruoyi.common.excel.annotation.ExcelDictFormat; import com.ruoyi.common.excel.annotation.ExcelDictFormat;
import com.ruoyi.common.excel.convert.ExcelDictConvert; import com.ruoyi.common.excel.convert.ExcelDictConvert;
@ -9,7 +12,7 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size; import javax.validation.constraints.Size;
@ -22,6 +25,8 @@ import javax.validation.constraints.Size;
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@TableName("sys_post")
@ExcelIgnoreUnannotated @ExcelIgnoreUnannotated
@ApiModel("岗位信息业务对象") @ApiModel("岗位信息业务对象")
public class SysPost extends BaseEntity { public class SysPost extends BaseEntity {
@ -31,6 +36,7 @@ public class SysPost extends BaseEntity {
*/ */
@ApiModelProperty(value = "岗位序号") @ApiModelProperty(value = "岗位序号")
@ExcelProperty(value = "岗位序号") @ExcelProperty(value = "岗位序号")
@TableId(value = "post_id")
private Long postId; private Long postId;
/** /**
@ -77,6 +83,7 @@ public class SysPost extends BaseEntity {
* *
*/ */
@ApiModelProperty(value = "用户是否存在此岗位标识 默认不存在") @ApiModelProperty(value = "用户是否存在此岗位标识 默认不存在")
@TableField(exist = false)
private boolean flag = false; private boolean flag = false;
} }

View File

@ -1,9 +1,12 @@
package com.ruoyi.system.domain; package com.ruoyi.system.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.NoArgsConstructor;
/** /**
* sys_role_dept * sys_role_dept
@ -12,12 +15,15 @@ import lombok.experimental.Accessors;
*/ */
@Data @Data
@NoArgsConstructor
@TableName("sys_role_dept")
@ApiModel("角色和部门关联") @ApiModel("角色和部门关联")
public class SysRoleDept { public class SysRoleDept {
/** /**
* ID * ID
*/ */
@TableId(type = IdType.INPUT)
@ApiModelProperty(value = "角色ID") @ApiModelProperty(value = "角色ID")
private Long roleId; private Long roleId;

View File

@ -1,9 +1,12 @@
package com.ruoyi.system.domain; package com.ruoyi.system.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.NoArgsConstructor;
/** /**
* sys_role_menu * sys_role_menu
@ -12,12 +15,15 @@ import lombok.experimental.Accessors;
*/ */
@Data @Data
@NoArgsConstructor
@TableName("sys_role_menu")
@ApiModel("角色和菜单关联") @ApiModel("角色和菜单关联")
public class SysRoleMenu { public class SysRoleMenu {
/** /**
* ID * ID
*/ */
@TableId(type = IdType.INPUT)
@ApiModelProperty(value = "角色ID") @ApiModelProperty(value = "角色ID")
private Long roleId; private Long roleId;

View File

@ -3,7 +3,7 @@ package com.ruoyi.system.domain;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.NoArgsConstructor;
/** /**
* 线 * 线
@ -12,6 +12,7 @@ import lombok.experimental.Accessors;
*/ */
@Data @Data
@NoArgsConstructor
@ApiModel("当前在线会话业务对象") @ApiModel("当前在线会话业务对象")
public class SysUserOnline { public class SysUserOnline {

View File

@ -1,9 +1,12 @@
package com.ruoyi.system.domain; package com.ruoyi.system.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.NoArgsConstructor;
/** /**
* sys_user_post * sys_user_post
@ -12,12 +15,15 @@ import lombok.experimental.Accessors;
*/ */
@Data @Data
@NoArgsConstructor
@TableName("sys_user_post")
@ApiModel("用户和岗位关联") @ApiModel("用户和岗位关联")
public class SysUserPost { public class SysUserPost {
/** /**
* ID * ID
*/ */
@TableId(type = IdType.INPUT)
@ApiModelProperty(value = "用户ID") @ApiModelProperty(value = "用户ID")
private Long userId; private Long userId;

View File

@ -1,9 +1,12 @@
package com.ruoyi.system.domain; package com.ruoyi.system.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.NoArgsConstructor;
/** /**
* sys_user_role * sys_user_role
@ -12,12 +15,15 @@ import lombok.experimental.Accessors;
*/ */
@Data @Data
@NoArgsConstructor
@TableName("sys_user_role")
@ApiModel("用户和角色关联") @ApiModel("用户和角色关联")
public class SysUserRole { public class SysUserRole {
/** /**
* ID * ID
*/ */
@TableId(type = IdType.INPUT)
@ApiModelProperty(value = "用户ID") @ApiModelProperty(value = "用户ID")
private Long userId; private Long userId;

View File

@ -4,10 +4,9 @@ import cn.hutool.core.collection.CollUtil;
import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.system.api.RemoteDictService; import com.ruoyi.system.api.RemoteDictService;
import com.ruoyi.system.api.domain.SysDictData; import com.ruoyi.system.api.domain.SysDictData;
import com.ruoyi.system.service.ISysDictDataService; import com.ruoyi.system.service.ISysDictTypeService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.dubbo.config.annotation.DubboService; import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
@ -17,18 +16,18 @@ import java.util.List;
* *
* @author Lion Li * @author Lion Li
*/ */
@RequiredArgsConstructor(onConstructor_ = @Autowired) @RequiredArgsConstructor
@Service @Service
@DubboService @DubboService
public class RemoteDictServiceImpl implements RemoteDictService { public class RemoteDictServiceImpl implements RemoteDictService {
private final ISysDictDataService sysDictDataService; private final ISysDictTypeService sysDictTypeService;
@Override @Override
public String getDictLabel(String dictType, String dictValue, String separator) { public String getDictLabel(String dictType, String dictValue, String separator) {
StringBuilder propertyString = new StringBuilder(); StringBuilder propertyString = new StringBuilder();
List<SysDictData> datas = sysDictDataService.selectDictDataByType(dictType); List<SysDictData> datas = sysDictTypeService.selectDictDataByType(dictType);
if (StringUtils.containsAny(dictValue, separator) && CollUtil.isNotEmpty(datas)) { if (StringUtils.containsAny(dictValue, separator) && CollUtil.isNotEmpty(datas)) {
for (SysDictData dict : datas) { for (SysDictData dict : datas) {
@ -52,7 +51,7 @@ public class RemoteDictServiceImpl implements RemoteDictService {
@Override @Override
public String getDictValue(String dictType, String dictLabel, String separator) { public String getDictValue(String dictType, String dictLabel, String separator) {
StringBuilder propertyString = new StringBuilder(); StringBuilder propertyString = new StringBuilder();
List<SysDictData> datas = sysDictDataService.selectDictDataByType(dictType); List<SysDictData> datas = sysDictTypeService.selectDictDataByType(dictType);
if (StringUtils.containsAny(dictLabel, separator) && CollUtil.isNotEmpty(datas)) { if (StringUtils.containsAny(dictLabel, separator) && CollUtil.isNotEmpty(datas)) {
for (SysDictData dict : datas) { for (SysDictData dict : datas) {

View File

@ -7,7 +7,6 @@ import com.ruoyi.system.service.ISysLogininforService;
import com.ruoyi.system.service.ISysOperLogService; import com.ruoyi.system.service.ISysOperLogService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.dubbo.config.annotation.DubboService; import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/** /**
@ -15,7 +14,7 @@ import org.springframework.stereotype.Service;
* *
* @author Lion Li * @author Lion Li
*/ */
@RequiredArgsConstructor(onConstructor_ = @Autowired) @RequiredArgsConstructor
@Service @Service
@DubboService @DubboService
public class RemoteLogServiceImpl implements RemoteLogService { public class RemoteLogServiceImpl implements RemoteLogService {
@ -24,12 +23,12 @@ public class RemoteLogServiceImpl implements RemoteLogService {
private final ISysLogininforService logininforService; private final ISysLogininforService logininforService;
@Override @Override
public Boolean saveLog(SysOperLog sysOperLog, String source){ public Boolean saveLog(SysOperLog sysOperLog) {
return operLogService.insertOperlog(sysOperLog) > 0; return operLogService.insertOperlog(sysOperLog) > 0;
} }
@Override @Override
public Boolean saveLogininfor(SysLogininfor sysLogininfor, String source){ public Boolean saveLogininfor(SysLogininfor sysLogininfor) {
return logininforService.insertLogininfor(sysLogininfor) > 0; return logininforService.insertLogininfor(sysLogininfor) > 0;
} }
} }

View File

@ -11,7 +11,6 @@ import com.ruoyi.system.service.ISysPermissionService;
import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.ISysUserService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.dubbo.config.annotation.DubboService; import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Set; import java.util.Set;
@ -21,7 +20,7 @@ import java.util.Set;
* *
* @author Lion Li * @author Lion Li
*/ */
@RequiredArgsConstructor(onConstructor_ = @Autowired) @RequiredArgsConstructor
@Service @Service
@DubboService @DubboService
public class RemoteUserServiceImpl implements RemoteUserService { public class RemoteUserServiceImpl implements RemoteUserService {
@ -31,7 +30,7 @@ public class RemoteUserServiceImpl implements RemoteUserService {
private final ISysConfigService configService; private final ISysConfigService configService;
@Override @Override
public LoginUser getUserInfo(String username, String source) { public LoginUser getUserInfo(String username) {
SysUser sysUser = userService.selectUserByUserName(username); SysUser sysUser = userService.selectUserByUserName(username);
if (ObjectUtil.isNull(sysUser)) { if (ObjectUtil.isNull(sysUser)) {
throw new ServiceException("用户名或密码错误"); throw new ServiceException("用户名或密码错误");
@ -48,7 +47,7 @@ public class RemoteUserServiceImpl implements RemoteUserService {
} }
@Override @Override
public Boolean registerUserInfo(SysUser sysUser, String source) { public Boolean registerUserInfo(SysUser sysUser) {
String username = sysUser.getUserName(); String username = sysUser.getUserName();
if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser")))) { if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser")))) {
throw new ServiceException("当前系统没有开启注册功能"); throw new ServiceException("当前系统没有开启注册功能");

View File

@ -1,68 +1,13 @@
package com.ruoyi.system.mapper; package com.ruoyi.system.mapper;
import com.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
import com.ruoyi.system.domain.SysConfig; import com.ruoyi.system.domain.SysConfig;
import java.util.List;
/** /**
* *
* *
* @author ruoyi * @author Lion Li
*/ */
public interface SysConfigMapper { public interface SysConfigMapper extends BaseMapperPlus<SysConfigMapper, SysConfig, SysConfig> {
/**
*
*
* @param config
* @return
*/
SysConfig selectConfig(SysConfig config);
/**
*
*
* @param config
* @return
*/
List<SysConfig> selectConfigList(SysConfig config);
/**
*
*
* @param configKey
* @return
*/
SysConfig checkConfigKeyUnique(String configKey);
/**
*
*
* @param config
* @return
*/
int insertConfig(SysConfig config);
/**
*
*
* @param config
* @return
*/
int updateConfig(SysConfig config);
/**
*
*
* @param configId ID
* @return
*/
int deleteConfigById(Long configId);
/**
*
*
* @param configIds ID
* @return
*/
int deleteConfigByIds(Long[] configIds);
} }

View File

@ -1,5 +1,8 @@
package com.ruoyi.system.mapper; package com.ruoyi.system.mapper;
import com.ruoyi.common.mybatis.annotation.DataColumn;
import com.ruoyi.common.mybatis.annotation.DataPermission;
import com.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
import com.ruoyi.system.api.domain.SysDept; import com.ruoyi.system.api.domain.SysDept;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -8,15 +11,19 @@ import java.util.List;
/** /**
* *
* *
* @author ruoyi * @author Lion Li
*/ */
public interface SysDeptMapper { public interface SysDeptMapper extends BaseMapperPlus<SysDeptMapper, SysDept, SysDept> {
/** /**
* *
* *
* @param dept * @param dept
* @return * @return
*/ */
@DataPermission({
@DataColumn(key = "deptName", value = "d.dept_id")
})
List<SysDept> selectDeptList(SysDept dept); List<SysDept> selectDeptList(SysDept dept);
/** /**
@ -28,78 +35,6 @@ public interface SysDeptMapper {
*/ */
List<Long> selectDeptListByRoleId(@Param("roleId") Long roleId, @Param("deptCheckStrictly") boolean deptCheckStrictly); List<Long> selectDeptListByRoleId(@Param("roleId") Long roleId, @Param("deptCheckStrictly") boolean deptCheckStrictly);
/**
* ID
*
* @param deptId ID
* @return
*/
SysDept selectDeptById(Long deptId);
/**
* ID
*
* @param deptId ID
* @return
*/
List<SysDept> selectChildrenDeptById(Long deptId);
/**
* ID
*
* @param deptId ID
* @return
*/
int selectNormalChildrenDeptById(Long deptId);
/**
*
*
* @param deptId ID
* @return
*/
int hasChildByDeptId(Long deptId);
/**
*
*
* @param deptId ID
* @return
*/
int checkDeptExistUser(Long deptId);
/**
*
*
* @param deptName
* @param parentId ID
* @return
*/
SysDept checkDeptNameUnique(@Param("deptName") String deptName, @Param("parentId") Long parentId);
/**
*
*
* @param dept
* @return
*/
int insertDept(SysDept dept);
/**
*
*
* @param dept
* @return
*/
int updateDept(SysDept dept);
/**
*
*
* @param deptIds ID
*/
void updateDeptStatusNormal(Long[] deptIds);
/** /**
* *
* *
@ -108,11 +43,4 @@ public interface SysDeptMapper {
*/ */
int updateDeptChildren(@Param("depts") List<SysDept> depts); int updateDeptChildren(@Param("depts") List<SysDept> depts);
/**
*
*
* @param deptId ID
* @return
*/
int deleteDeptById(Long deptId);
} }

View File

@ -1,95 +1,25 @@
package com.ruoyi.system.mapper; package com.ruoyi.system.mapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.core.constant.UserConstants;
import com.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
import com.ruoyi.system.api.domain.SysDictData; import com.ruoyi.system.api.domain.SysDictData;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
/** /**
* *
* *
* @author ruoyi * @author Lion Li
*/ */
public interface SysDictDataMapper { public interface SysDictDataMapper extends BaseMapperPlus<SysDictDataMapper, SysDictData, SysDictData> {
/**
*
*
* @param dictData
* @return
*/
List<SysDictData> selectDictDataList(SysDictData dictData);
/** default List<SysDictData> selectDictDataByType(String dictType) {
* return selectList(
* new LambdaQueryWrapper<SysDictData>()
* @param dictType .eq(SysDictData::getStatus, UserConstants.DICT_NORMAL)
* @return .eq(SysDictData::getDictType, dictType)
*/ .orderByAsc(SysDictData::getDictSort));
List<SysDictData> selectDictDataByType(String dictType); }
/**
*
*
* @param dictType
* @param dictValue
* @return
*/
String selectDictLabel(@Param("dictType") String dictType, @Param("dictValue") String dictValue);
/**
* ID
*
* @param dictCode ID
* @return
*/
SysDictData selectDictDataById(Long dictCode);
/**
*
*
* @param dictType
* @return
*/
int countDictDataByType(String dictType);
/**
* ID
*
* @param dictCode ID
* @return
*/
int deleteDictDataById(Long dictCode);
/**
*
*
* @param dictCodes ID
* @return
*/
int deleteDictDataByIds(Long[] dictCodes);
/**
*
*
* @param dictData
* @return
*/
int insertDictData(SysDictData dictData);
/**
*
*
* @param dictData
* @return
*/
int updateDictData(SysDictData dictData);
/**
*
*
* @param oldDictType
* @param newDictType
* @return
*/
int updateDictDataType(@Param("oldDictType") String oldDictType, @Param("newDictType") String newDictType);
} }

View File

@ -1,85 +1,13 @@
package com.ruoyi.system.mapper; package com.ruoyi.system.mapper;
import com.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
import com.ruoyi.system.api.domain.SysDictType; import com.ruoyi.system.api.domain.SysDictType;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/** /**
* *
* *
* @author ruoyi * @author Lion Li
*/ */
@Mapper public interface SysDictTypeMapper extends BaseMapperPlus<SysDictTypeMapper, SysDictType, SysDictType> {
public interface SysDictTypeMapper {
/**
*
*
* @param dictType
* @return
*/
List<SysDictType> selectDictTypeList(SysDictType dictType);
/**
*
*
* @return
*/
List<SysDictType> selectDictTypeAll();
/**
* ID
*
* @param dictId ID
* @return
*/
SysDictType selectDictTypeById(Long dictId);
/**
*
*
* @param dictType
* @return
*/
SysDictType selectDictTypeByType(String dictType);
/**
* ID
*
* @param dictId ID
* @return
*/
int deleteDictTypeById(Long dictId);
/**
*
*
* @param dictIds ID
* @return
*/
int deleteDictTypeByIds(Long[] dictIds);
/**
*
*
* @param dictType
* @return
*/
int insertDictType(SysDictType dictType);
/**
*
*
* @param dictType
* @return
*/
int updateDictType(SysDictType dictType);
/**
*
*
* @param dictType
* @return
*/
SysDictType checkDictTypeUnique(String dictType);
} }

View File

@ -1,42 +1,13 @@
package com.ruoyi.system.mapper; package com.ruoyi.system.mapper;
import com.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
import com.ruoyi.system.api.domain.SysLogininfor; import com.ruoyi.system.api.domain.SysLogininfor;
import java.util.List;
/** /**
* 访 * 访
* *
* @author ruoyi * @author Lion Li
*/ */
public interface SysLogininforMapper { public interface SysLogininforMapper extends BaseMapperPlus<SysLogininforMapper, SysLogininfor, SysLogininfor> {
/**
*
*
* @param logininfor 访
*/
int insertLogininfor(SysLogininfor logininfor);
/**
*
*
* @param logininfor 访
* @return
*/
List<SysLogininfor> selectLogininforList(SysLogininfor logininfor);
/**
*
*
* @param infoIds ID
* @return
*/
int deleteLogininforByIds(Long[] infoIds);
/**
*
*
* @return
*/
int cleanLogininfor();
} }

View File

@ -1,5 +1,6 @@
package com.ruoyi.system.mapper; package com.ruoyi.system.mapper;
import com.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
import com.ruoyi.system.domain.SysMenu; import com.ruoyi.system.domain.SysMenu;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -8,16 +9,9 @@ import java.util.List;
/** /**
* *
* *
* @author ruoyi * @author Lion Li
*/ */
public interface SysMenuMapper { public interface SysMenuMapper extends BaseMapperPlus<SysMenuMapper, SysMenu, SysMenu> {
/**
*
*
* @param menu
* @return
*/
List<SysMenu> selectMenuList(SysMenu menu);
/** /**
* *
@ -66,52 +60,4 @@ public interface SysMenuMapper {
*/ */
List<Long> selectMenuListByRoleId(@Param("roleId") Long roleId, @Param("menuCheckStrictly") boolean menuCheckStrictly); List<Long> selectMenuListByRoleId(@Param("roleId") Long roleId, @Param("menuCheckStrictly") boolean menuCheckStrictly);
/**
* ID
*
* @param menuId ID
* @return
*/
SysMenu selectMenuById(Long menuId);
/**
*
*
* @param menuId ID
* @return
*/
int hasChildByMenuId(Long menuId);
/**
*
*
* @param menu
* @return
*/
int insertMenu(SysMenu menu);
/**
*
*
* @param menu
* @return
*/
int updateMenu(SysMenu menu);
/**
*
*
* @param menuId ID
* @return
*/
int deleteMenuById(Long menuId);
/**
*
*
* @param menuName
* @param parentId ID
* @return
*/
SysMenu checkMenuNameUnique(@Param("menuName") String menuName, @Param("parentId") Long parentId);
} }

View File

@ -1,60 +1,13 @@
package com.ruoyi.system.mapper; package com.ruoyi.system.mapper;
import com.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
import com.ruoyi.system.domain.SysNotice; import com.ruoyi.system.domain.SysNotice;
import java.util.List;
/** /**
* *
* *
* @author ruoyi * @author Lion Li
*/ */
public interface SysNoticeMapper { public interface SysNoticeMapper extends BaseMapperPlus<SysNoticeMapper, SysNotice, SysNotice> {
/**
*
*
* @param noticeId ID
* @return
*/
SysNotice selectNoticeById(Long noticeId);
/**
*
*
* @param notice
* @return
*/
List<SysNotice> selectNoticeList(SysNotice notice);
/**
*
*
* @param notice
* @return
*/
int insertNotice(SysNotice notice);
/**
*
*
* @param notice
* @return
*/
int updateNotice(SysNotice notice);
/**
*
*
* @param noticeId ID
* @return
*/
int deleteNoticeById(Long noticeId);
/**
*
*
* @param noticeIds ID
* @return
*/
int deleteNoticeByIds(Long[] noticeIds);
} }

View File

@ -1,48 +1,13 @@
package com.ruoyi.system.mapper; package com.ruoyi.system.mapper;
import com.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
import com.ruoyi.system.api.domain.SysOperLog; import com.ruoyi.system.api.domain.SysOperLog;
import java.util.List;
/** /**
* *
* *
* @author ruoyi * @author Lion Li
*/ */
public interface SysOperLogMapper { public interface SysOperLogMapper extends BaseMapperPlus<SysOperLogMapper, SysOperLog, SysOperLog> {
/**
*
*
* @param operLog
*/
int insertOperlog(SysOperLog operLog);
/**
*
*
* @param operLog
* @return
*/
List<SysOperLog> selectOperLogList(SysOperLog operLog);
/**
*
*
* @param operIds ID
* @return
*/
int deleteOperLogByIds(Long[] operIds);
/**
*
*
* @param operId ID
* @return
*/
SysOperLog selectOperLogById(Long operId);
/**
*
*/
void cleanOperLog();
} }

View File

@ -1,5 +1,6 @@
package com.ruoyi.system.mapper; package com.ruoyi.system.mapper;
import com.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
import com.ruoyi.system.domain.SysPost; import com.ruoyi.system.domain.SysPost;
import java.util.List; import java.util.List;
@ -7,31 +8,9 @@ import java.util.List;
/** /**
* *
* *
* @author ruoyi * @author Lion Li
*/ */
public interface SysPostMapper { public interface SysPostMapper extends BaseMapperPlus<SysPostMapper, SysPost, SysPost> {
/**
*
*
* @param post
* @return
*/
List<SysPost> selectPostList(SysPost post);
/**
*
*
* @return
*/
List<SysPost> selectPostAll();
/**
* ID
*
* @param postId ID
* @return
*/
SysPost selectPostById(Long postId);
/** /**
* ID * ID
@ -49,51 +28,4 @@ public interface SysPostMapper {
*/ */
List<SysPost> selectPostsByUserName(String userName); List<SysPost> selectPostsByUserName(String userName);
/**
*
*
* @param postId ID
* @return
*/
int deletePostById(Long postId);
/**
*
*
* @param postIds ID
* @return
*/
int deletePostByIds(Long[] postIds);
/**
*
*
* @param post
* @return
*/
int updatePost(SysPost post);
/**
*
*
* @param post
* @return
*/
int insertPost(SysPost post);
/**
*
*
* @param postName
* @return
*/
SysPost checkPostNameUnique(String postName);
/**
*
*
* @param postCode
* @return
*/
SysPost checkPostCodeUnique(String postCode);
} }

View File

@ -1,5 +1,6 @@
package com.ruoyi.system.mapper; package com.ruoyi.system.mapper;
import com.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
import com.ruoyi.system.domain.SysRoleDept; import com.ruoyi.system.domain.SysRoleDept;
import java.util.List; import java.util.List;
@ -7,9 +8,10 @@ import java.util.List;
/** /**
* *
* *
* @author ruoyi * @author Lion Li
*/ */
public interface SysRoleDeptMapper { public interface SysRoleDeptMapper extends BaseMapperPlus<SysRoleDeptMapper, SysRoleDept, SysRoleDept> {
/** /**
* ID * ID
* *

View File

@ -1,21 +1,35 @@
package com.ruoyi.system.mapper; package com.ruoyi.system.mapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.mybatis.annotation.DataColumn;
import com.ruoyi.common.mybatis.annotation.DataPermission;
import com.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
import com.ruoyi.system.api.domain.SysRole; import com.ruoyi.system.api.domain.SysRole;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
/** /**
* *
* *
* @author ruoyi * @author Lion Li
*/ */
public interface SysRoleMapper { public interface SysRoleMapper extends BaseMapperPlus<SysRoleMapper, SysRole, SysRole> {
@DataPermission({
@DataColumn(key = "deptName", value = "d.dept_id")
})
Page<SysRole> selectPageRoleList(@Param("page") Page<SysRole> page, @Param("role") SysRole role);
/** /**
* *
* *
* @param role * @param role
* @return * @return
*/ */
@DataPermission({
@DataColumn(key = "deptName", value = "d.dept_id")
})
List<SysRole> selectRoleList(SysRole role); List<SysRole> selectRoleList(SysRole role);
/** /**
@ -26,12 +40,6 @@ public interface SysRoleMapper {
*/ */
List<SysRole> selectRolePermissionByUserId(Long userId); List<SysRole> selectRolePermissionByUserId(Long userId);
/**
*
*
* @return
*/
List<SysRole> selectRoleAll();
/** /**
* ID * ID
@ -41,14 +49,6 @@ public interface SysRoleMapper {
*/ */
List<Long> selectRoleListByUserId(Long userId); List<Long> selectRoleListByUserId(Long userId);
/**
* ID
*
* @param roleId ID
* @return
*/
SysRole selectRoleById(Long roleId);
/** /**
* ID * ID
* *
@ -57,51 +57,4 @@ public interface SysRoleMapper {
*/ */
List<SysRole> selectRolesByUserName(String userName); List<SysRole> selectRolesByUserName(String userName);
/**
*
*
* @param roleName
* @return
*/
SysRole checkRoleNameUnique(String roleName);
/**
*
*
* @param roleKey
* @return
*/
SysRole checkRoleKeyUnique(String roleKey);
/**
*
*
* @param role
* @return
*/
int updateRole(SysRole role);
/**
*
*
* @param role
* @return
*/
int insertRole(SysRole role);
/**
* ID
*
* @param roleId ID
* @return
*/
int deleteRoleById(Long roleId);
/**
*
*
* @param roleIds ID
* @return
*/
int deleteRoleByIds(Long[] roleIds);
} }

View File

@ -1,5 +1,6 @@
package com.ruoyi.system.mapper; package com.ruoyi.system.mapper;
import com.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
import com.ruoyi.system.domain.SysRoleMenu; import com.ruoyi.system.domain.SysRoleMenu;
import java.util.List; import java.util.List;
@ -7,9 +8,10 @@ import java.util.List;
/** /**
* *
* *
* @author ruoyi * @author Lion Li
*/ */
public interface SysRoleMenuMapper { public interface SysRoleMenuMapper extends BaseMapperPlus<SysRoleMenuMapper, SysRoleMenu, SysRoleMenu> {
/** /**
* 使 * 使
* *

View File

@ -1,5 +1,9 @@
package com.ruoyi.system.mapper; package com.ruoyi.system.mapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.mybatis.annotation.DataColumn;
import com.ruoyi.common.mybatis.annotation.DataPermission;
import com.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.domain.SysUser;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -8,15 +12,26 @@ import java.util.List;
/** /**
* *
* *
* @author ruoyi * @author Lion Li
*/ */
public interface SysUserMapper { public interface SysUserMapper extends BaseMapperPlus<SysUserMapper, SysUser, SysUser> {
@DataPermission({
@DataColumn(key = "deptName", value = "d.dept_id"),
@DataColumn(key = "userName", value = "u.user_id")
})
Page<SysUser> selectPageUserList(@Param("page") Page<SysUser> page, @Param("user") SysUser user);
/** /**
* *
* *
* @param sysUser * @param sysUser
* @return * @return
*/ */
@DataPermission({
@DataColumn(key = "deptName", value = "d.dept_id"),
@DataColumn(key = "userName", value = "u.user_id")
})
List<SysUser> selectUserList(SysUser sysUser); List<SysUser> selectUserList(SysUser sysUser);
/** /**
@ -25,7 +40,11 @@ public interface SysUserMapper {
* @param user * @param user
* @return * @return
*/ */
List<SysUser> selectAllocatedList(SysUser user); @DataPermission({
@DataColumn(key = "deptName", value = "d.dept_id"),
@DataColumn(key = "userName", value = "u.user_id")
})
Page<SysUser> selectAllocatedList(@Param("page") Page<SysUser> page, @Param("user") SysUser user);
/** /**
* *
@ -33,7 +52,11 @@ public interface SysUserMapper {
* @param user * @param user
* @return * @return
*/ */
List<SysUser> selectUnallocatedList(SysUser user); @DataPermission({
@DataColumn(key = "deptName", value = "d.dept_id"),
@DataColumn(key = "userName", value = "u.user_id")
})
Page<SysUser> selectUnallocatedList(@Param("page") Page<SysUser> page, @Param("user") SysUser user);
/** /**
* *
@ -51,77 +74,4 @@ public interface SysUserMapper {
*/ */
SysUser selectUserById(Long userId); SysUser selectUserById(Long userId);
/**
*
*
* @param user
* @return
*/
int insertUser(SysUser user);
/**
*
*
* @param user
* @return
*/
int updateUser(SysUser user);
/**
*
*
* @param userName
* @param avatar
* @return
*/
int updateUserAvatar(@Param("userName") String userName, @Param("avatar") String avatar);
/**
*
*
* @param userName
* @param password
* @return
*/
int resetUserPwd(@Param("userName") String userName, @Param("password") String password);
/**
* ID
*
* @param userId ID
* @return
*/
int deleteUserById(Long userId);
/**
*
*
* @param userIds ID
* @return
*/
int deleteUserByIds(Long[] userIds);
/**
*
*
* @param userName
* @return
*/
int checkUserNameUnique(String userName);
/**
*
*
* @param phonenumber
* @return
*/
SysUser checkPhoneUnique(String phonenumber);
/**
* email
*
* @param email
* @return
*/
SysUser checkEmailUnique(String email);
} }

View File

@ -1,5 +1,6 @@
package com.ruoyi.system.mapper; package com.ruoyi.system.mapper;
import com.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
import com.ruoyi.system.domain.SysUserPost; import com.ruoyi.system.domain.SysUserPost;
import java.util.List; import java.util.List;
@ -7,9 +8,10 @@ import java.util.List;
/** /**
* *
* *
* @author ruoyi * @author Lion Li
*/ */
public interface SysUserPostMapper { public interface SysUserPostMapper extends BaseMapperPlus<SysUserPostMapper, SysUserPost, SysUserPost> {
/** /**
* ID * ID
* *

View File

@ -1,5 +1,6 @@
package com.ruoyi.system.mapper; package com.ruoyi.system.mapper;
import com.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
import com.ruoyi.system.domain.SysUserRole; import com.ruoyi.system.domain.SysUserRole;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -8,9 +9,10 @@ import java.util.List;
/** /**
* *
* *
* @author ruoyi * @author Lion Li
*/ */
public interface SysUserRoleMapper { public interface SysUserRoleMapper extends BaseMapperPlus<SysUserRoleMapper, SysUserRole, SysUserRole> {
/** /**
* ID * ID
* *

View File

@ -1,5 +1,7 @@
package com.ruoyi.system.service; package com.ruoyi.system.service;
import com.ruoyi.common.mybatis.core.page.PageQuery;
import com.ruoyi.common.mybatis.core.page.TableDataInfo;
import com.ruoyi.system.domain.SysConfig; import com.ruoyi.system.domain.SysConfig;
import java.util.List; import java.util.List;
@ -10,6 +12,9 @@ import java.util.List;
* @author ruoyi * @author ruoyi
*/ */
public interface ISysConfigService { public interface ISysConfigService {
TableDataInfo<SysConfig> selectPageConfigList(SysConfig config, PageQuery pageQuery);
/** /**
* *
* *

View File

@ -19,14 +19,6 @@ public interface ISysDeptService {
*/ */
List<SysDept> selectDeptList(SysDept dept); List<SysDept> selectDeptList(SysDept dept);
/**
*
*
* @param depts
* @return
*/
List<SysDept> buildDeptTree(List<SysDept> depts);
/** /**
* *
* *
@ -57,7 +49,7 @@ public interface ISysDeptService {
* @param deptId ID * @param deptId ID
* @return * @return
*/ */
int selectNormalChildrenDeptById(Long deptId); long selectNormalChildrenDeptById(Long deptId);
/** /**
* *

View File

@ -1,5 +1,7 @@
package com.ruoyi.system.service; package com.ruoyi.system.service;
import com.ruoyi.common.mybatis.core.page.PageQuery;
import com.ruoyi.common.mybatis.core.page.TableDataInfo;
import com.ruoyi.system.api.domain.SysDictData; import com.ruoyi.system.api.domain.SysDictData;
import java.util.List; import java.util.List;
@ -10,6 +12,9 @@ import java.util.List;
* @author ruoyi * @author ruoyi
*/ */
public interface ISysDictDataService { public interface ISysDictDataService {
TableDataInfo<SysDictData> selectPageDictDataList(SysDictData dictData, PageQuery pageQuery);
/** /**
* *
* *
@ -27,14 +32,6 @@ public interface ISysDictDataService {
*/ */
String selectDictLabel(String dictType, String dictValue); String selectDictLabel(String dictType, String dictValue);
/**
*
*
* @param dictType
* @return
*/
List<SysDictData> selectDictDataByType(String dictType);
/** /**
* ID * ID
* *

View File

@ -1,5 +1,7 @@
package com.ruoyi.system.service; package com.ruoyi.system.service;
import com.ruoyi.common.mybatis.core.page.PageQuery;
import com.ruoyi.common.mybatis.core.page.TableDataInfo;
import com.ruoyi.system.api.domain.SysDictData; import com.ruoyi.system.api.domain.SysDictData;
import com.ruoyi.system.api.domain.SysDictType; import com.ruoyi.system.api.domain.SysDictType;
@ -11,6 +13,8 @@ import java.util.List;
* @author ruoyi * @author ruoyi
*/ */
public interface ISysDictTypeService { public interface ISysDictTypeService {
TableDataInfo<SysDictType> selectPageDictTypeList(SysDictType dictType, PageQuery pageQuery);
/** /**
* *
* *

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