package com.yonge.cooleshow.biz.dal.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
import com.yonge.toolset.payment.base.enums.TradeStatusEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.io.Serializable;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;

/**
 * 用户账户结算表
 */
@TableName("user_withdrawal")
@ApiModel(value = "UserWithdrawal对象", description = "用户账户结算表")
public class UserWithdrawal implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty("结算id ")
    @TableId(value = "id_", type = IdType.AUTO)
    private Long id;
    @ApiModelProperty("用户表id ")
    @TableField(value = "user_id_")
    private Long userId;
    @ApiModelProperty("结算金额 ")
    @TableField(value = "amount_")
    private BigDecimal amount;
    @ApiModelProperty("实际到账金额 ")
    @TableField(value = "actual_amount_")
    private BigDecimal actualAmount;
    @ApiModelProperty("平台服务费 ")
    @TableField(value = "plantform_fee_")
    private BigDecimal plantformFee;
    @ApiModelProperty("审核状态 DOING、审核中 PASS、通过 UNPASS、不通过")
    @TableField(value = "auth_status_")
    private AuthStatusEnum authStatus;
    @ApiModelProperty("审核用户表id ")
    @TableField(value = "auth_user_id_")
    private Long authUserId;
    @ApiModelProperty("审核时间 ")
    @TableField(value = "auth_time_")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date authTime;
    @ApiModelProperty("审核原因 ")
    @TableField(value = "reason_")
    private String reason;
    @ApiModelProperty("银行卡id ")
    @TableField(value = "bank_card_id_")
    private Long bankCardId;
    @ApiModelProperty("第三方类型 ")
    @TableField(value = "open_type_")
    private String openType;
    @ApiModelProperty("交易流水号 ")
    @TableField(value = "trans_no_")
    private String transNo;
    @ApiModelProperty("交易状态 pending、交易处理中 succeeded、交易成功 failed、交易失败 ")
    @TableField(value = "trade_status_")
    private TradeStatusEnum tradeStatus;
    @ApiModelProperty("三方交易流水号 ")
    @TableField(value = "trade_no_")
    private String tradeNo;
    @ApiModelProperty("三方接口返回金额 ")
    @TableField(value = "callbak_amount_")
    private BigDecimal callbakAmount;
    @ApiModelProperty("转账时间 ")
    @TableField(value = "transfer_time_")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date transferTime;
    @ApiModelProperty("支付失败码 ")
    @TableField(value = "error_code_")
    private String errorCode;
    @ApiModelProperty("支付失败时返回 ")
    @TableField(value = "error_msg_")
    private String errorMsg;
    @ApiModelProperty("三方回调json ")
    @TableField(value = "callback_json_")
    private String callbackJson;
    @ApiModelProperty("发起时间 ")
    @TableField(value = "create_time_")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date createTime;
    @ApiModelProperty("修改时间 ")
    @TableField(value = "update_time_")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date updateTime;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public BigDecimal getAmount() {
        return amount;
    }

    public void setAmount(BigDecimal amount) {
        this.amount = amount;
    }

    public BigDecimal getPlantformFee() {
        return plantformFee;
    }

    public void setPlantformFee(BigDecimal plantformFee) {
        this.plantformFee = plantformFee;
    }

    public Long getBankCardId() {
        return bankCardId;
    }

    public void setBankCardId(Long bankCardId) {
        this.bankCardId = bankCardId;
    }

    public String getOpenType() {
        return openType;
    }

    public void setOpenType(String openType) {
        this.openType = openType;
    }

    public String getTransNo() {
        return transNo;
    }

    public void setTransNo(String transNo) {
        this.transNo = transNo;
    }

    public AuthStatusEnum getAuthStatus() {
        return authStatus;
    }

    public void setAuthStatus(AuthStatusEnum authStatus) {
        this.authStatus = authStatus;
    }

    public TradeStatusEnum getTradeStatus() {
        return tradeStatus;
    }

    public void setTradeStatus(TradeStatusEnum tradeStatus) {
        this.tradeStatus = tradeStatus;
    }

    public BigDecimal getActualAmount() {
        return actualAmount;
    }

    public void setActualAmount(BigDecimal actualAmount) {
        this.actualAmount = actualAmount;
    }

    public Date getTransferTime() {
        return transferTime;
    }

    public void setTransferTime(Date transferTime) {
        this.transferTime = transferTime;
    }

    public String getErrorCode() {
        return errorCode;
    }

    public void setErrorCode(String errorCode) {
        this.errorCode = errorCode;
    }

    public String getErrorMsg() {
        return errorMsg;
    }

    public void setErrorMsg(String errorMsg) {
        this.errorMsg = errorMsg;
    }

    public String getCallbackJson() {
        return callbackJson;
    }

    public void setCallbackJson(String callbackJson) {
        this.callbackJson = callbackJson;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Date getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    public Long getAuthUserId() {
        return authUserId;
    }

    public void setAuthUserId(Long authUserId) {
        this.authUserId = authUserId;
    }

    public String getReason() {
        return reason;
    }

    public void setReason(String reason) {
        this.reason = reason;
    }

    public BigDecimal getCallbakAmount() {
        return callbakAmount;
    }

    public void setCallbakAmount(BigDecimal callbakAmount) {
        this.callbakAmount = callbakAmount;
    }

    public Date getAuthTime() {
        return authTime;
    }

    public void setAuthTime(Date authTime) {
        this.authTime = authTime;
    }

    public String getTradeNo() {
        return tradeNo;
    }

    public void setTradeNo(String tradeNo) {
        this.tradeNo = tradeNo;
    }
}