package com.fs.his.enums;

/**
 * App用户活动类型枚举
 * 
 * @author
 * @date 2026-02-25
 */
public enum ActivityTypeEnum {

    /**
     * 首次登录奖励
     */
    FIRST_LOGIN("FIRST_LOGIN", "首次登录奖励"),

    /**
     * 看课奖励
     */
    WATCH_COURSE("WATCH_COURSE", "看课奖励"),
    ;

    /**
     * 类型编码（对应数据库 activity_type 字段）
     */
    private final String code;

    /**
     * 类型描述
     */
    private final String desc;

    /**
     * 构造函数
     *
     * @param code 编码
     * @param desc 描述
     */
    ActivityTypeEnum(String code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    /**
     * 获取编码
     *
     * @return 编码
     */
    public String getCode() {
        return code;
    }

    /**
     * 获取描述
     *
     * @return 描述
     */
    public String getDesc() {
        return desc;
    }

    /**
     * 根据编码获取枚举
     *
     * @param code 编码
     * @return 枚举对象，未找到返回null
     */
    public static ActivityTypeEnum getByCode(String code) {
        if (code == null) {
            return null;
        }
        for (ActivityTypeEnum value : values()) {
            if (value.getCode().equals(code)) {
                return value;
            }
        }
        return null;
    }

    /**
     * 判断编码是否有效
     *
     * @param code 编码
     * @return true-有效 false-无效
     */
    public static boolean isValid(String code) {
        return getByCode(code) != null;
    }

    /**
     * 获取描述
     *
     * @param code 编码
     * @return 描述，未找到返回编码本身
     */
    public static String getDescByCode(String code) {
        ActivityTypeEnum enumItem = getByCode(code);
        return enumItem != null ? enumItem.getDesc() : code;
    }

    @Override
    public String toString() {
        return this.code;
    }
}