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