package com.njcn.rdms.module.system.api.permission.dto;

import io.swagger.v3.oas.annotations.media.ArraySchema;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.util.Collections;
import java.util.List;
import java.util.Set;

@Schema(description = "RPC 服务 - 对象作用域角色权限聚合 Response DTO")
@Data
public class ObjectRolePermissionRespDTO {

    @Schema(description = "当前查询 roleId 对应的角色摘要，不表示登录态上下文里的当前用户角色")
    private ObjectRoleRespDTO currentRole;

    @ArraySchema(schema = @Schema(description = "当前查询角色在指定 scopeType/objectType 下可消费的已启用菜单资源明细；允许包含目录、菜单、按钮，业务侧可按 type 再拆分导航或按钮"))
    private List<ObjectMenuRespDTO> menus;

    @ArraySchema(schema = @Schema(description = "基于同一批有效菜单资源归一化提取出的权限标识集合，供对象权限校验直接消费", example = "project:product:query"))
    private Set<String> permissions;

    /**
     * 非主角色的中文名列表（多角色场景）。单角色或无角色时为空数组。
     * 前端展示"创建者"等次要角色标签时读这个字段；权限判断仍按 currentRole.code。
     */
    @ArraySchema(schema = @Schema(description = "非主角色的中文名列表，多角色场景使用", example = "创建者"))
    private List<String> additionalRoleNames = Collections.emptyList();

}
