package com.cf.imes.framework.common.exception.enums;

import com.cf.imes.framework.common.exception.ErrorCode;

/**
 * 全局错误码枚举
 * 0-999 系统异常编码保留
 *
 * 一般情况下，使用 HTTP 响应状态码 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status
 * 虽然说，HTTP 响应状态码作为业务使用表达能力偏弱，但是使用在系统层面还是非常不错的
 * 比较特殊的是，因为之前一直使用 0 作为成功，就不使用 200 啦。
 *
 * @author 晨丰科技
 */
public class GlobalErrorCodeConstants {

    public static final ErrorCode SUCCESS = new ErrorCode(0, "成功");

    // ========== 客户端错误段 ==========

    public static final ErrorCode BAD_REQUEST = new ErrorCode(400, "请求参数不正确");
    public static final ErrorCode UNAUTHORIZED = new ErrorCode(401, "账号未登录");
    public static final ErrorCode FORBIDDEN = new ErrorCode(403, "没有该操作权限");
    public static final ErrorCode NOT_FOUND = new ErrorCode(404, "请求未找到");
    public static final ErrorCode METHOD_NOT_ALLOWED = new ErrorCode(405, "请求方法不正确");
    public static final ErrorCode LOCKED = new ErrorCode(423, "请求失败，请稍后重试"); // 并发请求，不允许
    public static final ErrorCode TOO_MANY_REQUESTS = new ErrorCode(429, "请求过于频繁，请稍后重试");

    // ========== 服务端错误段 ==========

    public static final ErrorCode INTERNAL_SERVER_ERROR = new ErrorCode(500, "系统繁忙，请稍后再试");
    public static final ErrorCode NOT_IMPLEMENTED = new ErrorCode(501, "功能未实现/未开启");

    // ES文档更新失败
    // ES文档删除失败
    // ES文档刷新失败
    public static final ErrorCode ES_DATA_ERROR = new ErrorCode(503, "数据异常，请勿点击过快，请稍等再试");
    public static final ErrorCode DATA_EXCEPTION_ERROR = new ErrorCode(505, "数据异常，请联系客服处理");
    public static final ErrorCode DATA_DATA_ERROR = new ErrorCode(506, "文档数据异常，请勿频繁操作，请稍后重试");

    // ========== 自定义错误段 ==========
    public static final ErrorCode REPEATED_REQUESTS = new ErrorCode(900, "重复请求，请稍后重试"); // 重复请求
    public static final ErrorCode DEMO_DENY = new ErrorCode(901, "演示模式，禁止写操作");
}
