package com.xuekairui.common; import lombok.AllArgsConstructor; import lombok.Getter; /** * 错误码枚举 */ @Getter @AllArgsConstructor public enum ErrorCode { // 通用错误 SUCCESS(200, "操作成功"), BAD_REQUEST(400, "请求参数错误"), PARAM_ERROR(400, "参数错误"), UNAUTHORIZED(401, "未授权,请先登录"), FORBIDDEN(403, "无权限访问"), NOT_FOUND(404, "资源不存在"), TOO_MANY_REQUESTS(429, "请求过于频繁,请稍后再试"), BUSINESS_ERROR(500, "业务处理失败"), INTERNAL_ERROR(500, "服务器内部错误"), // ========== 用户模块 1001-1099 ========== USER_NOT_FOUND(1001, "用户不存在"), USER_ALREADY_EXISTS(1002, "用户已存在"), PHONE_ALREADY_BOUND(1003, "手机号已绑定其他账号"), WECHAT_ALREADY_BOUND(1004, "微信已绑定其他账号"), USER_DISABLED(1005, "账号已被禁用"), PASSWORD_NOT_SET(1006, "未设置密码,请先设置密码"), PASSWORD_INCORRECT(1007, "密码错误"), OLD_PASSWORD_INCORRECT(1008, "旧密码错误"), OLD_PASSWORD_REQUIRED(1009, "请输入旧密码"), PHONE_ALREADY_EXISTS(1010, "该手机号已被注册"), // ========== 验证码 1101-1199 ========== CODE_SEND_TOO_FREQUENT(1101, "验证码发送过于频繁,请稍后再试"), CODE_INVALID(1102, "验证码错误或已过期"), CODE_EXPIRED(1103, "验证码已过期"), // ========== 微信登录 1201-1299 ========== WECHAT_CODE_INVALID(1201, "微信授权码无效"), WECHAT_BIND_REQUIRED(1202, "请先绑定手机号"), WECHAT_LOGIN_FAILED(1203, "微信登录失败,请重试"), // ========== Token 1301-1399 ========== TOKEN_EXPIRED(1301, "Token已过期"), TOKEN_INVALID(1302, "Token无效"), REFRESH_TOKEN_INVALID(1303, "刷新Token无效"), // ========== 支付模块 2001-2099 ========== PAY_ORDER_NOT_FOUND(2001, "支付订单不存在"), PAY_ORDER_EXPIRED(2002, "支付订单已过期"), PAY_AMOUNT_INVALID(2003, "支付金额不正确"), PAY_CHANNEL_NOT_SUPPORT(2004, "不支持该支付渠道"), PAY_FAILED(2005, "支付失败,请重试"), REFUND_FAILED(2006, "退款失败,请重试"), PAY_PLAN_NOT_FOUND(2007, "支付方案不存在"), PAY_PLAN_DISABLED(2008, "支付方案已下架"), PAY_SIGN_VERIFY_FAILED(2009, "支付回调验签失败"), PAY_CHANNEL_NOT_CONFIGURED(2010, "支付渠道未配置,请检查payment配置"), PAY_PLAN_CODE_DUPLICATE(2011, "方案编码已存在"), // ========== 等级模块 4001-4099 ========== LEVEL_NOT_FOUND(4001, "用户等级不存在"), LEVEL_DISABLED(4002, "该等级已禁用"), LEVEL_CODE_DUPLICATE(4003, "等级编码已存在"), // ========== 优惠券 4101-4199 ========== COUPON_NOT_FOUND(4101, "优惠券不存在"), COUPON_DISABLED(4102, "优惠券已下架"), COUPON_EXHAUSTED(4103, "优惠券已发放完毕"), COUPON_EXPIRED(4104, "优惠券已过期"), COUPON_ALREADY_USED(4105, "优惠券已使用"), COUPON_LEVEL_NOT_ENOUGH(4106, "等级不满足优惠券领取条件"), COUPON_RECEIVE_LIMIT(4107, "已达领取上限"), // ========== 爬虫权益 4201-4299 ========== CRAWLER_QUOTA_EXCEEDED(4201, "今日爬虫次数已用完"), CRAWLER_MONTHLY_QUOTA_EXCEEDED(4202, "本月爬虫次数已用完"), CRAWLER_YEARLY_QUOTA_EXCEEDED(4205, "本年爬虫次数已用完"), CRAWLER_CONCURRENT_LIMIT(4203, "爬虫并发数已达上限"), CRAWLER_NO_PERMISSION(4204, "无爬虫使用权限"), // ========== 邀请模块 3001-3099 ========== INVITE_CODE_INVALID(3001, "邀请码无效"), INVITE_CODE_EXPIRED(3002, "邀请码已过期"), INVITE_SELF_FORBIDDEN(3003, "不能使用自己的邀请码"), INVITE_ALREADY_USED(3004, "该邀请码已被使用"), INVITE_RELATION_EXISTS(3005, "邀请关系已存在"), INVITE_REWARD_FAILED(3006, "邀请奖励发放失败"), INVITE_BIND_EXPIRED(3007, "注册时间已超过有效期,无法补填邀请码"), INVITE_LIMIT_REACHED(3008, "邀请人数已达上限"), // ========== 搜索模块 4301-4399 ========== SEARCH_QUOTA_EXCEEDED(4301, "搜索次数已用完"), SEARCH_HISTORY_NOT_FOUND(4302, "搜索记录不存在"), SEARCH_KEYWORD_EMPTY(4303, "搜索关键词不能为空"), // ========== 关注模块 4401-4499 ========== WATCHLIST_LIMIT_EXCEEDED(4401, "关注品种数已达上限"), WATCHLIST_ALREADY_EXISTS(4402, "该药品已在关注列表中"), WATCHLIST_NOT_FOUND(4403, "关注记录不存在"); private final int code; private final String message; /** * 根据错误码查找枚举 */ public static ErrorCode getByCode(int code) { for (ErrorCode errorCode : values()) { if (errorCode.getCode() == code) { return errorCode; } } return null; } /** * 判断是否为成功状态 */ public boolean isSuccess() { return this == SUCCESS; } /** * 判断是否为客户端错误(4xx) */ public boolean isClientError() { return code >= 400 && code < 500; } /** * 判断是否为服务器错误(5xx) */ public boolean isServerError() { return code >= 500 && code < 600; } }