package com.spot.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 交易流水类型枚举
 * 与 member_transaction 表 type 字段对应，存储 ordinal 值
 *
 * @author jean
 * @date 2026-05-07
 */
@AllArgsConstructor
@Getter
public enum TransactionType {

    /** 0 - 充值 */
    RECHARGE("充值"),

    /** 1 - 提现 */
    WITHDRAW("提现"),

    /** 2 - 转账 */
    TRANSFER_ACCOUNTS("转账"),

    /** 3 - 币币交易 */
    EXCHANGE("币币交易"),

    /** 4 - 法币买入 */
    OTC_BUY("法币买入"),

    /** 5 - 法币卖出 */
    OTC_SELL("法币卖出"),

    /** 6 - 签到奖励 */
    ACTIVITY_AWARD("签到奖励"),

    /** 7 - 推广奖励 */
    PROMOTION_AWARD("推广奖励"),

    /** 8 - 合约跟单奖励 */
    DIVIDEND("合约跟单奖励"),

    /** 9 - 投票 */
    VOTE("投票"),

    /** 10 - 人工充值 */
    ADMIN_RECHARGE("人工充值"),

    /** 11 - 配对 */
    MATCH("配对"),

    /** 12 - 交易奖励 */
    ACTIVITY_BUY("交易奖励"),

    /** 13 - CTC买入 */
    CTC_BUY("CTC买入"),

    /** 14 - CTC卖出 */
    CTC_SELL("CTC卖出"),

    /** 15 - 红包发出 */
    RED_OUT("红包发出"),

    /** 16 - 红包领取 */
    RED_IN("红包领取"),

    /** 17 - 提现码提现 */
    WITHDRAWCODE_OUT("提现码提现"),

    /** 18 - 提现码充值 */
    WITHDRAWCODE_IN("提现码充值"),

    /** 19 - 永续合约手续费 */
    CONTRACT_FEE("永续合约手续费"),

    /** 20 - 永续合约盈利 */
    CONTRACT_PROFIT("永续合约盈利"),

    /** 21 - 永续合约亏损 */
    CONTRACT_LOSS("永续合约亏损"),

    /** 22 - 期权合约失败 */
    OPTION_FAIL("期权合约失败"),

    /** 23 - 期权合约手续费 */
    OPTION_FEE("期权合约手续费"),

    /** 24 - 期权合约奖金 */
    OPTION_REWARD("期权合约奖金"),

    /** 25 - 合约返佣 */
    CONTRACT_AWARD("合约返佣"),

    /** 26 - 合约资金费率 */
    CONTRACT_OVERNIGHT_FEE("合约资金费率"),

    /** 27 - 永续合约爆仓 */
    CONTRACT_BLAST_FEE("永续合约爆仓"),

    /** 28 - 活动手续费 */
    GAME_FEE("活动手续费"),

    /** 29 - 活动盈利 */
    GAME_PROFIT("活动盈利"),

    /** 30 - 活动亏损 */
    GAME_LOSS("活动亏损"),

    /** 31 - 活动返佣 */
    GAME_AWARD("活动返佣"),

    /** 32 - 平级奖励 */
    LEVEL_AWARD("平级奖励"),

    /** 33 - 平台手续费收入 */
    PLATFORM_FEE_AWARD("平台手续费收入"),

    /** 34 - 秒合约失败 */
    SECOND_FAIL("秒合约失败"),

    /** 35 - 秒合约奖金 */
    SECOND_REWARD("秒合约奖金"),

    /** 36 - 理财利息 */
    FINANCE_REWARD("理财利息"),

    /** 37 - 合约跟单手续费 */
    FOLLOW_FEE("合约跟单手续费"),

    /** 38 - 合约跟单盈利 */
    FOLLOW_PROFIT("合约跟单盈利"),

    /** 39 - 合约跟单亏损 */
    FOLLOW_LOSS("合约跟单亏损"),

    /** 40 - 合约跟单分润 */
    FOLLOW_DIVIDEND("合约跟单分润"),

    /** 41 - 合约跟单返佣 */
    FOLLOW_AWARD("合约跟单返佣"),

    /** 42 - 跟单资金费率 */
    FOLLOW_OVERNIGHT_FEE("跟单资金费率"),

    /** 43 - 现货盈利 */
    SPOT_PROFIT("现货盈利"),

    /** 44 - 现货亏损 */
    SPOT_LOSS("现货亏损"),

    /** 45 - 现货手续费 */
    SPOT_FEE("现货手续费"),

    /** 46 - 现货返佣 */
    SPOT_AWARD("现货返佣"),

    /** 47 - 体验金提现 */
    EXPERIENCE_GIFT_WITHDRAW("体验金提现"),

    /** 48 - 现货交易 */
    SPOT_TRADE("现货交易");

    /** 中文名称 */
    private final String cnName;

    /**
     * 获取枚举的 ordinal 值（即数据库存储值）
     *
     * @return ordinal 值
     */
    public int getOrdinal() {
        return this.ordinal();
    }
}
