From aae3fe5305518b5d950bbf40f6c1fea6d76881b3 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子Li <15040126243@163.com>
Date: 星期一, 13 十二月 2021 11:49:05 +0800
Subject: [PATCH] update [重大更新] 重写数据权限实现
---
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java | 5
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java | 4
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml | 16
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TestTreeServiceImpl.java | 5
ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataColumn.java | 25 ++
ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java | 2
ruoyi-framework/src/main/java/com/ruoyi/framework/Interceptor/PlusDataPermissionInterceptor.java | 96 +++++++++
ruoyi-common/src/main/java/com/ruoyi/common/enums/DataScopeType.java | 66 ++++++
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDataScopeServiceImpl.java | 50 +++++
ruoyi-system/src/main/java/com/ruoyi/system/service/SysDataScopeService.java | 24 ++
ruoyi-framework/src/main/java/com/ruoyi/framework/handler/PlusDataPermissionHandler.java | 133 +++++++++++++
ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestDemoMapper.java | 39 +++
ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataPermission.java | 17 +
ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java | 10 +
ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml | 8
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java | 5
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TestDemoServiceImpl.java | 11
ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataScope.java | 4
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java | 2
ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestTreeMapper.java | 29 ++
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java | 18 +
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java | 3
ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml | 16
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java | 8
24 files changed, 551 insertions(+), 45 deletions(-)
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataColumn.java b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataColumn.java
new file mode 100644
index 0000000..9364666
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataColumn.java
@@ -0,0 +1,25 @@
+package com.ruoyi.common.annotation;
+
+import java.lang.annotation.*;
+
+/**
+ * 鏁版嵁鏉冮檺
+ *
+ * @author Lion Li
+ */
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface DataColumn {
+
+ /**
+ * 鍗犱綅绗﹀叧閿瓧
+ */
+ String key() default "deptName";
+
+ /**
+ * 鍗犱綅绗︽浛鎹㈠��
+ */
+ String value() default "dept_id";
+
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataPermission.java b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataPermission.java
new file mode 100644
index 0000000..e04b236
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataPermission.java
@@ -0,0 +1,17 @@
+package com.ruoyi.common.annotation;
+
+import java.lang.annotation.*;
+
+/**
+ * 鏁版嵁鏉冮檺缁�
+ *
+ * @author Lion Li
+ */
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface DataPermission {
+
+ DataColumn[] value();
+
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataScope.java b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataScope.java
index feaa3f4..f1a4f9f 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataScope.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataScope.java
@@ -6,11 +6,14 @@
* 鏁版嵁鏉冮檺杩囨护娉ㄨВ
*
* @author ruoyi
+ * @deprecated 3.6.0 绉婚櫎 {@link com.ruoyi.common.annotation.DataPermission}
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
+@Deprecated
public @interface DataScope {
+
/**
* 閮ㄩ棬琛ㄧ殑鍒悕
*/
@@ -25,4 +28,5 @@
* 鏄惁杩囨护鐢ㄦ埛鏉冮檺
*/
boolean isUser() default false;
+
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
index 2fa57f5..dd23d3e 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
@@ -162,7 +162,7 @@
private Long[] postIds;
/**
- * 瑙掕壊ID
+ * 鏁版嵁鏉冮檺 褰撳墠瑙掕壊ID
*/
@ApiModelProperty(value = "瑙掕壊ID")
@TableField(exist = false)
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/DataScopeType.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/DataScopeType.java
new file mode 100644
index 0000000..f99413b
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/DataScopeType.java
@@ -0,0 +1,66 @@
+package com.ruoyi.common.enums;
+
+import com.ruoyi.common.utils.StringUtils;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 鏁版嵁鏉冮檺绫诲瀷
+ *
+ * 璇硶鏀寔 spel 妯℃澘琛ㄨ揪寮�
+ *
+ * 鍐呯疆鏁版嵁 user 褰撳墠鐢ㄦ埛 鍐呭鍙傝�� SysUser
+ * 濡傞渶鎵╁睍鏁版嵁 闇�寰� SysUser 鍐呮敞鍏�
+ * 鍐呯疆鏈嶅姟 sdss 绯荤粺鏁版嵁鏉冮檺鏈嶅姟 鍐呭鍙傝�� SysDataScopeService
+ * 濡傞渶鎵╁睍鏇村鑷畾涔夋湇鍔� 鍙互鍙傝�� sdss 鑷缂栧啓
+ *
+ * @author Lion Li
+ */
+@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?:1} = #{#user.userId} ");
+
+ private final String code;
+
+ /**
+ * 璇硶 閲囩敤 spel 妯℃澘琛ㄨ揪寮�
+ */
+ private final String sql;
+
+ 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-demo/src/main/java/com/ruoyi/demo/mapper/TestDemoMapper.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestDemoMapper.java
index dccea61..7a3cb62 100644
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestDemoMapper.java
+++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestDemoMapper.java
@@ -1,11 +1,19 @@
package com.ruoyi.demo.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.annotation.DataColumn;
+import com.ruoyi.common.annotation.DataPermission;
import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
import com.ruoyi.demo.domain.TestDemo;
import com.ruoyi.demo.domain.vo.TestDemoVo;
import org.apache.ibatis.annotations.Param;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
/**
* 娴嬭瘯鍗曡〃Mapper鎺ュ彛
@@ -15,6 +23,37 @@
*/
public interface TestDemoMapper extends BaseMapperPlus<TestDemo> {
+ @DataPermission({
+ @DataColumn(key = "deptName", value = "dept_id"),
+ @DataColumn(key = "userName", value = "user_id")
+ })
Page<TestDemoVo> customPageList(@Param("page") Page<TestDemo> page, @Param("ew") Wrapper<TestDemo> wrapper);
+ @Override
+ @DataPermission({
+ @DataColumn(key = "deptName", value = "dept_id"),
+ @DataColumn(key = "userName", value = "user_id")
+ })
+ <P extends IPage<TestDemo>> P selectPage(P page, @Param(Constants.WRAPPER) Wrapper<TestDemo> queryWrapper);
+
+ @Override
+ @DataPermission({
+ @DataColumn(key = "deptName", value = "dept_id"),
+ @DataColumn(key = "userName", value = "user_id")
+ })
+ List<TestDemo> selectList(@Param(Constants.WRAPPER) Wrapper<TestDemo> queryWrapper);
+
+ @Override
+ @DataPermission({
+ @DataColumn(key = "deptName", value = "dept_id"),
+ @DataColumn(key = "userName", value = "user_id")
+ })
+ int updateById(@Param(Constants.ENTITY) TestDemo entity);
+
+ @Override
+ @DataPermission({
+ @DataColumn(key = "deptName", value = "dept_id"),
+ @DataColumn(key = "userName", value = "user_id")
+ })
+ int deleteBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);
}
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestTreeMapper.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestTreeMapper.java
index 05b0153..3880950 100644
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestTreeMapper.java
+++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestTreeMapper.java
@@ -1,7 +1,16 @@
package com.ruoyi.demo.mapper;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.ruoyi.common.annotation.DataColumn;
+import com.ruoyi.common.annotation.DataPermission;
import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
import com.ruoyi.demo.domain.TestTree;
+import org.apache.ibatis.annotations.Param;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
/**
* 娴嬭瘯鏍戣〃Mapper鎺ュ彛
@@ -11,4 +20,24 @@
*/
public interface TestTreeMapper extends BaseMapperPlus<TestTree> {
+ @Override
+ @DataPermission({
+ @DataColumn(key = "deptName", value = "dept_id"),
+ @DataColumn(key = "userName", value = "user_id")
+ })
+ List<TestTree> selectList(@Param(Constants.WRAPPER) Wrapper<TestTree> queryWrapper);
+
+ @Override
+ @DataPermission({
+ @DataColumn(key = "deptName", value = "dept_id"),
+ @DataColumn(key = "userName", value = "user_id")
+ })
+ int updateById(@Param(Constants.ENTITY) TestTree entity);
+
+ @Override
+ @DataPermission({
+ @DataColumn(key = "deptName", value = "dept_id"),
+ @DataColumn(key = "userName", value = "user_id")
+ })
+ int deleteBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);
}
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TestDemoServiceImpl.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TestDemoServiceImpl.java
index f717bff..1cb5268 100644
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TestDemoServiceImpl.java
+++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TestDemoServiceImpl.java
@@ -1,16 +1,15 @@
package com.ruoyi.demo.service.impl;
import cn.hutool.core.bean.BeanUtil;
-import com.ruoyi.common.core.domain.PageQuery;
-import com.ruoyi.common.utils.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.common.annotation.DataScope;
+import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
import com.ruoyi.common.core.page.PagePlus;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.utils.PageUtils;
+import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.demo.domain.TestDemo;
import com.ruoyi.demo.domain.bo.TestDemoBo;
import com.ruoyi.demo.domain.vo.TestDemoVo;
@@ -36,7 +35,6 @@
return getVoById(id);
}
- @DataScope(isUser = true)
@Override
public TableDataInfo<TestDemoVo> queryPageList(TestDemoBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<TestDemo> lqw = buildQueryWrapper(bo);
@@ -47,7 +45,6 @@
/**
* 鑷畾涔夊垎椤垫煡璇�
*/
- @DataScope(isUser = true)
@Override
public TableDataInfo<TestDemoVo> customPageList(TestDemoBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<TestDemo> lqw = buildQueryWrapper(bo);
@@ -55,7 +52,6 @@
return PageUtils.buildDataInfo(result);
}
- @DataScope(isUser = true)
@Override
public List<TestDemoVo> queryList(TestDemoBo bo) {
return listVo(buildQueryWrapper(bo));
@@ -63,14 +59,11 @@
private LambdaQueryWrapper<TestDemo> buildQueryWrapper(TestDemoBo bo) {
Map<String, Object> params = bo.getParams();
- Object dataScope = params.get("dataScope");
LambdaQueryWrapper<TestDemo> lqw = Wrappers.lambdaQuery();
lqw.like(StringUtils.isNotBlank(bo.getTestKey()), TestDemo::getTestKey, bo.getTestKey());
lqw.eq(StringUtils.isNotBlank(bo.getValue()), TestDemo::getValue, bo.getValue());
lqw.between(params.get("beginCreateTime") != null && params.get("endCreateTime") != null,
TestDemo::getCreateTime, params.get("beginCreateTime"), params.get("endCreateTime"));
- lqw.apply(dataScope != null && StringUtils.isNotBlank(dataScope.toString()),
- dataScope != null ? dataScope.toString() : null);
return lqw;
}
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TestTreeServiceImpl.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TestTreeServiceImpl.java
index daff12b..c4097e6 100644
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TestTreeServiceImpl.java
+++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TestTreeServiceImpl.java
@@ -3,7 +3,6 @@
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.ruoyi.common.annotation.DataScope;
import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.demo.domain.TestTree;
@@ -33,7 +32,6 @@
}
// @DS("slave") // 鍒囨崲浠庡簱鏌ヨ
- @DataScope(isUser = true)
@Override
public List<TestTreeVo> queryList(TestTreeBo bo) {
LambdaQueryWrapper<TestTree> lqw = buildQueryWrapper(bo);
@@ -42,13 +40,10 @@
private LambdaQueryWrapper<TestTree> buildQueryWrapper(TestTreeBo bo) {
Map<String, Object> params = bo.getParams();
- Object dataScope = params.get("dataScope");
LambdaQueryWrapper<TestTree> lqw = Wrappers.lambdaQuery();
lqw.like(StringUtils.isNotBlank(bo.getTreeName()), TestTree::getTreeName, bo.getTreeName());
lqw.between(params.get("beginCreateTime") != null && params.get("endCreateTime") != null,
TestTree::getCreateTime, params.get("beginCreateTime"), params.get("endCreateTime"));
- lqw.apply(dataScope != null && StringUtils.isNotBlank(dataScope.toString()),
- dataScope != null ? dataScope.toString() : null);
return lqw;
}
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/Interceptor/PlusDataPermissionInterceptor.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/Interceptor/PlusDataPermissionInterceptor.java
new file mode 100644
index 0000000..1c3d6e0
--- /dev/null
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/Interceptor/PlusDataPermissionInterceptor.java
@@ -0,0 +1,96 @@
+package com.ruoyi.framework.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.framework.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;
+
+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;
+ }
+ PluginUtils.MPBoundSql mpBs = PluginUtils.mpBoundSql(boundSql);
+ mpBs.sql(parserSingle(mpBs.sql(), ms.getId()));
+ }
+
+ @Override
+ public void beforePrepare(StatementHandler sh, Connection connection, Integer transactionTimeout) {
+ PluginUtils.MPStatementHandler mpSh = PluginUtils.mpStatementHandler(sh);
+ MappedStatement ms = mpSh.mappedStatement();
+ SqlCommandType sct = ms.getSqlCommandType();
+ if (sct == SqlCommandType.UPDATE || sct == SqlCommandType.DELETE) {
+ if (InterceptorIgnoreHelper.willIgnoreDataPermission(ms.getId())) {
+ return;
+ }
+ PluginUtils.MPBoundSql mpBs = mpSh.mPBoundSql();
+ mpBs.sql(parserMulti(mpBs.sql(), ms.getId()));
+ }
+ }
+
+ @Override
+ protected void processSelect(Select select, int index, String sql, Object obj) {
+ SelectBody selectBody = select.getSelectBody();
+ if (selectBody instanceof PlainSelect) {
+ this.setWhere((PlainSelect) selectBody, (String) obj);
+ } else if (selectBody instanceof SetOperationList) {
+ SetOperationList setOperationList = (SetOperationList) selectBody;
+ List<SelectBody> selectBodyList = setOperationList.getSelects();
+ selectBodyList.forEach(s -> this.setWhere((PlainSelect) s, (String) obj));
+ }
+ }
+
+ @Override
+ protected void processUpdate(Update update, int index, String sql, Object obj) {
+ Expression sqlSegment = dataPermissionHandler.getSqlSegment(update.getWhere(), (String) obj, false);
+ if (null != sqlSegment) {
+ update.setWhere(sqlSegment);
+ }
+ }
+
+ @Override
+ protected void processDelete(Delete delete, int index, String sql, Object obj) {
+ Expression sqlSegment = dataPermissionHandler.getSqlSegment(delete.getWhere(), (String) obj, false);
+ if (null != sqlSegment) {
+ delete.setWhere(sqlSegment);
+ }
+ }
+
+ /**
+ * 璁剧疆 where 鏉′欢
+ *
+ * @param plainSelect 鏌ヨ瀵硅薄
+ * @param mappedStatementId 鎵ц鏂规硶id
+ */
+ protected void setWhere(PlainSelect plainSelect, String mappedStatementId) {
+ Expression sqlSegment = dataPermissionHandler.getSqlSegment(plainSelect.getWhere(), mappedStatementId, true);
+ if (null != sqlSegment) {
+ plainSelect.setWhere(sqlSegment);
+ }
+ }
+
+}
+
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java
index 7392d83..1a0d8e0 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java
@@ -18,9 +18,11 @@
* 鏁版嵁杩囨护澶勭悊
*
* @author Lion Li
+ * @deprecated 3.6.0 绉婚櫎 {@link com.ruoyi.framework.handler.PlusDataPermissionHandler}
*/
@Aspect
@Component
+@Deprecated
public class DataScopeAspect {
/**
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java
index db81b74..aeae4a3 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java
@@ -9,6 +9,7 @@
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import com.ruoyi.common.core.mybatisplus.methods.InsertAll;
+import com.ruoyi.framework.Interceptor.PlusDataPermissionInterceptor;
import com.ruoyi.framework.handler.CreateAndUpdateMetaObjectHandler;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
@@ -30,6 +31,8 @@
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+ // 鏁版嵁鏉冮檺澶勭悊
+ interceptor.addInnerInterceptor(dataPermissionInterceptor());
// 鍒嗛〉鎻掍欢
interceptor.addInnerInterceptor(paginationInnerInterceptor());
// 涔愯閿佹彃浠�
@@ -37,6 +40,13 @@
return interceptor;
}
+ /**
+ * 鏁版嵁鏉冮檺鎷︽埅鍣�
+ */
+ public PlusDataPermissionInterceptor dataPermissionInterceptor() {
+ return new PlusDataPermissionInterceptor();
+ }
+
/**
* 鍒嗛〉鎻掍欢锛岃嚜鍔ㄨ瘑鍒暟鎹簱绫诲瀷
*/
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/handler/PlusDataPermissionHandler.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/handler/PlusDataPermissionHandler.java
new file mode 100644
index 0000000..89897c3
--- /dev/null
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/handler/PlusDataPermissionHandler.java
@@ -0,0 +1,133 @@
+package com.ruoyi.framework.handler;
+
+import cn.hutool.core.annotation.AnnotationUtil;
+import cn.hutool.core.util.ArrayUtil;
+import cn.hutool.core.util.ClassUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.ruoyi.common.annotation.DataColumn;
+import com.ruoyi.common.annotation.DataPermission;
+import com.ruoyi.common.core.domain.entity.SysRole;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.service.UserService;
+import com.ruoyi.common.enums.DataScopeType;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.spring.SpringUtils;
+import lombok.extern.slf4j.Slf4j;
+import net.sf.jsqlparser.JSQLParserException;
+import net.sf.jsqlparser.expression.Expression;
+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.stream.Collectors;
+
+/**
+ * 鏁版嵁鏉冮檺杩囨护
+ *
+ * @author Lion Li
+ */
+@Slf4j
+public class PlusDataPermissionHandler {
+
+ private final ExpressionParser parser = new SpelExpressionParser();
+ private final ParserContext parserContext = new TemplateParserContext();
+ 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)) {
+ return where;
+ }
+ SysUser currentUser = SpringUtils.getBean(UserService.class).selectUserById(SecurityUtils.getUserId());
+ // 濡傛灉鏄秴绾х鐞嗗憳锛屽垯涓嶈繃婊ゆ暟鎹�
+ if (StringUtils.isNull(currentUser) || currentUser.isAdmin()) {
+ return where;
+ }
+ String dataFilterSql = buildDataFilter(currentUser, dataColumns, isSelect);
+ if (StringUtils.isBlank(dataFilterSql)) {
+ return where;
+ }
+ try {
+ Expression expression = CCJSqlParserUtil.parseExpression(dataFilterSql);
+ if (ObjectUtil.isNotNull(where)) {
+ return new AndExpression(where, expression);
+ } else {
+ return expression;
+ }
+ } catch (JSQLParserException e) {
+ throw new ServiceException("鏁版嵁鏉冮檺瑙f瀽寮傚父 => " + e.getMessage());
+ }
+ }
+
+ /**
+ * 鏋勯�犳暟鎹繃婊ql
+ */
+ private String buildDataFilter(SysUser user, DataColumn[] dataColumns, boolean isSelect) {
+ StringBuilder sqlString = new StringBuilder();
+
+ StandardEvaluationContext context = new StandardEvaluationContext();
+ context.setBeanResolver(beanResolver);
+ context.setVariable("user", user);
+
+ for (DataColumn dataColumn : dataColumns) {
+ // 璁剧疆娉ㄨВ鍙橀噺 key 涓鸿〃杈惧紡鍙橀噺 value 涓哄彉閲忓��
+ context.setVariable(dataColumn.key(), dataColumn.value());
+ 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 "";
+ }
+ // 涓嶅寘鍚� key 鍙橀噺 鍒欎笉澶勭悊
+ if (!StringUtils.contains(type.getSql(), "#" + dataColumn.key())) {
+ continue;
+ }
+ // 鏇存柊鎴栧垹闄ら渶婊¤冻鎵�鏈夋潯浠�
+ sqlString.append(isSelect ? " OR " : " AND ");
+ // 瑙f瀽sql妯℃澘骞跺~鍏�
+ String sql = parser.parseExpression(type.getSql(), parserContext).getValue(context, String.class);
+ sqlString.append(sql);
+ }
+ }
+
+ if (StringUtils.isNotBlank(sqlString.toString())) {
+ return sqlString.substring(isSelect ? 4 : 5);
+ }
+ return "";
+ }
+
+ private DataColumn[] findAnnotation(String mappedStatementId) {
+ StringBuilder sb = new StringBuilder(mappedStatementId);
+ int index = sb.lastIndexOf(".");
+ String clazzName = sb.substring(0, index);
+ String methodName = sb.substring(index + 1, sb.length());
+ Class<?> clazz = ClassUtil.loadClass(clazzName);
+ List<Method> methods = Arrays.stream(ClassUtil.getDeclaredMethods(clazz))
+ .filter(method -> method.getName().equals(methodName)).collect(Collectors.toList());
+ DataPermission dataPermission;
+ for (Method method : methods) {
+ if (AnnotationUtil.hasAnnotation(method, DataPermission.class)) {
+ dataPermission = AnnotationUtil.getAnnotation(method, DataPermission.class);
+ return dataPermission.value();
+ }
+ }
+ return null;
+ }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java
index d0ae46d..317be7e 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java
@@ -1,5 +1,7 @@
package com.ruoyi.system.mapper;
+import com.ruoyi.common.annotation.DataColumn;
+import com.ruoyi.common.annotation.DataPermission;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
import org.apache.ibatis.annotations.Param;
@@ -19,6 +21,9 @@
* @param dept 閮ㄩ棬淇℃伅
* @return 閮ㄩ棬淇℃伅闆嗗悎
*/
+ @DataPermission({
+ @DataColumn(key = "deptName", value = "d.dept_id")
+ })
List<SysDept> selectDeptList(SysDept dept);
/**
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java
index eb44006..d2721ee 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java
@@ -1,6 +1,8 @@
package com.ruoyi.system.mapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.annotation.DataColumn;
+import com.ruoyi.common.annotation.DataPermission;
import com.ruoyi.common.core.domain.entity.SysRole;
import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
import org.apache.ibatis.annotations.Param;
@@ -14,6 +16,9 @@
*/
public interface SysRoleMapper extends BaseMapperPlus<SysRole> {
+ @DataPermission({
+ @DataColumn(key = "deptName", value = "d.dept_id")
+ })
Page<SysRole> selectPageRoleList(@Param("page") Page<SysRole> page, @Param("role") SysRole role);
/**
@@ -22,6 +27,9 @@
* @param role 瑙掕壊淇℃伅
* @return 瑙掕壊鏁版嵁闆嗗悎淇℃伅
*/
+ @DataPermission({
+ @DataColumn(key = "deptName", value = "d.dept_id")
+ })
List<SysRole> selectRoleList(SysRole role);
/**
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
index e930d87..1a07f7f 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
@@ -1,6 +1,8 @@
package com.ruoyi.system.mapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.annotation.DataColumn;
+import com.ruoyi.common.annotation.DataPermission;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
import org.apache.ibatis.annotations.Param;
@@ -14,6 +16,10 @@
*/
public interface SysUserMapper extends BaseMapperPlus<SysUser> {
+ @DataPermission({
+ @DataColumn(key = "deptName", value = "d.dept_id"),
+ @DataColumn(key = "userName", value = "u.user_id")
+ })
Page<SysUser> selectPageUserList(@Param("page") Page<SysUser> page, @Param("user") SysUser user);
/**
@@ -22,6 +28,10 @@
* @param sysUser 鐢ㄦ埛淇℃伅
* @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅
*/
+ @DataPermission({
+ @DataColumn(key = "deptName", value = "d.dept_id"),
+ @DataColumn(key = "userName", value = "u.user_id")
+ })
List<SysUser> selectUserList(SysUser sysUser);
/**
@@ -30,6 +40,10 @@
* @param user 鐢ㄦ埛淇℃伅
* @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅
*/
+ @DataPermission({
+ @DataColumn(key = "deptName", value = "d.dept_id"),
+ @DataColumn(key = "userName", value = "u.user_id")
+ })
Page<SysUser> selectAllocatedList(@Param("page") Page<SysUser> page, @Param("user") SysUser user);
/**
@@ -38,6 +52,10 @@
* @param user 鐢ㄦ埛淇℃伅
* @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅
*/
+ @DataPermission({
+ @DataColumn(key = "deptName", value = "d.dept_id"),
+ @DataColumn(key = "userName", value = "u.user_id")
+ })
Page<SysUser> selectUnallocatedList(@Param("page") Page<SysUser> page, @Param("user") SysUser user);
/**
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/SysDataScopeService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysDataScopeService.java
new file mode 100644
index 0000000..34e2ea3
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysDataScopeService.java
@@ -0,0 +1,24 @@
+package com.ruoyi.system.service;
+
+/**
+ * 閫氱敤 鏁版嵁鏉冮檺 鏈嶅姟
+ *
+ * @author Lion Li
+ */
+public interface SysDataScopeService {
+
+ /**
+ * 鑾峰彇瑙掕壊鑷畾涔夋潈闄�
+ * @param roleId 瑙掕壊id
+ * @return 閮ㄩ棬id缁�
+ */
+ String getRoleCustom(Long roleId);
+
+ /**
+ * 鑾峰彇閮ㄩ棬鍙婁互涓嬫潈闄�
+ * @param deptId 閮ㄩ棬id
+ * @return 閮ㄩ棬id缁�
+ */
+ String getDeptAndChild(Long deptId);
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDataScopeServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDataScopeServiceImpl.java
new file mode 100644
index 0000000..8439958
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDataScopeServiceImpl.java
@@ -0,0 +1,50 @@
+package com.ruoyi.system.service.impl;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.convert.Convert;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.system.domain.SysRoleDept;
+import com.ruoyi.system.mapper.SysDeptMapper;
+import com.ruoyi.system.mapper.SysRoleDeptMapper;
+import com.ruoyi.system.service.SysDataScopeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Service("sdss")
+public class SysDataScopeServiceImpl implements SysDataScopeService {
+
+ @Autowired
+ private SysRoleDeptMapper roleDeptMapper;
+ @Autowired
+ private SysDeptMapper deptMapper;
+
+ @Override
+ public String getRoleCustom(Long roleId) {
+ List<SysRoleDept> list = roleDeptMapper.selectList(
+ new LambdaQueryWrapper<SysRoleDept>()
+ .select(SysRoleDept::getDeptId)
+ .eq(SysRoleDept::getRoleId, roleId));
+ if (CollUtil.isNotEmpty(list)) {
+ return list.stream().map(rd -> Convert.toStr(rd.getDeptId())).collect(Collectors.joining(","));
+ }
+ return null;
+ }
+
+ @Override
+ public String getDeptAndChild(Long deptId) {
+ List<SysDept> list = deptMapper.selectList(new LambdaQueryWrapper<SysDept>()
+ .select(SysDept::getDeptId)
+ .eq(SysDept::getDeptId, deptId)
+ .or()
+ .apply("find_in_set({0},ancestors)", deptId));
+ if (CollUtil.isNotEmpty(list)) {
+ return list.stream().map(d -> Convert.toStr(d.getDeptId())).collect(Collectors.joining(","));
+ }
+ return null;
+ }
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
index 8b4c5db..0f8897f 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
@@ -5,7 +5,6 @@
import cn.hutool.core.lang.tree.Tree;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.ruoyi.common.annotation.DataScope;
import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysRole;
@@ -47,8 +46,9 @@
* @return 閮ㄩ棬淇℃伅闆嗗悎
*/
@Override
- @DataScope(deptAlias = "d")
public List<SysDept> selectDeptList(SysDept dept) {
+// return baseMapper.selectList();
+// return baseMapper.selectList(new LambdaQueryWrapper<>());
return baseMapper.selectDeptList(dept);
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
index de47ff0..cea08c8 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
@@ -2,7 +2,6 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.common.annotation.DataScope;
import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.entity.SysRole;
@@ -46,7 +45,6 @@
private SysRoleDeptMapper roleDeptMapper;
@Override
- @DataScope(deptAlias = "d")
public TableDataInfo<SysRole> selectPageRoleList(SysRole role, PageQuery pageQuery) {
Page<SysRole> page = baseMapper.selectPageRoleList(PageUtils.buildPage(pageQuery), role);
return PageUtils.buildDataInfo(page);
@@ -59,7 +57,6 @@
* @return 瑙掕壊鏁版嵁闆嗗悎淇℃伅
*/
@Override
- @DataScope(deptAlias = "d")
public List<SysRole> selectRoleList(SysRole role) {
return baseMapper.selectRoleList(role);
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
index be99994..3af2fa8 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -4,7 +4,6 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.common.annotation.DataScope;
import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.entity.SysRole;
@@ -54,7 +53,6 @@
private SysUserPostMapper userPostMapper;
@Override
- @DataScope(deptAlias = "d", userAlias = "u", isUser = true)
public TableDataInfo<SysUser> selectPageUserList(SysUser user, PageQuery pageQuery) {
Page<SysUser> page = baseMapper.selectPageUserList(PageUtils.buildPage(pageQuery), user);
return PageUtils.buildDataInfo(page);
@@ -67,7 +65,6 @@
* @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅
*/
@Override
- @DataScope(deptAlias = "d", userAlias = "u", isUser = true)
public List<SysUser> selectUserList(SysUser user) {
return baseMapper.selectUserList(user);
}
@@ -79,7 +76,6 @@
* @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅
*/
@Override
- @DataScope(deptAlias = "d", userAlias = "u", isUser = true)
public TableDataInfo<SysUser> selectAllocatedList(SysUser user, PageQuery pageQuery) {
Page<SysUser> page = baseMapper.selectAllocatedList(PageUtils.buildPage(pageQuery), user);
return PageUtils.buildDataInfo(page);
@@ -92,7 +88,6 @@
* @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅
*/
@Override
- @DataScope(deptAlias = "d", userAlias = "u", isUser = true)
public TableDataInfo<SysUser> selectUnallocatedList(SysUser user, PageQuery pageQuery) {
Page<SysUser> page = baseMapper.selectUnallocatedList(PageUtils.buildPage(pageQuery), user);
return PageUtils.buildDataInfo(page);
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
index 346332c..2c1fc75 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
@@ -42,10 +42,10 @@
<if test="status != null and status != ''">
AND status = #{status}
</if>
- <!-- 鏁版嵁鑼冨洿杩囨护 -->
- <if test="params.dataScope != null and params.dataScope != ''">
- AND ( ${params.dataScope} )
- </if>
+<!-- <!– 鏁版嵁鑼冨洿杩囨护 –>-->
+<!-- <if test="params.dataScope != null and params.dataScope != ''">-->
+<!-- AND ( ${params.dataScope} )-->
+<!-- </if>-->
order by d.parent_id, d.order_num
</select>
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml
index 94b161b..c13bd68 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml
@@ -60,10 +60,10 @@
<if test="role.params.endTime != null and role.params.endTime != ''"><!-- 缁撴潫鏃堕棿妫�绱� -->
and date_format(r.create_time,'%y%m%d') <= date_format(#{role.params.endTime},'%y%m%d')
</if>
- <!-- 鏁版嵁鑼冨洿杩囨护 -->
- <if test="role.params.dataScope != null and role.params.dataScope != ''">
- AND ( ${role.params.dataScope} )
- </if>
+<!-- <!– 鏁版嵁鑼冨洿杩囨护 –>-->
+<!-- <if test="role.params.dataScope != null and role.params.dataScope != ''">-->
+<!-- AND ( ${role.params.dataScope} )-->
+<!-- </if>-->
order by r.role_sort
</select>
@@ -88,10 +88,10 @@
<if test="params.endTime != null and params.endTime != ''"><!-- 缁撴潫鏃堕棿妫�绱� -->
and date_format(r.create_time,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d')
</if>
- <!-- 鏁版嵁鑼冨洿杩囨护 -->
- <if test="params.dataScope != null and params.dataScope != ''">
- AND ( ${params.dataScope} )
- </if>
+<!-- <!– 鏁版嵁鑼冨洿杩囨护 –>-->
+<!-- <if test="params.dataScope != null and params.dataScope != ''">-->
+<!-- AND ( ${params.dataScope} )-->
+<!-- </if>-->
order by r.role_sort
</select>
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
index 5d9a185..d9a927f 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -108,10 +108,10 @@
AND (u.dept_id = #{user.deptId} OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE find_in_set(#{user.deptId},
ancestors) ))
</if>
- <!-- 鏁版嵁鑼冨洿杩囨护 -->
- <if test="user.params.dataScope != null and user.params.dataScope != ''">
- AND ( ${user.params.dataScope} )
- </if>
+<!-- <!– 鏁版嵁鑼冨洿杩囨护 –>-->
+<!-- <if test="user.params.dataScope != null and user.params.dataScope != ''">-->
+<!-- AND ( ${user.params.dataScope} )-->
+<!-- </if>-->
</select>
<select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult">
@@ -142,10 +142,10 @@
AND (u.dept_id = #{deptId} OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE find_in_set(#{deptId},
ancestors) ))
</if>
- <!-- 鏁版嵁鑼冨洿杩囨护 -->
- <if test="params.dataScope != null and params.dataScope != ''">
- AND ( ${params.dataScope} )
- </if>
+<!-- <!– 鏁版嵁鑼冨洿杩囨护 –>-->
+<!-- <if test="params.dataScope != null and params.dataScope != ''">-->
+<!-- AND ( ${params.dataScope} )-->
+<!-- </if>-->
</select>
<select id="selectAllocatedList" parameterType="SysUser" resultMap="SysUserResult">
--
Gitblit v1.9.3