“mitao”
2026-02-26 b8ba284c899a5d04724e76dab7dc1f9c864a2413
fix(management):超级管理员登录权限修改
4个文件已修改
36 ■■■■■ 已修改文件
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/ISysPermissionService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysLoginService.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysPermissionServiceImpl.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpSystemSettingController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/ISysPermissionService.java
@@ -26,5 +26,5 @@
     * 
     * @return 菜单权限信息
     */
    List<SysMenu> getMenuPermission(SysUser user);
    Set<String> getMenuPermission(SysUser user);
}
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysLoginService.java
@@ -69,11 +69,11 @@
        // 角色集合
        Set<String> roles = permissionService.getRolePermission(user);
        // 权限集合
        List<SysMenu> menuPermission = permissionService.getMenuPermission(user);
        Set<String> menuPermission = permissionService.getMenuPermission(user);
        LoginUser userInfo = new LoginUser();
        userInfo.setSysUser(user);
        userInfo.setRoles(roles);
        userInfo.setPermissions(menuPermission.stream().map(item->item.getId().toString()).collect(Collectors.toSet()));
        userInfo.setPermissions(menuPermission);
        if (StringUtils.isNull(user)) {
            recordLogService.recordLogininfor(request, null, username, Constants.LOGIN_FAIL_STATUS, "登录用户不存在");
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysPermissionServiceImpl.java
@@ -4,6 +4,7 @@
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import com.xiaopeng.account.service.ISysGroupMenuService;
import com.xiaopeng.account.service.ISysPermissionService;
@@ -73,16 +74,19 @@
     * @return 菜单权限信息
     */
    @Override
    public List<SysMenu> getMenuPermission(SysUser user)
    public Set<String> getMenuPermission(SysUser user)
    {
        List<SysMenu> menus = new ArrayList<>();
        Set<String> perms = new HashSet<>();
        // 管理员拥有所有权限
        if (user.isAdmin()) {
            perms.add("*:*:*");
        } else {
        try {
            // 1. 根据 userId 查询 sys_user_role 获取 roleId
            SysUserRole userRole = userRoleService.selectSysUserRoleByUserId(user.getId());
            if (userRole == null || userRole.getRoleId() == null) {
                log.warn("用户[{}]未分配角色", user.getId());
                return menus;
                    return perms;
            }
            Long roleId = userRole.getRoleId();
@@ -90,20 +94,20 @@
            Long groupId = roleService.selectGroupIdByRoleId(roleId);
            if (groupId == null) {
                log.warn("角色[{}]未关联权限组", roleId);
                return menus;
                    return perms;
            }
            // 3. 根据 groupId 查询 sys_group_menu 获取 menuId 列表
            List<Long> menuIds = groupMenuService.selectMenuIdsByGroupId(groupId);
            if (menuIds == null || menuIds.isEmpty()) {
                log.warn("权限组[{}]未配置菜单权限", groupId);
                return menus;
                    return perms;
            }
            // 4. 通过 Feign 调用 operation 服务,根据 menuId 列表获取菜单列表
            R<List<SysMenu>> result = sysMenuClient.getMenusByMenuIds(menuIds);
            if (R.isSuccess(result) && result.getData() != null) {
                menus = result.getData();
                    perms = result.getData().stream().map(item -> item.getId().toString()).collect(Collectors.toSet());
            } else {
                log.error("调用菜单服务获取菜单列表失败: {}", result != null ? result.getMsg() : "返回结果为空");
            }
@@ -111,7 +115,10 @@
        } catch (Exception e) {
            log.error("获取用户[{}]菜单权限异常", user.getId(), e);
        }
        }
        return menus;
        return perms;
    }
}
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpSystemSettingController.java
@@ -12,10 +12,7 @@
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
@Slf4j
@Validated
@@ -81,7 +78,7 @@
    }
    @ApiOperation(value = "保存系统配置、热修复", tags = {"管理后台-系统"})
    @GetMapping("/api/v1/systemSetting/save")
    @PostMapping("/api/v1/systemSetting/save")
    public R<?> saveSystemSetting(@RequestBody XpSystemSetting xpSystemSetting){
        xpSystemSettingService.saveSystemSetting(xpSystemSetting);
        return R.ok();