package com.sckw.payment.enums;

import lombok.Getter;

@Getter
public enum PrepayTypEnum {

    PREPAY(0, "预付"),
    DEDUCTION(1, "扣款"),
    FREEZE(2, "冻结"),
    UNFREEZE(3, "解冻"),
    CONSUME(4, "消费");

    /**
     * 数据库存储的编码值
     */
    private final Integer code;

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

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

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

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

}
