feat: 代理商子账号的菜单权限跟着主账号走,但是排除掉组织管理菜单

This commit is contained in:
曹鹏飞 2025-06-23 15:03:45 +08:00
parent 3859e9a8c9
commit d3718dc2eb
3 changed files with 18 additions and 2 deletions

View File

@ -120,6 +120,13 @@ public class AppController extends ControllerBase {
@GetMapping("getPermissionMenus")
public ApiResult<List<MenuVO>> getPermissionMenus() {
VUtils.trueThrow(!SaTokenAppUtil.isLogin()).throwMessage(STATE.LoginError, "请重新登录");
if (StrUtil.equals(AppUserUtil.getFrom(), "app") && !AppUserUtil.isPrimary()) {
Integer primaryUserId = appUserService.getPrimaryByChild(AppUserUtil.getUserId());
List<MenuVO> menus = adminRoleService.getMenusByRoleCodes(AppUserUtil.getFrom(), primaryUserId, "app");
menus.removeIf(menu -> StrUtil.equals(menu.getComponent(), "identityManagement"));
return ApiResult.success(menus);
} else {
return ApiResult.success(adminRoleService.getMenusByRoleCodes(AppUserUtil.getFrom(), AppUserUtil.getUserId(), "app"));
}
}
}

View File

@ -66,4 +66,6 @@ public interface IAppUserService extends IService<AppUser> {
List<AreaSimpleVO> getSimpleAreas(Integer userId);
void authorizeRole(@Valid AuthorizeRoleRequest request);
Integer getPrimaryByChild(Integer userId);
}

View File

@ -305,6 +305,13 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
}
}
@Override
public Integer getPrimaryByChild(Integer userId) {
AppUser user=getById(userId);
AppUser primaryUser=getPrimaryByCompanyId(user.getCompanyId());
return primaryUser.getId();
}
private void bindChildren1(AreaSimpleVO vo) {
List<AppArea> datas = appAreaService.lambdaQuery().eq(AppArea::getParentId, vo.getId()).eq(AppArea::getEnable, true).list();
List<AreaSimpleVO> vos = datas.stream().map(d -> new AreaSimpleVO().setId(d.getId()).setName(d.getName())).collect(Collectors.toList());