diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysUserController.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysUserController.java index 6b9ef9c9f..576b65751 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysUserController.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysUserController.java @@ -19,7 +19,6 @@ import com.jero.common.system.util.JwtUtil; import com.jero.common.system.vo.LoginUser; import com.jero.common.system.vo.SysDepartTreeModel; import com.jero.common.system.vo.SysDepartUserTreeModel; -import com.jero.common.system.vo.SysUserTreeModel; import com.jero.common.util.ImportExcelUtil; import com.jero.common.util.PasswordUtil; import com.jero.common.util.RedisUtil; @@ -187,8 +186,27 @@ public class SysUserController { user.setPassword(sysUser.getPassword()); String roles = jsonObject.getString("selectedroles"); String departs = jsonObject.getString("selecteddeparts"); - sysUserService.editUserWithRole(user, roles); - sysUserService.editUserWithDepart(user, departs); + List departRoleList = departRoleService.queryByDepartId(departs); + List roleIdList = departRoleList.stream() + .map(SysDepartRole::getRoleId) + .collect(Collectors.toList()); + String[] targetRoleIdList = roles.split(","); + List droleIdList = new ArrayList<>(); + for(int i = 0; i < targetRoleIdList.length; i++){ + String targetRoleId = targetRoleIdList[i]; + if(!roleIdList.contains(targetRoleId)){ + return result.error500("存在不是用户部门下的角色"); + } + List droleIds = departRoleList.stream() + .filter(e->e.getRoleId().equals(targetRoleId)) + .map(SysDepartRole::getId) + .collect(Collectors.toList()); + droleIdList.addAll(droleIds); + } + droleIdList = droleIdList.stream().distinct().collect(Collectors.toList()); + sysUserService.editUserWithRole(user, droleIdList); + // 不允许修改部门 +// sysUserService.editUserWithDepart(user, departs); sysUserService.updateNullPhoneEmail(); result.success("修改成功!"); } @@ -272,11 +290,14 @@ public class SysUserController { public Result> queryUserRole(@RequestParam(name = "userid", required = true) String userid) { Result> result = new Result<>(); List list = new ArrayList(); - List userRole = sysUserRoleService.list(new QueryWrapper().lambda().eq(SysUserRole::getUserId, userid)); + List departRoleUserList = departRoleUserService.list(new QueryWrapper().lambda().eq(SysDepartRoleUser::getUserId, userid)); + List dRoleIdList = departRoleUserList.stream().map(SysDepartRoleUser::getDroleId).collect(Collectors.toList()); + List userRole = departRoleService.list(new QueryWrapper().lambda().in(SysDepartRole::getId, dRoleIdList)); +// List userRole = sysUserRoleService.list(new QueryWrapper().lambda().eq(SysUserRole::getUserId, userid)); if (userRole == null || userRole.size() <= 0) { result.error500("未找到用户相关角色信息"); } else { - for (SysUserRole sysUserRole : userRole) { + for (SysDepartRole sysUserRole : userRole) { list.add(sysUserRole.getRoleId()); } result.setSuccess(true); diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysDepartRoleService.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysDepartRoleService.java index 1a307ccd5..8f6f4b490 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysDepartRoleService.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysDepartRoleService.java @@ -21,4 +21,6 @@ public interface ISysDepartRoleService extends IService { */ List queryDeptRoleByDeptAndUser(String orgCode, String userId); + List queryByDepartId(String departIds); + } diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysUserService.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysUserService.java index 6bf678708..2b9368164 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysUserService.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysUserService.java @@ -73,7 +73,7 @@ public interface ISysUserService extends IService { * @param user * @param roles */ - public void editUserWithRole(SysUser user,String roles); + public void editUserWithRole(SysUser user,List droleIdList); /** * 获取用户的授权角色 diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDepartRoleServiceImpl.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDepartRoleServiceImpl.java index a3f859a2e..134eec3ce 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDepartRoleServiceImpl.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDepartRoleServiceImpl.java @@ -1,12 +1,13 @@ package com.jero.modules.system.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jero.modules.system.entity.SysDepartRole; import com.jero.modules.system.mapper.SysDepartRoleMapper; import com.jero.modules.system.service.ISysDepartRoleService; +import com.jero.modules.system.util.StringUtils; import org.springframework.stereotype.Service; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; - import java.util.List; /** @@ -22,4 +23,10 @@ public class SysDepartRoleServiceImpl extends ServiceImpl queryDeptRoleByDeptAndUser(String orgCode, String userId) { return this.baseMapper.queryDeptRoleByDeptAndUser(orgCode,userId); } + + @Override + public List queryByDepartId(String departIds){ + List deoartIdList = StringUtils.stringToList(departIds); + return this.list(new QueryWrapper().lambda().in(SysDepartRole::getDepartId, deoartIdList)); + } } diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java index 7dfeb10e3..0730eabe7 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java @@ -1,26 +1,27 @@ package com.jero.modules.system.service.impl; +import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import lombok.extern.slf4j.Slf4j; import com.jero.common.api.vo.Result; import com.jero.common.constant.CacheConstant; import com.jero.common.constant.CommonConstant; import com.jero.common.system.api.ISysBaseAPI; -import com.jero.modules.base.service.BaseCommonService; import com.jero.common.system.vo.LoginUser; import com.jero.common.system.vo.SysUserCacheInfo; import com.jero.common.util.PasswordUtil; import com.jero.common.util.UUIDGenerator; import com.jero.common.util.oConvertUtils; +import com.jero.modules.base.service.BaseCommonService; import com.jero.modules.system.entity.*; import com.jero.modules.system.mapper.*; import com.jero.modules.system.model.SysUserSysDepartModel; import com.jero.modules.system.service.ISysUserService; import com.jero.modules.system.vo.SysUserDepVo; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheEvict; import org.springframework.stereotype.Service; @@ -134,17 +135,24 @@ public class SysUserServiceImpl extends ServiceImpl impl @Override @CacheEvict(value= {CacheConstant.SYS_USERS_CACHE}, allEntries=true) @Transactional - public void editUserWithRole(SysUser user, String roles) { + public void editUserWithRole(SysUser user,List droleIdList) { this.updateById(user); //先删后加 - sysUserRoleMapper.delete(new QueryWrapper().lambda().eq(SysUserRole::getUserId, user.getId())); - if(oConvertUtils.isNotEmpty(roles)) { - String[] arr = roles.split(","); - for (String roleId : arr) { - SysUserRole userRole = new SysUserRole(user.getId(), roleId); - sysUserRoleMapper.insert(userRole); + departRoleUserMapper.delete(new QueryWrapper().lambda().eq(SysDepartRoleUser::getUserId, user.getId())); + if(CollectionUtil.isNotEmpty(droleIdList)) { + for (String droleId : droleIdList) { + SysDepartRoleUser departRoleUser = new SysDepartRoleUser(user.getId(), droleId); + departRoleUserMapper.insert(departRoleUser); } } +// sysUserRoleMapper.delete(new QueryWrapper().lambda().eq(SysUserRole::getUserId, user.getId())); +// if(oConvertUtils.isNotEmpty(roles)) { +// String[] arr = roles.split(","); +// for (String roleId : arr) { +// SysUserRole userRole = new SysUserRole(user.getId(), roleId); +// sysUserRoleMapper.insert(userRole); +// } +// } }