package com.tourism.webadmin.back.model.constant;

import java.util.HashMap;
import java.util.Map;

/**
 * NoticeType 类。
 * <p>
 * 描述：通知消息类型
 *
 * @author huangwenwen
 * @date 2025/1/5
 */


public class NoticeType {
    /**
     * 单聊
     */
    public static final int NOTICE_SINGLE = 1;
    /**
     * 群聊   1单聊 2群聊 3系统消息 4关注消息 5点赞通知 6评论通知 7收藏通知 8浏览通知 9访问主页通知 10评论区艾特通知 11文章内艾特通知
     */
    public static final int NOTICE_GROUP = 2;
    /**
     * 系统消息  移除群成员 群验证 解散群聊
     */
    public static final int NOTICE_SYSTEM = 3;
    /**
     * 关注消息
     */
    public static final int NOTICE_FOCUS = 4;

    /**
     * 点赞通知
     */
    public static final int NOTICE_LIKE = 5;
    /**
     * 评论通知
     */
    public static final int NOTICE_COMMENT  = 6;
    /**
     * 收藏通知
     */
    public static final int NOTICE_COLLECTION  = 7;
    /**
     * 浏览通知
     */
    public static final int NOTICE_BROWSE = 8;
    /**
     * 访问主页通知
     */
    public static final int NOTICE_VISIT_HOME = 9;
    /**
     * 评论区艾特通知
     */
    public static final int NOTICE_COMMENT_MENTION = 10;
    /**
     * 文章内艾特通知
     */
    public static final int NOTICE_ARTICLE_MENTION = 11;




    private static final Map<Object, String> DICT_MAP = new HashMap<>(10);
    static {
        DICT_MAP.put(NOTICE_SINGLE, "单聊");
        DICT_MAP.put(NOTICE_GROUP, "群聊");
        DICT_MAP.put(NOTICE_SYSTEM, "系统消息");
        DICT_MAP.put(NOTICE_FOCUS, "关注消息");
        DICT_MAP.put(NOTICE_LIKE, "点赞通知");
        DICT_MAP.put(NOTICE_COMMENT, "评论通知");
        DICT_MAP.put(NOTICE_COLLECTION, "收藏通知");
        DICT_MAP.put(NOTICE_BROWSE, "浏览通知");
        DICT_MAP.put(NOTICE_VISIT_HOME, "访问主页通知");
        DICT_MAP.put(NOTICE_COMMENT_MENTION, "评论区艾特通知");
    }

    /**
     * 判断参数是否为当前常量字典的合法值。
     *
     * @param value 待验证的参数值。
     * @return 合法返回true，否则false。
     */
    public static boolean isValid(Integer value) {
        return value != null && DICT_MAP.containsKey(value);
    }

    /**
     * 私有构造函数，明确标识该常量类的作用。
     */
    private NoticeType() {
    }

    /**
     * 根据通知类型获取描述
     *
     * @param type 通知类型
     * @return 描述信息
     */
    public static String getDescription(int type) {
        return DICT_MAP.getOrDefault(type, "未知通知类型");
    }

}
