package com.fs.qw.enums;

/**
 * 收款方式枚举
 */
public enum PaymentTypeEnum {

    /**
     * 在聊天中收款
     */
    CHAT(0, "在聊天中收款"),

    /**
     * 收款码收款
     */
    QR_CODE(1, "收款码收款"),

    /**
     * 在直播间收款
     */
    LIVE_ROOM(2, "在直播间收款"),

    /**
     * 用产品图册收款
     */
    PRODUCT_ALBUM(3, "用产品图册收款"),

    /**
     * 转账
     */
    TRANSFER(14, "转账"),

    /**
     * 小程序收款
     */
    MINIPROGRAM(15, "小程序收款");

    private final Integer code;
    private final String description;

    PaymentTypeEnum(Integer code, String description) {
        this.code = code;
        this.description = description;
    }

    /**
     * 获取枚举code
     */
    public Integer getCode() {
        return code;
    }

    /**
     * 获取枚举描述
     */
    public String getDescription() {
        return description;
    }

    /**
     * 根据code获取枚举对象
     * @param code 收款方式code
     * @return 枚举对象，如果不存在则返回null
     */
    public static PaymentTypeEnum getByCode(Integer code) {
        if (code == null) {
            return null;
        }
        for (PaymentTypeEnum value : PaymentTypeEnum.values()) {
            if (value.code.equals(code)) {
                return value;
            }
        }
        return null;
    }

    /**
     * 根据code获取描述
     * @param code 收款方式code
     * @return 描述，如果不存在则返回null或未知
     */
    public static String getDescriptionByCode(Integer code) {
        PaymentTypeEnum e = getByCode(code);
        return e == null ? null : e.description;
    }

    /**
     * 判断code是否有效
     * @param code 收款方式code
     * @return true:有效 false:无效
     */
    public static boolean isValid(Integer code) {
        return getByCode(code) != null;
    }
}