/**
 * @description 菜单相关类型定义
 * @author yslg
 * @since 2025-10-06
 */

import { BaseDTO } from '../base';
import { MenuType } from '../enums';

/**
 * 系统菜单
 */
export interface SysMenu extends BaseDTO {
  /** 菜单ID */
  menuID?: string;
  /** 父菜单ID */
  parentID?: string;
  /** 菜单名称 */
  name?: string;
  /** 菜单描述 */
  description?: string;
  /** 菜单URL/路径 */
  url?: string;
  /** 菜单组件 */
  component?: string;
  /** 菜单布局 */
  layout?: string;
  /** 菜单布局 */
  /** 菜单图标 */
  icon?: string;
  /** 菜单顺序 */
  orderNum?: number;
  /** 菜单类型 0-侧边栏 1-导航栏 2-按钮 */
  type?: MenuType;
  /** 创建人 */
  creator?: string;
  /** 更新人 */
  updater?: string;
  /** 子菜单列表（前端使用） */
  children?: SysMenu[];
}

/**
 * 菜单权限关联
 */
export interface SysMenuPermission extends BaseDTO {
  /** 菜单ID */
  menuID?: string;
  /** 权限ID */
  permissionID?: string;
}

/**
 * 菜单树节点（用于树形展示）
 */
export interface MenuTreeNode extends SysMenu {
  /** 子节点 */
  children?: MenuTreeNode[];
  /** 是否展开 */
  expanded?: boolean;
  /** 是否选中 */
  checked?: boolean;
}

