package com.yami.shop.bean.vo.xsb;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

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


/**
 * 推送到星闪豹退款订单请求参数
 * @author kaur
 */
@Data
public class RefundOrderPushVo {

    /**
     * 市民请集合退款编号
     */
    private String refundNumber;
    /**
     * 店铺ID
     */
    private Long shopId;
    /**
     * 第三方店铺ID
     */
    private Long thirdShopId;

    /**
     * 市民请集合买家ID
     */
    private Long memberId;
    /**
     * 市民请集合订单单号
     */
    private String orderNumber;
    /**
     * 市民请集合退款单类型（1:整单退款,2:单个物品退款）
     */
    private Integer refundType;
    /**
     * 市民请集合退款单状态 10:待审核 20:处理中 30:驳回退款 40:撤销退款 60:待退货（一审同意） 65:待确认收货（二审待审核） 70:退款完成
     */
    private Integer returnMoneySts;
    /**
     * 市民请集合退款金额
     */
    private BigDecimal refundAmount;
    /**
     * 市民请集合退款编号市民请集合申请类型:1,仅退款,2退款退货,5差价退款
     */
    private Integer applyType;
    /**
     * 市民请集合是否接收到商品(1:已收到,0:未收到)
     */
    private Integer isReceiver;
    /**
     * 市民请集合申请原因
     */
    private String buyerReason;
    /**
     * 市民请集合申请说明
     */
    private String buyerDesc;
    /**
     * 市民请集合联系方式（退款时留下的手机号码）
     */
    private String buyerMobile;
    /**
     * 市民请集合拒绝原因
     */
    private String rejectMessage;
    /**
     * 市民请集合卖家备注
     */
    private String sellerMsg;
    /**
     * 市民请集合申请时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(format  = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime applyTime;
    /**
     * 市民请集合发货时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(format  = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime shipTime;
    /**
     * 市民请集合收货时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(format  = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime receiveTime;
    /**
     * 市民请集合撤销时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(format  = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime cancelTime;
    /**
     * 市民请集合订单运费
     */
    private BigDecimal freightAmount;
    /**
     * 该退款单是否处理完成
     */
    private Integer handler;
    /**
     * 是否填写了退货物流信息(1:已填写,0:未填写)
     */
    private Integer isReturnLogistics;
    /**
     * 退款总金额
     */
    private BigDecimal refundTotalMoney;
    /**
     * 收货人姓名
     */
    private String consigneeName;
    /**
     * 收货人电话
     */
    private String consigneeMobile;
    /**
     * 收货人地址
     */
    private String consigneeAddress;
    /**
     * 商品信息
     */
    private List<OmsOrderRefundSkuVo> orderRefundSkuList;
    /**
     * 订单id
     */
    private Long orderId;
    /**
     * 文件凭证json
     */
    private String photoFiles;

    /**
     * 退款数量
     */
    private Integer  GoodsNum;

    /**
     * 渠道类型 1-市民请集合
     */
    private Integer channelType;

    /**
     * 是否商家取消订单触发的退款（true时跳过CLOSE状态检查，直接创建状态70的退款单）
     */
    private Boolean merchantCancel;

    @Override
    public String toString() {
        return "RefundOrderPushVo{" +
                "refundNumber='" + refundNumber + '\'' +
                ", shopId=" + shopId +
                ", thirdShopId=" + thirdShopId +
                ", memberId=" + memberId +
                ", orderNumber='" + orderNumber + '\'' +
                ", refundType=" + refundType +
                ", returnMoneySts=" + returnMoneySts +
                ", refundAmount=" + refundAmount +
                ", applyType=" + applyType +
                ", isReceiver=" + isReceiver +
                ", buyerReason='" + buyerReason + '\'' +
                ", buyerDesc='" + buyerDesc + '\'' +
                ", buyerMobile='" + buyerMobile + '\'' +
                ", rejectMessage='" + rejectMessage + '\'' +
                ", sellerMsg='" + sellerMsg + '\'' +
                ", applyTime=" + applyTime +
                ", shipTime=" + shipTime +
                ", receiveTime=" + receiveTime +
                ", cancelTime=" + cancelTime +
                ", freightAmount=" + freightAmount +
                ", handler=" + handler +
                ", isReturnLogistics=" + isReturnLogistics +
                ", refundTotalMoney=" + refundTotalMoney +
                ", consigneeName='" + consigneeName + '\'' +
                ", consigneeMobile='" + consigneeMobile + '\'' +
                ", consigneeAddress='" + consigneeAddress + '\'' +
                ", orderRefundSkuList=" + orderRefundSkuList +
                ", orderId=" + orderId +
                ", photoFiles='" + photoFiles + '\'' +
                ", GoodsNum=" + GoodsNum +
                ", channelType=" + channelType +
                '}';
    }
}
