package com.yc.ship.module.trade.controller.admin.order.vo.otc;

import com.alibaba.excel.annotation.ExcelProperty;
import com.yc.ship.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.Hidden;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

import static com.yc.ship.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
import static com.yc.ship.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;


@Schema(description = "管理后台 - 交易订单分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class TradeOrderPageReqVO extends PageParam {

    @Schema(description = "订单id")
    private String orderId;

    @Schema(description = "门店id")
    private Long storeId;

    @Schema(description = "门店id")
    private List<Long> storeIds;

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

    @Schema(description = "团号")
    private String groupNo;

    @Schema(description = "关联订单号")
    @ExcelProperty("关联订单号")
    private String bindOrderNo;

    @Schema(description = "第三方订单号")
    private String externalOrderNo;

    @Schema(description = "第三方原始订单号")
    private String externalOriginOrderNo;

    @Schema(description = "第三方订单号列表")
    private List<String> externalOrderNos;

    @Schema(description = "时间方案", example = "12322")
    private Long routePlanId;

    @Schema(description = "销售方式")
    private String sellMethod;

    @Schema(description = "销售来源", example = "31758")
    private String sourceId;

    @Schema(description = "来源名称", example = "张三")
    private String sourceName;

    @Schema(description = "销售员ID", example = "23415")
    private Long sellerId;

    @Schema(description = "会员ID", example = "23415")
    private String memberId;

    @Schema(description = "订单金额")
    private BigDecimal amount;

    @Schema(description = "支付时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private String travelDate;

    @Schema(description = "支付时间", example = "")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private String travelDateStart;

    @Schema(description = "支付时间", example = "")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private String travelDateEnd;

    @Schema(description = "下单时间", example = "")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private String orderDateStart;

    @Schema(description = "下单时间", example = "")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private String orderDateEnd;

    @Schema(description = "退款时间", example = "")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private String orderRefundDateStart;

    @Schema(description = "退款时间", example = "")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private String orderRefundDateEnd;

    @Schema(description = "下单时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
    private String orderDate;

    @Schema(description = "支付方式")
    private Integer payType;

    @Schema(description = "支付金额")
    private BigDecimal payAmount;

    @Schema(description = "订单状态", example = "2")
    private List<Integer> orderStatus;

    @Schema(description = "导出的表头", example = "2")
    private List<String> headers;

    @Schema(description = "调度状态", example = "2")
    private Integer dispatchStatus;

    @Schema(description = "支付状态", example = "2")
    private Integer paymentStatus;

    @Schema(description = "支付时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime paymentDate;

    @Schema(description = "创建时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime createTime;

    @Schema(description = "证件号")
    private String credentialNo;

    @Schema(description = "联系人")
    private String contactName;

    @Schema(description = "联系人手机号")
    private String mobile;

    @Schema(description = "转交分销商ID")
    private Long transDistributorId;

    @Schema(description = "转交分销商名称")
    private String transDistributorName;

    @Schema(description = "转交金额")
    private BigDecimal transAmount;


    @Schema(description = "凭证码（票号）")
    private String voucherCode;

    @Schema(description = "是否完全支付 0 否 1是")
    private Integer isFullPay;

    @Schema(description = "是否已评论")
    private Integer isComment;

    @Schema(description = "产品名称")
    private String productName;

    @Schema(description = "来源名称", example = "张三")
    private Long businessId;

    @Schema(description = "操作员", example = "张三")
    private String sellerName;

    @Schema(description = "业务员", example = "张三")
    private String businessName;

    @Schema(description = "业绩共享员", example = "张三")
    private String shareName;

    @Schema(description = "分销商分组ID", example = "张三")
    private String otaCateId;

    @Schema(description = "分销商ID", example = "张三")
    private String otaId;

    @Schema(description = "旅行社类型", example = "0自营 1外部")
    @Hidden
    private Integer otcType;

    @Schema(description = "游客姓名", example = "张三")
    private String userName;

    @Schema(description = "租户ID", example = "张三")
    private Long tenantId;

    @Schema(description = "出行状态", example = "2")
    private Integer travelStatus;

    @Schema(description = "分销商分组ID", example = "张三")
    private List<String> otaCateIds;

    @Schema(description = "时间方案列")
    private List<Long> planIds;

    @Schema(description = "分组列")
    private List<Long> cateIds;

    @Schema(description = "财务标签", example = "张三")
    private String productTag;

    @Schema(description = "运营标签", example = "张三")
    private String productTag2;

    @Schema(description = "业务标签", example = "张三")
    private String productTag3;

    @Schema(description = "标签4", example = "张三")
    private String productTag4;

}
