package com.sonic.lion.domain.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.sonic.lion.enums.BizType;
import com.sonic.lion.enums.PayChannel;
import com.sonic.lion.domain.enums.CoinType;
import com.sonic.lion.enums.PaymentType;
import com.sonic.lion.enums.TradeStatus;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

/**
 * t_pay_trade
 *
 * @author
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName(value = "t_pay_trade", autoResultMap = true)
public class PayTrade {
    /**
     * ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 平台代码
     */
    private String platform;

    /**
     * 交易号
     */
    private String tradeNo;

    /**
     * 外部交易号(如订单号)
     */
    private String outTradeNo;

    /**
     * 外部交易号关联单号（如：打赏单号关联的游戏订单的订单号）
     */
    private String outTradeNoRelationNo;

    /**
     * 交易标题或名称
     */
    private String name;

    /**
     * 本方(发起方)账户(account .id)
     */
    private Long srcAccountId;

    /**
     * 本方(发起方)账户名称
     */
    private String srcAccountName;

    /**
     * 收款方账号编号
     */
    private String desAccountNo;

    /**
     * 对方(目标)账号-名称或姓名
     */
    private String desAccountName;

    /**
     * 收款方账号类型：参看DesAccountType
     */
    private Integer desAccountType;

    /**
     * 渠道ID
     */
    @TableField("channel_id")
    private PayChannel payChannel;

    /**
     * 渠道名称(冗余)
     */
    private String channelName;

    /**
     * 渠道流水id
     */
    private String channelBillId;

    /**
     * 支付方式ID
     */
    @TableField("payment_type_id")
    private PaymentType paymentType;

    /**
     * 交易业务分类(参看枚举TradeBizType)
     */
    private BizType bizType;

    /**
     * 充值时：用户实得金额
     */
    private Long actualAmount;

    /**
     * 交易金额,单位:分
     */
    private Long amount;

    /**
     * 交易实际成交金额,单位:分
     */
    private Long occurAmount;

    /**
     * 优惠金额
     */
    private Long promoAmount;

    /**
     * 手续费
     */
    private Long fee;


    /**
     * 充值的产品Id
     */
    private String productId;

    /**
     * 赠送金额
     */
    private Long giftAmount;

    /**
     * 交易状态 1待付款 2已付款  3处理中 4交易成功 5交易关闭 6退款中 7已退款
     */
    private TradeStatus status;

    /**
     * 付款时间
     */
    private LocalDateTime payTime;

    /**
     * 交易结束时间
     */
    private LocalDateTime finishTime;

    /**
     * 交易关闭时间druiddruid
     */
    private LocalDateTime closeTime;

    /**
     * 当前状态流入时间
     */
    private LocalDateTime statusInTime;

    /**
     * 是否完成交易
     */
    @TableField("is_complete")
    private Boolean complete;

    /**
     * 备注
     */
    private String remark;

    /**
     * 充值后支付交易号
     */
    private String paymentTradeNo;

    /**
     * 资源key
     */
    private String resourceKey;

    /**
     * 资源数量
     */
    private Integer resourceNum;

    /**
     * 交易异步通知url
     */
    private String notifyUrl;

    /**
     * 乐观锁
     */
    private Long version;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 最后修改时间
     */
    private LocalDateTime editTime;

    /**
     * 是否删除
     */
    @TableField("is_delete")
    private Boolean deleted;

    /**
     * 扩展信息
     */
    private String extend;

    private String clientVersion;

    /**
     * 提现币类型
     */
    private CoinType coinType;

    private String errorMessage;

    private String ip;

    /**
     * 沙盒数据  0 否  1 是
     */
    private Integer standbox;

    private String evidence;


    /**
     * 平台费用 10%
     */
    private Long platformFee;

    /**
     * 三方费用
     */
    private Long thirdFee;


    /**
     * 支付方式
     */
    private String payMethod;

    /**
     * 换汇发生金额
     */
    private Long exchangeOccurAmount;

    /**
     * 换汇 货币
     */
    private String exchangeOccurCurrency;

    /**
     * 汇率 1 USD 兑换 N Currency
     */
    private Double exchangeRate;

    /**
     * 换汇 原始金额
     */
    private Long exchangeProductAmount;

    /**
     * 换汇手续费
     */
    private Long exchangeFee;



}