package com.hzs.third.pay.vo;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.hzs.common.core.annotation.BigDecimalFormat;
import com.hzs.common.core.annotation.Excel;
import com.hzs.common.core.annotation.Transaction;
import com.hzs.common.core.constant.EnumsPrefixConstants;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

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

/**
 * @Description: 在线支付查询VO
 * @Author: jiang chao
 * @Time: 2023/3/23 13:55
 * @Classname: OnlinePaymentVO
 * @PackageName: com.hzs.third.pay.vo
 */
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Data
public class OnlinePaymentVO {

    /**
     * 会员编号
     */
    @Excel(name = "会员编号")
    private String memberCode;

    /**
     * 会员姓名
     */
    @Excel(name = "会员姓名")
    private String memberName;

    /**
     * 联系方式
     */
    @Excel(name = "联系方式")
    private String phone;

    /**
     * 业务类型（1=直销订单,3=充值,4=抽奖）
     */
    @JsonIgnore
    @Transaction(transactionKey = EnumsPrefixConstants.PAY_BUSINESS_TYPE)
    private Integer businessType;
    /**
     * 业务类型显示
     */
    @Excel(name = "交易类型")
    private String businessTypeVal;

    /**
     * 业务金额
     */
    @Excel(name = "交易金额(¥)")
    private BigDecimal businessMoney;

    /**
     * 支付金额（支付回调金额）
     */
    @Excel(name = "实际支付金额(¥)")
    private BigDecimal payMoney;

    /**
     * 支付渠道（1=支付宝,2=微信,5=宝付,6=汇付）
     */
    @JsonIgnore
    @Transaction(transactionKey = EnumsPrefixConstants.PAY_CHANNEL)
    private Integer payChannel;
    /**
     * 支付渠道显示
     */
    @Excel(name = "支付渠道")
    private String payChannelVal;

    /**
     * 支付类型（1=支付宝,2=微信,3=银行卡）
     */
    @JsonIgnore
    @Transaction(transactionKey = EnumsPrefixConstants.PAY_TYPE)
    private Integer payType;
    /**
     * 支付类型显示
     */
    @Excel(name = "支付方式")
    private String payTypeVal;

    /**
     * 支付状态（0=未支付,1=已支付）
     */
//    @JsonIgnore
    @Transaction(transactionKey = EnumsPrefixConstants.PAY_STATUS)
    private Integer payStatus;
    /**
     * 支付状态显示
     */
    @Excel(name = "支付状态")
    private String payStatusVal;

    /**
     * 下单时间
     */
    @Excel(name = "下单时间", dateFormat = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date creationTime;

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

    /**
     * 业务编号
     */
    @Excel(name = "单据编号")
    private String businessCode;

    /**
     * 支付流水号（支付回调流水号）
     */
    private String payNumber;

    /**
     * 国家
     */
    private Integer pkCountry;

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

    /**
     * 回调业务信息
     */
    private String callbackInfo;

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

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


    private Integer orderType;

    @Excel(name = "订单类型")
    private String orderTypeVal;
}
