From 9c7ddd3a1126bdd057300bc9c79e1a83f591212c Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期六, 04 一月 2025 13:53:41 +0800 Subject: [PATCH] 修改管理后台权限bug --- ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java | 4 ++ ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java | 3 + ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java | 35 +++++++++++++++-- ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPermissionServiceImpl.java | 16 +++++++- ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java | 30 ++++++++++++-- ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/UserShop.java | 2 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java | 24 +++++++++-- 7 files changed, 96 insertions(+), 18 deletions(-) diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/UserShop.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/UserShop.java index afbe76e..83ab4cc 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/UserShop.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/UserShop.java @@ -37,5 +37,5 @@ * 角色id */ @TableField("role_id") - private Integer roleId; + private Long roleId; } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java index 8c95d49..aa126fd 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java @@ -27,6 +27,7 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.ArrayUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -73,6 +74,9 @@ @Resource private TokenService tokenService; + + @Autowired + private ISysMenuService menuService; @@ -122,12 +126,21 @@ } user.setCreateBy(SecurityUtils.getUsername()); user.setPassword(SecurityUtils.encryptPassword("a123456")); - user.setRoleType(1); + user.setRoleType(sysUser1.getRoleType()); userService.insertUser(user); SysUserRole sysUserRole = new SysUserRole(); sysUserRole.setRoleId(user.getRoleId()); sysUserRole.setUserId(user.getUserId()); userRoleService.insertSysUserRole(sysUserRole); + //添加门店员工关系数据 + if(2 == user.getRoleType()){ + UserShop userShop = new UserShop(); + userShop.setUserId(user.getUserId()); + userShop.setShopId(user.getObjectId()); + userShop.setRoleType(2); + userShop.setRoleId(user.getRoleId()); + userShopService.save(userShop); + } return AjaxResult.success(); } @@ -215,6 +228,17 @@ user.setUpdateBy(SecurityUtils.getUsername()); user.setUpdateTime(new Date()); userService.updateUser(user); + + //添加门店员工关系数据 + if(2 == user.getRoleType()){ + userShopService.remove(new LambdaQueryWrapper<UserShop>().eq(UserShop::getUserId, user.getUserId()).eq(UserShop::getShopId, user.getObjectId())); + UserShop userShop = new UserShop(); + userShop.setUserId(user.getUserId()); + userShop.setShopId(user.getObjectId()); + userShop.setRoleType(2); + userShop.setRoleId(user.getRoleId()); + userShopService.save(userShop); + } return success(); } @@ -312,7 +336,7 @@ } // 角色集合 Set<String> roles = permissionService.getRolePermission(sysUser); - // 权限集合 + // 权限集合getRolePermission Set<String> permissions = permissionService.getMenuPermission(sysUser); LoginUser sysUserVo = new LoginUser(); sysUserVo.setSysUser(sysUser); @@ -592,7 +616,7 @@ @ResponseBody @GetMapping("/switchShop") @ApiOperation(value = "切换门店", tags = {"门店后台-首页"}) - public R switchShop(@PathVariable("shopId") Integer shopId){ + public R<Set<String>> switchShop(@PathVariable("shopId") Integer shopId){ Long userid = tokenService.getLoginUser().getUserid(); UserShop one = userShopService.getOne(new LambdaQueryWrapper<UserShop>().eq(UserShop::getUserId, userid).eq(UserShop::getShopId, shopId)); if(null == one){ @@ -601,6 +625,9 @@ SysUser sysUser = userService.getById(userid); sysUser.setObjectId(shopId); userService.updateById(sysUser); - return R.ok(); + //查询用户权限列表 + Long roleId = one.getRoleId(); + Set<String> rolePerms = menuService.selectMenuPermsByRoleId(roleId); + return R.ok(rolePerms); } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java index 4296bad..7f72f37 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.system.api.domain.SysRole; +import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.domain.SysUserRole; import java.util.List; @@ -36,7 +37,7 @@ * @param userId 用户ID * @return 权限列表 */ - public Set<String> selectRolePermissionByUserId(Long userId); + public Set<String> selectRolePermissionByUserId(SysUser user); /** * 查询所有角色 diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPermissionServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPermissionServiceImpl.java index 099fd79..569182e 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPermissionServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPermissionServiceImpl.java @@ -1,13 +1,17 @@ package com.ruoyi.system.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.system.api.domain.SysRole; import com.ruoyi.system.api.domain.SysUser; +import com.ruoyi.system.api.model.UserShop; import com.ruoyi.system.service.ISysMenuService; import com.ruoyi.system.service.ISysPermissionService; import com.ruoyi.system.service.ISysRoleService; +import com.ruoyi.system.service.UserShopService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -25,6 +29,9 @@ @Autowired private ISysMenuService menuService; + + @Resource + private UserShopService userShopService; /** * 获取角色数据权限 @@ -43,7 +50,7 @@ } else { - roles.addAll(roleService.selectRolePermissionByUserId(user.getUserId())); + roles.addAll(roleService.selectRolePermissionByUserId(user)); } return roles; } @@ -78,7 +85,12 @@ } else { - perms.addAll(menuService.selectMenuPermsByUserId(user.getUserId())); + if(user.getRoleType() == 1){ + perms.addAll(menuService.selectMenuPermsByUserId(user.getUserId())); + }else{ + UserShop one = userShopService.getOne(new LambdaQueryWrapper<UserShop>().eq(UserShop::getUserId, user.getUserId()).eq(UserShop::getShopId, user.getObjectId())); + perms.addAll(menuService.selectMenuPermsByRoleId(one.getRoleId())); + } } } return perms; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java index 9d8129a..6182a9f 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java @@ -1,5 +1,6 @@ package com.ruoyi.system.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.constant.UserConstants; import com.ruoyi.common.core.exception.ServiceException; @@ -9,6 +10,7 @@ import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.system.api.domain.SysRole; import com.ruoyi.system.api.domain.SysUser; +import com.ruoyi.system.api.model.UserShop; import com.ruoyi.system.domain.SysRoleDept; import com.ruoyi.system.domain.SysRoleMenu; import com.ruoyi.system.domain.SysUserRole; @@ -17,10 +19,12 @@ import com.ruoyi.system.mapper.SysRoleMenuMapper; import com.ruoyi.system.mapper.SysUserRoleMapper; import com.ruoyi.system.service.ISysRoleService; +import com.ruoyi.system.service.UserShopService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.*; /** @@ -41,6 +45,12 @@ @Autowired private SysRoleDeptMapper roleDeptMapper; + + @Resource + private UserShopService userShopService; + + + /** * 根据条件分页查询角色数据 @@ -82,12 +92,22 @@ * @return 权限列表 */ @Override - public Set<String> selectRolePermissionByUserId(Long userId) { - List<SysRole> perms = roleMapper.selectRolePermissionByUserId(userId); + public Set<String> selectRolePermissionByUserId(SysUser user) { Set<String> permsSet = new HashSet<>(); - for (SysRole perm : perms) { - if (StringUtils.isNotNull(perm)) { - permsSet.addAll(Arrays.asList(perm.getRoleKey().trim().split(","))); + if(user.getRoleType() == 1){ + List<SysRole> perms = roleMapper.selectRolePermissionByUserId(user.getUserId()); + for (SysRole perm : perms) { + if (StringUtils.isNotNull(perm)) { + permsSet.addAll(Arrays.asList(perm.getRoleKey().trim().split(","))); + } + } + }else{ + List<UserShop> list = userShopService.list(new LambdaQueryWrapper<UserShop>().eq(UserShop::getUserId, user.getUserId()) + .eq(UserShop::getShopId, user.getObjectId())); + for (UserShop userShop : list) { + if (StringUtils.isNotNull(userShop)) { + permsSet.add(userShop.getRoleId() + ""); + } } } return permsSet; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java index 5c50770..291ae90 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java @@ -14,6 +14,7 @@ import com.ruoyi.system.api.domain.SysDept; import com.ruoyi.system.api.domain.SysRole; import com.ruoyi.system.api.domain.SysUser; +import com.ruoyi.system.api.model.UserShop; import com.ruoyi.system.api.query.ChangeUserQuery; import com.ruoyi.system.domain.SysPost; import com.ruoyi.system.domain.SysUserPost; @@ -30,10 +31,7 @@ import javax.annotation.Resource; import javax.validation.Validator; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; /** @@ -78,6 +76,9 @@ @Lazy @Resource private ISysDeptService deptService; + + @Resource + private UserShopService userShopService; /** @@ -449,7 +450,20 @@ // userRoleMapper.deleteUserRole(userIds); // // 删除用户与岗位关联 // userPostMapper.deleteUserPost(userIds); - return userMapper.deleteUserByIds(userIds); + int i = userMapper.deleteUserByIds(userIds); + List<SysUser> sysUsers = this.listByIds(Arrays.asList(userIds)); + for (SysUser user : sysUsers) { + if(2 == user.getRoleType()){ + userShopService.remove(new LambdaQueryWrapper<UserShop>().eq(UserShop::getUserId, user.getUserId()).eq(UserShop::getShopId, user.getObjectId())); + UserShop userShop = new UserShop(); + userShop.setUserId(user.getUserId()); + userShop.setShopId(user.getObjectId()); + userShop.setRoleType(2); + userShop.setRoleId(user.getRoleId()); + userShopService.save(userShop); + } + } + return i; } /** diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java index 859cc37..92fda6a 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java @@ -127,6 +127,7 @@ userShop.setUserId(sysUser.getUserId()); userShop.setShopId(shop.getId()); userShop.setRoleType(1); + userShop.setRoleId(2L); userShopClient.saveUserShop(userShop); } }else{ @@ -150,6 +151,7 @@ userShop.setUserId(userId); userShop.setShopId(shop.getId()); userShop.setRoleType(1); + userShop.setRoleId(2L); userShopClient.saveUserShop(userShop); } return R.ok(); @@ -243,6 +245,7 @@ userShop.setUserId(sysUser.getUserId()); userShop.setShopId(shop.getId()); userShop.setRoleType(1); + userShop.setRoleId(2L); userShopClient.saveUserShop(userShop); } }else{ @@ -266,6 +269,7 @@ userShop.setUserId(userId); userShop.setShopId(shop.getId()); userShop.setRoleType(1); + userShop.setRoleId(2L); userShopClient.saveUserShop(userShop); } return R.ok(); -- Gitblit v1.7.1