From 36a143b19cc919c9a814d065029b2340ef7330d7 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Mon, 13 Jun 2022 14:56:25 +0800 Subject: [PATCH] 20220606 --- src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/UserServiceImpl.java | 280 ++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 251 insertions(+), 29 deletions(-) diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/UserServiceImpl.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/UserServiceImpl.java index 7b15c11..2341744 100644 --- a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/UserServiceImpl.java +++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/UserServiceImpl.java @@ -1,27 +1,29 @@ package com.xcong.farmer.cms.modules.system.service.Impl; import cn.hutool.crypto.SecureUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.StringPool; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xcong.farmer.cms.common.response.Result; -import com.xcong.farmer.cms.modules.system.dto.AdminAddUserDto; -import com.xcong.farmer.cms.modules.system.dto.AdminUpdateUserDto; -import com.xcong.farmer.cms.modules.system.dto.AdminUserDto; -import com.xcong.farmer.cms.modules.system.entity.RoleEntity; -import com.xcong.farmer.cms.modules.system.entity.UserEntity; -import com.xcong.farmer.cms.modules.system.mapper.RoleMapper; -import com.xcong.farmer.cms.modules.system.mapper.UserMapper; +import com.xcong.farmer.cms.modules.system.dto.*; +import com.xcong.farmer.cms.modules.system.entity.*; +import com.xcong.farmer.cms.modules.system.mapper.*; import com.xcong.farmer.cms.modules.system.service.IUserService; -import com.xcong.farmer.cms.modules.system.vo.AdminSeeUserInfoVo; -import com.xcong.farmer.cms.modules.system.vo.AdminUserVo; +import com.xcong.farmer.cms.modules.system.util.LoginUserUtil; +import com.xcong.farmer.cms.modules.system.vo.*; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.ObjectUtil; + +import cn.hutool.core.collection.CollUtil; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.io.Serializable; +import java.util.*; @Service @Slf4j @@ -29,53 +31,94 @@ @Resource private RoleMapper roleMapper; + @Resource + private UserRoleMapper userRoleMapper; + @Resource + private RoleMenuMapper roleMenuMapper; + @Resource + private MenuMapper menuMapper; @Override public Result getUserInPage(AdminUserDto adminUserDto) { + UserEntity userlogin = LoginUserUtil.getLoginUser(); Page<AdminUserVo> page = new Page<>(adminUserDto.getPageNum(), adminUserDto.getPageSize()); UserEntity userEntity = new UserEntity(); + long belongId = userlogin.getBelongId() == null ? UserEntity.USER_BELONG_TOP : userlogin.getBelongId(); + if(belongId > UserEntity.USER_BELONG_TOP){ + userEntity.setBelongId(belongId); + userEntity.setRoleName(RoleEntity.ROLE_ADMIN_NAME); + }else if(belongId == UserEntity.USER_BELONG_TOP){ + userEntity.setRoleName(RoleEntity.ROLE_SUPER_NAME); + } if(StrUtil.isNotEmpty(adminUserDto.getUsername())){ userEntity.setUsername(adminUserDto.getUsername()); } - IPage<AdminUserVo> list = this.baseMapper.selectAdminUserVoInPage(page,userEntity); - return Result.ok(list); + IPage<AdminUserVo> AdminUserVos = this.baseMapper.selectAdminUserVoInPage(page,userEntity); + List<AdminUserVo> records = AdminUserVos.getRecords(); + if(CollUtil.isNotEmpty(records)){ + for(AdminUserVo adminUserVo : records){ + List<AdminRoleVo> adminRoleVos = new ArrayList<>(); + QueryWrapper<UserRoleEntity> objectQueryWrapper = new QueryWrapper<>(); + objectQueryWrapper.eq("user_id",adminUserVo.getId()); + List<UserRoleEntity> userRoleEntities = userRoleMapper.selectList(objectQueryWrapper); + if(CollUtil.isNotEmpty(userRoleEntities)){ + for(UserRoleEntity userRoleEntity : userRoleEntities){ + RoleEntity roleEntity = roleMapper.selectById(userRoleEntity.getRoleId()); + AdminRoleVo adminRoleVo = new AdminRoleVo(); + adminRoleVo.setId(roleEntity.getId()); + adminRoleVo.setRoleName(roleEntity.getRoleName()); + adminRoleVos.add(adminRoleVo); + } + } + adminUserVo.setAdminRoleVos(adminRoleVos); + } + } + + return Result.ok(AdminUserVos); } @Override @Transactional public Result addUser(AdminAddUserDto adminAddUserDto) { + UserEntity userlogin = LoginUserUtil.getLoginUser(); String username = adminAddUserDto.getUsername(); if(StrUtil.isEmpty(username)){ return Result.fail("请输入用户名"); } - Long roleId = adminAddUserDto.getRoleId(); - if(ObjectUtil.isEmpty(roleId)){ - return Result.fail("请选择用户角色"); + QueryWrapper<UserEntity> objectQueryWrapper = new QueryWrapper<>(); + objectQueryWrapper.eq("username",username); +// objectQueryWrapper.eq("belong_id",userlogin.getBelongId()); + List<UserEntity> userEntities = this.baseMapper.selectList(objectQueryWrapper); + if(CollUtil.isNotEmpty(userEntities)){ + return Result.fail("用户名重复"); } - RoleEntity roleEntity = roleMapper.selectById(roleId); - if(ObjectUtil.isEmpty(roleEntity)){ + String roleIds = adminAddUserDto.getRoleIds(); + if(StrUtil.isEmpty(roleIds)){ return Result.fail("请选择用户角色"); } String phone = adminAddUserDto.getPhone(); if(StrUtil.isEmpty(phone)){ return Result.fail("请输入联系电话"); } + Long belongId = adminAddUserDto.getBelongId() == null ? UserEntity.USER_BELONG_TOP:adminAddUserDto.getBelongId(); + if(belongId == UserEntity.USER_BELONG_TOP){ + return Result.fail("请选择所属公司"); + } UserEntity userEntity = new UserEntity(); userEntity.setUsername(username); userEntity.setPhone(phone); - userEntity.setRoleId(roleId); - userEntity.setRoleName(roleEntity.getRoleName()); if(StrUtil.isNotEmpty(adminAddUserDto.getNickname())){ userEntity.setNickname(adminAddUserDto.getNickname()); } if(StrUtil.isNotEmpty(adminAddUserDto.getEmail())){ userEntity.setEmail(adminAddUserDto.getEmail()); } - userEntity.setPassword(SecureUtil.md5(UserEntity.PASSWORD_DEFAULT)); userEntity.setStatus(UserEntity.STATUS_ENABLE); + userEntity.setBelongId(belongId); int insert = this.baseMapper.insert(userEntity); if(insert > 0){ + saveUserRole(roleIds,userEntity.getId()); return Result.ok("添加成功"); } return Result.fail("添加失败"); @@ -113,6 +156,10 @@ return Result.fail("用户不存在"); } this.baseMapper.deleteById(id); + + QueryWrapper<UserRoleEntity> objectQueryWrapper = new QueryWrapper<>(); + objectQueryWrapper.eq("user_id",userEntity.getId()); + userRoleMapper.delete(objectQueryWrapper); return Result.ok("删除成功"); } @@ -128,8 +175,22 @@ adminSeeUserInfoVo.setNickname(userEntity.getNickname()); adminSeeUserInfoVo.setPhone(userEntity.getPhone()); adminSeeUserInfoVo.setEmail(userEntity.getEmail()); - adminSeeUserInfoVo.setRoleId(userEntity.getRoleId()); - adminSeeUserInfoVo.setRoleName(userEntity.getRoleName()); + adminSeeUserInfoVo.setBelongId(userEntity.getBelongId()); + + List<AdminRoleVo> adminRoleVos = new ArrayList<>(); + QueryWrapper<UserRoleEntity> objectQueryWrapper = new QueryWrapper<>(); + objectQueryWrapper.eq("user_id",userEntity.getId()); + List<UserRoleEntity> userRoleEntities = userRoleMapper.selectList(objectQueryWrapper); + if(CollUtil.isNotEmpty(userRoleEntities)){ + for(UserRoleEntity userRoleEntity : userRoleEntities){ + RoleEntity roleEntity = roleMapper.selectById(userRoleEntity.getRoleId()); + AdminRoleVo adminRoleVo = new AdminRoleVo(); + adminRoleVo.setId(roleEntity.getId()); + adminRoleVo.setRoleName(roleEntity.getRoleName()); + adminRoleVos.add(adminRoleVo); + } + } + adminSeeUserInfoVo.setAdminRoleVos(adminRoleVos); return Result.ok(adminSeeUserInfoVo); } @@ -140,26 +201,25 @@ if(StrUtil.isEmpty(username)){ return Result.fail("请输入用户名"); } - Long roleId = adminUpdateUserDto.getRoleId(); - if(ObjectUtil.isEmpty(roleId)){ - return Result.fail("请选择用户角色"); - } - RoleEntity roleEntity = roleMapper.selectById(roleId); - if(ObjectUtil.isEmpty(roleEntity)){ + String roleIds = adminUpdateUserDto.getRoleIds(); + if(StrUtil.isEmpty(roleIds)){ return Result.fail("请选择用户角色"); } String phone = adminUpdateUserDto.getPhone(); if(StrUtil.isEmpty(phone)){ return Result.fail("请输入联系电话"); } + Long belongId = adminUpdateUserDto.getBelongId() == null ? UserEntity.USER_BELONG_TOP : adminUpdateUserDto.getBelongId(); + if(UserEntity.USER_BELONG_TOP == belongId){ + return Result.fail("请输入所属公司"); + } UserEntity userEntity = this.baseMapper.selectById(adminUpdateUserDto.getId()); if(ObjectUtil.isEmpty(userEntity)){ return Result.fail("用户不存在"); } + userEntity.setBelongId(belongId); userEntity.setUsername(username); userEntity.setPhone(phone); - userEntity.setRoleId(roleId); - userEntity.setRoleName(roleEntity.getRoleName()); if(StrUtil.isNotEmpty(adminUpdateUserDto.getNickname())){ userEntity.setNickname(adminUpdateUserDto.getNickname()); } @@ -168,6 +228,11 @@ } int insert = this.baseMapper.updateById(userEntity); if(insert > 0){ + QueryWrapper<UserRoleEntity> objectQueryWrapper = new QueryWrapper<>(); + objectQueryWrapper.eq("user_id",userEntity.getId()); + userRoleMapper.delete(objectQueryWrapper); + + saveUserRole(roleIds,userEntity.getId()); return Result.ok("更新成功"); } return Result.fail("更新失败"); @@ -184,4 +249,161 @@ this.baseMapper.updateById(userEntity); return Result.ok("重置成功"); } + + @Override + public Result userMenu() { + UserEntity loginUser = LoginUserUtil.getLoginUser(); + Long userId = loginUser.getId(); + List<AdminUserMenuVo> adminUserMenuVos = new ArrayList<>(); + + QueryWrapper<UserRoleEntity> userRoleQueryWrapper = new QueryWrapper<>(); + userRoleQueryWrapper.eq("user_id",userId); + List<UserRoleEntity> userRoleEntities = userRoleMapper.selectList(userRoleQueryWrapper); + if(CollUtil.isNotEmpty(userRoleEntities)){ + List menuIds = new ArrayList<Long>(); + for(UserRoleEntity userRoleEntity : userRoleEntities){ + List<RoleMenuEntity> roleMenuEntities = roleMenuMapper.selectListByRoleId(userRoleEntity.getRoleId()); + if(CollUtil.isNotEmpty(roleMenuEntities)){ + for(RoleMenuEntity roleMenuEntity : roleMenuEntities){ + menuIds.add(roleMenuEntity.getMenuId()); + } + } + } + if(CollUtil.isNotEmpty(menuIds)){ + HashSet hashSet = CollUtil.newHashSet(menuIds); + List<Long> parentMenuIds = new ArrayList<>(); + List<Long> childMenuIds = new ArrayList<>(); + for(Object s : hashSet){ + MenuEntity menuEntity = menuMapper.selectById(Long.parseLong(s.toString())); + Long parentId = menuEntity.getParentId(); + if(parentId == 0L){ + parentMenuIds.add(menuEntity.getId()); + }else{ + childMenuIds.add(menuEntity.getId()); + } + } + Map<Long, AdminUserMenuVo> menuMap = new HashMap<>(); + if(CollUtil.isNotEmpty(parentMenuIds)){ + for(Long parentId : parentMenuIds){ + AdminUserMenuVo adminUserMenuVo = menuMapper.selectAdminRoleMenuVoById(parentId); + menuMap.put(parentId,adminUserMenuVo); + } + } + if(CollUtil.isNotEmpty(childMenuIds)){ + for(Long childId : childMenuIds){ + AdminUserMenuVo adminUserMenuVo = menuMapper.selectAdminRoleMenuVoById(childId); + Long parentId = adminUserMenuVo.getParentId(); + AdminUserMenuVo adminUserMenuVoParent = menuMap.get(parentId); + if(ObjectUtil.isNotEmpty(adminUserMenuVoParent)){ + List<AdminUserMenuVo> child = adminUserMenuVoParent.getChild(); + if(CollUtil.isEmpty(child)){ + List<AdminUserMenuVo> list = new ArrayList<>(); + list.add(adminUserMenuVo); + adminUserMenuVoParent.setChild(list); + }else{ + child.add(adminUserMenuVo); + } + } + } + } + Set<Map.Entry<Long, AdminUserMenuVo>> entries = menuMap.entrySet(); + Iterator<Map.Entry<Long, AdminUserMenuVo>> iterator = entries.iterator(); + while (iterator.hasNext()){ + adminUserMenuVos.add(iterator.next().getValue()); + } + + } + } + if(CollUtil.isNotEmpty(adminUserMenuVos)){ + for(AdminUserMenuVo adminUserMenuVo : adminUserMenuVos){ + List<AdminUserMenuVo> child = adminUserMenuVo.getChild(); + if(CollUtil.isNotEmpty(child)){ + List<Long> menuIdChilds = new ArrayList<>(); + for(AdminUserMenuVo adminUserMenuVoChild : child){ + Long id = adminUserMenuVoChild.getId(); + menuIdChilds.add(id); + } + List<AdminUserMenuVo> adminUserMenuVoByOrderNum = menuMapper.selectAdminUserMenuVoOrderByOrderNum(menuIdChilds); + adminUserMenuVo.setChild(adminUserMenuVoByOrderNum); + } + } + } + return Result.ok(adminUserMenuVos); + } + + @Override + @Transactional + public Result delObjs(AdminDeleteDto adminDeleteDto) { + String ids = adminDeleteDto.getIds(); + if(StrUtil.isNotEmpty(ids)){ + String[] userIds = ids.split(StringPool.COMMA); + for(String userIdStr : userIds){ + Long userId = Long.valueOf(userIdStr); + + QueryWrapper<UserRoleEntity> objectQueryWrapper = new QueryWrapper<>(); + objectQueryWrapper.eq("user_id",userId); + userRoleMapper.delete(objectQueryWrapper); + + this.baseMapper.deleteById(userId); + } + + } + return Result.ok("删除成功"); + } + + @Override + @Transactional + public Result updatePassword(AdminUpdatePasswordDto adminUpdatePasswordDto) { + UserEntity loginUser = LoginUserUtil.getLoginUser(); + Long userId = loginUser.getId(); + UserEntity userEntity = this.baseMapper.selectById(userId); + if(ObjectUtil.isEmpty(userEntity)){ + return Result.fail("用户不存在"); + } + String oldPassword = adminUpdatePasswordDto.getOldPassword(); + if(StrUtil.isEmpty(oldPassword)){ + return Result.fail("请输入原密码"); + } + String newPassword = adminUpdatePasswordDto.getNewPassword(); + if(StrUtil.isEmpty(newPassword)){ + return Result.fail("请输入新密码"); + } + String s = SecureUtil.md5(oldPassword); + if(!userEntity.getPassword().equals(s)){ + return Result.fail("原密码不正确,请联系管理员重置密码"); + } + userEntity.setPassword(SecureUtil.md5(newPassword)); + this.baseMapper.updateById(userEntity); + return Result.ok("修改成功"); + } + + @Override + public Result userInfo() { + UserEntity loginUser = LoginUserUtil.getLoginUser(); + Long id = loginUser.getId(); + UserEntity userEntity = this.baseMapper.selectById(id); + if(ObjectUtil.isEmpty(userEntity)){ + return Result.fail("用户不存在"); + } + AdminUserInfoVo adminUserInfoVo = new AdminUserInfoVo(); + adminUserInfoVo.setId(userEntity.getId()); + adminUserInfoVo.setUsername(userEntity.getUsername()); + adminUserInfoVo.setNickname(userEntity.getNickname()); + adminUserInfoVo.setPhone(userEntity.getPhone()); + adminUserInfoVo.setEmail(userEntity.getEmail()); + return Result.ok(adminUserInfoVo); + } + + private void saveUserRole(String roleIds,Long userId) { + if (StrUtil.isNotEmpty(roleIds)) { + String[] roleIdList = roleIds.split(StringPool.COMMA); + Arrays.stream(roleIdList).forEach(roleId -> { + UserRoleEntity userRoleEntity = new UserRoleEntity(); + userRoleEntity.setRoleId(Long.valueOf(roleId)); + userRoleEntity.setUserId(userId); + userRoleMapper.insert(userRoleEntity); + }); + } + } + } -- Gitblit v1.9.1