Pu Zhibing
2025-01-04 9c7ddd3a1126bdd057300bc9c79e1a83f591212c
修改管理后台权限bug
7个文件已修改
106 ■■■■ 已修改文件
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/UserShop.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPermissionServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
}
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);
    }
}
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);
    /**
     * 查询所有角色
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;
@@ -26,6 +30,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
            {
                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;
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,14 +92,24 @@
     * @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<>();
        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;
    }
    
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;
    }
    
    /**
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();