1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
| @Override public ResponseResult getUserList(Integer pageNum, Integer pageSize, UserListDto userListDto) { LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
LoginUser loginUser = SecurityUtils.getLoginUser(); Long currentUserId = loginUser.getSysUser().getId();
if (!Objects.equals(currentUserId, 1L)) { List<SysRole> roles = sysRoleService.selectRolesByUserId(currentUserId); Integer maxDataScope = roles.stream() .map(SysRole::getDataScope) .filter(Objects::nonNull) .min(Integer::compareTo) .orElse(4);
if (!Objects.equals(maxDataScope, 1)) { if (Objects.equals(maxDataScope, 2)) { List<Long> deptIds = sysDeptService.selectDeptAndChildrenIds(Long.valueOf(loginUser.getSysUser().getDeptId())); queryWrapper.in(SysUser::getDeptId, deptIds.stream().map(String::valueOf).toList()); } else if (Objects.equals(maxDataScope, 3)) { queryWrapper.eq(SysUser::getDeptId, loginUser.getSysUser().getDeptId()); } else if (Objects.equals(maxDataScope, 4)) { queryWrapper.eq(SysUser::getCreateBy, currentUserId); } else if (Objects.equals(maxDataScope, 5)) { List<Long> deptIds = new ArrayList<>(); for (SysRole role : roles) { if (Objects.equals(role.getDataScope(), 5)) { LambdaQueryWrapper<com.mengze.domain.entity.SysRoleDept> deptWrapper = new LambdaQueryWrapper<>(); deptWrapper.eq(com.mengze.domain.entity.SysRoleDept::getRoleId, role.getId()) .select(com.mengze.domain.entity.SysRoleDept::getDeptId); List<com.mengze.domain.entity.SysRoleDept> roleDeptList = sysRoleDeptService.list(deptWrapper); deptIds.addAll(roleDeptList.stream().map(com.mengze.domain.entity.SysRoleDept::getDeptId).toList()); } } if (!deptIds.isEmpty()) { queryWrapper.in(SysUser::getDeptId, deptIds.stream().map(String::valueOf).toList()); } } } }
if (StringUtils.hasText(userListDto.getKeywords())) { queryWrapper.and(wrapper -> wrapper .like(SysUser::getUsername, userListDto.getKeywords()) .or() .like(SysUser::getNickname, userListDto.getKeywords()) .or() .like(SysUser::getPhone, userListDto.getKeywords()) ); }
if (StringUtils.hasText(userListDto.getStatus())){ queryWrapper.eq(SysUser::getStatus, userListDto.getStatus()); }
if (StringUtils.hasText(userListDto.getDeptId())) { queryWrapper.eq(SysUser::getDeptId, userListDto.getDeptId()); }
if (userListDto.getCreateTime() != null && userListDto.getCreateTime().size() == 2) { try { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date startTime = sdf.parse(userListDto.getCreateTime().get(0) + " 00:00:00"); Date endTime = sdf.parse(userListDto.getCreateTime().get(1) + " 23:59:59");
queryWrapper.between(SysUser::getCreateTime, startTime, endTime); } catch (ParseException e) { throw new RuntimeException("创建时间格式不正确", e); } }
queryWrapper.orderByDesc(SysUser::getCreateTime);
Page<SysUser> page = new Page<>(pageNum, pageSize); page(page, queryWrapper);
List<AdminUserListVo> adminUserListVos = page.getRecords().stream() .map(sysUser -> { AdminUserListVo vo = BeanCopyUtils.copyBean(sysUser, AdminUserListVo.class); if (StringUtils.hasText(sysUser.getDeptId())) { SysDept dept = null; try { dept = sysDeptService.getById(Long.valueOf(sysUser.getDeptId())); } catch (NumberFormatException ignored) { } if (dept != null) { vo.setDeptName(dept.getName()); } }
List<String> roleNames = sysRoleService.selectRoleNameByUserId(sysUser.getId()); if (roleNames != null && !roleNames.isEmpty()) { vo.setRoleNames(String.join(",", roleNames)); } return vo; }) .collect(java.util.stream.Collectors.toList()); PageVo pageVo = new PageVo(adminUserListVos, page.getTotal());
return ResponseResult.okResult(pageVo); }
|