package com.zanxiang.game.module.base.pojo.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

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

/**
 * @author : lingfeng
 * @time : 2023-08-17
 * @description : 游戏授权角色枚举
 */
@Getter
@AllArgsConstructor
public enum GameAuthEnum {

    /**
     * 超管
     */
    ADMIN("ADMIN", "超管"),

    /**
     * 管理员
     */
    MANAGE("MANAGE", "管理员"),

    /**
     * 投手
     */
    PITCHER("PITCHER", "投手"),

    /**
     * 游戏GS
     */
    GS("GS", "游戏GS"),

    /**
     * 客服
     */
    CUSTOMER("CUSTOMER", "客服"),

    /**
     * 运营
     */
    OPERATE("OPERATE", "运营");

    /**
     * 角色
     */
    private final String value;

    /**
     * 名称
     */
    private final String name;

    /**
     * 根据值获取枚举对象
     *
     * @param value 价值
     * @return {@link GameAuthEnum}
     */
    public static GameAuthEnum getByValue(String value) {
        for (GameAuthEnum gameAuthEnum : GameAuthEnum.values()) {
            if (Objects.equals(value, gameAuthEnum.getValue())) {
                return gameAuthEnum;
            }
        }
        return null;
    }

    /**
     * 获取枚举映射
     *
     * @return {@link Map}<{@link String}, {@link String}>
     */
    public static Map<String, String> getGameAuthMap() {
        Map<String, String> gameAuthMap = new HashMap<>(GameAuthEnum.values().length);
        for (GameAuthEnum gameAuthEnum : GameAuthEnum.values()) {
            //前端不返回超管权限
            if (Objects.equals(gameAuthEnum.getValue(), "ADMIN")) {
                continue;
            }
            gameAuthMap.put(gameAuthEnum.getValue(), gameAuthEnum.getName());
        }
        return gameAuthMap;
    }
}
