应用授权修订
ci-userbase-service / build-and-push (push) Successful in 1m13s

This commit is contained in:
chenxing
2026-08-11 11:52:10 +08:00
parent a0aa1cfb35
commit ed07f380da
3 changed files with 49 additions and 42 deletions
@@ -3,6 +3,7 @@ package com.yunhai.userbase.controller.oapi;
import com.yunhai.platform.utils.model.BoaGroup;
import com.yunhai.platform.utils.model.BoaModule;
import com.yunhai.platform.utils.model.BoaUser;
import com.yunhai.userbase.config.Config;
import com.yunhai.userbase.model.groupauthz.UserPermissionAppVo;
import com.yunhai.userbase.model.groupauthz.UserPermissionCategoryVo;
import com.yunhai.userbase.model.groupauthz.UserPermissionModuleVo;
@@ -20,16 +21,18 @@ import java.util.Collections;
import java.util.List;
/**
* 用户中心开放接口:供其他业务服务经 yh-app-auth 签名调用({@code /open/api/user/...})。<br><br>
* 路径与基础平台 {@code DefaultUserCenterClient} 硬编码的契约严格一致:
* {@code GET /open/api/user/byId?id=}、{@code /byLoginName?loginName=}、{@code /byPhone?phone=}、
* {@code /open/api/user/modules?userId=&schId=}。<br>
* 用户中心开放接口:供其他业务服务经 yh-app-auth 签名调用({@code /oapi/user/...})。<br>
* <br>
* 路径复用 {@link Config#OPEN_API_PATH} 统一前缀,与基础平台 {@code DefaultUserCenterClient}
* 硬编码的契约严格一致:
* {@code GET /oapi/user/byId?id=}、{@code /byLoginName?loginName=}、{@code /byPhone?phone=}、
* {@code /oapi/user/modules?userId=&schId=}。<br>
* 接口本身不做验签——签名由 {@code OpenApiAuthEnforceConfiguration} 在过滤器层强制要求,
* 未带 {@code X-App-Key/X-Timestamp/X-Signature} 的请求直接 401。
*/
@RestController
@RequestMapping("/open/api/user/")
public class OpenBaseController {
@RequestMapping(Config.OPEN_API_PATH + "user/")
public class UserController {
@Autowired
private UserCenterService userCenterService;
@@ -68,7 +71,7 @@ public class OpenBaseController {
*/
@GetMapping("modules")
public List<BoaModule> modules(@RequestParam("userId") Integer userId,
@RequestParam(value = "schId", required = false) Integer schId) {
@RequestParam(value = "schId", required = false) Integer schId) {
if (userId == null) {
return Collections.emptyList();
}
@@ -82,7 +85,8 @@ public class OpenBaseController {
}
List<BoaModule> result = new ArrayList<>();
for (UserPermissionCategoryVo category : tree) {
if (category.getApps() == null) continue;
if (category.getApps() == null)
continue;
for (UserPermissionAppVo appVo : category.getApps()) {
String icon = appVo.getPcIcon();
collectModules(appVo.getModules(), icon, result);
@@ -95,8 +99,8 @@ public class OpenBaseController {
* 递归收集已授权模块树到扁平列表,并把应用 PC 图标作为模块的 icon 兜底(BoaModule.icon)。
*/
private void collectModules(List<UserPermissionModuleVo> modules,
String appIcon,
List<BoaModule> collector) {
String appIcon,
List<BoaModule> collector) {
if (modules == null || modules.isEmpty()) {
return;
}