diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/controller/permission/GroupController.java b/Pinnacle/src/main/java/com/cfive/pinnacle/controller/permission/GroupController.java index 70aec32..a2b37e7 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/controller/permission/GroupController.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/controller/permission/GroupController.java @@ -5,8 +5,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.cfive.pinnacle.entity.permission.Group; import com.cfive.pinnacle.entity.common.ResponseCode; import com.cfive.pinnacle.entity.common.ResponseResult; -import com.cfive.pinnacle.exception.DataValidationFailedException; import com.cfive.pinnacle.service.permission.IGroupService; +import com.cfive.pinnacle.utils.WebUtil; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameters; @@ -17,7 +17,6 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; -import java.util.ArrayList; import java.util.List; /** @@ -43,24 +42,15 @@ public class GroupController { @GetMapping @PreAuthorize("hasAuthority('system:group:get')") public ResponseResult> getAllGroup(Long currentPage, Long pageSize, String searchName, String searchRole, Integer searchEnable) { - List searchRoleList = new ArrayList<>(); - try { - if (searchRole != null && !searchRole.isBlank()) { - String[] searchRoleStr = searchRole.split(","); - for (String s : searchRoleStr) { - searchRoleList.add(Long.parseLong(s)); - } - } - } catch (Exception e) { - throw new DataValidationFailedException(); - } + List searchRoleList = WebUtil.convertStringToList(searchRole, Long.class); + IPage groups = groupService.getAllGroup(currentPage, pageSize, searchName, searchRoleList, searchEnable); return ResponseResult.databaseSelectSuccess(groups); } @Operation(summary = "获取用户组列表") @GetMapping("list") - @PreAuthorize("hasAnyAuthority('system:user:add', 'system:user:modify')") + @PreAuthorize("hasAnyAuthority('system:user:get', 'system:user:add', 'system:user:modify')") public ResponseResult> getGroupList() { List groups = groupService.list(); return ResponseResult.databaseSelectSuccess(groups); diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/controller/permission/RoleController.java b/Pinnacle/src/main/java/com/cfive/pinnacle/controller/permission/RoleController.java index 4a7f5be..0230d9c 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/controller/permission/RoleController.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/controller/permission/RoleController.java @@ -5,8 +5,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.cfive.pinnacle.entity.permission.Role; import com.cfive.pinnacle.entity.common.ResponseCode; import com.cfive.pinnacle.entity.common.ResponseResult; -import com.cfive.pinnacle.exception.DataValidationFailedException; import com.cfive.pinnacle.service.permission.IRoleService; +import com.cfive.pinnacle.utils.WebUtil; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameters; @@ -18,7 +18,6 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; -import java.util.ArrayList; import java.util.List; /** @@ -46,17 +45,7 @@ public class RoleController { @GetMapping @PreAuthorize("hasAuthority('system:role:get')") public ResponseResult> getAllRole(Long currentPage, Long pageSize, String searchName, String searchPower, Integer searchEnable) { - List searchPowerList = new ArrayList<>(); - try { - if (searchPower != null && !searchPower.isBlank()) { - String[] searchPowerStr = searchPower.split(","); - for (String s : searchPowerStr) { - searchPowerList.add(Long.parseLong(s)); - } - } - } catch (Exception e) { - throw new DataValidationFailedException(); - } + List searchPowerList = WebUtil.convertStringToList(searchPower, Long.class); IPage roles = roleService.getAllRole(currentPage, pageSize, searchName, searchPowerList, searchEnable); return ResponseResult.databaseSelectSuccess(roles); @@ -64,7 +53,7 @@ public class RoleController { @Operation(summary = "获取角色列表") @GetMapping("list") - @PreAuthorize("hasAnyAuthority('system:group:get', 'system:group:add', 'system:group:modify', 'system:user:add', 'system:user:modify')") + @PreAuthorize("hasAnyAuthority('system:group:get', 'system:group:add', 'system:group:modify', 'system:user:get', 'system:user:add', 'system:user:modify')") public ResponseResult> getRoleList() { List roles = roleService.list(); return ResponseResult.databaseSelectSuccess(roles); diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/controller/permission/UserController.java b/Pinnacle/src/main/java/com/cfive/pinnacle/controller/permission/UserController.java index c8819e8..dcc75bb 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/controller/permission/UserController.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/controller/permission/UserController.java @@ -6,6 +6,7 @@ import com.cfive.pinnacle.entity.permission.User; import com.cfive.pinnacle.entity.common.ResponseCode; import com.cfive.pinnacle.entity.common.ResponseResult; import com.cfive.pinnacle.service.permission.IUserService; +import com.cfive.pinnacle.utils.WebUtil; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.beans.factory.annotation.Autowired; @@ -55,10 +56,13 @@ public class UserController { } @GetMapping - @PreAuthorize("hasAnyAuthority('system:user:get', 'system:user:add', 'system:user:modify')") + @PreAuthorize("hasAuthority('system:user:get')") @Operation(summary = "获取所有用户(权限管理相关)") - public ResponseResult> getAllUser(Long currentPage, Long pageSize) { - IPage users = userService.getAllUser( currentPage, pageSize); + public ResponseResult> getAllUser(Long currentPage, Long pageSize, String searchName, String searchRole, String searchGroup, Integer searchEnable) { + List searchRoleList = WebUtil.convertStringToList(searchRole, Long.class); + List searchGroupList = WebUtil.convertStringToList(searchGroup, Long.class); + + IPage users = userService.getAllUser(currentPage, pageSize, searchName, searchRoleList, searchGroupList, searchEnable); return ResponseResult.databaseSelectSuccess(users); } diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/permission/UserMapper.java b/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/permission/UserMapper.java index 6e1ef6d..882f327 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/permission/UserMapper.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/permission/UserMapper.java @@ -17,6 +17,8 @@ import java.util.List; */ @Mapper public interface UserMapper extends BaseMapper { + List filterUserByRoleIdAndGroupId(@Param("userList") List userList, @Param("roleId") Long roleId, @Param("groupId") Long groupId, String searchName, Integer searchEnable); + List getAllWithRoleAndGroup(@Param("userList") List userList); List getAllAffairUser(); diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/IUserService.java b/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/IUserService.java index cf3eb69..40c819e 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/IUserService.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/IUserService.java @@ -22,7 +22,7 @@ public interface IUserService extends IService { List getDepartmentUser(); - IPage getAllUser(Long currentPage, Long pageSize); + IPage getAllUser(Long currentPage, Long pageSize, String searchName, List searchRole, List searchGroup, Integer searchEnable); User getUser(long id); diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/impl/GroupServiceImpl.java b/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/impl/GroupServiceImpl.java index 6bb01bf..ad21971 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/impl/GroupServiceImpl.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/impl/GroupServiceImpl.java @@ -45,7 +45,7 @@ public class GroupServiceImpl extends ServiceImpl implements Page groupIPage = PageDTO.of(currentPage, pageSize); searchName = searchName.trim(); List groupList = groupMapper.filterGroupByRoleId(null, null, searchName, searchEnable); - if (searchRole.size() > 0) { + if (groupList.size() > 0) { for (Long roleId : searchRole) { groupList = groupMapper.filterGroupByRoleId(groupList, roleId, null, null); if (groupList.size() == 0) { diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/impl/RoleServiceImpl.java b/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/impl/RoleServiceImpl.java index ae31d2b..745785f 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/impl/RoleServiceImpl.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/impl/RoleServiceImpl.java @@ -48,7 +48,7 @@ public class RoleServiceImpl extends ServiceImpl implements IR IPage roleIPage = PageDTO.of(currentPage, pageSize); searchName = searchName.trim(); List roleList = roleMapper.filterRoleByPowerId(null, null, searchName, searchEnable); - if (searchPower.size() > 0) { + if (roleList.size() > 0) { for (Long powerId : searchPower) { roleList = roleMapper.filterRoleByPowerId(roleList, powerId, null, null); if (roleList.size() == 0) { diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/impl/UserServiceImpl.java b/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/impl/UserServiceImpl.java index bb5ded8..ac23139 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/impl/UserServiceImpl.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/impl/UserServiceImpl.java @@ -90,17 +90,40 @@ public class UserServiceImpl extends ServiceImpl implements IU } @Override - public IPage getAllUser(Long currentPage, Long pageSize) { - IPage userPage = PageDTO.of(currentPage, pageSize); - userPage = userMapper.selectPage(userPage, Wrappers.emptyWrapper()); - userPage.setRecords(userMapper.getAllWithRoleAndGroup(userPage.getRecords())); - userPage.getRecords().forEach(user -> { - if (user.getId() == 1L) { - user.setRoles(List.of(new Role(0L, "超级管理员"))); - user.setGroups(List.of(new Group(0L, "超级管理员"))); + public IPage getAllUser(Long currentPage, Long pageSize, String searchName, List searchRole, List searchGroup, Integer searchEnable) { + IPage userIPage = PageDTO.of(currentPage, pageSize); + searchName = searchName.trim(); + List userList = userMapper.filterUserByRoleIdAndGroupId(null, null, null, searchName, searchEnable); + if (userList.size() > 0) { + for (Long roleId : searchRole) { + userList = userMapper.filterUserByRoleIdAndGroupId(userList, roleId, null, null, null); + if (userList.size() == 0) { + break; + } } - }); - return userPage; + } + if (userList.size() > 0) { + for (Long groupId : searchGroup) { + userList = userMapper.filterUserByRoleIdAndGroupId(userList, null, groupId, null, null); + if (userList.size() == 0) { + break; + } + } + } + + if (userList.size() > 0) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper().in(User::getId, userList); + userIPage = userMapper.selectPage(userIPage, wrapper); + userIPage.setRecords(userMapper.getAllWithRoleAndGroup(userIPage.getRecords())); + userIPage.getRecords().forEach(user -> { + if (user.getId() == 1L) { + user.setRoles(List.of(new Role(0L, "超级管理员"))); + user.setGroups(List.of(new Group(0L, "超级管理员"))); + } + }); + } + + return userIPage; } @Override diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/utils/WebUtil.java b/Pinnacle/src/main/java/com/cfive/pinnacle/utils/WebUtil.java index c9bd258..455cdd5 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/utils/WebUtil.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/utils/WebUtil.java @@ -1,9 +1,13 @@ package com.cfive.pinnacle.utils; import com.cfive.pinnacle.entity.permission.LoginUser; +import com.cfive.pinnacle.exception.DataValidationFailedException; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; +import java.util.ArrayList; +import java.util.List; + public class WebUtil { public static LoginUser getLoginUser() { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); @@ -23,4 +27,24 @@ public class WebUtil { } return false; } + + public static List convertStringToList(String str, Class clazz) { + List tList = new ArrayList<>(); + try { + if (str != null && !str.isBlank()) { + String[] strings = str.split(","); + for (String string : strings) { + if (Integer.class.equals(clazz)) { + tList.add((T) Integer.valueOf(string)); + } + if (Long.class.equals(clazz)) { + tList.add((T) Long.valueOf(string)); + } + } + } + } catch (Exception e) { + throw new DataValidationFailedException(); + } + return tList; + } } diff --git a/Pinnacle/src/main/resources/mapper/permission/UserMapper.xml b/Pinnacle/src/main/resources/mapper/permission/UserMapper.xml index 3d77d8e..88ab454 100644 --- a/Pinnacle/src/main/resources/mapper/permission/UserMapper.xml +++ b/Pinnacle/src/main/resources/mapper/permission/UserMapper.xml @@ -2,6 +2,34 @@ + +