error.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package kf
  2. import (
  3. "reflect"
  4. "strings"
  5. )
  6. // Error 错误
  7. type Error string
  8. const (
  9. // SDKInitFailed 错误码:50001
  10. SDKInitFailed Error = "SDK初始化失败"
  11. // SDKCacheUnavailable 错误码:50002
  12. SDKCacheUnavailable Error = "缓存无效"
  13. // SDKUnknownError 错误码:50003
  14. SDKUnknownError Error = "未知错误"
  15. // SDKInvalidCredential 错误码:40001
  16. SDKInvalidCredential Error = "不合法的secret参数"
  17. // SDKInvalidImageSize 错误码:40009
  18. SDKInvalidImageSize Error = "无效的图片大小"
  19. // SDKInvalidCorpID 错误码:40013
  20. SDKInvalidCorpID Error = "无效的 CorpID"
  21. // SDKAccessTokenInvalid 错误码:40014
  22. SDKAccessTokenInvalid Error = "AccessToken 无效"
  23. // SDKValidateSignatureFailed 错误码:40015
  24. SDKValidateSignatureFailed Error = "校验签名错误"
  25. // SDKDecryptMSGFailed 错误码:40016
  26. SDKDecryptMSGFailed Error = "消息解密失败"
  27. // SDKMediaIDExceedMinLength 错误码:40058
  28. SDKMediaIDExceedMinLength Error = "不合法的参数, 请参照具体 API 接口说明进行传参"
  29. // SDKContentContainsSensitiveInformation 错误码:40201
  30. SDKContentContainsSensitiveInformation Error = "当前客服账号由于涉及敏感信息,已被封禁,请联系企业微信客服处理"
  31. // SDKAccessTokenMissing 错误码:41001
  32. SDKAccessTokenMissing Error = "缺少AccessToken参数"
  33. // SDKAccessTokenExpired 错误码:42001
  34. SDKAccessTokenExpired Error = "AccessToken 已过期"
  35. // SDKApiFreqOutOfLimit 错误码:45009
  36. SDKApiFreqOutOfLimit Error = "接口请求次数超频"
  37. // SDKApiForbidden 错误码:48002
  38. SDKApiForbidden Error = "API 禁止调用"
  39. // SDKInvalidOpenKFID 错误码:95000
  40. SDKInvalidOpenKFID Error = "无效的 open_kfid"
  41. // SDKOpenKFIDNotExist 错误码:95004
  42. SDKOpenKFIDNotExist Error = "open_kfid 不存在"
  43. // SDKWeWorkAlready 错误码:95011
  44. SDKWeWorkAlready Error = "已在企业微信使用微信客服"
  45. // SDKNotUseInWeCom 错误码:95012
  46. SDKNotUseInWeCom Error = "未在企业微信使用微信客服"
  47. // SDKApiNotOpen 错误码:95017
  48. SDKApiNotOpen Error = "API 功能没有被开启"
  49. )
  50. // Error 输出错误信息
  51. func (r Error) Error() string {
  52. return reflect.ValueOf(r).String()
  53. }
  54. var codeDic = map[int64]error{
  55. 50001: SDKInitFailed,
  56. 50002: SDKCacheUnavailable,
  57. 50003: SDKUnknownError,
  58. 40001: SDKInvalidCredential,
  59. 40009: SDKInvalidImageSize,
  60. 40013: SDKInvalidCorpID,
  61. 40014: SDKAccessTokenInvalid,
  62. 40015: SDKValidateSignatureFailed,
  63. 40016: SDKDecryptMSGFailed,
  64. 40058: SDKMediaIDExceedMinLength,
  65. 40201: SDKContentContainsSensitiveInformation,
  66. 41001: SDKAccessTokenMissing,
  67. 42001: SDKAccessTokenExpired,
  68. 45009: SDKApiFreqOutOfLimit,
  69. 48002: SDKApiForbidden,
  70. 95000: SDKInvalidOpenKFID,
  71. 95004: SDKOpenKFIDNotExist,
  72. 95011: SDKWeWorkAlready,
  73. 95012: SDKNotUseInWeCom,
  74. 95017: SDKApiNotOpen,
  75. }
  76. // NewSDKErr 初始化SDK实例错误信息
  77. func NewSDKErr(code int64, msgList ...string) error {
  78. if err := codeDic[code]; err != nil {
  79. return err
  80. }
  81. // 返回未知的自定义错误
  82. if len(msgList) > 0 {
  83. return Error(strings.Join(msgList, ","))
  84. }
  85. return SDKUnknownError
  86. }