package com.seer.teach.pay.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.seer.teach.common.entity.BaseEntity;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.time.LocalDateTime;

/**
 * <p>
 * 退款订单实体类
 * </p>
 */
@Getter
@Setter
@TableName("pay_refund_order")
@ToString
public class RefundOrderEntity extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 支付模块自己的退款订单号
     */
    @TableField("refund_sn")
    private String refundSn;

    /**
     * 支付模块的原支付订单号
     */
    @TableField("pay_order_sn")
    private String payOrderSn;

    /**
     * 渠道商的退款成功全局唯一标识（如微信的退款编号refund_id，支付宝的notify_id）
     */
    @TableField("refund_id")
    private String refundId;

    /**
     * 外部系统的商户原订单SN
     */
    @TableField("merchant_order_sn")
    private String merchantOrderSn;

    /**
     * 外部系统的商户订原退款单号
     */
    @TableField("merchant_refund_sn")
    private String merchantRefundSn;

    /**
     * 支付渠道编码
     */
    @TableField("channel_code")
    private String channelCode;

    /**
     * 渠道方的交易流水号
     */
    @TableField("transaction_id")
    private String transactionId;

    /**
     * 退款原因
     */
    @TableField("refund_reason")
    private String refundReason;

    /**
     * 退款金额（分）
     */
    @TableField("refund_amount")
    private Long refundAmount;

    /**
     * 原订单总金额（分）
     */
    @TableField("total_amount")
    private Long totalAmount;

    /**
     * 退款状态（0处理中，1成功，2失败，3关闭）
     */
    @TableField("`status`")
    private Integer status;

    /**
     * 退款类型（1-售后退款，2-订单取消退款）
     */
    @TableField("refund_type")
    private Integer refundType;

    /**
     * 退款成功时间
     */
    @TableField("success_time")
    private LocalDateTime successTime;

    /**
     * 用户ID
     */
    @TableField("user_id")
    private Integer userId;

    /**
     * 备注
     */
    @TableField("remark")
    private String remark;

    /**
     * 响应原始数据
     */
    @TableField("response_json")
    private String responseJson;
}