package com.example.demo.model;

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

import java.util.List;

/**
 * 权限树节点模型。
 *
 * <p>用于构建菜单/权限的树形结构，支持层级嵌套。</p>
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Schema(description = "权限树节点")
public class TreeNode {

    /** 节点ID */
    @Schema(description = "节点ID")
    private String id;

    /** 节点名称 */
    @Schema(description = "节点名称")
    private String label;

    /** 节点类型：MENU-菜单, BUTTON-按钮, PERMISSION-权限 */
    @Schema(description = "节点类型：MENU-菜单, BUTTON-按钮, PERMISSION-权限")
    private String type;

    /** 权限标识 */
    @Schema(description = "权限标识")
    private String permissionCode;

    /** 父节点ID */
    @Schema(description = "父节点ID")
    private String parentId;

    /** 路径（URL） */
    @Schema(description = "路径（URL）")
    private String path;

    /** 图标 */
    @Schema(description = "图标")
    private String icon;

    /** 排序号 */
    @Schema(description = "排序号")
    private Integer sortOrder;

    /** 子节点列表 */
    @Schema(description = "子节点列表")
    private List<TreeNode> children;
}
