package com.sptg.pay.api.entity;

import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.sptg.common.core.entity.BaseEntity;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;

/**
 * @author zwx
 * @create 2020/5/15 17:13
 */
@Setter
@Getter
@TableName(value = "pay_certificate")
public class PayCertificate extends BaseEntity {
    /**
     * 订单号
     */
    @TableField(value = "s_order_no")
    private String orderNo;

    /**
     * 订单号
     */
    @TableField(value = "l_order_id")
    private Long orderId;

    /**
     * 用户ID
     */
    @TableField(value = "l_user_id")
    private Long userId;

    /**
     * 支付渠道代码 wxPay aliPay
     */
    @TableField(value = "s_channel_code")
    private String channelCode;
    /**
     * 支付凭证（从第三方支付获得，统一下单请求后返回）
     */
    @TableField(value = "s_certificate")
    private String certificate;
    /**
     * 凭证失效时间
     */
    @TableField(value = "t_expire_time")
    private Date expireTime;
    /**
     * 付款状态：
     * 0  未付款
     * 1  付款中
     * 2  已付款
     */
    @TableField(value = "i_pay_status")
    private Integer payStatus;
    /**
     * 支付时间
     */
    @TableField(value = "t_pay_time")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date payTime;

    /**
     * 支付金额
     */
    @TableField(value = "d_payment")
    private BigDecimal payment;

    /**
     * 支付回调通知（第三方支付异步通知）
     */
    @TableField(value = "s_notify")
    private String notify;

    /**
     * 更新时间
     */
    @TableField(value = "t_update_date")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date updateDate;

    /**
     * 是否退款：{0：无退款，1：已退款}
     */
    @TableField(value = "i_refund")
    private Integer refund;

    /**
     * 是否已发起退款：{0：未发起，1：已发起}
     */
    @TableField(value = "i_apply_refund")
    private Integer applyRefund;

    /**
     * 是否能够退款：{-1不能，0能}
     */
    @TableField(value = "i_can_refund")
    private Integer canRefund;

    /**
     * 原始数据id
     */
    @TableField(value = "l_old_id")
    private Long oldId;
}
