package com.ff.base.enums;

import lombok.Getter;

import java.util.Optional;
import java.util.stream.Stream;

/**
 * 错误代码
 *
 * @author shi
 * @date 2025/02/19
 */
@Getter
public enum ErrorCode {
    ERROR(500, "系统业务异常"),
    GAME_ACCOUNT_CREATION_FAILED(1001, "当前游戏账号已存在"),
    ACCOUNT_NOT_EXIST(1002, "当前游戏账号不存在"),
    PLATFORM_NOT_EXIST(1003, "游戏平台不存在"),
    CURRENCY_NOT_EXIST(1004, "游戏平台不支持的货币"),
    GAME_NOT_EXIST(1005, "游戏不存在"),
    ;

    // 获取错误码
    private final int code;
    // 获取错误信息
    private final String message;

    // 构造函数
    ErrorCode(int code, String message) {
        this.code = code;
        this.message = message;
    }

    /**
     * 按代码查找系统
     *
     * @param code 代码
     * @return {@link String }
     */
    public static String findByCode(Integer code) {
        Optional<String> system = Stream.of(ErrorCode.values())
                .filter(errorCode -> errorCode.getCode() == code)
                .map(ErrorCode::getMessage)
                .findFirst();
        return system.orElse(null);
    }
}