package com.zanxiang.game.back.serve.pojo.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * <p>
 * 游戏回传策略表
 * </p>
 *
 * @author auto
 * @since 2023-06-01
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@TableName("t_game_back_policy")
public class GameBackPolicy implements Serializable {
    private static final long serialVersionUID = 1L;

    // 固定比例
    public static final Integer POLICY_TYPE_FIXED_RATE = 0;
    // 随机概率
    public static final Integer POLICY_TYPE_RANDOM_RATE = 1;

    public static final Integer TYPE_DEFAULT = 1;
    // 充值区间
    public static final Integer TYPE_SUM_RECHARGE = 2;
    //
    public static final Integer TYPE_SPLIT_LEVEL = 3;

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

    private String backPolicyName;

    private Integer policyType;

    private String typeOfSplitLevelJson;

    private String typeOfSumRechargeJson;

    /**
     * 完成新手引导条件
     */
    private String tutorialFinishJson;

    /**
     * 首充/日-小额判定金额（小于等于）
     * 大额/小额-累充判定金额（小于等于）
     */
    private Long firstMinMoney;

    /**
     * 首充/日-小额回传方式（概率/比例）
     */
    private Integer firstMinMoneyType;

    /**
     * 首充/日-小额回传概率/比例
     */
    private String firstMinMoneyRate;

    /**
     * 首充/日-大额判定金额（大于等于）
     */
    private Long firstMaxMoney;

    /**
     * 首充/日-大额回传方式（概率/比例）
     */
    private Integer firstMaxMoneyType;

    /**
     * 首充/日-大额回传概率/比例
     */
    private String firstMaxMoneyRate;

    /**
     * 首充/日-其它金额回传方式（概率/比例）
     */
    private Integer firstOtherMoneyType;

    /**
     * 首充/日-其它金额回传概率/比例
     */
    private String firstOtherMoneyRate;

    /**
     * 首单-降档规则
     */
    private String firstDownLevel;

    /**
     * 首充-按用户订单数卡单
     */
    private Integer firstBackCountOfUser;

    /**
     * 次单/日-小额判定金额（小于等于）
     */
    private Long rechargeMinMoney;

    /**
     * 次单/日-小额回传方式（概率/比例）
     */
    private Integer rechargeMinMoneyType;

    /**
     * 次单/日-小额回传概率/比例
     */
    private String rechargeMinMoneyRate;

    /**
     * 次单/日-大额判定金额（大于等于）
     */
    private Long rechargeMaxMoney;

    /**
     * 次单/日-大额回传方式（概率/比例）
     */
    private Integer rechargeMaxMoneyType;

    /**
     * 次单/日-大额回传概率/比例
     */
    private String rechargeMaxMoneyRate;

    /**
     * 次单/日-其它金额回传方式（概率/比例）
     */
    private Integer rechargeOtherMoneyType;

    /**
     * 次单/日-其它金额回传概率/比例
     */
    private String rechargeOtherMoneyRate;

    /**
     * 次单-降档规则
     */
    private String rechargeDownLevel;

    /**
     * 次单-按用户订单数卡单
     */
    private Integer rechargeBackCountOfUser;

    private LocalDateTime createTime;

    private Long createBy;

    private LocalDateTime updateTime;

    private Long updateBy;

    private Long regPayIntervalTime;

    /**
     * BackUnitEnum
     */
    private Integer backUnit;

    /**
     * 是否补单
     */
    private Boolean markUpOrder;
    /**
     * 补单-小额判定金额（小于等于）
     */
    private Long markUpOrderMinMoney;

    /**
     * 补单-小额回传方式（概率/比例）
     */
    private Integer markUpOrderMinMoneyType;

    /**
     * 补单-小额回传概率/比例
     */
    private String markUpOrderMinMoneyRate;

    /**
     * 补单-大额判定金额（大于等于）
     */
    private Long markUpOrderMaxMoney;

    /**
     * 补单-大额回传方式（概率/比例）
     */
    private Integer markUpOrderMaxMoneyType;

    /**
     * 补单-大额回传概率/比例
     */
    private String markUpOrderMaxMoneyRate;

    /**
     * 补单-其它金额回传方式（概率/比例）
     */
    private Integer markUpOrderOtherMoneyType;

    /**
     * 补单-其它金额回传概率/比例
     */
    private String markUpOrderOtherMoneyRate;

    /**
     * 补单-降档规则
     */
    private String markUpDownLevel;

    /**
     * 补单-按用户订单数卡单
     */
    private Integer markUpBackCountOfUser;

    /**
     * backUnit == 大额、小额时生效
     * 大额判断金额
     */
    private Long largeAmount;

    /**
     * backUnit == 大额、小额时生效
     * 超小额判断金额（小于等于改值不回传）
     */
    private Long supperSmallAmount;

    /**
     * 拆单策略
     */
    private String splitStrategy;

    /**
     * 激活回传开关
     */
    private Boolean activeBackSwitch;

    /**
     * 角色激活回传开关
     */
    private Boolean roleBackSwitch;

    /**
     * 最小回传等级
     */
    private Long roleLevelMin;

    /**
     * 监测链接回传
     */
    private Boolean linkCallBack;
}
