package com.hzs.common.domain.third.pay;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.hzs.common.core.web.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.apache.ibatis.type.JdbcType;

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

/**
 * 在线支付信息
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@KeySequence("T_ONLINE_PAYMENT_SEQ")
@TableName("T_ONLINE_PAYMENT")
public class TOnlinePayment extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId("PK_ID")
    private Long pkId;

    /**
     * 支付信息编号
     */
    @TableField("PAYMENT_CODE")
    private String paymentCode;

    /**
     * 业务类型（1=直销订单,3=充值,4=抽奖）
     */
    @TableField("BUSINESS_TYPE")
    private Integer businessType;

    /**
     * 业务单号
     */
    @TableField("BUSINESS_CODE")
    private String businessCode;

    /**
     * 业务金额
     */
    @TableField("BUSINESS_MONEY")
    private BigDecimal businessMoney;

    /**
     * 支付渠道（0=杉德,1=支付宝,2=微信,3=通联,4=京东,5=宝付,6=汇付）
     */
    @TableField("PAY_CHANNEL")
    private Integer payChannel;

    /**
     * 支付类型（1=支付宝,2=微信,3=银行卡,4=网上银行）
     */
    @TableField("PAY_TYPE")
    private Integer payType;

    /**
     * 支付状态（0=未支付,1=已支付）
     */
    @TableField("PAY_STATUS")
    private Integer payStatus;

    /**
     * 支付流水号（支付回调流水号）
     */
    @TableField("PAY_NUMBER")
    private String payNumber;

    /**
     * 支付时间（支付回调成功时间）
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField("PAY_TIME")
    private Date payTime;

    /**
     * 支付金额（支付回调金额）
     */
    @TableField("PAY_MONEY")
    private BigDecimal payMoney;

    /**
     * 回调业务状态（0=未回调,1=回调成功,2=回调失败）
     */
    @TableField("CALLBACK_STATUS")
    private Integer callbackStatus;

    /**
     * 回调业务信息
     */
    @TableField(value = "CALLBACK_INFO", jdbcType = JdbcType.VARCHAR, updateStrategy = FieldStrategy.IGNORED)
    private String callbackInfo;

    /**
     * 原始订单（与三方保持一致）
     */
    @TableField("ORIGINAL_ORDER")
    private String originalOrder;

    /**
     * 支付渠道流水号
     */
    @TableField("CHANNEL_NUMBER")
    private String channelNumber;

    /**
     * 支付来源（1=PC，2=APP，3=H5）
     */
    @TableField("PAY_SOURCE")
    private Integer paySource;

    /**
     * 主账户金额
     */
    @TableField("MAIN_ACCOUNT_MONEY")
    private BigDecimal mainAccountMoney;

    /**
     * 子账户金额
     */
    @TableField("SUB_ACCOUNT_MONEY")
    private BigDecimal subAccountMoney;

    /**
     * 支付-前端回调页面的扩展参数
     */
    @TableField(exist = false)
    private String extParam;
}
