package com.sckw.transport.model.enuma;

import lombok.Getter;

@Getter
public enum WalletTypEnum {

    PREPAY(2, "预付"),
    INCOME(3, "收益"),
    FREEZE(4, "冻结"),
    UNFREEZE(5, "解冻"),
    CONSUME(6, "消费"),
    MANUAL_ENTRY(9, "人工录入");
    /**
     * 数据库存储的编码值
     */
    private final Integer code;

    /**
     * 类型描述（用于页面展示）
     */
    private final String desc;

    WalletTypEnum(Integer code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    /**
     * 根据编码值获取枚举
     * @param code 数据库存储的编码
     * @return 对应的枚举对象，无匹配时返回 null
     */
    public static WalletTypEnum getByCode(Integer code) {
        if (code == null) {
            return null;
        }
        for (WalletTypEnum type : values()) {
            if (type.code.equals(code)) {
                return type;
            }
        }
        return null;
    }

    /**
     * 根据编码值获取描述
     * @param code 数据库存储的编码
     * @return 描述文本，无匹配时返回"未知类型"
     */
    public static String getDescByCode(Integer code) {
        WalletTypEnum type = getByCode(code);
        return type != null ? type.desc : "未知类型";
    }

}
