From a181c0978697e56d26b623487fafa9602b911717 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子li <15040126243@163.com>
Date: 星期六, 08 五月 2021 23:35:39 +0800
Subject: [PATCH] fix 修复数据权限问题
---
ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml | 22 +++++++++++
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java | 8 ++++
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java | 10 ----
ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java | 13 ++++--
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java | 15 -------
ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml | 23 +++++++++++
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java | 7 +++
7 files changed, 71 insertions(+), 27 deletions(-)
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 ffd4718..4d2f9bb 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
@@ -3,7 +3,6 @@
import cn.hutool.core.lang.Validator;
import cn.hutool.core.util.StrUtil;
import com.ruoyi.common.annotation.DataScope;
-import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.common.core.domain.entity.SysRole;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginUser;
@@ -19,6 +18,7 @@
import org.springframework.stereotype.Component;
import java.lang.reflect.Method;
+import java.util.Map;
/**
* 鏁版嵁杩囨护澶勭悊
@@ -145,10 +145,15 @@
if (StrUtil.isNotBlank(sqlString.toString()))
{
Object params = joinPoint.getArgs()[0];
- if (Validator.isNotNull(params) && params instanceof BaseEntity)
+ if (Validator.isNotNull(params))
{
- BaseEntity baseEntity = (BaseEntity) params;
- baseEntity.getParams().put(DATA_SCOPE, " AND (" + sqlString.substring(4) + ")");
+ try {
+ Method getParams = params.getClass().getDeclaredMethod("getParams", null);
+ Map<String, Object> invoke = (Map<String, Object>) getParams.invoke(params, null);
+ invoke.put(DATA_SCOPE, " AND (" + sqlString.substring(4) + ")");
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
}
}
}
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 c2619d3..b59afae 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
@@ -14,6 +14,14 @@
public interface SysDeptMapper extends BaseMapper<SysDept> {
/**
+ * 鏌ヨ閮ㄩ棬绠$悊鏁版嵁
+ *
+ * @param dept 閮ㄩ棬淇℃伅
+ * @return 閮ㄩ棬淇℃伅闆嗗悎
+ */
+ public List<SysDept> selectDeptList(SysDept dept);
+
+ /**
* 鏍规嵁瑙掕壊ID鏌ヨ閮ㄩ棬鏍戜俊鎭�
*
* @param roleId 瑙掕壊ID
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 1ed48b6..6bd05a1 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
@@ -12,6 +12,13 @@
*/
public interface SysRoleMapper extends BaseMapper<SysRole> {
+ /**
+ * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瑙掕壊鏁版嵁
+ *
+ * @param role 瑙掕壊淇℃伅
+ * @return 瑙掕壊鏁版嵁闆嗗悎淇℃伅
+ */
+ public List<SysRole> selectRoleList(SysRole role);
/**
* 鏍规嵁鐢ㄦ埛ID鏌ヨ瑙掕壊
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 98616e8..f25a90d 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
@@ -48,15 +48,7 @@
@Override
@DataScope(deptAlias = "d")
public List<SysDept> selectDeptList(SysDept dept) {
- Object dataScope = dept.getParams().get("dataScope");
- return list(new LambdaQueryWrapper<SysDept>()
- .eq(dept.getParentId() != null && dept.getParentId() != 0,
- SysDept::getParentId, dept.getParentId())
- .like(StrUtil.isNotBlank(dept.getDeptName()), SysDept::getDeptName, dept.getDeptName())
- .eq(StrUtil.isNotBlank(dept.getStatus()), SysDept::getStatus, dept.getStatus())
- .apply(dataScope != null, dataScope != null ? dataScope.toString() : null)
- .orderByAsc(SysDept::getParentId)
- .orderByAsc(SysDept::getOrderNum));
+ 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 2673c81..814d96f 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
@@ -49,20 +49,7 @@
@Override
@DataScope(deptAlias = "d")
public List<SysRole> selectRoleList(SysRole role) {
- Map<String, Object> params = role.getParams();
- Object dataScope = params.get("dataScope");
- return list(new LambdaQueryWrapper<SysRole>()
- .like(StrUtil.isNotBlank(role.getRoleName()), SysRole::getRoleName, role.getRoleName())
- .eq(StrUtil.isNotBlank(role.getStatus()), SysRole::getStatus, role.getStatus())
- .like(StrUtil.isNotBlank(role.getRoleKey()), SysRole::getRoleKey, role.getRoleKey())
- .apply(Validator.isNotEmpty(params.get("beginTime")),
- "date_format(create_time,'%y%m%d') >= date_format({0},'%y%m%d')",
- params.get("beginTime"))
- .apply(Validator.isNotEmpty(params.get("endTime")),
- "date_format(create_time,'%y%m%d') <= date_format({0},'%y%m%d')",
- params.get("endTime"))
- .apply(dataScope != null, dataScope != null ? dataScope.toString() : null)
- .orderByAsc(SysRole::getRoleSort));
+ return baseMapper.selectRoleList(role);
}
/**
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
index 07fc5d6..0f99671 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
@@ -22,6 +22,28 @@
<result property="updateTime" column="update_time"/>
</resultMap>
+ <sql id="selectDeptVo">
+ select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.del_flag, d.create_by, d.create_time
+ from sys_dept d
+ </sql>
+
+ <select id="selectDeptList" parameterType="SysDept" resultMap="SysDeptResult">
+ <include refid="selectDeptVo"/>
+ where d.del_flag = '0'
+ <if test="parentId != null and parentId != 0">
+ AND parent_id = #{parentId}
+ </if>
+ <if test="deptName != null and deptName != ''">
+ AND dept_name like concat('%', #{deptName}, '%')
+ </if>
+ <if test="status != null and status != ''">
+ AND status = #{status}
+ </if>
+ <!-- 鏁版嵁鑼冨洿杩囨护 -->
+ ${params.dataScope}
+ order by d.parent_id, d.order_num
+ </select>
+
<select id="selectDeptListByRoleId" resultType="Integer">
select d.dept_id
from sys_dept d
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml
index 9362ebc..dca0ec0 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml
@@ -39,6 +39,29 @@
left join sys_dept d on u.dept_id = d.dept_id
</sql>
+ <select id="selectRoleList" parameterType="SysRole" resultMap="SysRoleResult">
+ <include refid="selectRoleVo"/>
+ where r.del_flag = '0'
+ <if test="roleName != null and roleName != ''">
+ AND r.role_name like concat('%', #{roleName}, '%')
+ </if>
+ <if test="status != null and status != ''">
+ AND r.status = #{status}
+ </if>
+ <if test="roleKey != null and roleKey != ''">
+ AND r.role_key like concat('%', #{roleKey}, '%')
+ </if>
+ <if test="params.beginTime != null and params.beginTime != ''"><!-- 寮�濮嬫椂闂存绱� -->
+ and date_format(r.create_time,'%y%m%d') >= date_format(#{params.beginTime},'%y%m%d')
+ </if>
+ <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>
+ <!-- 鏁版嵁鑼冨洿杩囨护 -->
+ ${params.dataScope}
+ order by r.role_sort
+ </select>
+
<select id="selectRolePermissionByUserId" parameterType="Long" resultMap="SysRoleResult">
<include refid="selectRoleVo"/>
WHERE r.del_flag = '0' and ur.user_id = #{userId}
--
Gitblit v1.9.3