{
+ Long selectUserIdByRoleId(Long roleId);
+
}
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
index 2803a59ed..4c86dcd06 100644
--- 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
@@ -14,6 +14,14 @@ import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
+/**
+ * 数据权限 实现
+ *
+ * 注意: 此Service内不允许调用标注`数据权限`注解的方法
+ * 例如: deptMapper.selectList 此 selectList 方法标注了`数据权限`注解 会出现循环解析的问题
+ *
+ * @author Lion Li
+ */
@RequiredArgsConstructor
@Service("sdss")
public class SysDataScopeServiceImpl implements ISysDataScopeService {
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 5cd3fe0e6..3875c91d5 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
@@ -14,7 +14,6 @@ import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.TreeBuildUtils;
-import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.system.mapper.SysDeptMapper;
import com.ruoyi.system.mapper.SysRoleMapper;
import com.ruoyi.system.mapper.SysUserMapper;
@@ -22,6 +21,7 @@ import com.ruoyi.system.service.ISysDeptService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -46,7 +46,15 @@ public class SysDeptServiceImpl implements ISysDeptService {
*/
@Override
public List selectDeptList(SysDept dept) {
- return baseMapper.selectDeptList(dept);
+ LambdaQueryWrapper lqw = new LambdaQueryWrapper<>();
+ lqw.eq(SysDept::getDelFlag, "0")
+ .eq(ObjectUtil.isNotNull(dept.getDeptId()), SysDept::getDeptId, dept.getDeptId())
+ .eq(ObjectUtil.isNotNull(dept.getParentId()), SysDept::getParentId, dept.getParentId())
+ .like(StringUtils.isNotBlank(dept.getDeptName()), SysDept::getDeptName, dept.getDeptName())
+ .eq(StringUtils.isNotBlank(dept.getStatus()), SysDept::getStatus, dept.getStatus())
+ .orderByAsc(SysDept::getParentId)
+ .orderByAsc(SysDept::getOrderNum);
+ return baseMapper.selectDeptList(lqw);
}
/**
@@ -155,7 +163,7 @@ public class SysDeptServiceImpl implements ISysDeptService {
if (!LoginHelper.isAdmin()) {
SysDept dept = new SysDept();
dept.setDeptId(deptId);
- List depts = SpringUtils.getAopProxy(this).selectDeptList(dept);
+ List depts = this.selectDeptList(dept);
if (CollUtil.isEmpty(depts)) {
throw new ServiceException("没有权限访问部门数据!");
}
@@ -227,11 +235,15 @@ public class SysDeptServiceImpl implements ISysDeptService {
public void updateDeptChildren(Long deptId, String newAncestors, String oldAncestors) {
List children = baseMapper.selectList(new LambdaQueryWrapper()
.apply("find_in_set({0},ancestors)", deptId));
+ List list = new ArrayList<>();
for (SysDept child : children) {
- child.setAncestors(child.getAncestors().replaceFirst(oldAncestors, newAncestors));
+ SysDept dept = new SysDept();
+ dept.setDeptId(child.getDeptId());
+ dept.setAncestors(child.getAncestors().replaceFirst(oldAncestors, newAncestors));
+ list.add(dept);
}
- if (children.size() > 0) {
- baseMapper.updateDeptChildren(children);
+ if (list.size() > 0) {
+ baseMapper.updateBatchById(list);
}
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
index e9c28e1ca..8d1613f54 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
@@ -4,6 +4,8 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.core.domain.entity.SysMenu;
@@ -65,8 +67,14 @@ public class SysMenuServiceImpl implements ISysMenuService {
.orderByAsc(SysMenu::getParentId)
.orderByAsc(SysMenu::getOrderNum));
} else {
- menu.getParams().put("userId", userId);
- menuList = baseMapper.selectMenuListByUserId(menu);
+ QueryWrapper wrapper = Wrappers.query();
+ wrapper.eq("ur.user_id", userId)
+ .like(StringUtils.isNotBlank(menu.getMenuName()), "m.menu_name", menu.getMenuName())
+ .eq(StringUtils.isNotBlank(menu.getVisible()), "m.visible", menu.getVisible())
+ .eq(StringUtils.isNotBlank(menu.getStatus()), "m.status", menu.getStatus())
+ .orderByAsc("m.parent_id")
+ .orderByAsc("m.order_num");
+ menuList = baseMapper.selectMenuListByUserId(wrapper);
}
return menuList;
}
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 81334892f..e7e5b53c5 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,11 @@ package com.ruoyi.system.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.core.domain.PageQuery;
@@ -10,7 +14,6 @@ import com.ruoyi.common.core.domain.entity.SysRole;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.helper.LoginHelper;
-import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.system.domain.SysRoleDept;
import com.ruoyi.system.domain.SysRoleMenu;
import com.ruoyi.system.domain.SysUserRole;
@@ -41,7 +44,7 @@ public class SysRoleServiceImpl implements ISysRoleService {
@Override
public TableDataInfo selectPageRoleList(SysRole role, PageQuery pageQuery) {
- Page page = baseMapper.selectPageRoleList(pageQuery.build(), role);
+ Page page = baseMapper.selectPageRoleList(pageQuery.build(), this.buildQueryWrapper(role));
return TableDataInfo.build(page);
}
@@ -53,7 +56,21 @@ public class SysRoleServiceImpl implements ISysRoleService {
*/
@Override
public List selectRoleList(SysRole role) {
- return baseMapper.selectRoleList(role);
+ return baseMapper.selectRoleList(this.buildQueryWrapper(role));
+ }
+
+ private Wrapper buildQueryWrapper(SysRole role) {
+ Map params = role.getParams();
+ QueryWrapper wrapper = Wrappers.query();
+ wrapper.eq("r.del_flag", UserConstants.ROLE_NORMAL)
+ .eq(ObjectUtil.isNotNull(role.getRoleId()), "r.role_id", role.getRoleId())
+ .like(StringUtils.isNotBlank(role.getRoleName()), "r.role_name", role.getRoleName())
+ .eq(StringUtils.isNotBlank(role.getStatus()), "r.status", role.getStatus())
+ .like(StringUtils.isNotBlank(role.getRoleKey()), "r.role_key", role.getRoleKey())
+ .between(params.get("beginTime") != null && params.get("endTime") != null,
+ "r.create_time", params.get("beginTime"), params.get("endTime"))
+ .orderByAsc("r.role_sort");
+ return wrapper;
}
/**
@@ -102,7 +119,7 @@ public class SysRoleServiceImpl implements ISysRoleService {
*/
@Override
public List selectRoleAll() {
- return SpringUtils.getAopProxy(this).selectRoleList(new SysRole());
+ return this.selectRoleList(new SysRole());
}
/**
@@ -183,7 +200,7 @@ public class SysRoleServiceImpl implements ISysRoleService {
if (!LoginHelper.isAdmin()) {
SysRole role = new SysRole();
role.setRoleId(roleId);
- List roles = SpringUtils.getAopProxy(this).selectRoleList(role);
+ List roles = this.selectRoleList(role);
if (CollUtil.isEmpty(roles)) {
throw new ServiceException("没有权限访问角色数据!");
}
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 c3ff6f409..8fca17b11 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
@@ -2,18 +2,21 @@ package com.ruoyi.system.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.core.domain.PageQuery;
+import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysRole;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.system.domain.SysPost;
import com.ruoyi.system.domain.SysUserPost;
import com.ruoyi.system.domain.SysUserRole;
@@ -27,6 +30,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.Map;
import java.util.stream.Collectors;
/**
@@ -40,6 +44,7 @@ import java.util.stream.Collectors;
public class SysUserServiceImpl implements ISysUserService {
private final SysUserMapper baseMapper;
+ private final SysDeptMapper deptMapper;
private final SysRoleMapper roleMapper;
private final SysPostMapper postMapper;
private final SysUserRoleMapper userRoleMapper;
@@ -47,7 +52,7 @@ public class SysUserServiceImpl implements ISysUserService {
@Override
public TableDataInfo selectPageUserList(SysUser user, PageQuery pageQuery) {
- Page page = baseMapper.selectPageUserList(pageQuery.build(), user);
+ Page page = baseMapper.selectPageUserList(pageQuery.build(), this.buildQueryWrapper(user));
return TableDataInfo.build(page);
}
@@ -59,7 +64,28 @@ public class SysUserServiceImpl implements ISysUserService {
*/
@Override
public List selectUserList(SysUser user) {
- return baseMapper.selectUserList(user);
+ return baseMapper.selectUserList(this.buildQueryWrapper(user));
+ }
+
+ private Wrapper buildQueryWrapper(SysUser user) {
+ Map params = user.getParams();
+ QueryWrapper wrapper = Wrappers.query();
+ wrapper.eq("u.del_flag", UserConstants.USER_NORMAL)
+ .eq(ObjectUtil.isNotNull(user.getUserId()), "u.user_id", user.getUserId())
+ .like(StringUtils.isNotBlank(user.getUserName()), "u.user_name", user.getUserName())
+ .eq(StringUtils.isNotBlank(user.getStatus()), "u.status", user.getStatus())
+ .like(StringUtils.isNotBlank(user.getPhonenumber()), "u.phonenumber", user.getPhonenumber())
+ .between(params.get("beginTime") != null && params.get("endTime") != null,
+ "u.create_time", params.get("beginTime"), params.get("endTime"))
+ .and(ObjectUtil.isNotNull(user.getDeptId()), w -> {
+ List deptList = deptMapper.selectList(new LambdaQueryWrapper()
+ .select(SysDept::getDeptId)
+ .apply("find_in_set({0},ancestors)", user.getDeptId()));
+ w.eq("u.dept_id", user.getDeptId())
+ .or()
+ .in("u.dept_id", deptList.stream().map(SysDept::getDeptId).collect(Collectors.toList()));
+ });
+ return wrapper;
}
/**
@@ -70,7 +96,13 @@ public class SysUserServiceImpl implements ISysUserService {
*/
@Override
public TableDataInfo selectAllocatedList(SysUser user, PageQuery pageQuery) {
- Page page = baseMapper.selectAllocatedList(pageQuery.build(), user);
+ QueryWrapper wrapper = Wrappers.query();
+ wrapper.eq("u.del_flag", UserConstants.USER_NORMAL)
+ .eq(ObjectUtil.isNotNull(user.getRoleId()), "r.role_id", user.getRoleId())
+ .like(StringUtils.isNotBlank(user.getUserName()), "u.user_name", user.getUserName())
+ .eq(StringUtils.isNotBlank(user.getStatus()), "u.status", user.getStatus())
+ .like(StringUtils.isNotBlank(user.getPhonenumber()), "u.phonenumber", user.getPhonenumber());
+ Page page = baseMapper.selectAllocatedList(pageQuery.build(), wrapper);
return TableDataInfo.build(page);
}
@@ -82,7 +114,14 @@ public class SysUserServiceImpl implements ISysUserService {
*/
@Override
public TableDataInfo selectUnallocatedList(SysUser user, PageQuery pageQuery) {
- Page page = baseMapper.selectUnallocatedList(pageQuery.build(), user);
+ Long userId = userRoleMapper.selectUserIdByRoleId(user.getRoleId());
+ QueryWrapper wrapper = Wrappers.query();
+ wrapper.eq("u.del_flag", UserConstants.USER_NORMAL)
+ .and(w -> w.ne("r.role_id", user.getRoleId()).or().isNull("r.role_id"))
+ .notIn("u.user_id", userId)
+ .like(StringUtils.isNotBlank(user.getUserName()), "u.user_name", user.getUserName())
+ .like(StringUtils.isNotBlank(user.getPhonenumber()), "u.phonenumber", user.getPhonenumber());
+ Page page = baseMapper.selectUnallocatedList(pageQuery.build(), wrapper);
return TableDataInfo.build(page);
}
@@ -209,7 +248,7 @@ public class SysUserServiceImpl implements ISysUserService {
if (!LoginHelper.isAdmin()) {
SysUser user = new SysUser();
user.setUserId(userId);
- List users = SpringUtils.getAopProxy(this).selectUserList(user);
+ List users = this.selectUserList(user);
if (CollUtil.isEmpty(users)) {
throw new ServiceException("没有权限访问用户数据!");
}
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
index b1ce3f829..00493be9e 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
@@ -22,27 +22,8 @@
-
- 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
-
-
-