package cn.pluss.platform.entity;

import cn.pluss.platform.enums.ExtendParam;
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
 * <p>
 * 新的订单表
 * </p>
 *
 * @author Djh
 * @since 2022-03-17
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("tb_pluss_merc_order_new")
public class MercOrderNew implements Serializable {

    /** 待付款 */
    public static final String STATUS_NO_PAY = "00";

    /** 已付款 */
    public static final String STATUS_PAYED = "01";

    /** 退款审核中 */
    public static final String STATUS_REFUNDED = "02";

    /** 已退款 */
    public static final String STATUS_REFUND_CHECKING = "03";

    /** 订单已完成 */
    public static final String STATUS_COMPLETE = "04";

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;


    /**
     * 订单号
     */
    @TableField("orderNo")
    private String orderNo;


    /**
     * 用户id
     */
    @TableField("userId")
    private Long userId;


    /**
     * 支付订单号
     */
    @TableField("transNo")
    private String transNo;


    /**
     * 支付订单号
     */
    @TableField("thirdTransNo")
    private String thirdTransNo;

    /**
     * 收货人姓名
     */
    @TableField("receiver")
    private String receiver;


    /**
     * 收货人手机号
     */
    @TableField("phone")
    private String phone;


    /**
     * 省
     */
    @TableField("province")
    private String province;


    /**
     * 市
     */
    @TableField("city")
    private String city;


    /**
     * 区
     */
    @TableField("district")
    private String district;

    private String areaName;


    /**
     * 详细地址
     */
    @TableField("address")
    private String address;


    /**
     * 备注
     */
    @TableField("remark")
    private String remark;


    /**
     * 订单状态。00：待付款；01：已付款；02：退款审核中；03：已退款；04:已完成
     */
    @TableField("status")
    private String status;


    /**
     * 创建时间
     */
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @TableField(value = "createTime", fill = FieldFill.INSERT)
    private Date createTime;

    /**
     * 创建时间 开始时间
     */
    @TableField(exist = false, condition = "createTime &gt; #{%s}")
    private Date createTimeStart;

    /**
     * 创建时间 截止时间
     */
    @TableField(exist = false, condition = "createTime &lt; #{%s}")
    private Date createTimeEnd;

    /**
     * 创建人id
     */
    @TableField("creator")
    private Long creator;


    /**
     * 更新时间
     */
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @TableField(value = "updateTime", fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

    /**
     * 更新时间 开始时间
     */
    @TableField(exist = false, condition = "updateTime &gt; #{%s}")
    private Date updateTimeStart;

    /**
     * 更新时间 截止时间
     */
    @TableField(exist = false, condition = "updateTime &lt; #{%s}")
    private Date updateTimeEnd;

    /**
     * 更新操作人id
     */
    @TableField("updater")
    private Integer updater;

    /**
     * 支付方式
     */
    @TableField("payType")
    private String payType;

    /**
     * 支付时间
     */
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @TableField("transDt")
    private Date transDt;

    /**
     * 订单金额
     */
    @TableField("orderAmt")
    private BigDecimal orderAmt;

    /**
     * 优惠金额
     */
    @TableField("discountAmt")
    private BigDecimal discountAmt;

    /**
     * 实付金额
     */
    @TableField("actualAmt")
    private BigDecimal actualAmt;

    /**
     * 邮费 针对偏远地区
     */
    @TableField("postage")
    private BigDecimal  postage;

    /**
     * 收款商户号
     */
    @TableField("merchantCode")
    private String merchantCode;

    /**
     * 收款商户名称
     */
    @TableField("merchantName")
    private String merchantName;

    /**
     * 所属通道1：随行付 2：乐刷 3：瑞银信 4银盛 5:原生
     */
    @TableField("channel")
    private Integer channel;

    /**
     * 支付参数
     */
    @TableField("payData")
    private String payData;

    /**
     * 支付用户ID
     */
    @TableField("payUserId")
    private String payUserId;

    public void convert(MerchantOrder order,MerchantBaseInfo merchant) {
        order.setConsumeFee(this.getActualAmt().doubleValue());
        //小程序
        order.setOrderType("9");
        order.setOrderNumber(this.getOrderNo());
        order.setMerchantName(this.getMerchantName());
        order.setMerchantCode(this.getMerchantCode());
        if(merchant != null){
            order.setAlias(merchant.getMerchantName());
        }
        order.setPayTypeCode(this.getPayType());
        order.setPayData(this.getPayData());
        order.setCreateDt(this.getCreateTime());
        order.setAisleSwitch(this.getChannel().toString());
        order.setExtendParam(ExtendParam.DEVICE.getKeyCode());
    }
}