package cn.van333.mt2ql.wxMessage.enums;

/**
 * @author Leo
 * @version 1.0
 * @create 2023/12/19 0019 上午 10:27
 * @description：
 */

import com.fasterxml.jackson.annotation.JsonValue;

import java.util.*;

public enum WXReqType {
    /**
     * * 获取微信列表 (X0000)
     * * 微信状态检测(Q0000)
     * * 发送文本消息(Q0001)
     * * 修改下载图片 (Q0002)
     * * 获取个人信息 (Q0003)
     * * 查询对象信(Q0004)
     * * 获取好友列表(Q0005)
     * * 获取群聊列表(Q0006)
     * * 获取公众号列表(Q0007)
     * * 获取群成员列表(Q0008)
     * * 发送聊天记录(Q0009)
     * * 发送图片 (Q0010)
     * * 发送本地文件(Q0011)
     * * 发送分享链接(Q0012)
     * * 发送小程序(Q0013)
     * * 发送音乐分享(Q0014)
     * * 发送XML (Q0015)
     * * 确认收款 (Q0016)
     * * 同意好友请求(Q0017)
     * * 添加好友通过v3(Q0018)
     * * 添加好友_通过wxid (Q0019)
     * * 查询陌生人信息(Q0020)
     * * 邀请进群(Q0021)
     * * 删除好友(Q0022)
     * * 修改对象备注(Q0023)
     * * 修改群聊名称(Q0024)
     * * 发送名片(Q0025)
     */
    GET_WX_LIST("X0000", "获取微信列表"),
    GET_WX_STATUS("Q0000", "微信状态检测"),
    SEND_TEXT_MESSAGE("Q0001", "发送文本消息"),
    UPDATE_DOWNLOAD_IMAGE("Q0002", "修改下载图片"),
    GET_USER_INFO("Q0003", "获取个人信息"),
    QUERY_OBJECT_INFO("Q0004", "查询对象信"),
    GET_FRIEND_LIST("Q0005", "获取好友列表"),
    GET_GROUP_LIST("Q0006", "获取群聊列表"),
    GET_MP_LIST("Q0007", "获取公众号列表"),
    GET_GROUP_MEMBER_LIST("Q0008", "获取群成员列表"),
    SEND_CHAT_RECORD("Q0009", "发送聊天记录"),
    SEND_IMAGE("Q0010", "发送图片"),
    SEND_LOCAL_FILE("Q0011", "发送本地文件"),
    SEND_SHARE_LINK("Q0012", "发送分享链接"),
    SEND_MINIPROGRAM("Q0013", "发送小程序"),
    SEND_MUSIC_SHARE("Q0014", "发送音乐分享"),
    SEND_XML("Q0015", "发送XML"),
    CONFIRM_RECEIPT("Q0016", "确认收款"),
    AGREE_FRIEND_REQUEST("Q0017", "同意好友请求"),
    ADD_FRIEND_V3("Q0018", "添加好友通过v3"),
    ADD_FRIEND_WXID("Q0019", "添加好友_通过wxid"),
    QUERY_STRANGER_INFO("Q0020", "查询陌生人信息"),
    INVITE_GROUP("Q0021", "邀请进群"),
    DELETE_FRIEND("Q0022", "删除好友"),
    MODIFY_OBJECT_REMARK("Q0023", "修改对象备注"),
    MODIFY_GROUP_NAME("Q0024", "修改群聊名称");
    private final String url;

    private final String name;

    WXReqType(String url, String name) {
        this.url = url;
        this.name = name;
    }

    public static WXReqType get(String key) {
        for (WXReqType e : WXReqType.values()) {
            if (Objects.equals(e.getUrl(), key)) {
                return e;
            }
        }
        return null;
    }

    public static String getName(String key) {
        //if (Object.isNotEmpty(key)) {
        WXReqType[] items = WXReqType.values();
        for (WXReqType item : items) {
            if (Objects.equals(item.getUrl(), key)) {
                return item.getName();
            }
        }
        //}
        return "";
    }

    public static Map<String, String> getKeyVlue() {
        Map<String, String> map = new HashMap<>();
        WXReqType[] items = WXReqType.values();
        for (WXReqType item : items) {
            map.put(item.getUrl() + "", item.getName());
        }
        return map;
    }

    public static List<Map<String, Object>> getSelectItems() {
        List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
        WXReqType[] items = WXReqType.values();
        for (WXReqType item : items) {
            Map<String, Object> map = new HashMap<>();
            map.put("label", item.getName());
            map.put("value", item.getUrl());
            result.add(map);
        }
        return result;
    }

    @JsonValue
    public String getUrl() {
        return url;
    }

    public String getName() {
        return name;
    }

}

