From 6fcfb260b4e38cc04bd3ceecb453d7429321abef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B7=E5=86=B7?= <2270033969@qq.com> Date: Wed, 24 Apr 2024 11:13:28 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20RemoteUserService=20=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E6=B3=A8=E5=86=8C=E7=AB=AF=E7=82=B9=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 8709f40273e3be646009119b9deb619c2a38c311) --- .../admin/api/feign/RemoteUserService.java | 136 +-- .../service/impl/SysUserServiceImpl.java | 845 +++++++++--------- 2 files changed, 506 insertions(+), 475 deletions(-) diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteUserService.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteUserService.java index 4b77182e1..965828d27 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteUserService.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteUserService.java @@ -19,6 +19,7 @@ package com.pig4cloud.pigx.admin.api.feign; +import com.pig4cloud.pigx.admin.api.dto.UserDTO; import com.pig4cloud.pigx.admin.api.dto.UserInfo; import com.pig4cloud.pigx.admin.api.entity.SysUser; import com.pig4cloud.pigx.common.core.constant.SecurityConstants; @@ -36,71 +37,88 @@ import java.util.List; @FeignClient(contextId = "remoteUserService", value = ServiceNameConstants.UPMS_SERVICE) public interface RemoteUserService { - /** - * 通过用户名查询用户、角色信息 - * @param username 用户名 - * @param from 调用标志 - * @return R - */ - @GetMapping("/user/info/{username}") - R info(@PathVariable("username") String username, @RequestHeader(SecurityConstants.FROM) String from); + /** + * 通过用户名查询用户、角色信息 + * + * @param username 用户名 + * @param from 调用标志 + * @return R + */ + @GetMapping("/user/info/{username}") + R info(@PathVariable("username") String username, @RequestHeader(SecurityConstants.FROM) String from); - /** - * 根据用户ID获取用户 - * @param userId ID - * @return SysUser - */ - @GetMapping("/user/details/{userId}") - R getUserById(@PathVariable("userId") Long userId); + /** + * 根据用户ID获取用户 + * + * @param userId ID + * @return SysUser + */ + @GetMapping("/user/details/{userId}") + R getUserById(@PathVariable("userId") Long userId); - /** - * 通过社交账号或手机号查询用户、角色信息 - * @param inStr appid@code - * @param from 调用标志 - * @return - */ - @GetMapping("/social/info/{inStr}") - R social(@PathVariable("inStr") String inStr, @RequestHeader(SecurityConstants.FROM) String from); + /** + * 通过社交账号或手机号查询用户、角色信息 + * + * @param inStr appid@code + * @param from 调用标志 + * @return + */ + @GetMapping("/social/info/{inStr}") + R social(@PathVariable("inStr") String inStr, @RequestHeader(SecurityConstants.FROM) String from); - /** - * 查询上级部门的用户信息 - * @param username 用户名 - * @return R - */ - @GetMapping("/user/ancestor/{username}") - R> ancestorUsers(@PathVariable("username") String username); + /** + * 查询上级部门的用户信息 + * + * @param username 用户名 + * @return R + */ + @GetMapping("/user/ancestor/{username}") + R> ancestorUsers(@PathVariable("username") String username); - /** - * 锁定用户 - * @param username 用户名 - * @param from 调用标识 - * @return - */ - @PutMapping("/user/lock/{username}") - R lockUser(@PathVariable("username") String username, @RequestHeader(SecurityConstants.FROM) String from); + /** + * 锁定用户 + * + * @param username 用户名 + * @param from 调用标识 + * @return + */ + @PutMapping("/user/lock/{username}") + R lockUser(@PathVariable("username") String username, @RequestHeader(SecurityConstants.FROM) String from); - /** - * 根据角色ID查询用户列表 - * @param roleIdList 角色ID列表 - * @return 用户ID列表 - */ - @GetMapping("/user/getUserIdListByRoleIdList") - R> getUserIdListByRoleIdList(@RequestParam("roleIdList") List roleIdList); + /** + * 根据角色ID查询用户列表 + * + * @param roleIdList 角色ID列表 + * @return 用户ID列表 + */ + @GetMapping("/user/getUserIdListByRoleIdList") + R> getUserIdListByRoleIdList(@RequestParam("roleIdList") List roleIdList); - /** - * 根据部门ID列表获取用户ID列表接口 - * @param deptIdList 部门ID列表 - * @return 用户ID列表 - */ - @GetMapping("/user/getUserIdListByDeptIdList") - R> getUserIdListByDeptIdList(@RequestParam("deptIdList") List deptIdList); + /** + * 根据部门ID列表获取用户ID列表接口 + * + * @param deptIdList 部门ID列表 + * @return 用户ID列表 + */ + @GetMapping("/user/getUserIdListByDeptIdList") + R> getUserIdListByDeptIdList(@RequestParam("deptIdList") List deptIdList); - /** - * 通过用户名查询用户列表 - * @param userName 用户名 - * @return 用户列表 - */ - @GetMapping("/user/getUserListByUserName") - R> getUserListByUserName(@RequestParam("username") String userName); + /** + * 通过用户名查询用户列表 + * + * @param userName 用户名 + * @return 用户列表 + */ + @GetMapping("/user/getUserListByUserName") + R> getUserListByUserName(@RequestParam("username") String userName); + + /** + * 注册用户 + * + * @param userDTO 用户信息 + * @return success/false + */ + @PostMapping("/register/user") + R registerUser(@RequestBody UserDTO userDTO, @RequestHeader(SecurityConstants.FROM) String from); } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysUserServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysUserServiceImpl.java index a112da9ae..75b10f873 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysUserServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysUserServiceImpl.java @@ -73,473 +73,486 @@ import java.util.stream.Collectors; @AllArgsConstructor public class SysUserServiceImpl extends ServiceImpl implements SysUserService { - private static final PasswordEncoder ENCODER = new BCryptPasswordEncoder(); + private static final PasswordEncoder ENCODER = new BCryptPasswordEncoder(); - private final SysMenuService sysMenuService; + private final SysMenuService sysMenuService; - private final SysRoleService sysRoleService; + private final SysRoleService sysRoleService; - private final SysPostService sysPostService; + private final SysPostService sysPostService; - private final SysDeptService sysDeptService; + private final SysDeptService sysDeptService; - private final SysUserRoleMapper sysUserRoleMapper; + private final SysUserRoleMapper sysUserRoleMapper; - private final SysUserPostMapper sysUserPostMapper; + private final SysUserPostMapper sysUserPostMapper; - private final CacheManager cacheManager; + private final CacheManager cacheManager; - /** - * 保存用户信息 - * @param userDto DTO 对象 - * @return success/fail - */ - @Override - @Transactional(rollbackFor = Exception.class) - public Boolean saveUser(UserDTO userDto) { - SysUser sysUser = new SysUser(); - BeanUtils.copyProperties(userDto, sysUser); - sysUser.setLockFlag( - StrUtil.isBlank(userDto.getLockFlag()) ? UserStateEnum.NORMAL.getCode() :userDto.getLockFlag()); - sysUser.setCreateBy(userDto.getUsername()); - sysUser.setUpdateBy(userDto.getUsername()); - sysUser.setPassword(ENCODER.encode(userDto.getPassword())); - baseMapper.insert(sysUser); - // 保存用户岗位信息 - Optional.ofNullable(userDto.getPost()).ifPresent(posts -> { - posts.stream().map(postId -> { - SysUserPost userPost = new SysUserPost(); - userPost.setUserId(sysUser.getUserId()); - userPost.setPostId(postId); - return userPost; - }).forEach(sysUserPostMapper::insert); - }); + /** + * 保存用户信息 + * + * @param userDto DTO 对象 + * @return success/fail + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean saveUser(UserDTO userDto) { + SysUser sysUser = new SysUser(); + BeanUtils.copyProperties(userDto, sysUser); + sysUser.setLockFlag( + StrUtil.isBlank(userDto.getLockFlag()) ? UserStateEnum.NORMAL.getCode() : userDto.getLockFlag()); + sysUser.setCreateBy(userDto.getUsername()); + sysUser.setUpdateBy(userDto.getUsername()); + sysUser.setPassword(ENCODER.encode(userDto.getPassword())); + baseMapper.insert(sysUser); + // 保存用户岗位信息 + Optional.ofNullable(userDto.getPost()).ifPresent(posts -> { + posts.stream().map(postId -> { + SysUserPost userPost = new SysUserPost(); + userPost.setUserId(sysUser.getUserId()); + userPost.setPostId(postId); + return userPost; + }).forEach(sysUserPostMapper::insert); + }); - // 如果角色为空,赋默认角色 - if (CollUtil.isEmpty(userDto.getRole())) { - // 获取默认角色编码 - String defaultRole = ParamResolver.getStr("USER_DEFAULT_ROLE"); - // 默认角色 - SysRole sysRole = sysRoleService - .getOne(Wrappers.lambdaQuery().eq(SysRole::getRoleCode, defaultRole)); - userDto.setRole(Collections.singletonList(sysRole.getRoleId())); - } + // 如果角色为空,赋默认角色 + if (CollUtil.isEmpty(userDto.getRole())) { + // 获取默认角色编码 + String defaultRole = ParamResolver.getStr("USER_DEFAULT_ROLE"); + // 默认角色 + SysRole sysRole = sysRoleService + .getOne(Wrappers.lambdaQuery().eq(SysRole::getRoleCode, defaultRole)); + userDto.setRole(Collections.singletonList(sysRole.getRoleId())); + } - // 插入用户角色关系表 - userDto.getRole().stream().map(roleId -> { - SysUserRole userRole = new SysUserRole(); - userRole.setUserId(sysUser.getUserId()); - userRole.setRoleId(roleId); - return userRole; - }).forEach(sysUserRoleMapper::insert); - return Boolean.TRUE; - } + // 插入用户角色关系表 + userDto.getRole().stream().map(roleId -> { + SysUserRole userRole = new SysUserRole(); + userRole.setUserId(sysUser.getUserId()); + userRole.setRoleId(roleId); + return userRole; + }).forEach(sysUserRoleMapper::insert); + return Boolean.TRUE; + } - /** - * 通过查用户的全部信息 - * @param sysUser 用户 - * @return - */ - @Override - public UserInfo findUserInfo(SysUser sysUser) { - UserInfo userInfo = new UserInfo(); - userInfo.setSysUser(sysUser); - // 设置角色列表 (ID) - List roleIds = sysRoleService.findRolesByUserId(sysUser.getUserId()) - .stream() - .map(SysRole::getRoleId) - .collect(Collectors.toList()); - userInfo.setRoles(ArrayUtil.toArray(roleIds, Long.class)); + /** + * 通过查用户的全部信息 + * + * @param sysUser 用户 + * @return + */ + @Override + public UserInfo findUserInfo(SysUser sysUser) { + UserInfo userInfo = new UserInfo(); + userInfo.setSysUser(sysUser); + // 设置角色列表 (ID) + List roleIds = sysRoleService.findRolesByUserId(sysUser.getUserId()) + .stream() + .map(SysRole::getRoleId) + .collect(Collectors.toList()); + userInfo.setRoles(ArrayUtil.toArray(roleIds, Long.class)); - // 设置权限列表(menu.permission) - Set permissions = new HashSet<>(); - roleIds.forEach(roleId -> { - List permissionList = sysMenuService.findMenuByRoleId(roleId) - .stream() - .filter(menu -> StrUtil.isNotEmpty(menu.getPermission())) - .map(SysMenu::getPermission) - .collect(Collectors.toList()); - permissions.addAll(permissionList); - }); - userInfo.setPermissions(ArrayUtil.toArray(permissions, String.class)); - return userInfo; - } + // 设置权限列表(menu.permission) + Set permissions = new HashSet<>(); + roleIds.forEach(roleId -> { + List permissionList = sysMenuService.findMenuByRoleId(roleId) + .stream() + .filter(menu -> StrUtil.isNotEmpty(menu.getPermission())) + .map(SysMenu::getPermission) + .collect(Collectors.toList()); + permissions.addAll(permissionList); + }); + userInfo.setPermissions(ArrayUtil.toArray(permissions, String.class)); + return userInfo; + } - /** - * 分页查询用户信息(含有角色信息) - * @param page 分页对象 - * @param userDTO 参数列表 - * @return - */ - @Override - public IPage getUsersWithRolePage(Page page, UserDTO userDTO) { - return baseMapper.getUserVosPage(page, userDTO, DataScope.of()); - } + /** + * 分页查询用户信息(含有角色信息) + * + * @param page 分页对象 + * @param userDTO 参数列表 + * @return + */ + @Override + public IPage getUsersWithRolePage(Page page, UserDTO userDTO) { + return baseMapper.getUserVosPage(page, userDTO, DataScope.of()); + } - /** - * 通过ID查询用户信息 - * @param id 用户ID - * @return 用户信息 - */ - @Override - public UserVO selectUserVoById(Long id) { - return baseMapper.getUserVoById(id); - } + /** + * 通过ID查询用户信息 + * + * @param id 用户ID + * @return 用户信息 + */ + @Override + public UserVO selectUserVoById(Long id) { + return baseMapper.getUserVoById(id); + } - /** - * 删除用户 - * @param ids 用户ID 列表 - * @return Boolean - */ - @Override - @Transactional(rollbackFor = Exception.class) - public Boolean deleteUserByIds(Long[] ids) { - // 删除 spring cache - List userList = baseMapper.selectBatchIds(CollUtil.toList(ids)); - Cache cache = cacheManager.getCache(CacheConstants.USER_DETAILS); - for (SysUser sysUser : userList) { - cache.evict(sysUser.getUsername()); - } + /** + * 删除用户 + * + * @param ids 用户ID 列表 + * @return Boolean + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean deleteUserByIds(Long[] ids) { + // 删除 spring cache + List userList = baseMapper.selectBatchIds(CollUtil.toList(ids)); + Cache cache = cacheManager.getCache(CacheConstants.USER_DETAILS); + for (SysUser sysUser : userList) { + cache.evict(sysUser.getUsername()); + } - sysUserRoleMapper.delete(Wrappers.lambdaQuery().in(SysUserRole::getUserId, CollUtil.toList(ids))); - this.removeBatchByIds(CollUtil.toList(ids)); - return Boolean.TRUE; - } + sysUserRoleMapper.delete(Wrappers.lambdaQuery().in(SysUserRole::getUserId, CollUtil.toList(ids))); + this.removeBatchByIds(CollUtil.toList(ids)); + return Boolean.TRUE; + } - @Override - @CacheEvict(value = CacheConstants.USER_DETAILS, key = "#userDto.username") - public R updateUserInfo(UserDTO userDto) { - Long userId = SecurityUtils.getUser().getId(); - SysUser sysUser = new SysUser(); - sysUser.setPhone(userDto.getPhone()); - sysUser.setUserId(userId); - sysUser.setAvatar(userDto.getAvatar()); - sysUser.setNickname(userDto.getNickname()); - sysUser.setName(userDto.getName()); - sysUser.setEmail(userDto.getEmail()); - return R.ok(this.updateById(sysUser)); - } + @Override + @CacheEvict(value = CacheConstants.USER_DETAILS, key = "#userDto.username") + public R updateUserInfo(UserDTO userDto) { + Long userId = SecurityUtils.getUser().getId(); + SysUser sysUser = new SysUser(); + sysUser.setPhone(userDto.getPhone()); + sysUser.setUserId(userId); + sysUser.setAvatar(userDto.getAvatar()); + sysUser.setNickname(userDto.getNickname()); + sysUser.setName(userDto.getName()); + sysUser.setEmail(userDto.getEmail()); + return R.ok(this.updateById(sysUser)); + } - @Override - @Transactional(rollbackFor = Exception.class) - @Audit(name = "用户更新", spel = "@sysUserMapper.selectById(#userDto.userId)") - @CacheEvict(value = CacheConstants.USER_DETAILS, key = "#userDto.username") - public Boolean updateUser(UserDTO userDto) { - // 更新用户表信息 - SysUser sysUser = new SysUser(); - BeanUtils.copyProperties(userDto, sysUser); - sysUser.setUpdateTime(LocalDateTime.now()); + @Override + @Transactional(rollbackFor = Exception.class) + @Audit(name = "用户更新", spel = "@sysUserMapper.selectById(#userDto.userId)") + @CacheEvict(value = CacheConstants.USER_DETAILS, key = "#userDto.username") + public Boolean updateUser(UserDTO userDto) { + // 更新用户表信息 + SysUser sysUser = new SysUser(); + BeanUtils.copyProperties(userDto, sysUser); + sysUser.setUpdateTime(LocalDateTime.now()); - if (StrUtil.isNotBlank(userDto.getPassword())) { - sysUser.setPassword(ENCODER.encode(userDto.getPassword())); - } + if (StrUtil.isNotBlank(userDto.getPassword())) { + sysUser.setPassword(ENCODER.encode(userDto.getPassword())); + } - this.updateById(sysUser); + this.updateById(sysUser); - // 更新用户角色表 - if (userDto.getRole() != null) { - sysUserRoleMapper - .delete(Wrappers.lambdaQuery().eq(SysUserRole::getUserId, userDto.getUserId())); - userDto.getRole().stream().map(roleId -> { - SysUserRole userRole = new SysUserRole(); - userRole.setUserId(sysUser.getUserId()); - userRole.setRoleId(roleId); - return userRole; - }).forEach(SysUserRole::insert); - } + // 更新用户角色表 + if (userDto.getRole() != null) { + sysUserRoleMapper + .delete(Wrappers.lambdaQuery().eq(SysUserRole::getUserId, userDto.getUserId())); + userDto.getRole().stream().map(roleId -> { + SysUserRole userRole = new SysUserRole(); + userRole.setUserId(sysUser.getUserId()); + userRole.setRoleId(roleId); + return userRole; + }).forEach(SysUserRole::insert); + } - // 更新用户岗位表 - if (userDto.getPost() != null) { - sysUserPostMapper - .delete(Wrappers.lambdaQuery().eq(SysUserPost::getUserId, userDto.getUserId())); - userDto.getPost().stream().map(postId -> { - SysUserPost userPost = new SysUserPost(); - userPost.setUserId(sysUser.getUserId()); - userPost.setPostId(postId); - return userPost; - }).forEach(SysUserPost::insert); - } + // 更新用户岗位表 + if (userDto.getPost() != null) { + sysUserPostMapper + .delete(Wrappers.lambdaQuery().eq(SysUserPost::getUserId, userDto.getUserId())); + userDto.getPost().stream().map(postId -> { + SysUserPost userPost = new SysUserPost(); + userPost.setUserId(sysUser.getUserId()); + userPost.setPostId(postId); + return userPost; + }).forEach(SysUserPost::insert); + } - return Boolean.TRUE; - } + return Boolean.TRUE; + } - /** - * 查询上级部门的用户信息 - * @param username 用户名 - * @return R - */ - @Override - public List listAncestorUsers(String username) { - SysUser sysUser = this.getOne(Wrappers.query().lambda().eq(SysUser::getUsername, username)); + /** + * 查询上级部门的用户信息 + * + * @param username 用户名 + * @return R + */ + @Override + public List listAncestorUsers(String username) { + SysUser sysUser = this.getOne(Wrappers.query().lambda().eq(SysUser::getUsername, username)); - SysDept sysDept = sysDeptService.getById(sysUser.getDeptId()); - if (sysDept == null) { - return null; - } + SysDept sysDept = sysDeptService.getById(sysUser.getDeptId()); + if (sysDept == null) { + return null; + } - Long parentId = sysDept.getParentId(); - return this.list(Wrappers.query().lambda().eq(SysUser::getDeptId, parentId)); - } + Long parentId = sysDept.getParentId(); + return this.list(Wrappers.query().lambda().eq(SysUser::getDeptId, parentId)); + } - /** - * 查询全部的用户 - * @param userDTO 查询条件 - * @param ids ids 用户列表 - * @return list - */ - @Override - public List listUser(UserDTO userDTO, Long[] ids) { - // 根据数据权限查询全部的用户信息 - List voList = baseMapper.selectVoListByScope(userDTO, ids, DataScope.of()); - // 转换成execl 对象输出 - List userExcelVOList = voList.stream().map(userVO -> { - UserExcelVO excelVO = new UserExcelVO(); - BeanUtils.copyProperties(userVO, excelVO); - String roleNameList = userVO.getRoleList() - .stream() - .map(SysRole::getRoleName) - .collect(Collectors.joining(StrUtil.COMMA)); - excelVO.setRoleNameList(roleNameList); - String postNameList = userVO.getPostList() - .stream() - .map(SysPost::getPostName) - .collect(Collectors.joining(StrUtil.COMMA)); - excelVO.setPostNameList(postNameList); - return excelVO; - }).collect(Collectors.toList()); - return userExcelVOList; - } + /** + * 查询全部的用户 + * + * @param userDTO 查询条件 + * @param ids ids 用户列表 + * @return list + */ + @Override + public List listUser(UserDTO userDTO, Long[] ids) { + // 根据数据权限查询全部的用户信息 + List voList = baseMapper.selectVoListByScope(userDTO, ids, DataScope.of()); + // 转换成execl 对象输出 + List userExcelVOList = voList.stream().map(userVO -> { + UserExcelVO excelVO = new UserExcelVO(); + BeanUtils.copyProperties(userVO, excelVO); + String roleNameList = userVO.getRoleList() + .stream() + .map(SysRole::getRoleName) + .collect(Collectors.joining(StrUtil.COMMA)); + excelVO.setRoleNameList(roleNameList); + String postNameList = userVO.getPostList() + .stream() + .map(SysPost::getPostName) + .collect(Collectors.joining(StrUtil.COMMA)); + excelVO.setPostNameList(postNameList); + return excelVO; + }).collect(Collectors.toList()); + return userExcelVOList; + } - /** - * excel 导入用户, 插入正确的 错误的提示行号 - * @param excelVOList excel 列表数据 - * @param bindingResult 错误数据 - * @return ok fail - */ - @Override - public R importUser(List excelVOList, BindingResult bindingResult) { - // 通用校验获取失败的数据 - List errorMessageList = (List) bindingResult.getTarget(); - List deptList = sysDeptService.list(); - List roleList = sysRoleService.list(); - List postList = sysPostService.list(); + /** + * excel 导入用户, 插入正确的 错误的提示行号 + * + * @param excelVOList excel 列表数据 + * @param bindingResult 错误数据 + * @return ok fail + */ + @Override + public R importUser(List excelVOList, BindingResult bindingResult) { + // 通用校验获取失败的数据 + List errorMessageList = (List) bindingResult.getTarget(); + List deptList = sysDeptService.list(); + List roleList = sysRoleService.list(); + List postList = sysPostService.list(); - // 执行数据插入操作 组装 UserDto - for (UserExcelVO excel : excelVOList) { - // 个性化校验逻辑 - List userList = this.list(); + // 执行数据插入操作 组装 UserDto + for (UserExcelVO excel : excelVOList) { + // 个性化校验逻辑 + List userList = this.list(); - Set errorMsg = new HashSet<>(); - // 校验用户名是否存在 - boolean exsitUserName = userList.stream() - .anyMatch(sysUser -> excel.getUsername().equals(sysUser.getUsername())); + Set errorMsg = new HashSet<>(); + // 校验用户名是否存在 + boolean exsitUserName = userList.stream() + .anyMatch(sysUser -> excel.getUsername().equals(sysUser.getUsername())); - if (exsitUserName) { - errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_USER_USERNAME_EXISTING, excel.getUsername())); - } + if (exsitUserName) { + errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_USER_USERNAME_EXISTING, excel.getUsername())); + } - // 判断输入的部门名称列表是否合法 - Optional deptOptional = deptList.stream() - .filter(dept -> excel.getDeptName().equals(dept.getName())) - .findFirst(); - if (!deptOptional.isPresent()) { - errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_DEPT_DEPTNAME_INEXISTENCE, excel.getDeptName())); - } + // 判断输入的部门名称列表是否合法 + Optional deptOptional = deptList.stream() + .filter(dept -> excel.getDeptName().equals(dept.getName())) + .findFirst(); + if (!deptOptional.isPresent()) { + errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_DEPT_DEPTNAME_INEXISTENCE, excel.getDeptName())); + } - // 判断输入的角色名称列表是否合法 - List roleNameList = StrUtil.split(excel.getRoleNameList(), StrUtil.COMMA); - List roleCollList = roleList.stream() - .filter(role -> roleNameList.stream().anyMatch(name -> role.getRoleName().equals(name))) - .collect(Collectors.toList()); + // 判断输入的角色名称列表是否合法 + List roleNameList = StrUtil.split(excel.getRoleNameList(), StrUtil.COMMA); + List roleCollList = roleList.stream() + .filter(role -> roleNameList.stream().anyMatch(name -> role.getRoleName().equals(name))) + .collect(Collectors.toList()); - if (roleCollList.size() != roleNameList.size()) { - errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_ROLE_ROLENAME_INEXISTENCE, excel.getRoleNameList())); - } + if (roleCollList.size() != roleNameList.size()) { + errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_ROLE_ROLENAME_INEXISTENCE, excel.getRoleNameList())); + } - // 判断输入的部门名称列表是否合法 - List postNameList = StrUtil.split(excel.getPostNameList(), StrUtil.COMMA); - List postCollList = postList.stream() - .filter(post -> postNameList.stream().anyMatch(name -> post.getPostName().equals(name))) - .collect(Collectors.toList()); + // 判断输入的部门名称列表是否合法 + List postNameList = StrUtil.split(excel.getPostNameList(), StrUtil.COMMA); + List postCollList = postList.stream() + .filter(post -> postNameList.stream().anyMatch(name -> post.getPostName().equals(name))) + .collect(Collectors.toList()); - if (postCollList.size() != postNameList.size()) { - errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_POST_POSTNAME_INEXISTENCE, excel.getPostNameList())); - } + if (postCollList.size() != postNameList.size()) { + errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_POST_POSTNAME_INEXISTENCE, excel.getPostNameList())); + } - // 数据合法情况 - if (CollUtil.isEmpty(errorMsg)) { - insertExcelUser(excel, deptOptional, roleCollList, postCollList); - } - else { - // 数据不合法情况 - errorMessageList.add(new ErrorMessage(excel.getLineNum(), errorMsg)); - } + // 数据合法情况 + if (CollUtil.isEmpty(errorMsg)) { + insertExcelUser(excel, deptOptional, roleCollList, postCollList); + } else { + // 数据不合法情况 + errorMessageList.add(new ErrorMessage(excel.getLineNum(), errorMsg)); + } - } + } - if (CollUtil.isNotEmpty(errorMessageList)) { - return R.failed(errorMessageList); - } - return R.ok(null, MsgUtils.getMessage(ErrorCodes.SYS_USER_IMPORT_SUCCEED)); - } + if (CollUtil.isNotEmpty(errorMessageList)) { + return R.failed(errorMessageList); + } + return R.ok(null, MsgUtils.getMessage(ErrorCodes.SYS_USER_IMPORT_SUCCEED)); + } - /** - * 插入excel User - */ - private void insertExcelUser(UserExcelVO excel, Optional deptOptional, List roleCollList, - List postCollList) { - UserDTO userDTO = new UserDTO(); - userDTO.setUsername(excel.getUsername()); - userDTO.setPhone(excel.getPhone()); - userDTO.setNickname(excel.getNickname()); - userDTO.setName(excel.getName()); - userDTO.setEmail(excel.getEmail()); - userDTO.setLockFlag(excel.getLockFlag()); - // 批量导入初始密码为手机号 - userDTO.setPassword(userDTO.getPhone()); - // 根据部门名称查询部门ID - userDTO.setDeptId(deptOptional.get().getDeptId()); - // 插入岗位名称 - List postIdList = postCollList.stream().map(SysPost::getPostId).collect(Collectors.toList()); - userDTO.setPost(postIdList); - // 根据角色名称查询角色ID - List roleIdList = roleCollList.stream().map(SysRole::getRoleId).collect(Collectors.toList()); - userDTO.setRole(roleIdList); - // 插入用户 - this.saveUser(userDTO); - } + /** + * 插入excel User + */ + private void insertExcelUser(UserExcelVO excel, Optional deptOptional, List roleCollList, + List postCollList) { + UserDTO userDTO = new UserDTO(); + userDTO.setUsername(excel.getUsername()); + userDTO.setPhone(excel.getPhone()); + userDTO.setNickname(excel.getNickname()); + userDTO.setName(excel.getName()); + userDTO.setEmail(excel.getEmail()); + userDTO.setLockFlag(excel.getLockFlag()); + // 批量导入初始密码为手机号 + userDTO.setPassword(userDTO.getPhone()); + // 根据部门名称查询部门ID + userDTO.setDeptId(deptOptional.get().getDeptId()); + // 插入岗位名称 + List postIdList = postCollList.stream().map(SysPost::getPostId).collect(Collectors.toList()); + userDTO.setPost(postIdList); + // 根据角色名称查询角色ID + List roleIdList = roleCollList.stream().map(SysRole::getRoleId).collect(Collectors.toList()); + userDTO.setRole(roleIdList); + // 插入用户 + this.saveUser(userDTO); + } - /** - * 注册用户 赋予用户默认角色 - * @param userDto 用户信息 - * @return success/false - */ - @Override - @Transactional(rollbackFor = Exception.class) - public R registerUser(UserDTO userDto) { - // 判断用户名是否存在 - SysUser sysUser = this.getOne(Wrappers.lambdaQuery().eq(SysUser::getUsername, userDto.getUsername())); - if (sysUser != null) { - String message = MsgUtils.getMessage(ErrorCodes.SYS_USER_USERNAME_EXISTING, userDto.getUsername()); - return R.failed(message); - } - return R.ok(saveUser(userDto)); - } + /** + * 注册用户 赋予用户默认角色 + * + * @param userDto 用户信息 + * @return success/false + */ + @Override + @Transactional(rollbackFor = Exception.class) + public R registerUser(UserDTO userDto) { + // 判断用户名是否存在 + boolean usernameExists = this.exists(Wrappers.lambdaQuery() + .eq(SysUser::getUsername, userDto.getUsername())); + if (usernameExists) { + String message = MsgUtils.getMessage(ErrorCodes.SYS_USER_USERNAME_EXISTING, userDto.getUsername()); + return R.failed(message); + } - /** - * 锁定用户 - * @param username 用户名 - * @return - */ - @Override - @CacheEvict(value = CacheConstants.USER_DETAILS, key = "#username") - public R lockUser(String username) { - SysUser sysUser = baseMapper.selectOne(Wrappers.lambdaQuery().eq(SysUser::getUsername, username)); + // 判断手机号是否存在 + boolean phoneExists = this.exists(Wrappers.lambdaQuery() + .eq(SysUser::getPhone, userDto.getPhone())); + if (phoneExists) { + String message = MsgUtils.getMessage(ErrorCodes.SYS_USER_PHONE_EXISTING, userDto.getPhone()); + return R.failed(message); + } + return R.ok(saveUser(userDto)); + } - if (Objects.nonNull(sysUser)) { - sysUser.setLockFlag(UserStateEnum.LOCK.getCode()); - baseMapper.updateById(sysUser); - } - return R.ok(); - } + /** + * 锁定用户 + * + * @param username 用户名 + * @return + */ + @Override + @CacheEvict(value = CacheConstants.USER_DETAILS, key = "#username") + public R lockUser(String username) { + SysUser sysUser = baseMapper.selectOne(Wrappers.lambdaQuery().eq(SysUser::getUsername, username)); - @Override - @CacheEvict(value = CacheConstants.USER_DETAILS, key = "#userDto.username") - public R changePassword(UserDTO userDto) { - SysUser user = baseMapper.selectById(SecurityUtils.getUser().getId()); - if (StrUtil.isEmpty(userDto.getPassword())) { - return R.failed("原密码不能为空"); - } + if (Objects.nonNull(sysUser)) { + sysUser.setLockFlag(UserStateEnum.LOCK.getCode()); + baseMapper.updateById(sysUser); + } + return R.ok(); + } - if (!ENCODER.matches(userDto.getPassword(), user.getPassword())) { - log.info("原密码错误,修改个人信息失败:{}", userDto.getUsername()); - return R.failed(MsgUtils.getMessage(ErrorCodes.SYS_USER_UPDATE_PASSWORDERROR)); - } + @Override + @CacheEvict(value = CacheConstants.USER_DETAILS, key = "#userDto.username") + public R changePassword(UserDTO userDto) { + SysUser user = baseMapper.selectById(SecurityUtils.getUser().getId()); + if (StrUtil.isEmpty(userDto.getPassword())) { + return R.failed("原密码不能为空"); + } - if (StrUtil.isEmpty(userDto.getNewpassword1())) { - return R.failed("新密码不能为空"); - } - String password = ENCODER.encode(userDto.getNewpassword1()); + if (!ENCODER.matches(userDto.getPassword(), user.getPassword())) { + log.info("原密码错误,修改个人信息失败:{}", userDto.getUsername()); + return R.failed(MsgUtils.getMessage(ErrorCodes.SYS_USER_UPDATE_PASSWORDERROR)); + } - this.update(Wrappers.lambdaUpdate() - .set(SysUser::getPassword, password) - .eq(SysUser::getUserId, user.getUserId())); - return R.ok(); - } + if (StrUtil.isEmpty(userDto.getNewpassword1())) { + return R.failed("新密码不能为空"); + } + String password = ENCODER.encode(userDto.getNewpassword1()); - @Override - public R unbinding(String type) { - PigxUser user = SecurityUtils.getUser(); - LambdaUpdateWrapper wrapper = null; - if (type.equals("wechat")) { - wrapper = Wrappers.lambdaUpdate() - .set(SysUser::getWxOpenid, null) - .eq(SysUser::getUserId, user.getId()); - } - else if (type.equals("gitee")) { - wrapper = Wrappers.lambdaUpdate() - .set(SysUser::getGiteeLogin, null) - .eq(SysUser::getUserId, user.getId()); - } - else if (type.equals("osc")) { - wrapper = Wrappers.lambdaUpdate() - .set(SysUser::getOscId, null) - .eq(SysUser::getUserId, user.getId()); - } - else if (type.equals("tencent")) { - wrapper = Wrappers.lambdaUpdate() - .set(SysUser::getQqOpenid, null) - .eq(SysUser::getUserId, user.getId()); - } - else if (type.equals("cp")) { - wrapper = Wrappers.lambdaUpdate() - .set(SysUser::getWxCpUserid, null) - .eq(SysUser::getUserId, user.getId()); - } - else if (type.equals("dingding")) { - wrapper = Wrappers.lambdaUpdate() - .set(SysUser::getWxDingUserid, null) - .eq(SysUser::getUserId, user.getId()); - } - if (wrapper == null) { - return R.failed("解绑账号类型不存在"); - } - this.update(wrapper); - return R.ok(); - } + this.update(Wrappers.lambdaUpdate() + .set(SysUser::getPassword, password) + .eq(SysUser::getUserId, user.getUserId())); + return R.ok(); + } - @Override - public R checkPassword(String password) { - String username = SecurityUtils.getUser().getUsername(); - SysUser condition = new SysUser(); - condition.setUsername(username); - SysUser sysUser = this.getOne(new QueryWrapper<>(condition)); + @Override + public R unbinding(String type) { + PigxUser user = SecurityUtils.getUser(); + LambdaUpdateWrapper wrapper = null; + if (type.equals("wechat")) { + wrapper = Wrappers.lambdaUpdate() + .set(SysUser::getWxOpenid, null) + .eq(SysUser::getUserId, user.getId()); + } else if (type.equals("gitee")) { + wrapper = Wrappers.lambdaUpdate() + .set(SysUser::getGiteeLogin, null) + .eq(SysUser::getUserId, user.getId()); + } else if (type.equals("osc")) { + wrapper = Wrappers.lambdaUpdate() + .set(SysUser::getOscId, null) + .eq(SysUser::getUserId, user.getId()); + } else if (type.equals("tencent")) { + wrapper = Wrappers.lambdaUpdate() + .set(SysUser::getQqOpenid, null) + .eq(SysUser::getUserId, user.getId()); + } else if (type.equals("cp")) { + wrapper = Wrappers.lambdaUpdate() + .set(SysUser::getWxCpUserid, null) + .eq(SysUser::getUserId, user.getId()); + } else if (type.equals("dingding")) { + wrapper = Wrappers.lambdaUpdate() + .set(SysUser::getWxDingUserid, null) + .eq(SysUser::getUserId, user.getId()); + } + if (wrapper == null) { + return R.failed("解绑账号类型不存在"); + } + this.update(wrapper); + return R.ok(); + } - if (!ENCODER.matches(password, sysUser.getPassword())) { - log.info("原密码错误"); - return R.failed("密码输入错误"); - } - else { - return R.ok(); - } - } + @Override + public R checkPassword(String password) { + String username = SecurityUtils.getUser().getUsername(); + SysUser condition = new SysUser(); + condition.setUsername(username); + SysUser sysUser = this.getOne(new QueryWrapper<>(condition)); - @Override - public List listUserIdByRoleIds(List roleIdList) { - return sysUserRoleMapper.selectList(Wrappers.lambdaQuery().in(SysUserRole::getRoleId, roleIdList)) - .stream() - .map(SysUserRole::getUserId) - .collect(Collectors.toList()); - } + if (!ENCODER.matches(password, sysUser.getPassword())) { + log.info("原密码错误"); + return R.failed("密码输入错误"); + } else { + return R.ok(); + } + } - /** - * 根据部门ID列表获取用户ID列表接口 - * @param deptIdList 部门ID列表 - * @return List 返回结果对象,包含根据部门ID列表获取到的用户ID列表信息 - */ - @Override - public List listUserIdByDeptIds(List deptIdList) { - return baseMapper.selectList(Wrappers.lambdaQuery().in(SysUser::getDeptId, deptIdList)); - } + @Override + public List listUserIdByRoleIds(List roleIdList) { + return sysUserRoleMapper.selectList(Wrappers.lambdaQuery().in(SysUserRole::getRoleId, roleIdList)) + .stream() + .map(SysUserRole::getUserId) + .collect(Collectors.toList()); + } + + /** + * 根据部门ID列表获取用户ID列表接口 + * + * @param deptIdList 部门ID列表 + * @return List 返回结果对象,包含根据部门ID列表获取到的用户ID列表信息 + */ + @Override + public List listUserIdByDeptIds(List deptIdList) { + return baseMapper.selectList(Wrappers.lambdaQuery().in(SysUser::getDeptId, deptIdList)); + } }