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

import com.yc.ship.framework.common.pojo.PageParam;
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_HOUR_MINUTE_SECOND;


@Schema(description = "管理后台 - 退款批次分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class RefundPageReqVO extends PageParam {

    @Schema(description = "订单ID", example = "12592")
    private Long orderId;

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

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

    @Schema(description = "退款渠道")
    private Integer refundChannel;

    @Schema(description = "门店ID", example = "29017")
    private Long storeId;

    @Schema(description = "门店名称", example = "王五")
    private String storeName;

    @Schema(description = "设备ID", example = "20604")
    private Long machineId;

    @Schema(description = "设备名称", example = "王五")
    private String machineName;

    @Schema(description = "退票方式：0正常退票，1强制退票")
    private Integer refundMethod;

    @Schema(description = "退款方式0:现金，1:微信，2:支付宝", example = "1")
    private Integer refundType;

    @Schema(description = "退款原因", example = "不香")
    private String refundReason;

    @Schema(description = "退款人")
    private String refundUser;

    @Schema(description = "退款人ID集合")
    private List<Long> refundUserId;

    @Schema(description = "支付平台退款单号，最近一次")
    private String refundNo;

    @Schema(description = "退款金额")
    private BigDecimal refundAmount;

    @Schema(description = "退票状态：0待退票，1审核中，2审核拒绝，3审核通过，4已退票，5已退款，6退款失败，99已取消", example = "1")
    private List<Integer> refundStatus;

    @Schema(description = "退款次数", example = "4150")
    private Integer refundCount;

    @Schema(description = "退款时间")
    private String refundTime;

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

    @Schema(description = "来源ID")
    private String sourceId;

    @Schema(description = "联系电话")
    private String mobile;

    @Schema(description = "出行时间")
    private String travelDate;

    @Schema(description = "开始时间")
    private String travelDateStart;

    @Schema(description = "结束时间")
    private String travelDateEnd;

    @Schema(description = "退款开始时间")
    private String refundTimeStart;

    @Schema(description = "退款结束时间")
    private String refundTimeEnd;

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

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

    @Schema(description = "船ID")
    private Long shipId;

    @Schema(description = "线路ID")
    private Long routeId;

    @Schema(description = "航次ID")
    private Long voyageId;

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

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

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

}