list = this.selectList(wrapper);
+ if (CollUtil.isEmpty(list)) {
+ return CollUtil.newArrayList();
+ }
+ return BeanCopyUtils.copyList(list, voClass);
+ }
+
+ default > P selectVoPage(IPage page, Wrapper wrapper) {
+ return selectVoPage(page, wrapper, this.currentVoClass());
+ }
+
+ /**
+ * 分页查询VO
+ */
+ default > P selectVoPage(IPage page, Wrapper wrapper, Class voClass) {
+ IPage pageData = this.selectPage(page, wrapper);
+ IPage 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;
+ }
+
+}
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/core/page/PageQuery.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/core/page/PageQuery.java
new file mode 100644
index 000000000..b551da3ad
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/core/page/PageQuery.java
@@ -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;
+
+ /**
+ * 排序的方向desc或者asc
+ */
+ @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 Page 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 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;
+ }
+
+}
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/core/page/TableDataInfo.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/core/page/TableDataInfo.java
new file mode 100644
index 000000000..eb9d5ec45
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/core/page/TableDataInfo.java
@@ -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 implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 总记录数
+ */
+ @ApiModelProperty("总记录数")
+ private long total;
+
+ /**
+ * 列表数据
+ */
+ @ApiModelProperty("列表数据")
+ private List rows;
+
+ /**
+ * 消息状态码
+ */
+ @ApiModelProperty("消息状态码")
+ private int code;
+
+ /**
+ * 消息内容
+ */
+ @ApiModelProperty("消息内容")
+ private String msg;
+
+ /**
+ * 分页
+ *
+ * @param list 列表数据
+ * @param total 总记录数
+ */
+ public TableDataInfo(List list, long total) {
+ this.rows = list;
+ this.total = total;
+ }
+
+ public static TableDataInfo build(IPage page) {
+ TableDataInfo rspData = new TableDataInfo<>();
+ rspData.setCode(HttpStatus.HTTP_OK);
+ rspData.setMsg("查询成功");
+ rspData.setRows(page.getRecords());
+ rspData.setTotal(page.getTotal());
+ return rspData;
+ }
+
+ public static TableDataInfo build(List list) {
+ TableDataInfo rspData = new TableDataInfo<>();
+ rspData.setCode(HttpStatus.HTTP_OK);
+ rspData.setMsg("查询成功");
+ rspData.setRows(list);
+ rspData.setTotal(list.size());
+ return rspData;
+ }
+
+ public static TableDataInfo build() {
+ TableDataInfo rspData = new TableDataInfo<>();
+ rspData.setCode(HttpStatus.HTTP_OK);
+ rspData.setMsg("查询成功");
+ return rspData;
+ }
+
+}
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/enums/DataScopeType.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/enums/DataScopeType.java
new file mode 100644
index 000000000..17a221332
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/enums/DataScopeType.java
@@ -0,0 +1,72 @@
+package com.ruoyi.common.mybatis.enums;
+
+import com.ruoyi.common.core.utils.StringUtils;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 数据权限类型
+ *
+ * 语法支持 spel 模板表达式
+ *
+ * 内置数据 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;
+ }
+}
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/handler/CreateAndUpdateMetaObjectHandler.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/handler/CreateAndUpdateMetaObjectHandler.java
new file mode 100644
index 000000000..19e074ceb
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/handler/CreateAndUpdateMetaObjectHandler.java
@@ -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();
+ }
+
+}
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/handler/PlusDataPermissionHandler.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/handler/PlusDataPermissionHandler.java
new file mode 100644
index 000000000..bf692c3ec
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/handler/PlusDataPermissionHandler.java
@@ -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 dataPermissionCacheMap = new ConcurrentHashMap<>();
+
+ /**
+ * 无效注解方法缓存用于快速返回
+ */
+ private final Set 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 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);
+ }
+}
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/helper/DataPermissionHelper.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/helper/DataPermissionHelper.java
new file mode 100644
index 000000000..74db1a2bb
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/helper/DataPermissionHelper.java
@@ -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 getVariable(String key) {
+ Map context = getContext();
+ return (T) context.get(key);
+ }
+
+
+ public static void setVariable(String key, Object value) {
+ Map context = getContext();
+ context.put(key, value);
+ }
+
+ public static Map 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) attribute;
+ }
+ throw new NullPointerException("data permission context type exception");
+ }
+}
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/interceptor/PlusDataPermissionInterceptor.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/interceptor/PlusDataPermissionInterceptor.java
new file mode 100644
index 000000000..9b6a0b07a
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/interceptor/PlusDataPermissionInterceptor.java
@@ -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 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);
+ }
+ }
+
+}
+
diff --git a/ruoyi-common/ruoyi-common-datascope/src/main/resources/META-INF/spring.factories b/ruoyi-common/ruoyi-common-mybatis/src/main/resources/META-INF/spring.factories
similarity index 52%
rename from ruoyi-common/ruoyi-common-datascope/src/main/resources/META-INF/spring.factories
rename to ruoyi-common/ruoyi-common-mybatis/src/main/resources/META-INF/spring.factories
index a9bc860f5..328645864 100644
--- a/ruoyi-common/ruoyi-common-datascope/src/main/resources/META-INF/spring.factories
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/resources/META-INF/spring.factories
@@ -1,4 +1,2 @@
-org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
- com.ruoyi.common.datascope.aspect.DataScopeAspect
-
-
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
+ com.ruoyi.common.mybatis.config.MybatisPlusConfiguration
diff --git a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/EnableCustomConfig.java b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/EnableCustomConfig.java
index e58089ee1..7aeb4569c 100644
--- a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/EnableCustomConfig.java
+++ b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/EnableCustomConfig.java
@@ -1,21 +1,20 @@
-package com.ruoyi.common.security.annotation;
-
-import org.mybatis.spring.annotation.MapperScan;
-import org.springframework.context.annotation.EnableAspectJAutoProxy;
-import org.springframework.scheduling.annotation.EnableAsync;
-
-import java.lang.annotation.*;
-
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-@Inherited
-// 表示通过aop框架暴露该代理对象,AopContext能够访问
-@EnableAspectJAutoProxy(exposeProxy = true)
-// 指定要扫描的Mapper类的包的路径
-@MapperScan("com.ruoyi.**.mapper")
-// 开启线程异步执行
-@EnableAsync
-public @interface EnableCustomConfig {
-
-}
+package com.ruoyi.common.security.annotation;
+
+import org.springframework.context.annotation.EnableAspectJAutoProxy;
+import org.springframework.scheduling.annotation.EnableAsync;
+
+import java.lang.annotation.*;
+
+@Target(ElementType.TYPE)
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@Inherited
+// 表示通过aop框架暴露该代理对象,AopContext能够访问
+@EnableAspectJAutoProxy(exposeProxy = true)
+//// 指定要扫描的Mapper类的包的路径
+//@MapperScan("com.ruoyi.**.mapper")
+// 开启线程异步执行
+@EnableAsync
+public @interface EnableCustomConfig {
+
+}
diff --git a/ruoyi-gateway/pom.xml b/ruoyi-gateway/pom.xml
index aff924821..dddf6c521 100644
--- a/ruoyi-gateway/pom.xml
+++ b/ruoyi-gateway/pom.xml
@@ -22,6 +22,11 @@
spring-cloud-starter-gateway
+
+ org.springframework.cloud
+ spring-cloud-starter-loadbalancer
+
+
com.alibaba.cloud
diff --git a/ruoyi-modules/ruoyi-gen/pom.xml b/ruoyi-modules/ruoyi-gen/pom.xml
index abdcbb5df..d24de854b 100644
--- a/ruoyi-modules/ruoyi-gen/pom.xml
+++ b/ruoyi-modules/ruoyi-gen/pom.xml
@@ -76,6 +76,11 @@
ruoyi-common-web
+
+ com.ruoyi
+ ruoyi-common-mybatis
+
+
com.ruoyi
diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/controller/GenController.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/controller/GenController.java
index d3b09e30d..54c9da6ea 100644
--- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/controller/GenController.java
+++ b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/controller/GenController.java
@@ -1,193 +1,191 @@
-package com.ruoyi.gen.controller;
-
-import cn.hutool.core.convert.Convert;
-import com.ruoyi.common.core.web.controller.BaseController;
-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.enums.BusinessType;
-import com.ruoyi.common.security.annotation.RequiresPermissions;
-import com.ruoyi.gen.domain.GenTable;
-import com.ruoyi.gen.domain.GenTableColumn;
-import com.ruoyi.gen.service.IGenTableColumnService;
-import com.ruoyi.gen.service.IGenTableService;
-import io.swagger.annotations.Api;
-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.web.bind.annotation.*;
-
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 代码生成 操作处理
- *
- * @author ruoyi
- */
-@RequiredArgsConstructor(onConstructor_ = @Autowired)
-@RequestMapping("/gen")
-@RestController
-@Api(tags = "代码生成")
-public class GenController extends BaseController {
-
- private final IGenTableService genTableService;
- private final IGenTableColumnService genTableColumnService;
-
- /**
- * 查询代码生成列表
- */
- @RequiresPermissions("tool:gen:list")
- @GetMapping("/list")
- public TableDataInfo genList(GenTable genTable) {
- startPage();
- List list = genTableService.selectGenTableList(genTable);
- return getDataTable(list);
- }
-
- /**
- * 修改代码生成业务
- */
- @RequiresPermissions("tool:gen:query")
- @GetMapping(value = "/{talbleId}")
- public AjaxResult getInfo(@PathVariable Long talbleId) {
- GenTable table = genTableService.selectGenTableById(talbleId);
- List tables = genTableService.selectGenTableAll();
- List list = genTableColumnService.selectGenTableColumnListByTableId(talbleId);
- Map map = new HashMap();
- map.put("info", table);
- map.put("rows", list);
- map.put("tables", tables);
- return AjaxResult.success(map);
- }
-
- /**
- * 查询数据库列表
- */
- @RequiresPermissions("tool:gen:list")
- @GetMapping("/db/list")
- public TableDataInfo dataList(GenTable genTable) {
- startPage();
- List list = genTableService.selectDbTableList(genTable);
- return getDataTable(list);
- }
-
- /**
- * 查询数据表字段列表
- */
- @GetMapping(value = "/column/{talbleId}")
- public TableDataInfo columnList(Long tableId) {
- TableDataInfo dataInfo = new TableDataInfo();
- List list = genTableColumnService.selectGenTableColumnListByTableId(tableId);
- dataInfo.setRows(list);
- dataInfo.setTotal(list.size());
- return dataInfo;
- }
-
- /**
- * 导入表结构(保存)
- */
- @RequiresPermissions("tool:gen:import")
- @Log(title = "代码生成", businessType = BusinessType.IMPORT)
- @PostMapping("/importTable")
- public AjaxResult importTableSave(String tables) {
- String[] tableNames = Convert.toStrArray(tables);
- // 查询表信息
- List tableList = genTableService.selectDbTableListByNames(tableNames);
- genTableService.importGenTable(tableList);
- return AjaxResult.success();
- }
-
- /**
- * 修改保存代码生成业务
- */
- @RequiresPermissions("tool:gen:edit")
- @Log(title = "代码生成", businessType = BusinessType.UPDATE)
- @PutMapping
- public AjaxResult editSave(@Validated @RequestBody GenTable genTable) {
- genTableService.validateEdit(genTable);
- genTableService.updateGenTable(genTable);
- return AjaxResult.success();
- }
-
- /**
- * 删除代码生成
- */
- @RequiresPermissions("tool:gen:remove")
- @Log(title = "代码生成", businessType = BusinessType.DELETE)
- @DeleteMapping("/{tableIds}")
- public AjaxResult remove(@PathVariable Long[] tableIds) {
- genTableService.deleteGenTableByIds(tableIds);
- return AjaxResult.success();
- }
-
- /**
- * 预览代码
- */
- @RequiresPermissions("tool:gen:preview")
- @GetMapping("/preview/{tableId}")
- public AjaxResult preview(@PathVariable("tableId") Long tableId) throws IOException {
- Map dataMap = genTableService.previewCode(tableId);
- return AjaxResult.success(dataMap);
- }
-
- /**
- * 生成代码(下载方式)
- */
- @RequiresPermissions("tool:gen:code")
- @Log(title = "代码生成", businessType = BusinessType.GENCODE)
- @GetMapping("/download/{tableName}")
- public void download(HttpServletResponse response, @PathVariable("tableName") String tableName) throws IOException {
- byte[] data = genTableService.downloadCode(tableName);
- genCode(response, data);
- }
-
- /**
- * 生成代码(自定义路径)
- */
- @RequiresPermissions("tool:gen:code")
- @Log(title = "代码生成", businessType = BusinessType.GENCODE)
- @GetMapping("/genCode/{tableName}")
- public AjaxResult genCode(@PathVariable("tableName") String tableName) {
- genTableService.generatorCode(tableName);
- return AjaxResult.success();
- }
-
- /**
- * 同步数据库
- */
- @RequiresPermissions("tool:gen:edit")
- @Log(title = "代码生成", businessType = BusinessType.UPDATE)
- @GetMapping("/synchDb/{tableName}")
- public AjaxResult synchDb(@PathVariable("tableName") String tableName) {
- genTableService.synchDb(tableName);
- return AjaxResult.success();
- }
-
- /**
- * 批量生成代码
- */
- @RequiresPermissions("tool:gen:code")
- @Log(title = "代码生成", businessType = BusinessType.GENCODE)
- @GetMapping("/batchGenCode")
- public void batchGenCode(HttpServletResponse response, String tables) throws IOException {
- String[] tableNames = Convert.toStrArray(tables);
- byte[] data = genTableService.downloadCode(tableNames);
- genCode(response, data);
- }
-
- /**
- * 生成zip文件
- */
- private void genCode(HttpServletResponse response, byte[] data) throws IOException {
- response.reset();
- response.setHeader("Content-Disposition", "attachment; filename=\"ruoyi.zip\"");
- response.addHeader("Content-Length", "" + data.length);
- response.setContentType("application/octet-stream; charset=UTF-8");
- IOUtils.write(data, response.getOutputStream());
- }
-}
+package com.ruoyi.gen.controller;
+
+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.domain.AjaxResult;
+import com.ruoyi.common.log.annotation.Log;
+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.gen.domain.GenTable;
+import com.ruoyi.gen.domain.GenTableColumn;
+import com.ruoyi.gen.service.IGenTableColumnService;
+import com.ruoyi.gen.service.IGenTableService;
+import io.swagger.annotations.Api;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 代码生成 操作处理
+ *
+ * @author ruoyi
+ */
+@RequiredArgsConstructor
+@RequestMapping("/gen")
+@RestController
+@Api(tags = "代码生成")
+public class GenController extends BaseController {
+
+ private final IGenTableService genTableService;
+ private final IGenTableColumnService genTableColumnService;
+
+ /**
+ * 查询代码生成列表
+ */
+ @RequiresPermissions("tool:gen:list")
+ @GetMapping("/list")
+ public TableDataInfo genList(GenTable genTable, PageQuery pageQuery) {
+ return genTableService.selectPageGenTableList(genTable, pageQuery);
+ }
+
+ /**
+ * 修改代码生成业务
+ */
+ @RequiresPermissions("tool:gen:query")
+ @GetMapping(value = "/{talbleId}")
+ public AjaxResult getInfo(@PathVariable Long talbleId) {
+ GenTable table = genTableService.selectGenTableById(talbleId);
+ List tables = genTableService.selectGenTableAll();
+ List list = genTableColumnService.selectGenTableColumnListByTableId(talbleId);
+ Map map = new HashMap();
+ map.put("info", table);
+ map.put("rows", list);
+ map.put("tables", tables);
+ return AjaxResult.success(map);
+ }
+
+ /**
+ * 查询数据库列表
+ */
+ @RequiresPermissions("tool:gen:list")
+ @GetMapping("/db/list")
+ public TableDataInfo dataList(GenTable genTable, PageQuery pageQuery) {
+ return genTableService.selectPageDbTableList(genTable, pageQuery);
+ }
+
+ /**
+ * 查询数据表字段列表
+ */
+ @GetMapping(value = "/column/{talbleId}")
+ public TableDataInfo columnList(Long tableId) {
+ TableDataInfo dataInfo = new TableDataInfo<>();
+ List list = genTableColumnService.selectGenTableColumnListByTableId(tableId);
+ dataInfo.setRows(list);
+ dataInfo.setTotal(list.size());
+ return dataInfo;
+ }
+
+ /**
+ * 导入表结构(保存)
+ */
+ @RequiresPermissions("tool:gen:import")
+ @Log(title = "代码生成", businessType = BusinessType.IMPORT)
+ @PostMapping("/importTable")
+ public AjaxResult importTableSave(String tables) {
+ String[] tableNames = Convert.toStrArray(tables);
+ // 查询表信息
+ List tableList = genTableService.selectDbTableListByNames(tableNames);
+ genTableService.importGenTable(tableList);
+ return AjaxResult.success();
+ }
+
+ /**
+ * 修改保存代码生成业务
+ */
+ @RequiresPermissions("tool:gen:edit")
+ @Log(title = "代码生成", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult editSave(@Validated @RequestBody GenTable genTable) {
+ genTableService.validateEdit(genTable);
+ genTableService.updateGenTable(genTable);
+ return AjaxResult.success();
+ }
+
+ /**
+ * 删除代码生成
+ */
+ @RequiresPermissions("tool:gen:remove")
+ @Log(title = "代码生成", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{tableIds}")
+ public AjaxResult remove(@PathVariable Long[] tableIds) {
+ genTableService.deleteGenTableByIds(tableIds);
+ return AjaxResult.success();
+ }
+
+ /**
+ * 预览代码
+ */
+ @RequiresPermissions("tool:gen:preview")
+ @GetMapping("/preview/{tableId}")
+ public AjaxResult preview(@PathVariable("tableId") Long tableId) throws IOException {
+ Map dataMap = genTableService.previewCode(tableId);
+ return AjaxResult.success(dataMap);
+ }
+
+ /**
+ * 生成代码(下载方式)
+ */
+ @RequiresPermissions("tool:gen:code")
+ @Log(title = "代码生成", businessType = BusinessType.GENCODE)
+ @GetMapping("/download/{tableName}")
+ public void download(HttpServletResponse response, @PathVariable("tableName") String tableName) throws IOException {
+ byte[] data = genTableService.downloadCode(tableName);
+ genCode(response, data);
+ }
+
+ /**
+ * 生成代码(自定义路径)
+ */
+ @RequiresPermissions("tool:gen:code")
+ @Log(title = "代码生成", businessType = BusinessType.GENCODE)
+ @GetMapping("/genCode/{tableName}")
+ public AjaxResult genCode(@PathVariable("tableName") String tableName) {
+ genTableService.generatorCode(tableName);
+ return AjaxResult.success();
+ }
+
+ /**
+ * 同步数据库
+ */
+ @RequiresPermissions("tool:gen:edit")
+ @Log(title = "代码生成", businessType = BusinessType.UPDATE)
+ @GetMapping("/synchDb/{tableName}")
+ public AjaxResult synchDb(@PathVariable("tableName") String tableName) {
+ genTableService.synchDb(tableName);
+ return AjaxResult.success();
+ }
+
+ /**
+ * 批量生成代码
+ */
+ @RequiresPermissions("tool:gen:code")
+ @Log(title = "代码生成", businessType = BusinessType.GENCODE)
+ @GetMapping("/batchGenCode")
+ public void batchGenCode(HttpServletResponse response, String tables) throws IOException {
+ String[] tableNames = Convert.toStrArray(tables);
+ byte[] data = genTableService.downloadCode(tableNames);
+ genCode(response, data);
+ }
+
+ /**
+ * 生成zip文件
+ */
+ private void genCode(HttpServletResponse response, byte[] data) throws IOException {
+ 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.addHeader("Content-Length", "" + data.length);
+ response.setContentType("application/octet-stream; charset=UTF-8");
+ IoUtil.write(response.getOutputStream(), false, data);
+ }
+}
diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/domain/GenTable.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/domain/GenTable.java
index d50694007..86ec1c7ed 100644
--- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/domain/GenTable.java
+++ b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/domain/GenTable.java
@@ -1,12 +1,13 @@
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.utils.StringUtils;
import com.ruoyi.common.core.web.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
-import lombok.NoArgsConstructor;
-import lombok.experimental.Accessors;
import org.apache.commons.lang3.ArrayUtils;
import javax.validation.Valid;
@@ -16,16 +17,18 @@ import java.util.List;
/**
* 业务表 gen_table
*
- * @author ruoyi
+ * @author Lion Li
*/
+
@Data
@EqualsAndHashCode(callSuper = true)
-@NoArgsConstructor
+@TableName("gen_table")
public class GenTable extends BaseEntity {
/**
* 编号
*/
+ @TableId(value = "table_id")
private Long tableId;
/**
@@ -104,17 +107,20 @@ public class GenTable extends BaseEntity {
/**
* 主键信息
*/
+ @TableField(exist = false)
private GenTableColumn pkColumn;
/**
* 子表信息
*/
+ @TableField(exist = false)
private GenTable subTable;
/**
* 表列信息
*/
@Valid
+ @TableField(exist = false)
private List columns;
/**
@@ -122,29 +128,39 @@ public class GenTable extends BaseEntity {
*/
private String options;
+ /**
+ * 备注
+ */
+ private String remark;
+
/**
* 树编码字段
*/
+ @TableField(exist = false)
private String treeCode;
/**
* 树父编码字段
*/
+ @TableField(exist = false)
private String treeParentCode;
/**
* 树名称字段
*/
+ @TableField(exist = false)
private String treeName;
/**
* 上级菜单ID字段
*/
+ @TableField(exist = false)
private String parentMenuId;
/**
* 上级菜单名称字段
*/
+ @TableField(exist = false)
private String parentMenuName;
public boolean isSub() {
@@ -178,7 +194,7 @@ public class GenTable extends BaseEntity {
public static boolean isSuperColumn(String tplCategory, String javaField) {
if (isTree(tplCategory)) {
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);
}
diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/domain/GenTableColumn.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/domain/GenTableColumn.java
index 2b92e4ee9..ed229f70d 100644
--- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/domain/GenTableColumn.java
+++ b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/domain/GenTableColumn.java
@@ -1,27 +1,31 @@
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.web.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
-import lombok.NoArgsConstructor;
-import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
/**
* 代码生成业务字段表 gen_table_column
*
- * @author ruoyi
+ * @author Lion Li
*/
+
@Data
@EqualsAndHashCode(callSuper = true)
-@NoArgsConstructor
+@TableName("gen_table_column")
public class GenTableColumn extends BaseEntity {
/**
* 编号
*/
+ @TableId(value = "column_id")
private Long columnId;
/**
@@ -37,6 +41,7 @@ public class GenTableColumn extends BaseEntity {
/**
* 列描述
*/
+ @TableField(updateStrategy = FieldStrategy.IGNORED)
private String columnComment;
/**
@@ -58,36 +63,43 @@ public class GenTableColumn extends BaseEntity {
/**
* 是否主键(1是)
*/
+ @TableField(updateStrategy = FieldStrategy.IGNORED)
private String isPk;
/**
* 是否自增(1是)
*/
+ @TableField(updateStrategy = FieldStrategy.IGNORED)
private String isIncrement;
/**
* 是否必填(1是)
*/
+ @TableField(updateStrategy = FieldStrategy.IGNORED)
private String isRequired;
/**
* 是否为插入字段(1是)
*/
+ @TableField(updateStrategy = FieldStrategy.IGNORED)
private String isInsert;
/**
* 是否编辑字段(1是)
*/
+ @TableField(updateStrategy = FieldStrategy.IGNORED)
private String isEdit;
/**
* 是否列表字段(1是)
*/
+ @TableField(updateStrategy = FieldStrategy.IGNORED)
private String isList;
/**
* 是否查询字段(1是)
*/
+ @TableField(updateStrategy = FieldStrategy.IGNORED)
private String isQuery;
/**
@@ -111,7 +123,7 @@ public class GenTableColumn extends BaseEntity {
private Integer sort;
public String getCapJavaField() {
- return StringUtils.capitalize(javaField);
+ return StringUtils.uncapitalize(javaField);
}
public boolean isPk() {
@@ -176,10 +188,10 @@ public class GenTableColumn extends BaseEntity {
public static boolean isSuperColumn(String javaField) {
return StringUtils.equalsAnyIgnoreCase(javaField,
- // BaseEntity
- "createBy", "createTime", "updateBy", "updateTime", "remark",
- // TreeEntity
- "parentName", "parentId", "orderNum", "ancestors");
+ // BaseEntity
+ "createBy", "createTime", "updateBy", "updateTime",
+ // TreeEntity
+ "parentName", "parentId");
}
public boolean isUsableColumn() {
diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/mapper/GenTableColumnMapper.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/mapper/GenTableColumnMapper.java
index 32c60c29d..943c1eb83 100644
--- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/mapper/GenTableColumnMapper.java
+++ b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/mapper/GenTableColumnMapper.java
@@ -1,60 +1,24 @@
-package com.ruoyi.gen.mapper;
-
-import com.ruoyi.gen.domain.GenTableColumn;
-
-import java.util.List;
-
-/**
- * 业务字段 数据层
- *
- * @author ruoyi
- */
-public interface GenTableColumnMapper {
- /**
- * 根据表名称查询列信息
- *
- * @param tableName 表名称
- * @return 列信息
- */
- List selectDbTableColumnsByName(String tableName);
-
- /**
- * 查询业务字段列表
- *
- * @param tableId 业务字段编号
- * @return 业务字段集合
- */
- List selectGenTableColumnListByTableId(Long tableId);
-
- /**
- * 新增业务字段
- *
- * @param genTableColumn 业务字段信息
- * @return 结果
- */
- int insertGenTableColumn(GenTableColumn genTableColumn);
-
- /**
- * 修改业务字段
- *
- * @param genTableColumn 业务字段信息
- * @return 结果
- */
- int updateGenTableColumn(GenTableColumn genTableColumn);
-
- /**
- * 删除业务字段
- *
- * @param genTableColumns 列数据
- * @return 结果
- */
- int deleteGenTableColumns(List genTableColumns);
-
- /**
- * 批量删除业务字段
- *
- * @param ids 需要删除的数据ID
- * @return 结果
- */
- int deleteGenTableColumnByIds(Long[] ids);
-}
\ No newline at end of file
+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 java.util.List;
+
+/**
+ * 业务字段 数据层
+ *
+ * @author Lion Li
+ */
+@InterceptorIgnore(dataPermission = "true")
+public interface GenTableColumnMapper extends BaseMapperPlus {
+ /**
+ * 根据表名称查询列信息
+ *
+ * @param tableName 表名称
+ * @return 列信息
+ */
+ List selectDbTableColumnsByName(String tableName);
+
+}
diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/mapper/GenTableMapper.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/mapper/GenTableMapper.java
index cc503399b..85f1d17b3 100644
--- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/mapper/GenTableMapper.java
+++ b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/mapper/GenTableMapper.java
@@ -1,83 +1,70 @@
-package com.ruoyi.gen.mapper;
-
-import com.ruoyi.gen.domain.GenTable;
-
-import java.util.List;
-
-/**
- * 业务 数据层
- *
- * @author ruoyi
- */
-public interface GenTableMapper {
- /**
- * 查询业务列表
- *
- * @param genTable 业务信息
- * @return 业务集合
- */
- List selectGenTableList(GenTable genTable);
-
- /**
- * 查询据库列表
- *
- * @param genTable 业务信息
- * @return 数据库表集合
- */
- List selectDbTableList(GenTable genTable);
-
- /**
- * 查询据库列表
- *
- * @param tableNames 表名称组
- * @return 数据库表集合
- */
- List selectDbTableListByNames(String[] tableNames);
-
- /**
- * 查询所有表信息
- *
- * @return 表信息集合
- */
- List selectGenTableAll();
-
- /**
- * 查询表ID业务信息
- *
- * @param id 业务ID
- * @return 业务信息
- */
- GenTable selectGenTableById(Long id);
-
- /**
- * 查询表名称业务信息
- *
- * @param tableName 表名称
- * @return 业务信息
- */
- 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);
-}
\ No newline at end of file
+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 org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 业务 数据层
+ *
+ * @author Lion Li
+ */
+@InterceptorIgnore(dataPermission = "true")
+public interface GenTableMapper extends BaseMapperPlus {
+
+ Page selectPageGenTableList(@Param("page") Page page, @Param("genTable") GenTable genTable);
+
+ Page selectPageDbTableList(@Param("page") Page page, @Param("genTable") GenTable genTable);
+
+ /**
+ * 查询业务列表
+ *
+ * @param genTable 业务信息
+ * @return 业务集合
+ */
+ List selectGenTableList(GenTable genTable);
+
+ /**
+ * 查询据库列表
+ *
+ * @param genTable 业务信息
+ * @return 数据库表集合
+ */
+ List selectDbTableList(GenTable genTable);
+
+ /**
+ * 查询据库列表
+ *
+ * @param tableNames 表名称组
+ * @return 数据库表集合
+ */
+ List selectDbTableListByNames(String[] tableNames);
+
+ /**
+ * 查询所有表信息
+ *
+ * @return 表信息集合
+ */
+ List selectGenTableAll();
+
+ /**
+ * 查询表ID业务信息
+ *
+ * @param id 业务ID
+ * @return 业务信息
+ */
+ GenTable selectGenTableById(Long id);
+
+ /**
+ * 查询表名称业务信息
+ *
+ * @param tableName 表名称
+ * @return 业务信息
+ */
+ GenTable selectGenTableByName(String tableName);
+
+}
diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/GenTableColumnServiceImpl.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/GenTableColumnServiceImpl.java
index fd2c7e456..595fa8ff2 100644
--- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/GenTableColumnServiceImpl.java
+++ b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/GenTableColumnServiceImpl.java
@@ -1,66 +1,69 @@
-package com.ruoyi.gen.service;
-
-import cn.hutool.core.convert.Convert;
-import com.ruoyi.gen.domain.GenTableColumn;
-import com.ruoyi.gen.mapper.GenTableColumnMapper;
-import lombok.RequiredArgsConstructor;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-/**
- * 业务字段 服务层实现
- *
- * @author ruoyi
- */
-@RequiredArgsConstructor(onConstructor_ = @Autowired)
-@Service
-public class GenTableColumnServiceImpl implements IGenTableColumnService {
-
- private final GenTableColumnMapper genTableColumnMapper;
-
- /**
- * 查询业务字段列表
- *
- * @param tableId 业务字段编号
- * @return 业务字段集合
- */
- @Override
- public List selectGenTableColumnListByTableId(Long tableId) {
- return genTableColumnMapper.selectGenTableColumnListByTableId(tableId);
- }
-
- /**
- * 新增业务字段
- *
- * @param genTableColumn 业务字段信息
- * @return 结果
- */
- @Override
- public int insertGenTableColumn(GenTableColumn genTableColumn) {
- return genTableColumnMapper.insertGenTableColumn(genTableColumn);
- }
-
- /**
- * 修改业务字段
- *
- * @param genTableColumn 业务字段信息
- * @return 结果
- */
- @Override
- public int updateGenTableColumn(GenTableColumn genTableColumn) {
- return genTableColumnMapper.updateGenTableColumn(genTableColumn);
- }
-
- /**
- * 删除业务字段对象
- *
- * @param ids 需要删除的数据ID
- * @return 结果
- */
- @Override
- public int deleteGenTableColumnByIds(String ids) {
- return genTableColumnMapper.deleteGenTableColumnByIds(Convert.toLongArray(ids));
- }
-}
\ No newline at end of file
+package com.ruoyi.gen.service;
+
+import cn.hutool.core.convert.Convert;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.gen.domain.GenTableColumn;
+import com.ruoyi.gen.mapper.GenTableColumnMapper;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 业务字段 服务层实现
+ *
+ * @author ruoyi
+ */
+@RequiredArgsConstructor
+@Service
+public class GenTableColumnServiceImpl implements IGenTableColumnService {
+
+ private final GenTableColumnMapper baseMapper;
+
+ /**
+ * 查询业务字段列表
+ *
+ * @param tableId 业务字段编号
+ * @return 业务字段集合
+ */
+ @Override
+ public List selectGenTableColumnListByTableId(Long tableId) {
+ return baseMapper.selectList(new LambdaQueryWrapper()
+ .eq(GenTableColumn::getTableId, tableId)
+ .orderByAsc(GenTableColumn::getSort));
+ }
+
+ /**
+ * 新增业务字段
+ *
+ * @param genTableColumn 业务字段信息
+ * @return 结果
+ */
+ @Override
+ public int insertGenTableColumn(GenTableColumn genTableColumn) {
+ return baseMapper.insert(genTableColumn);
+ }
+
+ /**
+ * 修改业务字段
+ *
+ * @param genTableColumn 业务字段信息
+ * @return 结果
+ */
+ @Override
+ public int updateGenTableColumn(GenTableColumn genTableColumn) {
+ return baseMapper.updateById(genTableColumn);
+ }
+
+ /**
+ * 删除业务字段对象
+ *
+ * @param ids 需要删除的数据ID
+ * @return 结果
+ */
+ @Override
+ public int deleteGenTableColumnByIds(String ids) {
+ return baseMapper.deleteBatchIds(Arrays.asList(Convert.toLongArray(ids)));
+ }
+}
diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/GenTableServiceImpl.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/GenTableServiceImpl.java
index 3a0be83c6..61e5f0b7f 100644
--- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/GenTableServiceImpl.java
+++ b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/GenTableServiceImpl.java
@@ -1,12 +1,17 @@
package com.ruoyi.gen.service;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.io.IoUtil;
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.GenConstants;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.JsonUtils;
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.gen.domain.GenTable;
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.VelocityContext;
import org.apache.velocity.app.Velocity;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -31,10 +35,8 @@ import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.nio.charset.StandardCharsets;
-import java.util.LinkedHashMap;
+import java.util.*;
import java.util.function.Function;
-import java.util.List;
-import java.util.Map;
import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
@@ -45,11 +47,11 @@ import java.util.zip.ZipOutputStream;
* @author ruoyi
*/
@Slf4j
-@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RequiredArgsConstructor
@Service
public class GenTableServiceImpl implements IGenTableService {
- private final GenTableMapper genTableMapper;
+ private final GenTableMapper baseMapper;
private final GenTableColumnMapper genTableColumnMapper;
/**
@@ -60,11 +62,23 @@ public class GenTableServiceImpl implements IGenTableService {
*/
@Override
public GenTable selectGenTableById(Long id) {
- GenTable genTable = genTableMapper.selectGenTableById(id);
+ GenTable genTable = baseMapper.selectGenTableById(id);
setTableFromOptions(genTable);
return genTable;
}
+ @Override
+ public TableDataInfo selectPageGenTableList(GenTable genTable, PageQuery pageQuery) {
+ Page page = baseMapper.selectPageGenTableList(pageQuery.build(), genTable);
+ return TableDataInfo.build(page);
+ }
+
+ @Override
+ public TableDataInfo selectPageDbTableList(GenTable genTable, PageQuery pageQuery) {
+ Page page = baseMapper.selectPageDbTableList(pageQuery.build(), genTable);
+ return TableDataInfo.build(page);
+ }
+
/**
* 查询业务列表
*
@@ -73,7 +87,7 @@ public class GenTableServiceImpl implements IGenTableService {
*/
@Override
public List selectGenTableList(GenTable genTable) {
- return genTableMapper.selectGenTableList(genTable);
+ return baseMapper.selectGenTableList(genTable);
}
/**
@@ -84,7 +98,7 @@ public class GenTableServiceImpl implements IGenTableService {
*/
@Override
public List selectDbTableList(GenTable genTable) {
- return genTableMapper.selectDbTableList(genTable);
+ return baseMapper.selectDbTableList(genTable);
}
/**
@@ -95,7 +109,7 @@ public class GenTableServiceImpl implements IGenTableService {
*/
@Override
public List selectDbTableListByNames(String[] tableNames) {
- return genTableMapper.selectDbTableListByNames(tableNames);
+ return baseMapper.selectDbTableListByNames(tableNames);
}
/**
@@ -105,7 +119,7 @@ public class GenTableServiceImpl implements IGenTableService {
*/
@Override
public List selectGenTableAll() {
- return genTableMapper.selectGenTableAll();
+ return baseMapper.selectGenTableAll();
}
/**
@@ -115,14 +129,14 @@ public class GenTableServiceImpl implements IGenTableService {
* @return 结果
*/
@Override
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
public void updateGenTable(GenTable genTable) {
String options = JsonUtils.toJsonString(genTable.getParams());
genTable.setOptions(options);
- int row = genTableMapper.updateGenTable(genTable);
+ int row = baseMapper.updateById(genTable);
if (row > 0) {
for (GenTableColumn cenTableColumn : genTable.getColumns()) {
- genTableColumnMapper.updateGenTableColumn(cenTableColumn);
+ genTableColumnMapper.updateById(cenTableColumn);
}
}
}
@@ -134,10 +148,11 @@ public class GenTableServiceImpl implements IGenTableService {
* @return 结果
*/
@Override
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
public void deleteGenTableByIds(Long[] tableIds) {
- genTableMapper.deleteGenTableByIds(tableIds);
- genTableColumnMapper.deleteGenTableColumnByIds(tableIds);
+ List ids = Arrays.asList(tableIds);
+ baseMapper.deleteBatchIds(ids);
+ genTableColumnMapper.delete(new LambdaQueryWrapper().in(GenTableColumn::getTableId, ids));
}
/**
@@ -146,20 +161,24 @@ public class GenTableServiceImpl implements IGenTableService {
* @param tableList 导入表列表
*/
@Override
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
public void importGenTable(List tableList) {
String operName = SecurityUtils.getUsername();
try {
for (GenTable table : tableList) {
String tableName = table.getTableName();
GenUtils.initTable(table, operName);
- int row = genTableMapper.insertGenTable(table);
+ int row = baseMapper.insert(table);
if (row > 0) {
// 保存列信息
List genTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName);
+ List saveColumns = new ArrayList<>();
for (GenTableColumn column : genTableColumns) {
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 previewCode(Long tableId) {
Map dataMap = new LinkedHashMap<>();
// 查询表信息
- GenTable table = genTableMapper.selectGenTableById(tableId);
+ GenTable table = baseMapper.selectGenTableById(tableId);
// 设置主子表信息
setSubTable(table);
// 设置主键列信息
@@ -210,7 +229,7 @@ public class GenTableServiceImpl implements IGenTableService {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ZipOutputStream zip = new ZipOutputStream(outputStream);
generatorCode(tableName, zip);
- IOUtils.closeQuietly(zip);
+ IoUtil.close(zip);
return outputStream.toByteArray();
}
@@ -222,7 +241,7 @@ public class GenTableServiceImpl implements IGenTableService {
@Override
public void generatorCode(String tableName) {
// 查询表信息
- GenTable table = genTableMapper.selectGenTableByName(tableName);
+ GenTable table = baseMapper.selectGenTableByName(tableName);
// 设置主子表信息
setSubTable(table);
// 设置主键列信息
@@ -256,9 +275,9 @@ public class GenTableServiceImpl implements IGenTableService {
* @param tableName 表名称
*/
@Override
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
public void synchDb(String tableName) {
- GenTable table = genTableMapper.selectGenTableByName(tableName);
+ GenTable table = baseMapper.selectGenTableByName(tableName);
List tableColumns = table.getColumns();
Map tableColumnMap = tableColumns.stream().collect(Collectors.toMap(GenTableColumn::getColumnName, Function.identity()));
@@ -268,6 +287,7 @@ public class GenTableServiceImpl implements IGenTableService {
}
List dbTableColumnNames = dbTableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList());
+ List saveColumns = new ArrayList<>();
dbTableColumns.forEach(column -> {
GenUtils.initColumnField(column, table);
if (tableColumnMap.containsKey(column.getColumnName())) {
@@ -277,15 +297,19 @@ public class GenTableServiceImpl implements IGenTableService {
// 如果是列表,继续保留字典类型
column.setDictType(prevColumn.getDictType());
}
- genTableColumnMapper.updateGenTableColumn(column);
+ genTableColumnMapper.updateById(column);
} else {
- genTableColumnMapper.insertGenTableColumn(column);
+ genTableColumnMapper.insert(column);
}
});
+ if (CollUtil.isNotEmpty(saveColumns)) {
+ genTableColumnMapper.insertBatch(saveColumns);
+ }
List delColumns = tableColumns.stream().filter(column -> !dbTableColumnNames.contains(column.getColumnName())).collect(Collectors.toList());
if (CollUtil.isNotEmpty(delColumns)) {
- genTableColumnMapper.deleteGenTableColumns(delColumns);
+ List 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) {
generatorCode(tableName, zip);
}
- IOUtils.closeQuietly(zip);
+ IoUtil.close(zip);
return outputStream.toByteArray();
}
@@ -311,7 +335,7 @@ public class GenTableServiceImpl implements IGenTableService {
*/
private void generatorCode(String tableName, ZipOutputStream zip) {
// 查询表信息
- GenTable table = genTableMapper.selectGenTableByName(tableName);
+ GenTable table = baseMapper.selectGenTableByName(tableName);
// 设置主子表信息
setSubTable(table);
// 设置主键列信息
@@ -403,7 +427,7 @@ public class GenTableServiceImpl implements IGenTableService {
public void setSubTable(GenTable table) {
String subTableName = table.getSubTableName();
if (StringUtils.isNotEmpty(subTableName)) {
- table.setSubTable(genTableMapper.selectGenTableByName(subTableName));
+ table.setSubTable(baseMapper.selectGenTableByName(subTableName));
}
}
diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/IGenTableService.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/IGenTableService.java
index 674784f58..d2b4cc42f 100644
--- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/IGenTableService.java
+++ b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/IGenTableService.java
@@ -1,121 +1,128 @@
-package com.ruoyi.gen.service;
-
-import com.ruoyi.gen.domain.GenTable;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * 业务 服务层
- *
- * @author ruoyi
- */
-public interface IGenTableService {
- /**
- * 查询业务列表
- *
- * @param genTable 业务信息
- * @return 业务集合
- */
- List selectGenTableList(GenTable genTable);
-
- /**
- * 查询据库列表
- *
- * @param genTable 业务信息
- * @return 数据库表集合
- */
- List selectDbTableList(GenTable genTable);
-
- /**
- * 查询据库列表
- *
- * @param tableNames 表名称组
- * @return 数据库表集合
- */
- List selectDbTableListByNames(String[] tableNames);
-
- /**
- * 查询所有表信息
- *
- * @return 表信息集合
- */
- List selectGenTableAll();
-
- /**
- * 查询业务信息
- *
- * @param id 业务ID
- * @return 业务信息
- */
- GenTable selectGenTableById(Long id);
-
- /**
- * 修改业务
- *
- * @param genTable 业务信息
- * @return 结果
- */
- void updateGenTable(GenTable genTable);
-
- /**
- * 删除业务信息
- *
- * @param tableIds 需要删除的表数据ID
- * @return 结果
- */
- void deleteGenTableByIds(Long[] tableIds);
-
- /**
- * 导入表结构
- *
- * @param tableList 导入表列表
- */
- void importGenTable(List tableList);
-
- /**
- * 预览代码
- *
- * @param tableId 表编号
- * @return 预览数据列表
- */
- Map previewCode(Long tableId);
-
- /**
- * 生成代码(下载方式)
- *
- * @param tableName 表名称
- * @return 数据
- */
- byte[] downloadCode(String tableName);
-
- /**
- * 生成代码(自定义路径)
- *
- * @param tableName 表名称
- * @return 数据
- */
- void generatorCode(String tableName);
-
- /**
- * 同步数据库
- *
- * @param tableName 表名称
- */
- void synchDb(String tableName);
-
- /**
- * 批量生成代码(下载方式)
- *
- * @param tableNames 表数组
- * @return 数据
- */
- byte[] downloadCode(String[] tableNames);
-
- /**
- * 修改保存参数校验
- *
- * @param genTable 业务信息
- */
- void validateEdit(GenTable genTable);
-}
+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 java.util.List;
+import java.util.Map;
+
+/**
+ * 业务 服务层
+ *
+ * @author ruoyi
+ */
+public interface IGenTableService {
+
+ TableDataInfo selectPageGenTableList(GenTable genTable, PageQuery pageQuery);
+
+ TableDataInfo selectPageDbTableList(GenTable genTable, PageQuery pageQuery);
+
+ /**
+ * 查询业务列表
+ *
+ * @param genTable 业务信息
+ * @return 业务集合
+ */
+ List selectGenTableList(GenTable genTable);
+
+ /**
+ * 查询据库列表
+ *
+ * @param genTable 业务信息
+ * @return 数据库表集合
+ */
+ List selectDbTableList(GenTable genTable);
+
+ /**
+ * 查询据库列表
+ *
+ * @param tableNames 表名称组
+ * @return 数据库表集合
+ */
+ List selectDbTableListByNames(String[] tableNames);
+
+ /**
+ * 查询所有表信息
+ *
+ * @return 表信息集合
+ */
+ List selectGenTableAll();
+
+ /**
+ * 查询业务信息
+ *
+ * @param id 业务ID
+ * @return 业务信息
+ */
+ GenTable selectGenTableById(Long id);
+
+ /**
+ * 修改业务
+ *
+ * @param genTable 业务信息
+ * @return 结果
+ */
+ void updateGenTable(GenTable genTable);
+
+ /**
+ * 删除业务信息
+ *
+ * @param tableIds 需要删除的表数据ID
+ * @return 结果
+ */
+ void deleteGenTableByIds(Long[] tableIds);
+
+ /**
+ * 导入表结构
+ *
+ * @param tableList 导入表列表
+ */
+ void importGenTable(List tableList);
+
+ /**
+ * 预览代码
+ *
+ * @param tableId 表编号
+ * @return 预览数据列表
+ */
+ Map previewCode(Long tableId);
+
+ /**
+ * 生成代码(下载方式)
+ *
+ * @param tableName 表名称
+ * @return 数据
+ */
+ byte[] downloadCode(String tableName);
+
+ /**
+ * 生成代码(自定义路径)
+ *
+ * @param tableName 表名称
+ * @return 数据
+ */
+ void generatorCode(String tableName);
+
+ /**
+ * 同步数据库
+ *
+ * @param tableName 表名称
+ */
+ void synchDb(String tableName);
+
+ /**
+ * 批量生成代码(下载方式)
+ *
+ * @param tableNames 表数组
+ * @return 数据
+ */
+ byte[] downloadCode(String[] tableNames);
+
+ /**
+ * 修改保存参数校验
+ *
+ * @param genTable 业务信息
+ */
+ void validateEdit(GenTable genTable);
+}
diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/mapper/generator/GenTableColumnMapper.xml b/ruoyi-modules/ruoyi-gen/src/main/resources/mapper/generator/GenTableColumnMapper.xml
index 835654678..c0c76bd40 100644
--- a/ruoyi-modules/ruoyi-gen/src/main/resources/mapper/generator/GenTableColumnMapper.xml
+++ b/ruoyi-modules/ruoyi-gen/src/main/resources/mapper/generator/GenTableColumnMapper.xml
@@ -1,127 +1,38 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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
-
-
-
-
-
-
-
- insert into gen_table_column (
- 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
- )values(
- #{tableId},
- #{columnName},
- #{columnComment},
- #{columnType},
- #{javaType},
- #{javaField},
- #{isPk},
- #{isIncrement},
- #{isRequired},
- #{isInsert},
- #{isEdit},
- #{isList},
- #{isQuery},
- #{queryType},
- #{htmlType},
- #{dictType},
- #{sort},
- #{createBy},
- sysdate()
- )
-
-
-
- update gen_table_column
-
- 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()
-
- where column_id = #{columnId}
-
-
-
- delete from gen_table_column where table_id in
-
- #{tableId}
-
-
-
-
- delete from gen_table_column where column_id in
-
- #{item.columnId}
-
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/mapper/generator/GenTableMapper.xml b/ruoyi-modules/ruoyi-gen/src/main/resources/mapper/generator/GenTableMapper.xml
index f93a32bb8..99cf7ae97 100644
--- a/ruoyi-modules/ruoyi-gen/src/main/resources/mapper/generator/GenTableMapper.xml
+++ b/ruoyi-modules/ruoyi-gen/src/main/resources/mapper/generator/GenTableMapper.xml
@@ -1,202 +1,175 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- insert into gen_table (
- table_name,
- table_comment,
- class_name,
- tpl_category,
- package_name,
- module_name,
- business_name,
- function_name,
- function_author,
- gen_type,
- gen_path,
- remark,
- create_by,
- create_time
- )values(
- #{tableName},
- #{tableComment},
- #{className},
- #{tplCategory},
- #{packageName},
- #{moduleName},
- #{businessName},
- #{functionName},
- #{functionAuthor},
- #{genType},
- #{genPath},
- #{remark},
- #{createBy},
- sysdate()
- )
-
-
-
- update gen_table
-
- table_name = #{tableName},
- table_comment = #{tableComment},
- sub_table_name = #{subTableName},
- sub_table_fk_name = #{subTableFkName},
- class_name = #{className},
- function_author = #{functionAuthor},
- gen_type = #{genType},
- gen_path = #{genPath},
- tpl_category = #{tplCategory},
- package_name = #{packageName},
- module_name = #{moduleName},
- business_name = #{businessName},
- function_name = #{functionName},
- options = #{options},
- update_by = #{updateBy},
- remark = #{remark},
- update_time = sysdate()
-
- where table_id = #{tableId}
-
-
-
- delete from gen_table where table_id in
-
- #{tableId}
-
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/spy.properties b/ruoyi-modules/ruoyi-gen/src/main/resources/spy.properties
new file mode 100644
index 000000000..918f1cb5e
--- /dev/null
+++ b/ruoyi-modules/ruoyi-gen/src/main/resources/spy.properties
@@ -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
diff --git a/ruoyi-modules/ruoyi-system/pom.xml b/ruoyi-modules/ruoyi-system/pom.xml
index 82aee99bf..328894a30 100644
--- a/ruoyi-modules/ruoyi-system/pom.xml
+++ b/ruoyi-modules/ruoyi-system/pom.xml
@@ -53,12 +53,6 @@
ruoyi-common-datasource
-
-
- com.ruoyi
- ruoyi-common-datascope
-
-
com.ruoyi
@@ -81,6 +75,11 @@
ruoyi-common-web
+
+ com.ruoyi
+ ruoyi-common-mybatis
+
+
com.ruoyi
ruoyi-common-dubbo
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysConfigController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysConfigController.java
index bed12a11b..a418f349f 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysConfigController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysConfigController.java
@@ -3,16 +3,16 @@ package com.ruoyi.system.controller;
import com.ruoyi.common.core.constant.UserConstants;
import com.ruoyi.common.core.web.controller.BaseController;
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.log.annotation.Log;
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.utils.SecurityUtils;
import com.ruoyi.system.domain.SysConfig;
import com.ruoyi.system.service.ISysConfigService;
import lombok.RequiredArgsConstructor;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -24,7 +24,7 @@ import java.util.List;
*
* @author ruoyi
*/
-@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RequiredArgsConstructor
@RestController
@RequestMapping("/config")
public class SysConfigController extends BaseController {
@@ -36,10 +36,8 @@ public class SysConfigController extends BaseController {
*/
@RequiresPermissions("system:config:list")
@GetMapping("/list")
- public TableDataInfo list(SysConfig config) {
- startPage();
- List list = configService.selectConfigList(config);
- return getDataTable(list);
+ public TableDataInfo list(SysConfig config, PageQuery pageQuery) {
+ return configService.selectPageConfigList(config, pageQuery);
}
@Log(title = "参数管理", businessType = BusinessType.EXPORT)
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDeptController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDeptController.java
index 969ae8d6d..64db103ad 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDeptController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDeptController.java
@@ -1,141 +1,133 @@
-package com.ruoyi.system.controller;
-
-import com.ruoyi.common.core.constant.UserConstants;
-import com.ruoyi.common.core.utils.StringUtils;
-import com.ruoyi.common.core.web.controller.BaseController;
-import com.ruoyi.common.core.web.domain.AjaxResult;
-import com.ruoyi.common.log.annotation.Log;
-import com.ruoyi.common.log.enums.BusinessType;
-import com.ruoyi.common.security.annotation.RequiresPermissions;
-import com.ruoyi.common.security.utils.SecurityUtils;
-import com.ruoyi.system.api.domain.SysDept;
-import com.ruoyi.system.service.ISysDeptService;
-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.web.bind.annotation.*;
-
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * 部门信息
- *
- * @author ruoyi
- */
-@RequiredArgsConstructor(onConstructor_ = @Autowired)
-@RestController
-@RequestMapping("/dept")
-public class SysDeptController extends BaseController {
-
- private final ISysDeptService deptService;
-
- /**
- * 获取部门列表
- */
- @RequiresPermissions("system:dept:list")
- @GetMapping("/list")
- public AjaxResult list(SysDept dept) {
- List depts = deptService.selectDeptList(dept);
- return AjaxResult.success(depts);
- }
-
- /**
- * 查询部门列表(排除节点)
- */
- @RequiresPermissions("system:dept:list")
- @GetMapping("/list/exclude/{deptId}")
- public AjaxResult excludeChild(@PathVariable(value = "deptId", required = false) Long deptId) {
- List depts = deptService.selectDeptList(new SysDept());
- Iterator it = depts.iterator();
- while (it.hasNext()) {
- SysDept d = (SysDept) it.next();
- if (d.getDeptId().intValue() == deptId
- || ArrayUtils.contains(StringUtils.split(d.getAncestors(), ","), deptId + "")) {
- it.remove();
- }
- }
- return AjaxResult.success(depts);
- }
-
- /**
- * 根据部门编号获取详细信息
- */
- @RequiresPermissions("system:dept:query")
- @GetMapping(value = "/{deptId}")
- public AjaxResult getInfo(@PathVariable Long deptId) {
- deptService.checkDeptDataScope(deptId);
- return AjaxResult.success(deptService.selectDeptById(deptId));
- }
-
- /**
- * 获取部门下拉树列表
- */
- @GetMapping("/treeselect")
- public AjaxResult treeselect(SysDept dept) {
- List depts = deptService.selectDeptList(dept);
- return AjaxResult.success(deptService.buildDeptTreeSelect(depts));
- }
-
- /**
- * 加载对应角色部门列表树
- */
- @GetMapping(value = "/roleDeptTreeselect/{roleId}")
- public AjaxResult roleDeptTreeselect(@PathVariable("roleId") Long roleId) {
- List depts = deptService.selectDeptList(new SysDept());
- AjaxResult ajax = AjaxResult.success();
- ajax.put("checkedKeys", deptService.selectDeptListByRoleId(roleId));
- ajax.put("depts", deptService.buildDeptTreeSelect(depts));
- return ajax;
- }
-
- /**
- * 新增部门
- */
- @RequiresPermissions("system:dept:add")
- @Log(title = "部门管理", businessType = BusinessType.INSERT)
- @PostMapping
- public AjaxResult add(@Validated @RequestBody SysDept dept) {
- if (UserConstants.NOT_UNIQUE.equals(deptService.checkDeptNameUnique(dept))) {
- return AjaxResult.error("新增部门'" + dept.getDeptName() + "'失败,部门名称已存在");
- }
- dept.setCreateBy(SecurityUtils.getUsername());
- return toAjax(deptService.insertDept(dept));
- }
-
- /**
- * 修改部门
- */
- @RequiresPermissions("system:dept:edit")
- @Log(title = "部门管理", businessType = BusinessType.UPDATE)
- @PutMapping
- public AjaxResult edit(@Validated @RequestBody SysDept dept) {
- if (UserConstants.NOT_UNIQUE.equals(deptService.checkDeptNameUnique(dept))) {
- return AjaxResult.error("修改部门'" + dept.getDeptName() + "'失败,部门名称已存在");
- } else if (dept.getParentId().equals(dept.getDeptId())) {
- return AjaxResult.error("修改部门'" + dept.getDeptName() + "'失败,上级部门不能是自己");
- } else if (StringUtils.equals(UserConstants.DEPT_DISABLE, dept.getStatus())
- && deptService.selectNormalChildrenDeptById(dept.getDeptId()) > 0) {
- return AjaxResult.error("该部门包含未停用的子部门!");
- }
- dept.setUpdateBy(SecurityUtils.getUsername());
- return toAjax(deptService.updateDept(dept));
- }
-
- /**
- * 删除部门
- */
- @RequiresPermissions("system:dept:remove")
- @Log(title = "部门管理", businessType = BusinessType.DELETE)
- @DeleteMapping("/{deptId}")
- public AjaxResult remove(@PathVariable Long deptId) {
- if (deptService.hasChildByDeptId(deptId)) {
- return AjaxResult.error("存在下级部门,不允许删除");
- }
- if (deptService.checkDeptExistUser(deptId)) {
- return AjaxResult.error("部门存在用户,不允许删除");
- }
- return toAjax(deptService.deleteDeptById(deptId));
- }
-}
+package com.ruoyi.system.controller;
+
+import cn.hutool.core.util.ArrayUtil;
+import com.ruoyi.common.core.constant.UserConstants;
+import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.log.annotation.Log;
+import com.ruoyi.common.log.enums.BusinessType;
+import com.ruoyi.common.security.annotation.RequiresPermissions;
+import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.system.api.domain.SysDept;
+import com.ruoyi.system.service.ISysDeptService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 部门信息
+ *
+ * @author ruoyi
+ */
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/dept")
+public class SysDeptController extends BaseController {
+
+ private final ISysDeptService deptService;
+
+ /**
+ * 获取部门列表
+ */
+ @RequiresPermissions("system:dept:list")
+ @GetMapping("/list")
+ public AjaxResult list(SysDept dept) {
+ List depts = deptService.selectDeptList(dept);
+ return AjaxResult.success(depts);
+ }
+
+ /**
+ * 查询部门列表(排除节点)
+ */
+ @RequiresPermissions("system:dept:list")
+ @GetMapping("/list/exclude/{deptId}")
+ public AjaxResult excludeChild(@PathVariable(value = "deptId", required = false) Long deptId) {
+ List depts = deptService.selectDeptList(new SysDept());
+ depts.removeIf(d -> d.getDeptId().equals(deptId)
+ || ArrayUtil.contains(StringUtils.split(d.getAncestors(), ","), deptId + ""));
+ return AjaxResult.success(depts);
+ }
+
+ /**
+ * 根据部门编号获取详细信息
+ */
+ @RequiresPermissions("system:dept:query")
+ @GetMapping(value = "/{deptId}")
+ public AjaxResult getInfo(@PathVariable Long deptId) {
+ deptService.checkDeptDataScope(deptId);
+ return AjaxResult.success(deptService.selectDeptById(deptId));
+ }
+
+ /**
+ * 获取部门下拉树列表
+ */
+ @GetMapping("/treeselect")
+ public AjaxResult treeselect(SysDept dept) {
+ List depts = deptService.selectDeptList(dept);
+ return AjaxResult.success(deptService.buildDeptTreeSelect(depts));
+ }
+
+ /**
+ * 加载对应角色部门列表树
+ */
+ @GetMapping(value = "/roleDeptTreeselect/{roleId}")
+ public AjaxResult roleDeptTreeselect(@PathVariable("roleId") Long roleId) {
+ List depts = deptService.selectDeptList(new SysDept());
+ AjaxResult ajax = AjaxResult.success();
+ ajax.put("checkedKeys", deptService.selectDeptListByRoleId(roleId));
+ ajax.put("depts", deptService.buildDeptTreeSelect(depts));
+ return ajax;
+ }
+
+ /**
+ * 新增部门
+ */
+ @RequiresPermissions("system:dept:add")
+ @Log(title = "部门管理", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@Validated @RequestBody SysDept dept) {
+ if (UserConstants.NOT_UNIQUE.equals(deptService.checkDeptNameUnique(dept))) {
+ return AjaxResult.error("新增部门'" + dept.getDeptName() + "'失败,部门名称已存在");
+ }
+ dept.setCreateBy(SecurityUtils.getUsername());
+ return toAjax(deptService.insertDept(dept));
+ }
+
+ /**
+ * 修改部门
+ */
+ @RequiresPermissions("system:dept:edit")
+ @Log(title = "部门管理", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@Validated @RequestBody SysDept dept) {
+ if (UserConstants.NOT_UNIQUE.equals(deptService.checkDeptNameUnique(dept))) {
+ return AjaxResult.error("修改部门'" + dept.getDeptName() + "'失败,部门名称已存在");
+ } else if (dept.getParentId().equals(dept.getDeptId())) {
+ return AjaxResult.error("修改部门'" + dept.getDeptName() + "'失败,上级部门不能是自己");
+ } else if (StringUtils.equals(UserConstants.DEPT_DISABLE, dept.getStatus())
+ && deptService.selectNormalChildrenDeptById(dept.getDeptId()) > 0) {
+ return AjaxResult.error("该部门包含未停用的子部门!");
+ }
+ dept.setUpdateBy(SecurityUtils.getUsername());
+ return toAjax(deptService.updateDept(dept));
+ }
+
+ /**
+ * 删除部门
+ */
+ @RequiresPermissions("system:dept:remove")
+ @Log(title = "部门管理", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{deptId}")
+ public AjaxResult remove(@PathVariable Long deptId) {
+ if (deptService.hasChildByDeptId(deptId)) {
+ return AjaxResult.error("存在下级部门,不允许删除");
+ }
+ if (deptService.checkDeptExistUser(deptId)) {
+ return AjaxResult.error("部门存在用户,不允许删除");
+ }
+ return toAjax(deptService.deleteDeptById(deptId));
+ }
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDictDataController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDictDataController.java
index 96b0b8dd1..84295e8e3 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDictDataController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDictDataController.java
@@ -3,17 +3,17 @@ package com.ruoyi.system.controller;
import cn.hutool.core.util.ObjectUtil;
import com.ruoyi.common.core.web.controller.BaseController;
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.log.annotation.Log;
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.utils.SecurityUtils;
import com.ruoyi.system.api.domain.SysDictData;
import com.ruoyi.system.service.ISysDictDataService;
import com.ruoyi.system.service.ISysDictTypeService;
import lombok.RequiredArgsConstructor;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -26,7 +26,7 @@ import java.util.List;
*
* @author ruoyi
*/
-@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RequiredArgsConstructor
@RestController
@RequestMapping("/dict/data")
public class SysDictDataController extends BaseController {
@@ -36,10 +36,8 @@ public class SysDictDataController extends BaseController {
@RequiresPermissions("system:dict:list")
@GetMapping("/list")
- public TableDataInfo list(SysDictData dictData) {
- startPage();
- List list = dictDataService.selectDictDataList(dictData);
- return getDataTable(list);
+ public TableDataInfo list(SysDictData dictData, PageQuery pageQuery) {
+ return dictDataService.selectPageDictDataList(dictData, pageQuery);
}
@Log(title = "字典数据", businessType = BusinessType.EXPORT)
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDictTypeController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDictTypeController.java
index f286ab980..22d4af95b 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDictTypeController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDictTypeController.java
@@ -3,16 +3,16 @@ package com.ruoyi.system.controller;
import com.ruoyi.common.core.constant.UserConstants;
import com.ruoyi.common.core.web.controller.BaseController;
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.log.annotation.Log;
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.utils.SecurityUtils;
import com.ruoyi.system.api.domain.SysDictType;
import com.ruoyi.system.service.ISysDictTypeService;
import lombok.RequiredArgsConstructor;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -24,7 +24,7 @@ import java.util.List;
*
* @author ruoyi
*/
-@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RequiredArgsConstructor
@RestController
@RequestMapping("/dict/type")
public class SysDictTypeController extends BaseController {
@@ -33,10 +33,8 @@ public class SysDictTypeController extends BaseController {
@RequiresPermissions("system:dict:list")
@GetMapping("/list")
- public TableDataInfo list(SysDictType dictType) {
- startPage();
- List list = dictTypeService.selectDictTypeList(dictType);
- return getDataTable(list);
+ public TableDataInfo list(SysDictType dictType, PageQuery pageQuery) {
+ return dictTypeService.selectPageDictTypeList(dictType, pageQuery);
}
@Log(title = "字典类型", businessType = BusinessType.EXPORT)
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysLogininforController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysLogininforController.java
index 90828c15c..1ed3949c4 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysLogininforController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysLogininforController.java
@@ -2,16 +2,16 @@ package com.ruoyi.system.controller;
import com.ruoyi.common.core.web.controller.BaseController;
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.log.annotation.Log;
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.RequiresPermissions;
import com.ruoyi.system.api.domain.SysLogininfor;
import com.ruoyi.system.service.ISysLogininforService;
import lombok.RequiredArgsConstructor;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
@@ -22,7 +22,7 @@ import java.util.List;
*
* @author ruoyi
*/
-@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RequiredArgsConstructor
@RestController
@RequestMapping("/logininfor")
public class SysLogininforController extends BaseController {
@@ -31,10 +31,8 @@ public class SysLogininforController extends BaseController {
@RequiresPermissions("system:logininfor:list")
@GetMapping("/list")
- public TableDataInfo list(SysLogininfor logininfor) {
- startPage();
- List list = logininforService.selectLogininforList(logininfor);
- return getDataTable(list);
+ public TableDataInfo list(SysLogininfor logininfor, PageQuery pageQuery) {
+ return logininforService.selectPageLogininforList(logininfor, pageQuery);
}
@Log(title = "登录日志", businessType = BusinessType.EXPORT)
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysMenuController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysMenuController.java
index 5693af5cb..e345678ef 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysMenuController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysMenuController.java
@@ -1,136 +1,135 @@
-package com.ruoyi.system.controller;
-
-import com.ruoyi.common.core.constant.UserConstants;
-import com.ruoyi.common.core.utils.StringUtils;
-import com.ruoyi.common.core.web.controller.BaseController;
-import com.ruoyi.common.core.web.domain.AjaxResult;
-import com.ruoyi.common.log.annotation.Log;
-import com.ruoyi.common.log.enums.BusinessType;
-import com.ruoyi.common.security.annotation.RequiresPermissions;
-import com.ruoyi.common.security.utils.SecurityUtils;
-import com.ruoyi.system.domain.SysMenu;
-import com.ruoyi.system.service.ISysMenuService;
-import lombok.RequiredArgsConstructor;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-/**
- * 菜单信息
- *
- * @author ruoyi
- */
-@RequiredArgsConstructor(onConstructor_ = @Autowired)
-@RestController
-@RequestMapping("/menu")
-public class SysMenuController extends BaseController {
-
- private final ISysMenuService menuService;
-
- /**
- * 获取菜单列表
- */
- @RequiresPermissions("system:menu:list")
- @GetMapping("/list")
- public AjaxResult list(SysMenu menu) {
- Long userId = SecurityUtils.getUserId();
- List menus = menuService.selectMenuList(menu, userId);
- return AjaxResult.success(menus);
- }
-
- /**
- * 根据菜单编号获取详细信息
- */
- @RequiresPermissions("system:menu:query")
- @GetMapping(value = "/{menuId}")
- public AjaxResult getInfo(@PathVariable Long menuId) {
- return AjaxResult.success(menuService.selectMenuById(menuId));
- }
-
- /**
- * 获取菜单下拉树列表
- */
- @GetMapping("/treeselect")
- public AjaxResult treeselect(SysMenu menu) {
- Long userId = SecurityUtils.getUserId();
- List menus = menuService.selectMenuList(menu, userId);
- return AjaxResult.success(menuService.buildMenuTreeSelect(menus));
- }
-
- /**
- * 加载对应角色菜单列表树
- */
- @GetMapping(value = "/roleMenuTreeselect/{roleId}")
- public AjaxResult roleMenuTreeselect(@PathVariable("roleId") Long roleId) {
- Long userId = SecurityUtils.getUserId();
- List menus = menuService.selectMenuList(userId);
- AjaxResult ajax = AjaxResult.success();
- ajax.put("checkedKeys", menuService.selectMenuListByRoleId(roleId));
- ajax.put("menus", menuService.buildMenuTreeSelect(menus));
- return ajax;
- }
-
- /**
- * 新增菜单
- */
- @RequiresPermissions("system:menu:add")
- @Log(title = "菜单管理", businessType = BusinessType.INSERT)
- @PostMapping
- public AjaxResult add(@Validated @RequestBody SysMenu menu) {
- if (UserConstants.NOT_UNIQUE.equals(menuService.checkMenuNameUnique(menu))) {
- return AjaxResult.error("新增菜单'" + menu.getMenuName() + "'失败,菜单名称已存在");
- } else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath())) {
- return AjaxResult.error("新增菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头");
- }
- menu.setCreateBy(SecurityUtils.getUsername());
- return toAjax(menuService.insertMenu(menu));
- }
-
- /**
- * 修改菜单
- */
- @RequiresPermissions("system:menu:edit")
- @Log(title = "菜单管理", businessType = BusinessType.UPDATE)
- @PutMapping
- public AjaxResult edit(@Validated @RequestBody SysMenu menu) {
- if (UserConstants.NOT_UNIQUE.equals(menuService.checkMenuNameUnique(menu))) {
- return AjaxResult.error("修改菜单'" + menu.getMenuName() + "'失败,菜单名称已存在");
- } else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath())) {
- return AjaxResult.error("修改菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头");
- } else if (menu.getMenuId().equals(menu.getParentId())) {
- return AjaxResult.error("修改菜单'" + menu.getMenuName() + "'失败,上级菜单不能选择自己");
- }
- menu.setUpdateBy(SecurityUtils.getUsername());
- return toAjax(menuService.updateMenu(menu));
- }
-
- /**
- * 删除菜单
- */
- @RequiresPermissions("system:menu:remove")
- @Log(title = "菜单管理", businessType = BusinessType.DELETE)
- @DeleteMapping("/{menuId}")
- public AjaxResult remove(@PathVariable("menuId") Long menuId) {
- if (menuService.hasChildByMenuId(menuId)) {
- return AjaxResult.error("存在子菜单,不允许删除");
- }
- if (menuService.checkMenuExistRole(menuId)) {
- return AjaxResult.error("菜单已分配,不允许删除");
- }
- return toAjax(menuService.deleteMenuById(menuId));
- }
-
- /**
- * 获取路由信息
- *
- * @return 路由信息
- */
- @GetMapping("getRouters")
- public AjaxResult getRouters() {
- Long userId = SecurityUtils.getUserId();
- List menus = menuService.selectMenuTreeByUserId(userId);
- return AjaxResult.success(menuService.buildMenus(menus));
- }
-}
\ No newline at end of file
+package com.ruoyi.system.controller;
+
+import com.ruoyi.common.core.constant.UserConstants;
+import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.log.annotation.Log;
+import com.ruoyi.common.log.enums.BusinessType;
+import com.ruoyi.common.security.annotation.RequiresPermissions;
+import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.system.domain.SysMenu;
+import com.ruoyi.system.service.ISysMenuService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 菜单信息
+ *
+ * @author ruoyi
+ */
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/menu")
+public class SysMenuController extends BaseController {
+
+ private final ISysMenuService menuService;
+
+ /**
+ * 获取菜单列表
+ */
+ @RequiresPermissions("system:menu:list")
+ @GetMapping("/list")
+ public AjaxResult list(SysMenu menu) {
+ Long userId = SecurityUtils.getUserId();
+ List menus = menuService.selectMenuList(menu, userId);
+ return AjaxResult.success(menus);
+ }
+
+ /**
+ * 根据菜单编号获取详细信息
+ */
+ @RequiresPermissions("system:menu:query")
+ @GetMapping(value = "/{menuId}")
+ public AjaxResult getInfo(@PathVariable Long menuId) {
+ return AjaxResult.success(menuService.selectMenuById(menuId));
+ }
+
+ /**
+ * 获取菜单下拉树列表
+ */
+ @GetMapping("/treeselect")
+ public AjaxResult treeselect(SysMenu menu) {
+ Long userId = SecurityUtils.getUserId();
+ List menus = menuService.selectMenuList(menu, userId);
+ return AjaxResult.success(menuService.buildMenuTreeSelect(menus));
+ }
+
+ /**
+ * 加载对应角色菜单列表树
+ */
+ @GetMapping(value = "/roleMenuTreeselect/{roleId}")
+ public AjaxResult roleMenuTreeselect(@PathVariable("roleId") Long roleId) {
+ Long userId = SecurityUtils.getUserId();
+ List menus = menuService.selectMenuList(userId);
+ AjaxResult ajax = AjaxResult.success();
+ ajax.put("checkedKeys", menuService.selectMenuListByRoleId(roleId));
+ ajax.put("menus", menuService.buildMenuTreeSelect(menus));
+ return ajax;
+ }
+
+ /**
+ * 新增菜单
+ */
+ @RequiresPermissions("system:menu:add")
+ @Log(title = "菜单管理", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@Validated @RequestBody SysMenu menu) {
+ if (UserConstants.NOT_UNIQUE.equals(menuService.checkMenuNameUnique(menu))) {
+ return AjaxResult.error("新增菜单'" + menu.getMenuName() + "'失败,菜单名称已存在");
+ } else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath())) {
+ return AjaxResult.error("新增菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头");
+ }
+ menu.setCreateBy(SecurityUtils.getUsername());
+ return toAjax(menuService.insertMenu(menu));
+ }
+
+ /**
+ * 修改菜单
+ */
+ @RequiresPermissions("system:menu:edit")
+ @Log(title = "菜单管理", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@Validated @RequestBody SysMenu menu) {
+ if (UserConstants.NOT_UNIQUE.equals(menuService.checkMenuNameUnique(menu))) {
+ return AjaxResult.error("修改菜单'" + menu.getMenuName() + "'失败,菜单名称已存在");
+ } else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath())) {
+ return AjaxResult.error("修改菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头");
+ } else if (menu.getMenuId().equals(menu.getParentId())) {
+ return AjaxResult.error("修改菜单'" + menu.getMenuName() + "'失败,上级菜单不能选择自己");
+ }
+ menu.setUpdateBy(SecurityUtils.getUsername());
+ return toAjax(menuService.updateMenu(menu));
+ }
+
+ /**
+ * 删除菜单
+ */
+ @RequiresPermissions("system:menu:remove")
+ @Log(title = "菜单管理", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{menuId}")
+ public AjaxResult remove(@PathVariable("menuId") Long menuId) {
+ if (menuService.hasChildByMenuId(menuId)) {
+ return AjaxResult.error("存在子菜单,不允许删除");
+ }
+ if (menuService.checkMenuExistRole(menuId)) {
+ return AjaxResult.error("菜单已分配,不允许删除");
+ }
+ return toAjax(menuService.deleteMenuById(menuId));
+ }
+
+ /**
+ * 获取路由信息
+ *
+ * @return 路由信息
+ */
+ @GetMapping("getRouters")
+ public AjaxResult getRouters() {
+ Long userId = SecurityUtils.getUserId();
+ List menus = menuService.selectMenuTreeByUserId(userId);
+ return AjaxResult.success(menuService.buildMenus(menus));
+ }
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysNoticeController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysNoticeController.java
index 87a5699d5..6178b55ee 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysNoticeController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysNoticeController.java
@@ -1,82 +1,78 @@
-package com.ruoyi.system.controller;
-
-import com.ruoyi.common.core.web.controller.BaseController;
-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.enums.BusinessType;
-import com.ruoyi.common.security.annotation.RequiresPermissions;
-import com.ruoyi.common.security.utils.SecurityUtils;
-import com.ruoyi.system.domain.SysNotice;
-import com.ruoyi.system.service.ISysNoticeService;
-import lombok.RequiredArgsConstructor;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-/**
- * 公告 信息操作处理
- *
- * @author ruoyi
- */
-@RequiredArgsConstructor(onConstructor_ = @Autowired)
-@RestController
-@RequestMapping("/notice")
-public class SysNoticeController extends BaseController {
-
- private final ISysNoticeService noticeService;
-
- /**
- * 获取通知公告列表
- */
- @RequiresPermissions("system:notice:list")
- @GetMapping("/list")
- public TableDataInfo list(SysNotice notice) {
- startPage();
- List list = noticeService.selectNoticeList(notice);
- return getDataTable(list);
- }
-
- /**
- * 根据通知公告编号获取详细信息
- */
- @RequiresPermissions("system:notice:query")
- @GetMapping(value = "/{noticeId}")
- public AjaxResult getInfo(@PathVariable Long noticeId) {
- return AjaxResult.success(noticeService.selectNoticeById(noticeId));
- }
-
- /**
- * 新增通知公告
- */
- @RequiresPermissions("system:notice:add")
- @Log(title = "通知公告", businessType = BusinessType.INSERT)
- @PostMapping
- public AjaxResult add(@Validated @RequestBody SysNotice notice) {
- notice.setCreateBy(SecurityUtils.getUsername());
- return toAjax(noticeService.insertNotice(notice));
- }
-
- /**
- * 修改通知公告
- */
- @RequiresPermissions("system:notice:edit")
- @Log(title = "通知公告", businessType = BusinessType.UPDATE)
- @PutMapping
- public AjaxResult edit(@Validated @RequestBody SysNotice notice) {
- notice.setUpdateBy(SecurityUtils.getUsername());
- return toAjax(noticeService.updateNotice(notice));
- }
-
- /**
- * 删除通知公告
- */
- @RequiresPermissions("system:notice:remove")
- @Log(title = "通知公告", businessType = BusinessType.DELETE)
- @DeleteMapping("/{noticeIds}")
- public AjaxResult remove(@PathVariable Long[] noticeIds) {
- return toAjax(noticeService.deleteNoticeByIds(noticeIds));
- }
-}
+package com.ruoyi.system.controller;
+
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.log.annotation.Log;
+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.utils.SecurityUtils;
+import com.ruoyi.system.domain.SysNotice;
+import com.ruoyi.system.service.ISysNoticeService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 公告 信息操作处理
+ *
+ * @author ruoyi
+ */
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/notice")
+public class SysNoticeController extends BaseController {
+
+ private final ISysNoticeService noticeService;
+
+ /**
+ * 获取通知公告列表
+ */
+ @RequiresPermissions("system:notice:list")
+ @GetMapping("/list")
+ public TableDataInfo list(SysNotice notice, PageQuery pageQuery) {
+ return noticeService.selectPageNoticeList(notice, pageQuery);
+ }
+
+ /**
+ * 根据通知公告编号获取详细信息
+ */
+ @RequiresPermissions("system:notice:query")
+ @GetMapping(value = "/{noticeId}")
+ public AjaxResult getInfo(@PathVariable Long noticeId) {
+ return AjaxResult.success(noticeService.selectNoticeById(noticeId));
+ }
+
+ /**
+ * 新增通知公告
+ */
+ @RequiresPermissions("system:notice:add")
+ @Log(title = "通知公告", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@Validated @RequestBody SysNotice notice) {
+ notice.setCreateBy(SecurityUtils.getUsername());
+ return toAjax(noticeService.insertNotice(notice));
+ }
+
+ /**
+ * 修改通知公告
+ */
+ @RequiresPermissions("system:notice:edit")
+ @Log(title = "通知公告", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@Validated @RequestBody SysNotice notice) {
+ notice.setUpdateBy(SecurityUtils.getUsername());
+ return toAjax(noticeService.updateNotice(notice));
+ }
+
+ /**
+ * 删除通知公告
+ */
+ @RequiresPermissions("system:notice:remove")
+ @Log(title = "通知公告", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{noticeIds}")
+ public AjaxResult remove(@PathVariable Long[] noticeIds) {
+ return toAjax(noticeService.deleteNoticeByIds(noticeIds));
+ }
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysOperlogController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysOperlogController.java
index 03afbf112..e1a3daff9 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysOperlogController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysOperlogController.java
@@ -2,16 +2,16 @@ package com.ruoyi.system.controller;
import com.ruoyi.common.core.web.controller.BaseController;
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.log.annotation.Log;
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.RequiresPermissions;
import com.ruoyi.system.api.domain.SysOperLog;
import com.ruoyi.system.service.ISysOperLogService;
import lombok.RequiredArgsConstructor;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
@@ -22,7 +22,7 @@ import java.util.List;
*
* @author ruoyi
*/
-@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RequiredArgsConstructor
@RestController
@RequestMapping("/operlog")
public class SysOperlogController extends BaseController {
@@ -30,10 +30,8 @@ public class SysOperlogController extends BaseController {
@RequiresPermissions("system:operlog:list")
@GetMapping("/list")
- public TableDataInfo list(SysOperLog operLog) {
- startPage();
- List list = operLogService.selectOperLogList(operLog);
- return getDataTable(list);
+ public TableDataInfo list(SysOperLog operLog, PageQuery pageQuery) {
+ return operLogService.selectPageOperLogList(operLog, pageQuery);
}
@Log(title = "操作日志", businessType = BusinessType.EXPORT)
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysPostController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysPostController.java
index ca88bf7df..89dbf4cc4 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysPostController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysPostController.java
@@ -3,16 +3,16 @@ package com.ruoyi.system.controller;
import com.ruoyi.common.core.constant.UserConstants;
import com.ruoyi.common.core.web.controller.BaseController;
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.log.annotation.Log;
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.utils.SecurityUtils;
import com.ruoyi.system.domain.SysPost;
import com.ruoyi.system.service.ISysPostService;
import lombok.RequiredArgsConstructor;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -24,7 +24,7 @@ import java.util.List;
*
* @author ruoyi
*/
-@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RequiredArgsConstructor
@RestController
@RequestMapping("/post")
public class SysPostController extends BaseController {
@@ -36,10 +36,8 @@ public class SysPostController extends BaseController {
*/
@RequiresPermissions("system:post:list")
@GetMapping("/list")
- public TableDataInfo list(SysPost post) {
- startPage();
- List list = postService.selectPostList(post);
- return getDataTable(list);
+ public TableDataInfo list(SysPost post, PageQuery pageQuery) {
+ return postService.selectPagePostList(post, pageQuery);
}
@Log(title = "岗位管理", businessType = BusinessType.EXPORT)
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysProfileController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysProfileController.java
index 5a0c5e8b9..3bba38c27 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysProfileController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysProfileController.java
@@ -16,7 +16,6 @@ import com.ruoyi.system.api.model.LoginUser;
import com.ruoyi.system.service.ISysUserService;
import lombok.RequiredArgsConstructor;
import org.apache.dubbo.config.annotation.DubboReference;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -27,7 +26,7 @@ import java.io.IOException;
*
* @author ruoyi
*/
-@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RequiredArgsConstructor
@RestController
@RequestMapping("/user/profile")
public class SysProfileController extends BaseController {
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java
index f44d457e5..01726f0db 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java
@@ -3,10 +3,11 @@ package com.ruoyi.system.controller;
import com.ruoyi.common.core.constant.UserConstants;
import com.ruoyi.common.core.web.controller.BaseController;
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.log.annotation.Log;
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.utils.SecurityUtils;
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.ISysUserService;
import lombok.RequiredArgsConstructor;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -27,7 +27,7 @@ import java.util.List;
*
* @author ruoyi
*/
-@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RequiredArgsConstructor
@RestController
@RequestMapping("/role")
public class SysRoleController extends BaseController {
@@ -37,10 +37,8 @@ public class SysRoleController extends BaseController {
@RequiresPermissions("system:role:list")
@GetMapping("/list")
- public TableDataInfo list(SysRole role) {
- startPage();
- List list = roleService.selectRoleList(role);
- return getDataTable(list);
+ public TableDataInfo list(SysRole role, PageQuery pageQuery) {
+ return roleService.selectPageRoleList(role, pageQuery);
}
@Log(title = "角色管理", businessType = BusinessType.EXPORT)
@@ -142,10 +140,8 @@ public class SysRoleController extends BaseController {
*/
@RequiresPermissions("system:role:list")
@GetMapping("/authUser/allocatedList")
- public TableDataInfo allocatedList(SysUser user) {
- startPage();
- List list = userService.selectAllocatedList(user);
- return getDataTable(list);
+ public TableDataInfo allocatedList(SysUser user, PageQuery pageQuery) {
+ return userService.selectAllocatedList(user, pageQuery);
}
/**
@@ -153,10 +149,8 @@ public class SysRoleController extends BaseController {
*/
@RequiresPermissions("system:role:list")
@GetMapping("/authUser/unallocatedList")
- public TableDataInfo unallocatedList(SysUser user) {
- startPage();
- List list = userService.selectUnallocatedList(user);
- return getDataTable(list);
+ public TableDataInfo unallocatedList(SysUser user, PageQuery pageQuery) {
+ return userService.selectUnallocatedList(user, pageQuery);
}
/**
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java
index 18bf39aec..426767a42 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java
@@ -6,11 +6,12 @@ import com.ruoyi.common.core.constant.UserConstants;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.web.controller.BaseController;
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.utils.ExcelUtil;
import com.ruoyi.common.log.annotation.Log;
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.utils.SecurityUtils;
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.SysUserImportVo;
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 org.apache.commons.lang3.ArrayUtils;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -39,7 +42,7 @@ import java.util.stream.Collectors;
*
* @author ruoyi
*/
-@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RequiredArgsConstructor
@RestController
@RequestMapping("/user")
public class SysUserController extends BaseController {
@@ -48,17 +51,14 @@ public class SysUserController extends BaseController {
private final ISysRoleService roleService;
private final ISysPostService postService;
private final ISysPermissionService permissionService;
- private final ISysConfigService configService;
/**
* 获取用户列表
*/
@RequiresPermissions("system:user:list")
@GetMapping("/list")
- public TableDataInfo list(SysUser user) {
- startPage();
- List list = userService.selectUserList(user);
- return getDataTable(list);
+ public TableDataInfo list(SysUser user, PageQuery pageQuery) {
+ return userService.selectPageUserList(user, pageQuery);
}
@Log(title = "用户管理", businessType = BusinessType.EXPORT)
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserOnlineController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserOnlineController.java
index 5db956867..da0200f07 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserOnlineController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserOnlineController.java
@@ -1,74 +1,73 @@
-package com.ruoyi.system.controller;
-
-import com.ruoyi.common.core.constant.CacheConstants;
-import com.ruoyi.common.core.utils.StringUtils;
-import com.ruoyi.common.core.web.controller.BaseController;
-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.enums.BusinessType;
-import com.ruoyi.common.redis.utils.RedisUtils;
-import com.ruoyi.common.security.annotation.RequiresPermissions;
-import com.ruoyi.system.api.model.LoginUser;
-import com.ruoyi.system.domain.SysUserOnline;
-import com.ruoyi.system.service.ISysUserOnlineService;
-import lombok.RequiredArgsConstructor;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * 在线用户监控
- *
- * @author ruoyi
- */
-@RequiredArgsConstructor(onConstructor_ = @Autowired)
-@RestController
-@RequestMapping("/online")
-public class SysUserOnlineController extends BaseController {
-
- private final ISysUserOnlineService userOnlineService;
-
- @RequiresPermissions("monitor:online:list")
- @GetMapping("/list")
- public TableDataInfo list(String ipaddr, String userName) {
- Collection keys = RedisUtils.keys(CacheConstants.LOGIN_TOKEN_KEY + "*");
- List userOnlineList = new ArrayList();
- for (String key : keys) {
- LoginUser user = RedisUtils.getCacheObject(key);
- if (StringUtils.isNotEmpty(ipaddr) && StringUtils.isNotEmpty(userName)) {
- if (StringUtils.equals(ipaddr, user.getIpaddr()) && StringUtils.equals(userName, user.getUsername())) {
- userOnlineList.add(userOnlineService.selectOnlineByInfo(ipaddr, userName, user));
- }
- } else if (StringUtils.isNotEmpty(ipaddr)) {
- if (StringUtils.equals(ipaddr, user.getIpaddr())) {
- userOnlineList.add(userOnlineService.selectOnlineByIpaddr(ipaddr, user));
- }
- } else if (StringUtils.isNotEmpty(userName)) {
- if (StringUtils.equals(userName, user.getUsername())) {
- userOnlineList.add(userOnlineService.selectOnlineByUserName(userName, user));
- }
- } else {
- userOnlineList.add(userOnlineService.loginUserToUserOnline(user));
- }
- }
- Collections.reverse(userOnlineList);
- userOnlineList.removeAll(Collections.singleton(null));
- return getDataTable(userOnlineList);
- }
-
- /**
- * 强退用户
- */
- @RequiresPermissions("monitor:online:forceLogout")
- @Log(title = "在线用户", businessType = BusinessType.FORCE)
- @DeleteMapping("/{tokenId}")
- public AjaxResult forceLogout(@PathVariable String tokenId) {
- RedisUtils.deleteObject(CacheConstants.LOGIN_TOKEN_KEY + tokenId);
- return AjaxResult.success();
- }
-}
+package com.ruoyi.system.controller;
+
+import com.ruoyi.common.core.constant.CacheConstants;
+import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.log.annotation.Log;
+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.security.annotation.RequiresPermissions;
+import com.ruoyi.system.api.model.LoginUser;
+import com.ruoyi.system.domain.SysUserOnline;
+import com.ruoyi.system.service.ISysUserOnlineService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * 在线用户监控
+ *
+ * @author ruoyi
+ */
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/online")
+public class SysUserOnlineController extends BaseController {
+
+ private final ISysUserOnlineService userOnlineService;
+
+ @RequiresPermissions("monitor:online:list")
+ @GetMapping("/list")
+ public TableDataInfo list(String ipaddr, String userName) {
+ Collection keys = RedisUtils.keys(CacheConstants.LOGIN_TOKEN_KEY + "*");
+ List userOnlineList = new ArrayList();
+ for (String key : keys) {
+ LoginUser user = RedisUtils.getCacheObject(key);
+ if (StringUtils.isNotEmpty(ipaddr) && StringUtils.isNotEmpty(userName)) {
+ if (StringUtils.equals(ipaddr, user.getIpaddr()) && StringUtils.equals(userName, user.getUsername())) {
+ userOnlineList.add(userOnlineService.selectOnlineByInfo(ipaddr, userName, user));
+ }
+ } else if (StringUtils.isNotEmpty(ipaddr)) {
+ if (StringUtils.equals(ipaddr, user.getIpaddr())) {
+ userOnlineList.add(userOnlineService.selectOnlineByIpaddr(ipaddr, user));
+ }
+ } else if (StringUtils.isNotEmpty(userName)) {
+ if (StringUtils.equals(userName, user.getUsername())) {
+ userOnlineList.add(userOnlineService.selectOnlineByUserName(userName, user));
+ }
+ } else {
+ userOnlineList.add(userOnlineService.loginUserToUserOnline(user));
+ }
+ }
+ Collections.reverse(userOnlineList);
+ userOnlineList.removeAll(Collections.singleton(null));
+ return TableDataInfo.build(userOnlineList);
+ }
+
+ /**
+ * 强退用户
+ */
+ @RequiresPermissions("monitor:online:forceLogout")
+ @Log(title = "在线用户", businessType = BusinessType.FORCE)
+ @DeleteMapping("/{tokenId}")
+ public AjaxResult forceLogout(@PathVariable String tokenId) {
+ RedisUtils.deleteObject(CacheConstants.LOGIN_TOKEN_KEY + tokenId);
+ return AjaxResult.success();
+ }
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysConfig.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysConfig.java
index 64bd35bb5..9048e675f 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysConfig.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysConfig.java
@@ -2,6 +2,8 @@ package com.ruoyi.system.domain;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
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.excel.annotation.ExcelDictFormat;
import com.ruoyi.common.excel.convert.ExcelDictConvert;
@@ -9,7 +11,7 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
+import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
@@ -22,6 +24,8 @@ import javax.validation.constraints.Size;
@Data
@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@TableName("sys_config")
@ExcelIgnoreUnannotated
@ApiModel("参数配置业务对象")
public class SysConfig extends BaseEntity {
@@ -31,6 +35,7 @@ public class SysConfig extends BaseEntity {
*/
@ApiModelProperty(value = "参数主键")
@ExcelProperty(value = "参数主键")
+ @TableId(value = "config_id")
private Long configId;
/**
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysMenu.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysMenu.java
index 11915cd13..60755584c 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysMenu.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysMenu.java
@@ -1,11 +1,14 @@
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 io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
+import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@@ -19,6 +22,8 @@ import javax.validation.constraints.Size;
@Data
@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@TableName("sys_menu")
@ApiModel("菜单权限业务对象")
public class SysMenu extends TreeEntity {
@@ -26,6 +31,7 @@ public class SysMenu extends TreeEntity {
* 菜单ID
*/
@ApiModelProperty(value = "菜单ID")
+ @TableId(value = "menu_id")
private Long menuId;
/**
@@ -61,6 +67,7 @@ public class SysMenu extends TreeEntity {
* 路由参数
*/
@ApiModelProperty(value = "路由参数")
+ @TableField("`query`")
private String query;
/**
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysNotice.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysNotice.java
index b459aed51..3b1c142e0 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysNotice.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysNotice.java
@@ -1,11 +1,13 @@
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.xss.Xss;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
+import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
@@ -18,12 +20,15 @@ import javax.validation.constraints.Size;
*/
@Data
@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@TableName("sys_notice")
public class SysNotice extends BaseEntity {
/**
* 公告ID
*/
@ApiModelProperty(value = "公告ID")
+ @TableId(value = "notice_id")
private Long noticeId;
/**
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysPost.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysPost.java
index 1729bea43..8647e9566 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysPost.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysPost.java
@@ -2,6 +2,9 @@ package com.ruoyi.system.domain;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
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.excel.annotation.ExcelDictFormat;
import com.ruoyi.common.excel.convert.ExcelDictConvert;
@@ -9,7 +12,7 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
+import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
@@ -22,6 +25,8 @@ import javax.validation.constraints.Size;
@Data
@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@TableName("sys_post")
@ExcelIgnoreUnannotated
@ApiModel("岗位信息业务对象")
public class SysPost extends BaseEntity {
@@ -31,6 +36,7 @@ public class SysPost extends BaseEntity {
*/
@ApiModelProperty(value = "岗位序号")
@ExcelProperty(value = "岗位序号")
+ @TableId(value = "post_id")
private Long postId;
/**
@@ -77,6 +83,7 @@ public class SysPost extends BaseEntity {
* 用户是否存在此岗位标识 默认不存在
*/
@ApiModelProperty(value = "用户是否存在此岗位标识 默认不存在")
+ @TableField(exist = false)
private boolean flag = false;
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleDept.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleDept.java
index fc159307f..ae9506503 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleDept.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleDept.java
@@ -1,9 +1,12 @@
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.ApiModelProperty;
import lombok.Data;
-import lombok.experimental.Accessors;
+import lombok.NoArgsConstructor;
/**
* 角色和部门关联 sys_role_dept
@@ -12,12 +15,15 @@ import lombok.experimental.Accessors;
*/
@Data
+@NoArgsConstructor
+@TableName("sys_role_dept")
@ApiModel("角色和部门关联")
public class SysRoleDept {
/**
* 角色ID
*/
+ @TableId(type = IdType.INPUT)
@ApiModelProperty(value = "角色ID")
private Long roleId;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleMenu.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleMenu.java
index 907c944ca..a23cb4526 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleMenu.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleMenu.java
@@ -1,9 +1,12 @@
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.ApiModelProperty;
import lombok.Data;
-import lombok.experimental.Accessors;
+import lombok.NoArgsConstructor;
/**
* 角色和菜单关联 sys_role_menu
@@ -12,12 +15,15 @@ import lombok.experimental.Accessors;
*/
@Data
+@NoArgsConstructor
+@TableName("sys_role_menu")
@ApiModel("角色和菜单关联")
public class SysRoleMenu {
/**
* 角色ID
*/
+ @TableId(type = IdType.INPUT)
@ApiModelProperty(value = "角色ID")
private Long roleId;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserOnline.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserOnline.java
index 713aec7b2..10b80bf97 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserOnline.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserOnline.java
@@ -3,7 +3,7 @@ package com.ruoyi.system.domain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
-import lombok.experimental.Accessors;
+import lombok.NoArgsConstructor;
/**
* 当前在线会话
@@ -12,6 +12,7 @@ import lombok.experimental.Accessors;
*/
@Data
+@NoArgsConstructor
@ApiModel("当前在线会话业务对象")
public class SysUserOnline {
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserPost.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserPost.java
index 40a5cd087..e99976638 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserPost.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserPost.java
@@ -1,9 +1,12 @@
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.ApiModelProperty;
import lombok.Data;
-import lombok.experimental.Accessors;
+import lombok.NoArgsConstructor;
/**
* 用户和岗位关联 sys_user_post
@@ -12,12 +15,15 @@ import lombok.experimental.Accessors;
*/
@Data
+@NoArgsConstructor
+@TableName("sys_user_post")
@ApiModel("用户和岗位关联")
public class SysUserPost {
/**
* 用户ID
*/
+ @TableId(type = IdType.INPUT)
@ApiModelProperty(value = "用户ID")
private Long userId;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserRole.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserRole.java
index ec42069b9..a8b8733de 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserRole.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserRole.java
@@ -1,9 +1,12 @@
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.ApiModelProperty;
import lombok.Data;
-import lombok.experimental.Accessors;
+import lombok.NoArgsConstructor;
/**
* 用户和角色关联 sys_user_role
@@ -12,12 +15,15 @@ import lombok.experimental.Accessors;
*/
@Data
+@NoArgsConstructor
+@TableName("sys_user_role")
@ApiModel("用户和角色关联")
public class SysUserRole {
/**
* 用户ID
*/
+ @TableId(type = IdType.INPUT)
@ApiModelProperty(value = "用户ID")
private Long userId;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/dubbo/RemoteDictServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/dubbo/RemoteDictServiceImpl.java
index 683fd699c..0b3441dd9 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/dubbo/RemoteDictServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/dubbo/RemoteDictServiceImpl.java
@@ -4,10 +4,9 @@ import cn.hutool.core.collection.CollUtil;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.system.api.RemoteDictService;
import com.ruoyi.system.api.domain.SysDictData;
-import com.ruoyi.system.service.ISysDictDataService;
+import com.ruoyi.system.service.ISysDictTypeService;
import lombok.RequiredArgsConstructor;
import org.apache.dubbo.config.annotation.DubboService;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@@ -17,18 +16,18 @@ import java.util.List;
*
* @author Lion Li
*/
-@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RequiredArgsConstructor
@Service
@DubboService
public class RemoteDictServiceImpl implements RemoteDictService {
- private final ISysDictDataService sysDictDataService;
+ private final ISysDictTypeService sysDictTypeService;
@Override
public String getDictLabel(String dictType, String dictValue, String separator) {
StringBuilder propertyString = new StringBuilder();
- List datas = sysDictDataService.selectDictDataByType(dictType);
+ List datas = sysDictTypeService.selectDictDataByType(dictType);
if (StringUtils.containsAny(dictValue, separator) && CollUtil.isNotEmpty(datas)) {
for (SysDictData dict : datas) {
@@ -52,7 +51,7 @@ public class RemoteDictServiceImpl implements RemoteDictService {
@Override
public String getDictValue(String dictType, String dictLabel, String separator) {
StringBuilder propertyString = new StringBuilder();
- List datas = sysDictDataService.selectDictDataByType(dictType);
+ List datas = sysDictTypeService.selectDictDataByType(dictType);
if (StringUtils.containsAny(dictLabel, separator) && CollUtil.isNotEmpty(datas)) {
for (SysDictData dict : datas) {
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/dubbo/RemoteLogServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/dubbo/RemoteLogServiceImpl.java
index 3fe498334..bed1a7ce6 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/dubbo/RemoteLogServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/dubbo/RemoteLogServiceImpl.java
@@ -7,7 +7,6 @@ import com.ruoyi.system.service.ISysLogininforService;
import com.ruoyi.system.service.ISysOperLogService;
import lombok.RequiredArgsConstructor;
import org.apache.dubbo.config.annotation.DubboService;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
@@ -15,7 +14,7 @@ import org.springframework.stereotype.Service;
*
* @author Lion Li
*/
-@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RequiredArgsConstructor
@Service
@DubboService
public class RemoteLogServiceImpl implements RemoteLogService {
@@ -24,12 +23,12 @@ public class RemoteLogServiceImpl implements RemoteLogService {
private final ISysLogininforService logininforService;
@Override
- public Boolean saveLog(SysOperLog sysOperLog, String source){
+ public Boolean saveLog(SysOperLog sysOperLog) {
return operLogService.insertOperlog(sysOperLog) > 0;
}
@Override
- public Boolean saveLogininfor(SysLogininfor sysLogininfor, String source){
+ public Boolean saveLogininfor(SysLogininfor sysLogininfor) {
return logininforService.insertLogininfor(sysLogininfor) > 0;
}
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/dubbo/RemoteUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/dubbo/RemoteUserServiceImpl.java
index 6cb644ed6..ed5d91f93 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/dubbo/RemoteUserServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/dubbo/RemoteUserServiceImpl.java
@@ -11,7 +11,6 @@ import com.ruoyi.system.service.ISysPermissionService;
import com.ruoyi.system.service.ISysUserService;
import lombok.RequiredArgsConstructor;
import org.apache.dubbo.config.annotation.DubboService;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Set;
@@ -21,7 +20,7 @@ import java.util.Set;
*
* @author Lion Li
*/
-@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RequiredArgsConstructor
@Service
@DubboService
public class RemoteUserServiceImpl implements RemoteUserService {
@@ -31,7 +30,7 @@ public class RemoteUserServiceImpl implements RemoteUserService {
private final ISysConfigService configService;
@Override
- public LoginUser getUserInfo(String username, String source) {
+ public LoginUser getUserInfo(String username) {
SysUser sysUser = userService.selectUserByUserName(username);
if (ObjectUtil.isNull(sysUser)) {
throw new ServiceException("用户名或密码错误");
@@ -48,7 +47,7 @@ public class RemoteUserServiceImpl implements RemoteUserService {
}
@Override
- public Boolean registerUserInfo(SysUser sysUser, String source) {
+ public Boolean registerUserInfo(SysUser sysUser) {
String username = sysUser.getUserName();
if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser")))) {
throw new ServiceException("当前系统没有开启注册功能");
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysConfigMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysConfigMapper.java
index 2d4f2c692..52fa7010a 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysConfigMapper.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysConfigMapper.java
@@ -1,68 +1,13 @@
-package com.ruoyi.system.mapper;
-
-import com.ruoyi.system.domain.SysConfig;
-
-import java.util.List;
-
-/**
- * 参数配置 数据层
- *
- * @author ruoyi
- */
-public interface SysConfigMapper {
- /**
- * 查询参数配置信息
- *
- * @param config 参数配置信息
- * @return 参数配置信息
- */
- SysConfig selectConfig(SysConfig config);
-
- /**
- * 查询参数配置列表
- *
- * @param config 参数配置信息
- * @return 参数配置集合
- */
- List 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);
-}
\ No newline at end of file
+package com.ruoyi.system.mapper;
+
+import com.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import com.ruoyi.system.domain.SysConfig;
+
+/**
+ * 参数配置 数据层
+ *
+ * @author Lion Li
+ */
+public interface SysConfigMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java
index 330fb904b..3377077b5 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java
@@ -1,118 +1,46 @@
-package com.ruoyi.system.mapper;
-
-import com.ruoyi.system.api.domain.SysDept;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-
-/**
- * 部门管理 数据层
- *
- * @author ruoyi
- */
-public interface SysDeptMapper {
- /**
- * 查询部门管理数据
- *
- * @param dept 部门信息
- * @return 部门信息集合
- */
- List selectDeptList(SysDept dept);
-
- /**
- * 根据角色ID查询部门树信息
- *
- * @param roleId 角色ID
- * @param deptCheckStrictly 部门树选择项是否关联显示
- * @return 选中部门列表
- */
- List selectDeptListByRoleId(@Param("roleId") Long roleId, @Param("deptCheckStrictly") boolean deptCheckStrictly);
-
- /**
- * 根据部门ID查询信息
- *
- * @param deptId 部门ID
- * @return 部门信息
- */
- SysDept selectDeptById(Long deptId);
-
- /**
- * 根据ID查询所有子部门
- *
- * @param deptId 部门ID
- * @return 部门列表
- */
- List 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);
-
- /**
- * 修改子元素关系
- *
- * @param depts 子元素
- * @return 结果
- */
- int updateDeptChildren(@Param("depts") List depts);
-
- /**
- * 删除部门管理信息
- *
- * @param deptId 部门ID
- * @return 结果
- */
- int deleteDeptById(Long deptId);
-}
+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 org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 部门管理 数据层
+ *
+ * @author Lion Li
+ */
+public interface SysDeptMapper extends BaseMapperPlus {
+
+ /**
+ * 查询部门管理数据
+ *
+ * @param dept 部门信息
+ * @return 部门信息集合
+ */
+ @DataPermission({
+ @DataColumn(key = "deptName", value = "d.dept_id")
+ })
+ List selectDeptList(SysDept dept);
+
+ /**
+ * 根据角色ID查询部门树信息
+ *
+ * @param roleId 角色ID
+ * @param deptCheckStrictly 部门树选择项是否关联显示
+ * @return 选中部门列表
+ */
+ List selectDeptListByRoleId(@Param("roleId") Long roleId, @Param("deptCheckStrictly") boolean deptCheckStrictly);
+
+ /**
+ * 修改子元素关系
+ *
+ * @param depts 子元素
+ * @return 结果
+ */
+ int updateDeptChildren(@Param("depts") List depts);
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java
index 8ed1f8ff2..62ac8876b 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java
@@ -1,95 +1,25 @@
-package com.ruoyi.system.mapper;
-
-import com.ruoyi.system.api.domain.SysDictData;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-
-/**
- * 字典表 数据层
- *
- * @author ruoyi
- */
-public interface SysDictDataMapper {
- /**
- * 根据条件分页查询字典数据
- *
- * @param dictData 字典数据信息
- * @return 字典数据集合信息
- */
- List selectDictDataList(SysDictData dictData);
-
- /**
- * 根据字典类型查询字典数据
- *
- * @param dictType 字典类型
- * @return 字典数据集合信息
- */
- List 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);
-}
+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 java.util.List;
+
+/**
+ * 字典表 数据层
+ *
+ * @author Lion Li
+ */
+public interface SysDictDataMapper extends BaseMapperPlus {
+
+ default List selectDictDataByType(String dictType) {
+ return selectList(
+ new LambdaQueryWrapper()
+ .eq(SysDictData::getStatus, UserConstants.DICT_NORMAL)
+ .eq(SysDictData::getDictType, dictType)
+ .orderByAsc(SysDictData::getDictSort));
+ }
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictTypeMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictTypeMapper.java
index 809994c78..02ffdb3e9 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictTypeMapper.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictTypeMapper.java
@@ -1,85 +1,13 @@
-package com.ruoyi.system.mapper;
-
-import com.ruoyi.system.api.domain.SysDictType;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-
-/**
- * 字典表 数据层
- *
- * @author ruoyi
- */
-@Mapper
-public interface SysDictTypeMapper {
- /**
- * 根据条件分页查询字典类型
- *
- * @param dictType 字典类型信息
- * @return 字典类型集合信息
- */
- List selectDictTypeList(SysDictType dictType);
-
- /**
- * 根据所有字典类型
- *
- * @return 字典类型集合信息
- */
- List 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);
-}
+package com.ruoyi.system.mapper;
+
+import com.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import com.ruoyi.system.api.domain.SysDictType;
+
+/**
+ * 字典表 数据层
+ *
+ * @author Lion Li
+ */
+public interface SysDictTypeMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLogininforMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLogininforMapper.java
index c381c68cf..c79abab5a 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLogininforMapper.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLogininforMapper.java
@@ -1,42 +1,13 @@
-package com.ruoyi.system.mapper;
-
-import com.ruoyi.system.api.domain.SysLogininfor;
-
-import java.util.List;
-
-/**
- * 系统访问日志情况信息 数据层
- *
- * @author ruoyi
- */
-public interface SysLogininforMapper {
- /**
- * 新增系统登录日志
- *
- * @param logininfor 访问日志对象
- */
- int insertLogininfor(SysLogininfor logininfor);
-
- /**
- * 查询系统登录日志集合
- *
- * @param logininfor 访问日志对象
- * @return 登录记录集合
- */
- List selectLogininforList(SysLogininfor logininfor);
-
- /**
- * 批量删除系统登录日志
- *
- * @param infoIds 需要删除的登录日志ID
- * @return 结果
- */
- int deleteLogininforByIds(Long[] infoIds);
-
- /**
- * 清空系统登录日志
- *
- * @return 结果
- */
- int cleanLogininfor();
-}
+package com.ruoyi.system.mapper;
+
+import com.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import com.ruoyi.system.api.domain.SysLogininfor;
+
+/**
+ * 系统访问日志情况信息 数据层
+ *
+ * @author Lion Li
+ */
+public interface SysLogininforMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java
index 835caf7e6..40a79a2c3 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java
@@ -1,117 +1,63 @@
-package com.ruoyi.system.mapper;
-
-import com.ruoyi.system.domain.SysMenu;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-
-/**
- * 菜单表 数据层
- *
- * @author ruoyi
- */
-public interface SysMenuMapper {
- /**
- * 查询系统菜单列表
- *
- * @param menu 菜单信息
- * @return 菜单列表
- */
- List selectMenuList(SysMenu menu);
-
- /**
- * 根据用户所有权限
- *
- * @return 权限列表
- */
- List selectMenuPerms();
-
- /**
- * 根据用户查询系统菜单列表
- *
- * @param menu 菜单信息
- * @return 菜单列表
- */
- List selectMenuListByUserId(SysMenu menu);
-
- /**
- * 根据用户ID查询权限
- *
- * @param userId 用户ID
- * @return 权限列表
- */
- List selectMenuPermsByUserId(Long userId);
-
- /**
- * 根据用户ID查询菜单
- *
- * @return 菜单列表
- */
- List selectMenuTreeAll();
-
- /**
- * 根据用户ID查询菜单
- *
- * @param userId 用户ID
- * @return 菜单列表
- */
- List selectMenuTreeByUserId(Long userId);
-
- /**
- * 根据角色ID查询菜单树信息
- *
- * @param roleId 角色ID
- * @param menuCheckStrictly 菜单树选择项是否关联显示
- * @return 选中菜单列表
- */
- List 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);
-}
+package com.ruoyi.system.mapper;
+
+import com.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import com.ruoyi.system.domain.SysMenu;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 菜单表 数据层
+ *
+ * @author Lion Li
+ */
+public interface SysMenuMapper extends BaseMapperPlus {
+
+ /**
+ * 根据用户所有权限
+ *
+ * @return 权限列表
+ */
+ List selectMenuPerms();
+
+ /**
+ * 根据用户查询系统菜单列表
+ *
+ * @param menu 菜单信息
+ * @return 菜单列表
+ */
+ List selectMenuListByUserId(SysMenu menu);
+
+ /**
+ * 根据用户ID查询权限
+ *
+ * @param userId 用户ID
+ * @return 权限列表
+ */
+ List selectMenuPermsByUserId(Long userId);
+
+ /**
+ * 根据用户ID查询菜单
+ *
+ * @return 菜单列表
+ */
+ List selectMenuTreeAll();
+
+ /**
+ * 根据用户ID查询菜单
+ *
+ * @param userId 用户ID
+ * @return 菜单列表
+ */
+ List selectMenuTreeByUserId(Long userId);
+
+ /**
+ * 根据角色ID查询菜单树信息
+ *
+ * @param roleId 角色ID
+ * @param menuCheckStrictly 菜单树选择项是否关联显示
+ * @return 选中菜单列表
+ */
+ List selectMenuListByRoleId(@Param("roleId") Long roleId, @Param("menuCheckStrictly") boolean menuCheckStrictly);
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysNoticeMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysNoticeMapper.java
index 0008e286d..119be7784 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysNoticeMapper.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysNoticeMapper.java
@@ -1,60 +1,13 @@
-package com.ruoyi.system.mapper;
-
-import com.ruoyi.system.domain.SysNotice;
-
-import java.util.List;
-
-/**
- * 通知公告表 数据层
- *
- * @author ruoyi
- */
-public interface SysNoticeMapper {
- /**
- * 查询公告信息
- *
- * @param noticeId 公告ID
- * @return 公告信息
- */
- SysNotice selectNoticeById(Long noticeId);
-
- /**
- * 查询公告列表
- *
- * @param notice 公告信息
- * @return 公告集合
- */
- List 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);
-}
\ No newline at end of file
+package com.ruoyi.system.mapper;
+
+import com.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import com.ruoyi.system.domain.SysNotice;
+
+/**
+ * 通知公告表 数据层
+ *
+ * @author Lion Li
+ */
+public interface SysNoticeMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOperLogMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOperLogMapper.java
index 8e40865f5..05e9434e1 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOperLogMapper.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOperLogMapper.java
@@ -1,48 +1,13 @@
-package com.ruoyi.system.mapper;
-
-import com.ruoyi.system.api.domain.SysOperLog;
-
-import java.util.List;
-
-/**
- * 操作日志 数据层
- *
- * @author ruoyi
- */
-public interface SysOperLogMapper {
- /**
- * 新增操作日志
- *
- * @param operLog 操作日志对象
- */
- int insertOperlog(SysOperLog operLog);
-
- /**
- * 查询系统操作日志集合
- *
- * @param operLog 操作日志对象
- * @return 操作日志集合
- */
- List selectOperLogList(SysOperLog operLog);
-
- /**
- * 批量删除系统操作日志
- *
- * @param operIds 需要删除的操作日志ID
- * @return 结果
- */
- int deleteOperLogByIds(Long[] operIds);
-
- /**
- * 查询操作日志详细
- *
- * @param operId 操作ID
- * @return 操作日志对象
- */
- SysOperLog selectOperLogById(Long operId);
-
- /**
- * 清空操作日志
- */
- void cleanOperLog();
-}
+package com.ruoyi.system.mapper;
+
+import com.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import com.ruoyi.system.api.domain.SysOperLog;
+
+/**
+ * 操作日志 数据层
+ *
+ * @author Lion Li
+ */
+public interface SysOperLogMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysPostMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysPostMapper.java
index e2cc115ca..7cf6b5342 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysPostMapper.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysPostMapper.java
@@ -1,99 +1,31 @@
-package com.ruoyi.system.mapper;
-
-import com.ruoyi.system.domain.SysPost;
-
-import java.util.List;
-
-/**
- * 岗位信息 数据层
- *
- * @author ruoyi
- */
-public interface SysPostMapper {
- /**
- * 查询岗位数据集合
- *
- * @param post 岗位信息
- * @return 岗位数据集合
- */
- List selectPostList(SysPost post);
-
- /**
- * 查询所有岗位
- *
- * @return 岗位列表
- */
- List selectPostAll();
-
- /**
- * 通过岗位ID查询岗位信息
- *
- * @param postId 岗位ID
- * @return 角色对象信息
- */
- SysPost selectPostById(Long postId);
-
- /**
- * 根据用户ID获取岗位选择框列表
- *
- * @param userId 用户ID
- * @return 选中岗位ID列表
- */
- List selectPostListByUserId(Long userId);
-
- /**
- * 查询用户所属岗位组
- *
- * @param userName 用户名
- * @return 结果
- */
- List 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);
-}
+package com.ruoyi.system.mapper;
+
+import com.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import com.ruoyi.system.domain.SysPost;
+
+import java.util.List;
+
+/**
+ * 岗位信息 数据层
+ *
+ * @author Lion Li
+ */
+public interface SysPostMapper extends BaseMapperPlus {
+
+ /**
+ * 根据用户ID获取岗位选择框列表
+ *
+ * @param userId 用户ID
+ * @return 选中岗位ID列表
+ */
+ List selectPostListByUserId(Long userId);
+
+ /**
+ * 查询用户所属岗位组
+ *
+ * @param userName 用户名
+ * @return 结果
+ */
+ List selectPostsByUserName(String userName);
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleDeptMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleDeptMapper.java
index bcb234dd3..9697fc155 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleDeptMapper.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleDeptMapper.java
@@ -1,44 +1,46 @@
-package com.ruoyi.system.mapper;
-
-import com.ruoyi.system.domain.SysRoleDept;
-
-import java.util.List;
-
-/**
- * 角色与部门关联表 数据层
- *
- * @author ruoyi
- */
-public interface SysRoleDeptMapper {
- /**
- * 通过角色ID删除角色和部门关联
- *
- * @param roleId 角色ID
- * @return 结果
- */
- int deleteRoleDeptByRoleId(Long roleId);
-
- /**
- * 批量删除角色部门关联信息
- *
- * @param ids 需要删除的数据ID
- * @return 结果
- */
- int deleteRoleDept(Long[] ids);
-
- /**
- * 查询部门使用数量
- *
- * @param deptId 部门ID
- * @return 结果
- */
- int selectCountRoleDeptByDeptId(Long deptId);
-
- /**
- * 批量新增角色部门信息
- *
- * @param roleDeptList 角色部门列表
- * @return 结果
- */
- int batchRoleDept(List roleDeptList);
-}
+package com.ruoyi.system.mapper;
+
+import com.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import com.ruoyi.system.domain.SysRoleDept;
+
+import java.util.List;
+
+/**
+ * 角色与部门关联表 数据层
+ *
+ * @author Lion Li
+ */
+public interface SysRoleDeptMapper extends BaseMapperPlus {
+
+ /**
+ * 通过角色ID删除角色和部门关联
+ *
+ * @param roleId 角色ID
+ * @return 结果
+ */
+ int deleteRoleDeptByRoleId(Long roleId);
+
+ /**
+ * 批量删除角色部门关联信息
+ *
+ * @param ids 需要删除的数据ID
+ * @return 结果
+ */
+ int deleteRoleDept(Long[] ids);
+
+ /**
+ * 查询部门使用数量
+ *
+ * @param deptId 部门ID
+ * @return 结果
+ */
+ int selectCountRoleDeptByDeptId(Long deptId);
+
+ /**
+ * 批量新增角色部门信息
+ *
+ * @param roleDeptList 角色部门列表
+ * @return 结果
+ */
+ int batchRoleDept(List roleDeptList);
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java
index 0ebd948ff..07abc11c7 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java
@@ -1,107 +1,60 @@
-package com.ruoyi.system.mapper;
-
-import com.ruoyi.system.api.domain.SysRole;
-
-import java.util.List;
-
-/**
- * 角色表 数据层
- *
- * @author ruoyi
- */
-public interface SysRoleMapper {
- /**
- * 根据条件分页查询角色数据
- *
- * @param role 角色信息
- * @return 角色数据集合信息
- */
- List selectRoleList(SysRole role);
-
- /**
- * 根据用户ID查询角色
- *
- * @param userId 用户ID
- * @return 角色列表
- */
- List selectRolePermissionByUserId(Long userId);
-
- /**
- * 查询所有角色
- *
- * @return 角色列表
- */
- List selectRoleAll();
-
- /**
- * 根据用户ID获取角色选择框列表
- *
- * @param userId 用户ID
- * @return 选中角色ID列表
- */
- List selectRoleListByUserId(Long userId);
-
- /**
- * 通过角色ID查询角色
- *
- * @param roleId 角色ID
- * @return 角色对象信息
- */
- SysRole selectRoleById(Long roleId);
-
- /**
- * 根据用户ID查询角色
- *
- * @param userName 用户名
- * @return 角色列表
- */
- List 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);
-}
+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 org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 角色表 数据层
+ *
+ * @author Lion Li
+ */
+public interface SysRoleMapper extends BaseMapperPlus {
+
+ @DataPermission({
+ @DataColumn(key = "deptName", value = "d.dept_id")
+ })
+ Page selectPageRoleList(@Param("page") Page page, @Param("role") SysRole role);
+
+ /**
+ * 根据条件分页查询角色数据
+ *
+ * @param role 角色信息
+ * @return 角色数据集合信息
+ */
+ @DataPermission({
+ @DataColumn(key = "deptName", value = "d.dept_id")
+ })
+ List selectRoleList(SysRole role);
+
+ /**
+ * 根据用户ID查询角色
+ *
+ * @param userId 用户ID
+ * @return 角色列表
+ */
+ List selectRolePermissionByUserId(Long userId);
+
+
+ /**
+ * 根据用户ID获取角色选择框列表
+ *
+ * @param userId 用户ID
+ * @return 选中角色ID列表
+ */
+ List selectRoleListByUserId(Long userId);
+
+ /**
+ * 根据用户ID查询角色
+ *
+ * @param userName 用户名
+ * @return 角色列表
+ */
+ List selectRolesByUserName(String userName);
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java
index b19effab9..3cd2c9476 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java
@@ -1,44 +1,46 @@
-package com.ruoyi.system.mapper;
-
-import com.ruoyi.system.domain.SysRoleMenu;
-
-import java.util.List;
-
-/**
- * 角色与菜单关联表 数据层
- *
- * @author ruoyi
- */
-public interface SysRoleMenuMapper {
- /**
- * 查询菜单使用数量
- *
- * @param menuId 菜单ID
- * @return 结果
- */
- int checkMenuExistRole(Long menuId);
-
- /**
- * 通过角色ID删除角色和菜单关联
- *
- * @param roleId 角色ID
- * @return 结果
- */
- int deleteRoleMenuByRoleId(Long roleId);
-
- /**
- * 批量删除角色菜单关联信息
- *
- * @param ids 需要删除的数据ID
- * @return 结果
- */
- int deleteRoleMenu(Long[] ids);
-
- /**
- * 批量新增角色菜单信息
- *
- * @param roleMenuList 角色菜单列表
- * @return 结果
- */
- int batchRoleMenu(List roleMenuList);
-}
+package com.ruoyi.system.mapper;
+
+import com.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import com.ruoyi.system.domain.SysRoleMenu;
+
+import java.util.List;
+
+/**
+ * 角色与菜单关联表 数据层
+ *
+ * @author Lion Li
+ */
+public interface SysRoleMenuMapper extends BaseMapperPlus {
+
+ /**
+ * 查询菜单使用数量
+ *
+ * @param menuId 菜单ID
+ * @return 结果
+ */
+ int checkMenuExistRole(Long menuId);
+
+ /**
+ * 通过角色ID删除角色和菜单关联
+ *
+ * @param roleId 角色ID
+ * @return 结果
+ */
+ int deleteRoleMenuByRoleId(Long roleId);
+
+ /**
+ * 批量删除角色菜单关联信息
+ *
+ * @param ids 需要删除的数据ID
+ * @return 结果
+ */
+ int deleteRoleMenu(Long[] ids);
+
+ /**
+ * 批量新增角色菜单信息
+ *
+ * @param roleMenuList 角色菜单列表
+ * @return 结果
+ */
+ int batchRoleMenu(List roleMenuList);
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
index c56f2d293..a1363e262 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
@@ -1,127 +1,77 @@
-package com.ruoyi.system.mapper;
-
-import com.ruoyi.system.api.domain.SysUser;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-
-/**
- * 用户表 数据层
- *
- * @author ruoyi
- */
-public interface SysUserMapper {
- /**
- * 根据条件分页查询用户列表
- *
- * @param sysUser 用户信息
- * @return 用户信息集合信息
- */
- List selectUserList(SysUser sysUser);
-
- /**
- * 根据条件分页查询未已配用户角色列表
- *
- * @param user 用户信息
- * @return 用户信息集合信息
- */
- List selectAllocatedList(SysUser user);
-
- /**
- * 根据条件分页查询未分配用户角色列表
- *
- * @param user 用户信息
- * @return 用户信息集合信息
- */
- List selectUnallocatedList(SysUser user);
-
- /**
- * 通过用户名查询用户
- *
- * @param userName 用户名
- * @return 用户对象信息
- */
- SysUser selectUserByUserName(String userName);
-
- /**
- * 通过用户ID查询用户
- *
- * @param userId 用户ID
- * @return 用户对象信息
- */
- 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);
-}
+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 org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 用户表 数据层
+ *
+ * @author Lion Li
+ */
+public interface SysUserMapper extends BaseMapperPlus {
+
+ @DataPermission({
+ @DataColumn(key = "deptName", value = "d.dept_id"),
+ @DataColumn(key = "userName", value = "u.user_id")
+ })
+ Page selectPageUserList(@Param("page") Page page, @Param("user") SysUser user);
+
+ /**
+ * 根据条件分页查询用户列表
+ *
+ * @param sysUser 用户信息
+ * @return 用户信息集合信息
+ */
+ @DataPermission({
+ @DataColumn(key = "deptName", value = "d.dept_id"),
+ @DataColumn(key = "userName", value = "u.user_id")
+ })
+ List selectUserList(SysUser sysUser);
+
+ /**
+ * 根据条件分页查询未已配用户角色列表
+ *
+ * @param user 用户信息
+ * @return 用户信息集合信息
+ */
+ @DataPermission({
+ @DataColumn(key = "deptName", value = "d.dept_id"),
+ @DataColumn(key = "userName", value = "u.user_id")
+ })
+ Page selectAllocatedList(@Param("page") Page page, @Param("user") SysUser user);
+
+ /**
+ * 根据条件分页查询未分配用户角色列表
+ *
+ * @param user 用户信息
+ * @return 用户信息集合信息
+ */
+ @DataPermission({
+ @DataColumn(key = "deptName", value = "d.dept_id"),
+ @DataColumn(key = "userName", value = "u.user_id")
+ })
+ Page selectUnallocatedList(@Param("page") Page page, @Param("user") SysUser user);
+
+ /**
+ * 通过用户名查询用户
+ *
+ * @param userName 用户名
+ * @return 用户对象信息
+ */
+ SysUser selectUserByUserName(String userName);
+
+ /**
+ * 通过用户ID查询用户
+ *
+ * @param userId 用户ID
+ * @return 用户对象信息
+ */
+ SysUser selectUserById(Long userId);
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserPostMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserPostMapper.java
index ca5c3fa3f..72bb65a8a 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserPostMapper.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserPostMapper.java
@@ -1,44 +1,46 @@
-package com.ruoyi.system.mapper;
-
-import com.ruoyi.system.domain.SysUserPost;
-
-import java.util.List;
-
-/**
- * 用户与岗位关联表 数据层
- *
- * @author ruoyi
- */
-public interface SysUserPostMapper {
- /**
- * 通过用户ID删除用户和岗位关联
- *
- * @param userId 用户ID
- * @return 结果
- */
- int deleteUserPostByUserId(Long userId);
-
- /**
- * 通过岗位ID查询岗位使用数量
- *
- * @param postId 岗位ID
- * @return 结果
- */
- int countUserPostById(Long postId);
-
- /**
- * 批量删除用户和岗位关联
- *
- * @param ids 需要删除的数据ID
- * @return 结果
- */
- int deleteUserPost(Long[] ids);
-
- /**
- * 批量新增用户岗位信息
- *
- * @param userPostList 用户角色列表
- * @return 结果
- */
- int batchUserPost(List userPostList);
-}
+package com.ruoyi.system.mapper;
+
+import com.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import com.ruoyi.system.domain.SysUserPost;
+
+import java.util.List;
+
+/**
+ * 用户与岗位关联表 数据层
+ *
+ * @author Lion Li
+ */
+public interface SysUserPostMapper extends BaseMapperPlus {
+
+ /**
+ * 通过用户ID删除用户和岗位关联
+ *
+ * @param userId 用户ID
+ * @return 结果
+ */
+ int deleteUserPostByUserId(Long userId);
+
+ /**
+ * 通过岗位ID查询岗位使用数量
+ *
+ * @param postId 岗位ID
+ * @return 结果
+ */
+ int countUserPostById(Long postId);
+
+ /**
+ * 批量删除用户和岗位关联
+ *
+ * @param ids 需要删除的数据ID
+ * @return 结果
+ */
+ int deleteUserPost(Long[] ids);
+
+ /**
+ * 批量新增用户岗位信息
+ *
+ * @param userPostList 用户角色列表
+ * @return 结果
+ */
+ int batchUserPost(List userPostList);
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java
index a17b2cb13..e34eb6117 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java
@@ -1,62 +1,64 @@
-package com.ruoyi.system.mapper;
-
-import com.ruoyi.system.domain.SysUserRole;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-
-/**
- * 用户与角色关联表 数据层
- *
- * @author ruoyi
- */
-public interface SysUserRoleMapper {
- /**
- * 通过用户ID删除用户和角色关联
- *
- * @param userId 用户ID
- * @return 结果
- */
- int deleteUserRoleByUserId(Long userId);
-
- /**
- * 批量删除用户和角色关联
- *
- * @param ids 需要删除的数据ID
- * @return 结果
- */
- int deleteUserRole(Long[] ids);
-
- /**
- * 通过角色ID查询角色使用数量
- *
- * @param roleId 角色ID
- * @return 结果
- */
- int countUserRoleByRoleId(Long roleId);
-
- /**
- * 批量新增用户角色信息
- *
- * @param userRoleList 用户角色列表
- * @return 结果
- */
- int batchUserRole(List userRoleList);
-
- /**
- * 删除用户和角色关联信息
- *
- * @param userRole 用户和角色关联信息
- * @return 结果
- */
- int deleteUserRoleInfo(SysUserRole userRole);
-
- /**
- * 批量取消授权用户角色
- *
- * @param roleId 角色ID
- * @param userIds 需要删除的用户数据ID
- * @return 结果
- */
- int deleteUserRoleInfos(@Param("roleId") Long roleId, @Param("userIds") Long[] userIds);
-}
+package com.ruoyi.system.mapper;
+
+import com.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import com.ruoyi.system.domain.SysUserRole;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 用户与角色关联表 数据层
+ *
+ * @author Lion Li
+ */
+public interface SysUserRoleMapper extends BaseMapperPlus {
+
+ /**
+ * 通过用户ID删除用户和角色关联
+ *
+ * @param userId 用户ID
+ * @return 结果
+ */
+ int deleteUserRoleByUserId(Long userId);
+
+ /**
+ * 批量删除用户和角色关联
+ *
+ * @param ids 需要删除的数据ID
+ * @return 结果
+ */
+ int deleteUserRole(Long[] ids);
+
+ /**
+ * 通过角色ID查询角色使用数量
+ *
+ * @param roleId 角色ID
+ * @return 结果
+ */
+ int countUserRoleByRoleId(Long roleId);
+
+ /**
+ * 批量新增用户角色信息
+ *
+ * @param userRoleList 用户角色列表
+ * @return 结果
+ */
+ int batchUserRole(List userRoleList);
+
+ /**
+ * 删除用户和角色关联信息
+ *
+ * @param userRole 用户和角色关联信息
+ * @return 结果
+ */
+ int deleteUserRoleInfo(SysUserRole userRole);
+
+ /**
+ * 批量取消授权用户角色
+ *
+ * @param roleId 角色ID
+ * @param userIds 需要删除的用户数据ID
+ * @return 结果
+ */
+ int deleteUserRoleInfos(@Param("roleId") Long roleId, @Param("userIds") Long[] userIds);
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java
index c72117453..a5bfab6ec 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java
@@ -1,83 +1,88 @@
-package com.ruoyi.system.service;
-
-import com.ruoyi.system.domain.SysConfig;
-
-import java.util.List;
-
-/**
- * 参数配置 服务层
- *
- * @author ruoyi
- */
-public interface ISysConfigService {
- /**
- * 查询参数配置信息
- *
- * @param configId 参数配置ID
- * @return 参数配置信息
- */
- SysConfig selectConfigById(Long configId);
-
- /**
- * 根据键名查询参数配置信息
- *
- * @param configKey 参数键名
- * @return 参数键值
- */
- String selectConfigByKey(String configKey);
-
- /**
- * 查询参数配置列表
- *
- * @param config 参数配置信息
- * @return 参数配置集合
- */
- List selectConfigList(SysConfig config);
-
- /**
- * 新增参数配置
- *
- * @param config 参数配置信息
- * @return 结果
- */
- int insertConfig(SysConfig config);
-
- /**
- * 修改参数配置
- *
- * @param config 参数配置信息
- * @return 结果
- */
- int updateConfig(SysConfig config);
-
- /**
- * 批量删除参数信息
- *
- * @param configIds 需要删除的参数ID
- * @return 结果
- */
- void deleteConfigByIds(Long[] configIds);
-
- /**
- * 加载参数缓存数据
- */
- void loadingConfigCache();
-
- /**
- * 清空参数缓存数据
- */
- void clearConfigCache();
-
- /**
- * 重置参数缓存数据
- */
- void resetConfigCache();
-
- /**
- * 校验参数键名是否唯一
- *
- * @param config 参数信息
- * @return 结果
- */
- String checkConfigKeyUnique(SysConfig config);
-}
+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 java.util.List;
+
+/**
+ * 参数配置 服务层
+ *
+ * @author ruoyi
+ */
+public interface ISysConfigService {
+
+ TableDataInfo selectPageConfigList(SysConfig config, PageQuery pageQuery);
+
+ /**
+ * 查询参数配置信息
+ *
+ * @param configId 参数配置ID
+ * @return 参数配置信息
+ */
+ SysConfig selectConfigById(Long configId);
+
+ /**
+ * 根据键名查询参数配置信息
+ *
+ * @param configKey 参数键名
+ * @return 参数键值
+ */
+ String selectConfigByKey(String configKey);
+
+ /**
+ * 查询参数配置列表
+ *
+ * @param config 参数配置信息
+ * @return 参数配置集合
+ */
+ List selectConfigList(SysConfig config);
+
+ /**
+ * 新增参数配置
+ *
+ * @param config 参数配置信息
+ * @return 结果
+ */
+ int insertConfig(SysConfig config);
+
+ /**
+ * 修改参数配置
+ *
+ * @param config 参数配置信息
+ * @return 结果
+ */
+ int updateConfig(SysConfig config);
+
+ /**
+ * 批量删除参数信息
+ *
+ * @param configIds 需要删除的参数ID
+ * @return 结果
+ */
+ void deleteConfigByIds(Long[] configIds);
+
+ /**
+ * 加载参数缓存数据
+ */
+ void loadingConfigCache();
+
+ /**
+ * 清空参数缓存数据
+ */
+ void clearConfigCache();
+
+ /**
+ * 重置参数缓存数据
+ */
+ void resetConfigCache();
+
+ /**
+ * 校验参数键名是否唯一
+ *
+ * @param config 参数信息
+ * @return 结果
+ */
+ String checkConfigKeyUnique(SysConfig config);
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java
index ad4764467..9f0247a4e 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java
@@ -19,14 +19,6 @@ public interface ISysDeptService {
*/
List selectDeptList(SysDept dept);
- /**
- * 构建前端所需要树结构
- *
- * @param depts 部门列表
- * @return 树结构列表
- */
- List buildDeptTree(List depts);
-
/**
* 构建前端所需要下拉树结构
*
@@ -57,7 +49,7 @@ public interface ISysDeptService {
* @param deptId 部门ID
* @return 子部门数
*/
- int selectNormalChildrenDeptById(Long deptId);
+ long selectNormalChildrenDeptById(Long deptId);
/**
* 是否存在部门子节点
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java
index 42bf63993..1eb4ccb51 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java
@@ -1,69 +1,66 @@
-package com.ruoyi.system.service;
-
-import com.ruoyi.system.api.domain.SysDictData;
-
-import java.util.List;
-
-/**
- * 字典 业务层
- *
- * @author ruoyi
- */
-public interface ISysDictDataService {
- /**
- * 根据条件分页查询字典数据
- *
- * @param dictData 字典数据信息
- * @return 字典数据集合信息
- */
- List selectDictDataList(SysDictData dictData);
-
- /**
- * 根据字典类型和字典键值查询字典数据信息
- *
- * @param dictType 字典类型
- * @param dictValue 字典键值
- * @return 字典标签
- */
- String selectDictLabel(String dictType, String dictValue);
-
- /**
- * 根据字典类型查询字典数据
- *
- * @param dictType 字典类型
- * @return 字典数据集合信息
- */
- List selectDictDataByType(String dictType);
-
- /**
- * 根据字典数据ID查询信息
- *
- * @param dictCode 字典数据ID
- * @return 字典数据
- */
- SysDictData selectDictDataById(Long dictCode);
-
- /**
- * 批量删除字典数据信息
- *
- * @param dictCodes 需要删除的字典数据ID
- * @return 结果
- */
- void deleteDictDataByIds(Long[] dictCodes);
-
- /**
- * 新增保存字典数据信息
- *
- * @param dictData 字典数据信息
- * @return 结果
- */
- int insertDictData(SysDictData dictData);
-
- /**
- * 修改保存字典数据信息
- *
- * @param dictData 字典数据信息
- * @return 结果
- */
- int updateDictData(SysDictData dictData);
-}
+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 java.util.List;
+
+/**
+ * 字典 业务层
+ *
+ * @author ruoyi
+ */
+public interface ISysDictDataService {
+
+ TableDataInfo selectPageDictDataList(SysDictData dictData, PageQuery pageQuery);
+
+ /**
+ * 根据条件分页查询字典数据
+ *
+ * @param dictData 字典数据信息
+ * @return 字典数据集合信息
+ */
+ List selectDictDataList(SysDictData dictData);
+
+ /**
+ * 根据字典类型和字典键值查询字典数据信息
+ *
+ * @param dictType 字典类型
+ * @param dictValue 字典键值
+ * @return 字典标签
+ */
+ String selectDictLabel(String dictType, String dictValue);
+
+ /**
+ * 根据字典数据ID查询信息
+ *
+ * @param dictCode 字典数据ID
+ * @return 字典数据
+ */
+ SysDictData selectDictDataById(Long dictCode);
+
+ /**
+ * 批量删除字典数据信息
+ *
+ * @param dictCodes 需要删除的字典数据ID
+ * @return 结果
+ */
+ void deleteDictDataByIds(Long[] dictCodes);
+
+ /**
+ * 新增保存字典数据信息
+ *
+ * @param dictData 字典数据信息
+ * @return 结果
+ */
+ int insertDictData(SysDictData dictData);
+
+ /**
+ * 修改保存字典数据信息
+ *
+ * @param dictData 字典数据信息
+ * @return 结果
+ */
+ int updateDictData(SysDictData dictData);
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java
index cf9f2714d..8afd55308 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java
@@ -1,99 +1,103 @@
-package com.ruoyi.system.service;
-
-import com.ruoyi.system.api.domain.SysDictData;
-import com.ruoyi.system.api.domain.SysDictType;
-
-import java.util.List;
-
-/**
- * 字典 业务层
- *
- * @author ruoyi
- */
-public interface ISysDictTypeService {
- /**
- * 根据条件分页查询字典类型
- *
- * @param dictType 字典类型信息
- * @return 字典类型集合信息
- */
- List selectDictTypeList(SysDictType dictType);
-
- /**
- * 根据所有字典类型
- *
- * @return 字典类型集合信息
- */
- List selectDictTypeAll();
-
- /**
- * 根据字典类型查询字典数据
- *
- * @param dictType 字典类型
- * @return 字典数据集合信息
- */
- List selectDictDataByType(String dictType);
-
- /**
- * 根据字典类型ID查询信息
- *
- * @param dictId 字典类型ID
- * @return 字典类型
- */
- SysDictType selectDictTypeById(Long dictId);
-
- /**
- * 根据字典类型查询信息
- *
- * @param dictType 字典类型
- * @return 字典类型
- */
- SysDictType selectDictTypeByType(String dictType);
-
- /**
- * 批量删除字典信息
- *
- * @param dictIds 需要删除的字典ID
- * @return 结果
- */
- void deleteDictTypeByIds(Long[] dictIds);
-
- /**
- * 加载字典缓存数据
- */
- void loadingDictCache();
-
- /**
- * 清空字典缓存数据
- */
- void clearDictCache();
-
- /**
- * 重置字典缓存数据
- */
- void resetDictCache();
-
- /**
- * 新增保存字典类型信息
- *
- * @param dictType 字典类型信息
- * @return 结果
- */
- int insertDictType(SysDictType dictType);
-
- /**
- * 修改保存字典类型信息
- *
- * @param dictType 字典类型信息
- * @return 结果
- */
- int updateDictType(SysDictType dictType);
-
- /**
- * 校验字典类型称是否唯一
- *
- * @param dictType 字典类型
- * @return 结果
- */
- String checkDictTypeUnique(SysDictType dictType);
-}
+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.SysDictType;
+
+import java.util.List;
+
+/**
+ * 字典 业务层
+ *
+ * @author ruoyi
+ */
+public interface ISysDictTypeService {
+ TableDataInfo selectPageDictTypeList(SysDictType dictType, PageQuery pageQuery);
+
+ /**
+ * 根据条件分页查询字典类型
+ *
+ * @param dictType 字典类型信息
+ * @return 字典类型集合信息
+ */
+ List selectDictTypeList(SysDictType dictType);
+
+ /**
+ * 根据所有字典类型
+ *
+ * @return 字典类型集合信息
+ */
+ List selectDictTypeAll();
+
+ /**
+ * 根据字典类型查询字典数据
+ *
+ * @param dictType 字典类型
+ * @return 字典数据集合信息
+ */
+ List selectDictDataByType(String dictType);
+
+ /**
+ * 根据字典类型ID查询信息
+ *
+ * @param dictId 字典类型ID
+ * @return 字典类型
+ */
+ SysDictType selectDictTypeById(Long dictId);
+
+ /**
+ * 根据字典类型查询信息
+ *
+ * @param dictType 字典类型
+ * @return 字典类型
+ */
+ SysDictType selectDictTypeByType(String dictType);
+
+ /**
+ * 批量删除字典信息
+ *
+ * @param dictIds 需要删除的字典ID
+ * @return 结果
+ */
+ void deleteDictTypeByIds(Long[] dictIds);
+
+ /**
+ * 加载字典缓存数据
+ */
+ void loadingDictCache();
+
+ /**
+ * 清空字典缓存数据
+ */
+ void clearDictCache();
+
+ /**
+ * 重置字典缓存数据
+ */
+ void resetDictCache();
+
+ /**
+ * 新增保存字典类型信息
+ *
+ * @param dictType 字典类型信息
+ * @return 结果
+ */
+ int insertDictType(SysDictType dictType);
+
+ /**
+ * 修改保存字典类型信息
+ *
+ * @param dictType 字典类型信息
+ * @return 结果
+ */
+ int updateDictType(SysDictType dictType);
+
+ /**
+ * 校验字典类型称是否唯一
+ *
+ * @param dictType 字典类型
+ * @return 结果
+ */
+ String checkDictTypeUnique(SysDictType dictType);
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java
index 984f77c89..8829baa7e 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java
@@ -1,40 +1,45 @@
-package com.ruoyi.system.service;
-
-import com.ruoyi.system.api.domain.SysLogininfor;
-
-import java.util.List;
-
-/**
- * 系统访问日志情况信息 服务层
- *
- * @author ruoyi
- */
-public interface ISysLogininforService {
- /**
- * 新增系统登录日志
- *
- * @param logininfor 访问日志对象
- */
- int insertLogininfor(SysLogininfor logininfor);
-
- /**
- * 查询系统登录日志集合
- *
- * @param logininfor 访问日志对象
- * @return 登录记录集合
- */
- List selectLogininforList(SysLogininfor logininfor);
-
- /**
- * 批量删除系统登录日志
- *
- * @param infoIds 需要删除的登录日志ID
- * @return
- */
- int deleteLogininforByIds(Long[] infoIds);
-
- /**
- * 清空系统登录日志
- */
- void cleanLogininfor();
-}
+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.SysLogininfor;
+
+import java.util.List;
+
+/**
+ * 系统访问日志情况信息 服务层
+ *
+ * @author ruoyi
+ */
+public interface ISysLogininforService {
+
+ TableDataInfo selectPageLogininforList(SysLogininfor logininfor, PageQuery pageQuery);
+
+ /**
+ * 新增系统登录日志
+ *
+ * @param logininfor 访问日志对象
+ */
+ int insertLogininfor(SysLogininfor logininfor);
+
+ /**
+ * 查询系统登录日志集合
+ *
+ * @param logininfor 访问日志对象
+ * @return 登录记录集合
+ */
+ List selectLogininforList(SysLogininfor logininfor);
+
+ /**
+ * 批量删除系统登录日志
+ *
+ * @param infoIds 需要删除的登录日志ID
+ * @return
+ */
+ int deleteLogininforByIds(Long[] infoIds);
+
+ /**
+ * 清空系统登录日志
+ */
+ void cleanLogininfor();
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysNoticeService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysNoticeService.java
index 739fdbc40..558999cf4 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysNoticeService.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysNoticeService.java
@@ -1,60 +1,64 @@
-package com.ruoyi.system.service;
-
-import com.ruoyi.system.domain.SysNotice;
-
-import java.util.List;
-
-/**
- * 公告 服务层
- *
- * @author ruoyi
- */
-public interface ISysNoticeService {
- /**
- * 查询公告信息
- *
- * @param noticeId 公告ID
- * @return 公告信息
- */
- SysNotice selectNoticeById(Long noticeId);
-
- /**
- * 查询公告列表
- *
- * @param notice 公告信息
- * @return 公告集合
- */
- List 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);
-}
+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.SysNotice;
+
+import java.util.List;
+
+/**
+ * 公告 服务层
+ *
+ * @author ruoyi
+ */
+public interface ISysNoticeService {
+ TableDataInfo selectPageNoticeList(SysNotice notice, PageQuery pageQuery);
+
+ /**
+ * 查询公告信息
+ *
+ * @param noticeId 公告ID
+ * @return 公告信息
+ */
+ SysNotice selectNoticeById(Long noticeId);
+
+ /**
+ * 查询公告列表
+ *
+ * @param notice 公告信息
+ * @return 公告集合
+ */
+ List 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);
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOperLogService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOperLogService.java
index 2683dbf69..dd01d77cb 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOperLogService.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOperLogService.java
@@ -1,49 +1,54 @@
-package com.ruoyi.system.service;
-
-import com.ruoyi.system.api.domain.SysOperLog;
-
-import java.util.List;
-
-/**
- * 操作日志 服务层
- *
- * @author ruoyi
- */
-public interface ISysOperLogService {
- /**
- * 新增操作日志
- *
- * @param operLog 操作日志对象
- * @return 结果
- */
- int insertOperlog(SysOperLog operLog);
-
- /**
- * 查询系统操作日志集合
- *
- * @param operLog 操作日志对象
- * @return 操作日志集合
- */
- List selectOperLogList(SysOperLog operLog);
-
- /**
- * 批量删除系统操作日志
- *
- * @param operIds 需要删除的操作日志ID
- * @return 结果
- */
- int deleteOperLogByIds(Long[] operIds);
-
- /**
- * 查询操作日志详细
- *
- * @param operId 操作ID
- * @return 操作日志对象
- */
- SysOperLog selectOperLogById(Long operId);
-
- /**
- * 清空操作日志
- */
- void cleanOperLog();
-}
+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.SysOperLog;
+
+import java.util.List;
+
+/**
+ * 操作日志 服务层
+ *
+ * @author ruoyi
+ */
+public interface ISysOperLogService {
+
+ TableDataInfo selectPageOperLogList(SysOperLog operLog, PageQuery pageQuery);
+
+ /**
+ * 新增操作日志
+ *
+ * @param operLog 操作日志对象
+ * @return 结果
+ */
+ int insertOperlog(SysOperLog operLog);
+
+ /**
+ * 查询系统操作日志集合
+ *
+ * @param operLog 操作日志对象
+ * @return 操作日志集合
+ */
+ List selectOperLogList(SysOperLog operLog);
+
+ /**
+ * 批量删除系统操作日志
+ *
+ * @param operIds 需要删除的操作日志ID
+ * @return 结果
+ */
+ int deleteOperLogByIds(Long[] operIds);
+
+ /**
+ * 查询操作日志详细
+ *
+ * @param operId 操作ID
+ * @return 操作日志对象
+ */
+ SysOperLog selectOperLogById(Long operId);
+
+ /**
+ * 清空操作日志
+ */
+ void cleanOperLog();
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPostService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPostService.java
index 5ce881cbd..7dd41e0aa 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPostService.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPostService.java
@@ -1,100 +1,104 @@
-package com.ruoyi.system.service;
-
-import com.ruoyi.system.domain.SysPost;
-
-import java.util.List;
-
-/**
- * 岗位信息 服务层
- *
- * @author ruoyi
- */
-public interface ISysPostService {
- /**
- * 查询岗位信息集合
- *
- * @param post 岗位信息
- * @return 岗位列表
- */
- List selectPostList(SysPost post);
-
- /**
- * 查询所有岗位
- *
- * @return 岗位列表
- */
- List selectPostAll();
-
- /**
- * 通过岗位ID查询岗位信息
- *
- * @param postId 岗位ID
- * @return 角色对象信息
- */
- SysPost selectPostById(Long postId);
-
- /**
- * 根据用户ID获取岗位选择框列表
- *
- * @param userId 用户ID
- * @return 选中岗位ID列表
- */
- List selectPostListByUserId(Long userId);
-
- /**
- * 校验岗位名称
- *
- * @param post 岗位信息
- * @return 结果
- */
- String checkPostNameUnique(SysPost post);
-
- /**
- * 校验岗位编码
- *
- * @param post 岗位信息
- * @return 结果
- */
- String checkPostCodeUnique(SysPost post);
-
- /**
- * 通过岗位ID查询岗位使用数量
- *
- * @param postId 岗位ID
- * @return 结果
- */
- int countUserPostById(Long postId);
-
- /**
- * 删除岗位信息
- *
- * @param postId 岗位ID
- * @return 结果
- */
- int deletePostById(Long postId);
-
- /**
- * 批量删除岗位信息
- *
- * @param postIds 需要删除的岗位ID
- * @return 结果
- * @throws Exception 异常
- */
- int deletePostByIds(Long[] postIds);
-
- /**
- * 新增保存岗位信息
- *
- * @param post 岗位信息
- * @return 结果
- */
- int insertPost(SysPost post);
-
- /**
- * 修改保存岗位信息
- *
- * @param post 岗位信息
- * @return 结果
- */
- int updatePost(SysPost post);
-}
+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.SysPost;
+
+import java.util.List;
+
+/**
+ * 岗位信息 服务层
+ *
+ * @author ruoyi
+ */
+public interface ISysPostService {
+ TableDataInfo selectPagePostList(SysPost post, PageQuery pageQuery);
+
+ /**
+ * 查询岗位信息集合
+ *
+ * @param post 岗位信息
+ * @return 岗位列表
+ */
+ List selectPostList(SysPost post);
+
+ /**
+ * 查询所有岗位
+ *
+ * @return 岗位列表
+ */
+ List selectPostAll();
+
+ /**
+ * 通过岗位ID查询岗位信息
+ *
+ * @param postId 岗位ID
+ * @return 角色对象信息
+ */
+ SysPost selectPostById(Long postId);
+
+ /**
+ * 根据用户ID获取岗位选择框列表
+ *
+ * @param userId 用户ID
+ * @return 选中岗位ID列表
+ */
+ List selectPostListByUserId(Long userId);
+
+ /**
+ * 校验岗位名称
+ *
+ * @param post 岗位信息
+ * @return 结果
+ */
+ String checkPostNameUnique(SysPost post);
+
+ /**
+ * 校验岗位编码
+ *
+ * @param post 岗位信息
+ * @return 结果
+ */
+ String checkPostCodeUnique(SysPost post);
+
+ /**
+ * 通过岗位ID查询岗位使用数量
+ *
+ * @param postId 岗位ID
+ * @return 结果
+ */
+ long countUserPostById(Long postId);
+
+ /**
+ * 删除岗位信息
+ *
+ * @param postId 岗位ID
+ * @return 结果
+ */
+ int deletePostById(Long postId);
+
+ /**
+ * 批量删除岗位信息
+ *
+ * @param postIds 需要删除的岗位ID
+ * @return 结果
+ * @throws Exception 异常
+ */
+ int deletePostByIds(Long[] postIds);
+
+ /**
+ * 新增保存岗位信息
+ *
+ * @param post 岗位信息
+ * @return 结果
+ */
+ int insertPost(SysPost post);
+
+ /**
+ * 修改保存岗位信息
+ *
+ * @param post 岗位信息
+ * @return 结果
+ */
+ int updatePost(SysPost post);
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java
index e90c41c70..96518a34e 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java
@@ -1,173 +1,177 @@
-package com.ruoyi.system.service;
-
-import com.ruoyi.system.api.domain.SysRole;
-import com.ruoyi.system.domain.SysUserRole;
-
-import java.util.List;
-import java.util.Set;
-
-/**
- * 角色业务层
- *
- * @author ruoyi
- */
-public interface ISysRoleService {
- /**
- * 根据条件分页查询角色数据
- *
- * @param role 角色信息
- * @return 角色数据集合信息
- */
- List selectRoleList(SysRole role);
-
- /**
- * 根据用户ID查询角色列表
- *
- * @param userId 用户ID
- * @return 角色列表
- */
- List selectRolesByUserId(Long userId);
-
- /**
- * 根据用户ID查询角色权限
- *
- * @param userId 用户ID
- * @return 权限列表
- */
- Set selectRolePermissionByUserId(Long userId);
-
- /**
- * 查询所有角色
- *
- * @return 角色列表
- */
- List selectRoleAll();
-
- /**
- * 根据用户ID获取角色选择框列表
- *
- * @param userId 用户ID
- * @return 选中角色ID列表
- */
- List