package com.jeequan.jeepay.db.entity;

import com.alibaba.fastjson.JSONObject;
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.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
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-03-22
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName(value = "t_order_profit_sett_record", autoResultMap = true)
public class OrderProfitSettRecord extends BaseModel {


    /**
     * 计算类型： 1-支付订单入账, 2-退款退佣金, 3-转账业务佣金入账
     **/
    public static final byte CAL_TYPE_PAY_ORDER = 1;
    public static final byte CAL_TYPE_REFUND_ORDER = 2;
    public static final byte CAL_TYPE_TRANS_ORDER = 3;
    /**
     * 垫资佣金入账
     */
    public static final byte CAL_TYPE_DZ_ORDER = 4;

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


    private static final long serialVersionUID=1L;

    /**
     * 结算记录ID
     */
    @TableId(value = "rid", type = IdType.AUTO)
    private Long rid;

    /**
     * 运营平台标识/服务商号
     */
    private String infoId;

    /**
     * 系统类型： 参考：SYS_TYPE
     */
    private String infoType;

    /**
     * 名称快照
     */
    private String infoName;

    /**
     * 费率配置快照 (参考： ApplymentBasicInfo.paywayFeeList)
     */
    @TableField(typeHandler = FastjsonTypeHandler.class)
    private JSONObject infoPaywayFeeDetail;

    /**
     * 支付订单号（与t_pay_order对应）
     */
    private String payOrderId;

    /**
     * 退款订单号 (默认空串: 作用为使得唯一索引生效)
     */
    private String refundOrderId;

    /**
     * 计算类型： 1-支付订单入账, 2-退款退佣金, 3-转账业务佣金入账
     */
    private Byte calType;

    /**
     * 计算基数金额, 单位分 （ 订单支付金额、 退款金额 ）
     */
    private Long calBaseAmount;

    /**
     * 利润结算金额, 单位：分
     */
    private Long calProfitAmount;

    /**
     * 费用金额, 单位：分
     */
    private Long calFeeAmount;

    /**
     * 入账状态： 0-未入账, 1-已入账
     */
    private Byte entryState;

    /**
     * 预计入账日期(比如在途转钱包)
     */
    private Date entryTime;

    /**
     * 结算任务执行时间
     */
    private Date taskTime;

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

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


}
