package com.yc.ship.module.trade.dal.dataobject.order;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yc.ship.framework.tenant.core.db.TenantBaseDO;
import com.yc.ship.module.trade.enums.PayTypeEnum;
import com.yc.ship.module.trade.enums.PaymentStatusEnum;
import com.yc.ship.module.trade.enums.SellMethodEnum;
import lombok.*;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 订单支付信息 DO
 *
 * @author 管理员
 */
@TableName("trade_order_pay")
@KeySequence("trade_order_pay_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TradeOrderPayDO extends TenantBaseDO {

    /**
     * 主键
     */
    @TableId(type= IdType.INPUT)
    private Long id;
    /**
     * 订单ID
     */
    private Long orderId;
    /**
     * 订单编号
     */
    private String orderNo;
    /**
     * 订单类型 0 交易订单 1其他订单
     */
    private Integer orderType;
    /**
     * 支付状态
     * 关联 {@link PaymentStatusEnum}
     */
    private Integer payStatus;
    /**
     * 支付流水号
     */
    private String paymentNo;
    /**
     * 支付方式
     * 关联 {@link PayTypeEnum}
     */
    private Integer paymentType;
    /**
     * 销售渠道
     * 关联 {@link SellMethodEnum}
     */
    private Integer sellMethod;
    /**
     * 支付时间
     */
    private LocalDateTime paymentDate;
    /**
     * 支付金额
     */
    private BigDecimal payAmount;
    /**
     * 已退款金额
     */
    private BigDecimal refundAmount;
    /**
     * 商户号
     */
    private String merchantNo;
    /**
     * 支付渠道
     */
    private String channelId;
    /**
     * pos机号
     */
    private String posNo;
    /**
     * pos机输出
     */
    private String posOut;
    /**
     * 微信或支付宝平台的用户openId
     */
    private String openId;
    /**
     * 支付平台返回的支付参数
     */
    private String payParams;
    /**
     * 请求参数
     */
    private String reqParams;
    /**
     * 真实的支付订单ID
     */
    private Long realPayOrderId;

    /**
     * 账单号，银行方返回
     */
    private String billNo;
}