package com.usky.system.service.vo;

import lombok.Data;

import java.util.ArrayList;
import java.util.List;

/**
 * 菜单关联绑定查询结果
 */
@Data
public class MenuBindingsResult {

    /** 当前菜单ID */
    private Long menuId;

    /** 当前菜单名称 */
    private String menuName;

    /** 当前路由地址 */
    private String path;

    /** 是否存在任意绑定（含子菜单） */
    private boolean hasBinding;

    /** 直接子菜单数量 */
    private int childMenuCount;

    /** 直接子菜单列表 */
    private List<ChildMenuItem> childMenus = new ArrayList<>();

    /** 角色绑定数量 */
    private int roleBindCount;

    /** 角色绑定列表 */
    private List<RoleBindItem> roleBinds = new ArrayList<>();

    /** 租户绑定数量 */
    private int tenantBindCount;

    /** 租户绑定列表 */
    private List<TenantBindItem> tenantBinds = new ArrayList<>();

    /** 平台绑定数量 */
    private int platformBindCount;

    /** 平台绑定列表 */
    private List<PlatformBindItem> platformBinds = new ArrayList<>();

    /** 帮助中心栏目绑定数量 */
    private int hceCategoryCount;

    /** 帮助中心栏目列表 */
    private List<HceCategoryBindItem> hceCategories = new ArrayList<>();

    @Data
    public static class ChildMenuItem {
        private Long menuId;
        private String menuName;
        private String path;
        private String menuType;
    }

    @Data
    public static class RoleBindItem {
        private Long roleId;
        private String roleName;
        private String menuAliasName;
        /** 角色所属租户ID */
        private Integer tenantId;
        /** 角色所属租户名称 */
        private String tenantName;
    }

    @Data
    public static class TenantBindItem {
        private Long tenantId;
        private String tenantName;
        private String menuAliasName;
    }

    @Data
    public static class PlatformBindItem {
        private Long platformId;
        private String platformName;
    }

    @Data
    public static class HceCategoryBindItem {
        private Integer id;
        private String categoryName;
        private Integer menuId;
    }
}
