ErrorCode.java 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. package com.xuekairui.common;
  2. import lombok.AllArgsConstructor;
  3. import lombok.Getter;
  4. /**
  5. * 错误码枚举
  6. */
  7. @Getter
  8. @AllArgsConstructor
  9. public enum ErrorCode {
  10. // 通用错误
  11. SUCCESS(200, "操作成功"),
  12. BAD_REQUEST(400, "请求参数错误"),
  13. PARAM_ERROR(400, "参数错误"),
  14. UNAUTHORIZED(401, "未授权,请先登录"),
  15. FORBIDDEN(403, "无权限访问"),
  16. NOT_FOUND(404, "资源不存在"),
  17. TOO_MANY_REQUESTS(429, "请求过于频繁,请稍后再试"),
  18. BUSINESS_ERROR(500, "业务处理失败"),
  19. INTERNAL_ERROR(500, "服务器内部错误"),
  20. // ========== 用户模块 1001-1099 ==========
  21. USER_NOT_FOUND(1001, "用户不存在"),
  22. USER_ALREADY_EXISTS(1002, "用户已存在"),
  23. PHONE_ALREADY_BOUND(1003, "手机号已绑定其他账号"),
  24. WECHAT_ALREADY_BOUND(1004, "微信已绑定其他账号"),
  25. USER_DISABLED(1005, "账号已被禁用"),
  26. PASSWORD_NOT_SET(1006, "未设置密码,请先设置密码"),
  27. PASSWORD_INCORRECT(1007, "密码错误"),
  28. OLD_PASSWORD_INCORRECT(1008, "旧密码错误"),
  29. OLD_PASSWORD_REQUIRED(1009, "请输入旧密码"),
  30. PHONE_ALREADY_EXISTS(1010, "该手机号已被注册"),
  31. // ========== 验证码 1101-1199 ==========
  32. CODE_SEND_TOO_FREQUENT(1101, "验证码发送过于频繁,请稍后再试"),
  33. CODE_INVALID(1102, "验证码错误或已过期"),
  34. CODE_EXPIRED(1103, "验证码已过期"),
  35. // ========== 微信登录 1201-1299 ==========
  36. WECHAT_CODE_INVALID(1201, "微信授权码无效"),
  37. WECHAT_BIND_REQUIRED(1202, "请先绑定手机号"),
  38. WECHAT_LOGIN_FAILED(1203, "微信登录失败,请重试"),
  39. // ========== Token 1301-1399 ==========
  40. TOKEN_EXPIRED(1301, "Token已过期"),
  41. TOKEN_INVALID(1302, "Token无效"),
  42. REFRESH_TOKEN_INVALID(1303, "刷新Token无效"),
  43. // ========== 支付模块 2001-2099 ==========
  44. PAY_ORDER_NOT_FOUND(2001, "支付订单不存在"),
  45. PAY_ORDER_EXPIRED(2002, "支付订单已过期"),
  46. PAY_AMOUNT_INVALID(2003, "支付金额不正确"),
  47. PAY_CHANNEL_NOT_SUPPORT(2004, "不支持该支付渠道"),
  48. PAY_FAILED(2005, "支付失败,请重试"),
  49. REFUND_FAILED(2006, "退款失败,请重试"),
  50. PAY_PLAN_NOT_FOUND(2007, "支付方案不存在"),
  51. PAY_PLAN_DISABLED(2008, "支付方案已下架"),
  52. PAY_SIGN_VERIFY_FAILED(2009, "支付回调验签失败"),
  53. PAY_CHANNEL_NOT_CONFIGURED(2010, "支付渠道未配置,请检查payment配置"),
  54. PAY_PLAN_CODE_DUPLICATE(2011, "方案编码已存在"),
  55. // ========== 等级模块 4001-4099 ==========
  56. LEVEL_NOT_FOUND(4001, "用户等级不存在"),
  57. LEVEL_DISABLED(4002, "该等级已禁用"),
  58. LEVEL_CODE_DUPLICATE(4003, "等级编码已存在"),
  59. // ========== 优惠券 4101-4199 ==========
  60. COUPON_NOT_FOUND(4101, "优惠券不存在"),
  61. COUPON_DISABLED(4102, "优惠券已下架"),
  62. COUPON_EXHAUSTED(4103, "优惠券已发放完毕"),
  63. COUPON_EXPIRED(4104, "优惠券已过期"),
  64. COUPON_ALREADY_USED(4105, "优惠券已使用"),
  65. COUPON_LEVEL_NOT_ENOUGH(4106, "等级不满足优惠券领取条件"),
  66. COUPON_RECEIVE_LIMIT(4107, "已达领取上限"),
  67. // ========== 爬虫权益 4201-4299 ==========
  68. CRAWLER_QUOTA_EXCEEDED(4201, "今日爬虫次数已用完"),
  69. CRAWLER_MONTHLY_QUOTA_EXCEEDED(4202, "本月爬虫次数已用完"),
  70. CRAWLER_YEARLY_QUOTA_EXCEEDED(4205, "本年爬虫次数已用完"),
  71. CRAWLER_CONCURRENT_LIMIT(4203, "爬虫并发数已达上限"),
  72. CRAWLER_NO_PERMISSION(4204, "无爬虫使用权限"),
  73. // ========== 邀请模块 3001-3099 ==========
  74. INVITE_CODE_INVALID(3001, "邀请码无效"),
  75. INVITE_CODE_EXPIRED(3002, "邀请码已过期"),
  76. INVITE_SELF_FORBIDDEN(3003, "不能使用自己的邀请码"),
  77. INVITE_ALREADY_USED(3004, "该邀请码已被使用"),
  78. INVITE_RELATION_EXISTS(3005, "邀请关系已存在"),
  79. INVITE_REWARD_FAILED(3006, "邀请奖励发放失败"),
  80. INVITE_BIND_EXPIRED(3007, "注册时间已超过有效期,无法补填邀请码"),
  81. INVITE_LIMIT_REACHED(3008, "邀请人数已达上限"),
  82. // ========== 搜索模块 4301-4399 ==========
  83. SEARCH_QUOTA_EXCEEDED(4301, "搜索次数已用完"),
  84. SEARCH_HISTORY_NOT_FOUND(4302, "搜索记录不存在"),
  85. SEARCH_KEYWORD_EMPTY(4303, "搜索关键词不能为空"),
  86. // ========== 关注模块 4401-4499 ==========
  87. WATCHLIST_LIMIT_EXCEEDED(4401, "关注品种数已达上限"),
  88. WATCHLIST_ALREADY_EXISTS(4402, "该药品已在关注列表中"),
  89. WATCHLIST_NOT_FOUND(4403, "关注记录不存在");
  90. private final int code;
  91. private final String message;
  92. /**
  93. * 根据错误码查找枚举
  94. */
  95. public static ErrorCode getByCode(int code) {
  96. for (ErrorCode errorCode : values()) {
  97. if (errorCode.getCode() == code) {
  98. return errorCode;
  99. }
  100. }
  101. return null;
  102. }
  103. /**
  104. * 判断是否为成功状态
  105. */
  106. public boolean isSuccess() {
  107. return this == SUCCESS;
  108. }
  109. /**
  110. * 判断是否为客户端错误(4xx)
  111. */
  112. public boolean isClientError() {
  113. return code >= 400 && code < 500;
  114. }
  115. /**
  116. * 判断是否为服务器错误(5xx)
  117. */
  118. public boolean isServerError() {
  119. return code >= 500 && code < 600;
  120. }
  121. }