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();