package com.auth.model.base.dto;

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

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Schema(name = "PermissionDTO-系统权限传输对象", title = "系统权限", description = "系统权限的DTO对象")
public class PermissionDto {

    @Schema(name = "parentId", title = "父级id")
    private Long parentId;

    @Schema(name = "powerCode", title = "权限编码")
    private String powerCode;

    @Schema(name = "powerName", title = "权限名称")
    private String powerName;

    @Schema(name = "requestUrl", title = "请求路径")
    private String requestUrl;

    @Schema(name = "requestMethod", title = "请求方法")
    private String requestMethod;

    @Schema(name = "isDeleted", title = "是否删除，0-未删除，1-已删除")
    private Boolean isDeleted;

    @Schema(name = "permissionCode", title = "权限编码(唯一标识)")
    private String permissionCode;

    @Schema(name = "permissionName", title = "权限名称")
    private String permissionName;

    @Schema(name = "permissionType", title = "权限类型(1=菜单权限,2=API权限,3=按钮权限,4=数据权限)")
    private Integer permissionType;

    @Schema(name = "url", title = "请求路径(支持Ant风格)")
    private String url;

    @Schema(name = "method", title = "请求方法(GET,POST,PUT,DELETE等)")
    private String method;

    @Schema(name = "permissionLevel", title = "权限层级(从1开始)")
    private Integer permissionLevel;

    @Schema(name = "permissionPath", title = "权限路径(存储所有父级ID，用逗号分隔)")
    private String permissionPath;

    @Schema(name = "orderNum", title = "显示顺序")
    private Integer orderNum;

    @Schema(name = "status", title = "状态(0=禁用,1=启用)")
    private Integer status;

    @Schema(name = "remark", title = "备注说明")
    private String remark;

}