package org.xyzh.common.vo;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import org.xyzh.common.dto.OrderField;

import com.alibaba.fastjson2.annotation.JSONField;
import io.swagger.v3.oas.annotations.media.Schema;

import lombok.Data;

/**
 * @description    基础视图对象
 * @filename    BaseVO.java
 * @author    yslg
 * @copyright yslg
 * @since 2025-11-05
 */
@Data
@Schema(description = "基础视图对象")
public class BaseVO implements Serializable {
    private static final long serialVersionUID = 1L;
    
    @Schema(description = "操作流水号")
    private String optsn;
    
    @Schema(description = "创建人")
    private String creator;

    @Schema(description = "创建人名称")
    private String creatorName;
    
    @Schema(description = "更新人")
    private String updater;

    @Schema(description = "更新人名称")
    private String updaterName;
    
    @Schema(description = "部门路径")
    private String deptPath;
    
    @Schema(description = "备注")
    private String remark;

    @Schema(description = "创建时间", format = "date-time")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    @Schema(description = "更新时间", format = "date-time")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    @Schema(description = "删除时间", format = "date-time")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date deleteTime;
    
    @Schema(description = "是否已删除", defaultValue = "false")
    private Boolean deleted = false;

    @Schema(description = "数量限制")
    private Integer limit;
    
    @Schema(description = "开始时间")
    private Date startTime;

    @Schema(description = "结束时间")
    private Date endTime;

    @Schema(description = "排序字段")
    private List<OrderField> orderFields;
}

