package com.tourism.webadmin.back.vo;

import com.tourism.common.core.base.vo.BaseVo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Map;

/**
 * 拼团设置主表VO视图对象。
 *
 * @author 吃饭睡觉
 * @date 2024-09-06
 */
@Schema(description = "拼团设置主表VO视图对象")
@Data
@EqualsAndHashCode(callSuper = true)
public class TourProjectGroupPurchaseVo extends BaseVo {

    /**
     * 主键id。
     */
    @Schema(description = "主键id")
    private String id;

    /**
     * 项目id。
     */
    @Schema(description = "项目id")
    private String projectId;

    /**
     * 拼团结束时间。
     */
    @Schema(description = "拼团结束时间")
    private LocalDate endTime;

    /**
     * 出行开始时间。
     */
    @Schema(description = "出行开始时间")
    private LocalDate travelStartTime;

    /**
     * 出行结束时间。
     */
    @Schema(description = "出行结束时间")
    private LocalDate travelEndTime;

    /**
     * 拼团状态(0禁用，1启用)。
     */
    @Schema(description = "拼团状态(0禁用，1启用)")
    private Integer state;

    /**
     * 拼团人数上限。
     */
    @Schema(description = "拼团人数上限")
    private Integer maxCount;

    /**
     * 成人价格。
     */
    @Schema(description = "成人价格")
    private BigDecimal adultPrice;

    /**
     * 儿童价格。
     */
    @Schema(description = "儿童价格")
    private BigDecimal childrenPrice;

    /**
     * 显示顺序。
     */
    @Schema(description = "显示顺序")
    private Integer showOrder;

    /**
     * 关联字段(与从表)。
     */
    @Schema(description = "关联字段(与从表)")
    private String code;

    /**
     * 当前拼团的人数。
     */
    @Schema(description = "当前拼团的人数")
    private Integer nowCount;

    /**
     * 拼团是否成功(0.正在拼团;1.成功)。
     */
    @Schema(description = "拼团是否成功(0.正在拼团;1.成功)")
    private Integer success;

    /**
     * 拼团标题。
     */
    @Schema(description = "拼团标题")
    private String title;

    /**
     * 图片url。
     */
    @Schema(description = "图片url")
    private String image;

    /**
     * 价格单位。
     */
    @Schema(description = "价格单位")
    private String priceUnit;

    /**
     * 返利价格/人。
     */
    @Schema(description = "返利价格/人")
    private BigDecimal singleRebate;

    /**
     * projectId 的一对一关联数据对象，数据对应类型为TourismProjectVo。
     */
    @Schema(description = "projectId 的一对一关联数据对象，数据对应类型为TourismProjectVo")
    private Map<String, Object> tourismProject;

    /**
     * projectId 字典关联数据。
     */
    @Schema(description = "projectId 字典关联数据")
    private Map<String, Object> projectIdDictMap;

    /**
     * state 常量字典关联数据。
     */
    @Schema(description = "state 常量字典关联数据")
    private Map<String, Object> stateDictMap;

    /**
     * 距离结束时间的天数。
     */
    @Schema(description = "距离结束时间的天数")
    private String diffDaysToEnd;

    /**
     * success 常量字典关联数据。
     */
    @Schema(description = "success 常量字典关联数据")
    private Map<String, Object> successDictMap;

    /**
     * 当前价格
     */
    @Schema(description = "当前价格")
    private BigDecimal nowPrice;

    /**
     * 当前儿童价格
     */
    @Schema(description = "当前儿童价格")
    private BigDecimal nowChildPrice;

    /**
     * 原价
     */
    @Schema(description = "原价")
    private BigDecimal originPrice;

    /**
     * 成人原价
     */
    @Schema(description = "成人原价")
    private BigDecimal originalPrice;

    /**
     * 下个阶段价格
     */
    @Schema(description = "下个阶段价格")
    private BigDecimal nextPrice;
    /**
     * 距离下个阶段还需要多少人
     */
    @Schema(description = "距离下个阶段还需要多少人")
    private Integer nextStageNum;
}
