Files
keyboard/Shared/KBBizCode.h
2025-12-17 17:01:49 +08:00

114 lines
3.6 KiB
Objective-C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// KBBizCode.h
// 服务端业务状态码与通用解析工具
//
// 说明:
// - 将所有常用的业务 code 集中到这里,避免在项目里到处写裸数字;
// - 实际数值请按照你们后端的约定修改;
// - 若后端新增/调整 code只需要维护这一处即可。
//
#ifndef KBBizCode_h
#define KBBizCode_h
#import <Foundation/Foundation.h>
#import "KBAPI.h" // 引入 SUCCESS_CODE/ERROR_CODE 等基础定义
#define KBMessage @"message"
#define KBCode @"code"
#define KBData @"data"
/// 服务端业务状态码(按项目实际调整)
typedef NS_ENUM(NSInteger, KBBizCode) {
/// 业务成功SUCCESS(0, "ok")
KBBizCodeSuccess = 0,
/// 参数错误PARAMS_ERROR(40000, "请求参数错误")
KBBizCodeParamsError = 40000,
/// 上传文件为空FILE_IS_EMPTY(40001, "上传文件为空")
KBBizCodeFileIsEmpty = 40001,
/// 文件名错误FILE_NAME_ERROR(40002, "文件名错误")
KBBizCodeFileNameError = 40002,
/// Apple 登录失败APPLE_LOGIN_ERROR(40003, "Apple登录失败")
KBBizCodeAppleLoginError = 40003,
/// 未登录NOT_LOGIN_ERROR(40100, "未登录")
KBBizCodeNotLogin = 40100,
/// 无权限NO_AUTH_ERROR(40101, "无权限")
KBBizCodeNoAuth = 40101,
/// 未能读取到有效用户令牌TOKEN_NOT_FOUND(40102)
KBBizCodeTokenNotFound = 40102,
/// 令牌无效TOKEN_INVALID(40103)
KBBizCodeTokenInvalid = 40103,
/// 令牌已过期TOKEN_TIMEOUT(40104)
KBBizCodeTokenTimeout = 40104,
/// 令牌已被顶下线TOKEN_BE_REPLACED(40105)
KBBizCodeTokenBeReplaced = 40105,
/// 令牌已被踢下线TOKEN_KICK_OUT(40107)
KBBizCodeTokenKickOut = 40107,
/// 令牌已被冻结TOKEN_FREEZE(40108)
KBBizCodeTokenFreeze = 40108,
/// 未按照指定前缀提交令牌TOKEN_NO_PREFIX(40109)
KBBizCodeTokenNoPrefix = 40109,
/// 禁止访问FORBIDDEN_ERROR(40300, "禁止访问")
KBBizCodeForbidden = 40300,
/// 请求数据不存在NOT_FOUND_ERROR(40400, "请求数据不存在")
KBBizCodeNotFound = 40400,
/// 系统内部异常SYSTEM_ERROR(50000, "系统内部异常")
KBBizCodeSystemError = 50000,
/// 操作失败OPERATION_ERROR(50001, "操作失败")
KBBizCodeOperationError = 50001,
/// 特定收据无效
KBBizCodeReceiptError = 50016,
/// 免费次数耗尽,需要订阅
KBBizCodeQuotaExhausted = 50022,
};
NS_ASSUME_NONNULL_BEGIN
/// 从 JSON 响应中提取业务 code。
/// 支持常见字段code / status / retcode数字或字符串
/// 若未找到返回 NSNotFound。
static inline NSInteger KBBizCodeFromJSONObject(id obj) {
if (![obj isKindOfClass:NSDictionary.class]) return NSNotFound;
NSDictionary *d = (NSDictionary *)obj;
id code = d[@"code"] ?: d[@"status"] ?: d[@"retcode"];
if ([code isKindOfClass:NSNumber.class]) {
return ((NSNumber *)code).integerValue;
}
if ([code isKindOfClass:NSString.class]) {
return ((NSString *)code).integerValue;
}
return NSNotFound;
}
/// 从 JSON 响应中提取错误文案,支持 message/msg/error。
static inline NSString *KBBizMessageFromJSONObject(id obj) {
if (![obj isKindOfClass:NSDictionary.class]) return nil;
NSDictionary *d = (NSDictionary *)obj;
NSString *msg = d[KBMessage] ?: d[@"msg"] ?: d[@"error"];
if (![msg isKindOfClass:NSString.class]) return nil;
return msg;
}
NS_ASSUME_NONNULL_END
#endif /* KBBizCode_h */