package com.jeequan.jeepay.db.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jeequan.jeepay.core.model.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.util.Date;

/**
 * <p>
 * 对账差异表
 * </p>
 *
 * @author [mybatis plus generator]
 * @since 2022-09-09
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_check_diff")
public class CheckDiff extends BaseModel {

    private static final long serialVersionUID=1L;

    public static final LambdaQueryWrapper<CheckDiff> gw(){
        return new LambdaQueryWrapper<>();
    }

    public static String DIFF_TYPE_LOCAL = "local"; // 长款
    public static String DIFF_TYPE_CHANNEL = "channel"; // 短款
    public static String DIFF_TYPE_ORDER = "order"; // 订单差异

    public static byte HANDLE_STATE_WAITING = 0;
    public static byte HANDLE_STATE_HANG_UP = 1;
    public static byte HANDLE_STATE_SUCCESS = 2;
    public static byte HANDLE_STATE_IGNORE = 3;

    /**
     * ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 对账批次号，支付接口代码ifCode_渠道商户号_对账日期
     */
    private String batchNo;

    /**
     * 支付接口代码
     */
    private String ifCode;

    /**
     * 渠道商户号
     */
    private String channelMchNo;

    /**
     * 对账日期
     */
    private Date billDate;

    /**
     * 账单类型，pay：支付, refund：退款
     */
    private String billType;

    /**
     * 平台订单ID
     */
    private String orderId;

    /**
     * 商户号
     */
    private String mchNo;

    /**
     * 商户名称
     */
    private String mchName;

    /**
     * 商户应用AppId
     */
    private String mchAppId;

    /**
     * 商户订单号
     */
    private String mchOrderNo;

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

    /**
     * 平台手续费,单位分
     */
    private Long feeAmount;

    /**
     * 平台退款金额
     */
    private Long refundAmount;

    /**
     * 平台订单状态：0-订单 生成, 1-支付中, 2-支付成功, 3-支付失败, 4-已撤销, 5-已退款, 6-订单关闭
     */
    private Byte orderState;

    /**
     * 平台交易成功时间
     */
    private Date orderSuccessAt;

    /**
     * 平台下单时间
     */
    private Date orderCreateAt;

    /**
     * 渠道订单号
     */
    private String channelOrderNo;

    /**
     * 渠道订单状态：0-订单生成, 1-支付中, 2-支付成功, 3-支付失败, 4-已撤销, 5-已退款, 6-订单关闭
     */
    private Byte channelState;

    /**
     * 渠道交易金额,单位分
     */
    private Long channelAmount;

    /**
     * 渠道退款金额
     */
    private Long channelRefundAmount;

    /**
     * 渠道手续费
     */
    private Long channelFeeAmount;

    /**
     * 渠道交易成功时间
     */
    private Date channelSuccessAt;

    /**
     * 差异类型：local-长款  channel-短款  order-订单差异(金额差异等)
     */
    private String diffType;

    /**
     * 类型：0-未处理，1-挂账，2-已处理，3-已忽略
     */
    private Byte handleState;

    /**
     * 处理备注
     */
    private String handleRemark;

    /**
     * 差异处理者ID
     */
    private Long handleUid;

    /**
     * 差异处理者姓名
     */
    private String handleBy;

    /**
     * 创建时间
     */
    private Date createdAt;

    /**
     * 更新时间
     */
    private Date updatedAt;


}
