package org.jeecg.modules.system.app.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.jeecg.modules.app.vo.AppGameScheduleVO;
import org.jeecg.modules.system.app.dto.VerificationRecordDTO;
import org.jeecg.modules.system.app.entity.AppOrderProInfo;
import org.springframework.format.annotation.DateTimeFormat;

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

@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@AllArgsConstructor
@NoArgsConstructor
@Schema(description = "订单详情响应对象")
public class AppOrderInfoVO implements Serializable {
    private static final long serialVersionUID = 1L;

    @Schema(description = "ID")
    private String id;

    @Schema(description = "订单号")
    private String orderCode;

    @Schema(description = "订单状态")
    private Integer orderStatus;

    @Schema(description = "订单类型：0-学校 1-包场 2-无固定场 3-个人赛 4-团队赛 5-课程")
    private Integer orderType;

    @JsonFormat(timezone = "GMT+8",shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Schema(description = "下单时间")
    private Date createTime;

    @JsonFormat(timezone = "GMT+8",shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Schema(description = "付款时间")
    private Date payTime;

    @Schema(description = "地点")
    private String siteName;

    @Schema(description = "地址")
    private String address;

    @Schema(description = "买家昵称")
    private String nikeName;

    @Schema(description = "买家电话")
    private String phoneNumber;

    @Schema(description = "商品总额")
    private BigDecimal totalPrice;

    @Schema(description = "试听优惠金额")
    private BigDecimal sDiscounts;

    @Schema(description = "团购优惠金额")
    private BigDecimal tDiscounts;

    @Schema(description = "实际付款")
    private BigDecimal price;

    @Schema(description = "订单信息")
    private List<AppOrderProInfo> proInfoList;

    @Schema(description = "使用记录")
    private List<AppIsinVO> isinList;

    @Schema(description = "核销记录")
    private List<VerificationRecordDTO> verificationRecordDTOList;

    @Schema(description = "参赛资质")
    private String gameCertification;

    @Schema(description = "赛程安排")
    private List<AppGameScheduleVO> gameScheduleVOList;
}
