xuhy
2026-02-26 917e0939866e6198f1b39b062babdfbf3bbb94d4
Merge remote-tracking branch 'origin/master'
4个文件已修改
90 ■■■■■ 已修改文件
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 77 ●●●●● 补丁 | 查看 | 原始文档 | 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,45 +74,51 @@
     * @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 perms;
                }
                Long roleId = userRole.getRoleId();
        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;
                // 2. 根据 roleId 查询 sys_role 获取 groupId
                Long groupId = roleService.selectGroupIdByRoleId(roleId);
                if (groupId == null) {
                    log.warn("角色[{}]未关联权限组", roleId);
                    return perms;
                }
                // 3. 根据 groupId 查询 sys_group_menu 获取 menuId 列表
                List<Long> menuIds = groupMenuService.selectMenuIdsByGroupId(groupId);
                if (menuIds == null || menuIds.isEmpty()) {
                    log.warn("权限组[{}]未配置菜单权限", groupId);
                    return perms;
                }
                // 4. 通过 Feign 调用 operation 服务,根据 menuId 列表获取菜单列表
                R<List<SysMenu>> result = sysMenuClient.getMenusByMenuIds(menuIds);
                if (R.isSuccess(result) && result.getData() != null) {
                    perms = result.getData().stream().map(item -> item.getId().toString()).collect(Collectors.toSet());
                } else {
                    log.error("调用菜单服务获取菜单列表失败: {}", result != null ? result.getMsg() : "返回结果为空");
                }
            } catch (Exception e) {
                log.error("获取用户[{}]菜单权限异常", user.getId(), e);
            }
            Long roleId = userRole.getRoleId();
            // 2. 根据 roleId 查询 sys_role 获取 groupId
            Long groupId = roleService.selectGroupIdByRoleId(roleId);
            if (groupId == null) {
                log.warn("角色[{}]未关联权限组", roleId);
                return menus;
            }
            // 3. 根据 groupId 查询 sys_group_menu 获取 menuId 列表
            List<Long> menuIds = groupMenuService.selectMenuIdsByGroupId(groupId);
            if (menuIds == null || menuIds.isEmpty()) {
                log.warn("权限组[{}]未配置菜单权限", groupId);
                return menus;
            }
            // 4. 通过 Feign 调用 operation 服务,根据 menuId 列表获取菜单列表
            R<List<SysMenu>> result = sysMenuClient.getMenusByMenuIds(menuIds);
            if (R.isSuccess(result) && result.getData() != null) {
                menus = result.getData();
            } else {
                log.error("调用菜单服务获取菜单列表失败: {}", result != null ? result.getMsg() : "返回结果为空");
            }
        } 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();