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

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.RefundStatusEnum;
import com.yc.ship.module.trade.enums.TradeOrderStatusEnum;
import lombok.*;

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


/**
 * 退款批次 DO
 *
 * @author 管理员
 */
@TableName("trade_refund")
@KeySequence("trade_refund_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class RefundDO extends TenantBaseDO {

    /**
     * 主键
     */
    @TableId
    private Long id;
    /**
     * 订单ID
     */
    private Long orderId;
    /**
     * 退款渠道
     */
    private Integer refundChannel;
    /**
     * 销售渠道
     */
    private Integer sellMethod;
    /**
     * 门店ID
     */
    private Long storeId;
    /**
     * 门店名称
     */
    private String storeName;
    /**
     * 设备ID
     */
    private Long machineId;
    /**
     * 设备名称
     */
    private String machineName;
    /**
     * 退票方式：0正常退款，1强制退款 2改签退款
     */
    private Integer refundMethod;
    /**
     * 退款方式0:现金，1:微信，2:支付宝
     */
    private Integer refundType;
    /**
     * 退款归还类型0原路返回 1线下退款
     */
    private Integer refundBackType;
    /**
     * 退款原因
     */
    private String refundReason;
    /**
     * 退款人
     */
    private String refundUser;
    /**
     * 分销退单号
     */
    private String otaRefundNo;
    /**
     * 退款金额
     */
    private BigDecimal refundAmount;
    /**
     * 原始金额
     */
    private BigDecimal originAmount;
    /**
     * 实际退款手续费
     */
    private BigDecimal fee;
    /**
     * 见枚举
     *  {@link RefundStatusEnum}
     */
    private Integer refundStatus;
    /**
     * 供应商退款状态
     *  {@link RefundStatusEnum}
     */
    private Integer supplierRefundStatus;
    /**
     * 退款前订单状态
     * {@link TradeOrderStatusEnum}
     */
    private Integer orderStatus;
    /**
     * 退款次数
     */
    private Integer refundCount;
    /**
     * 退款时间
     */
    private LocalDateTime refundTime;
    /**
     * 原手续费
     */
    private BigDecimal originFee;
}