error.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package frame
  2. import (
  3. "github.com/druidcaesa/gotool"
  4. "github.com/go-playground/validator/v10"
  5. "reflect"
  6. )
  7. const (
  8. BUSINESS_CODE = 500 //业务错误
  9. SQL_CODE = 501 //业务错误
  10. )
  11. type Exception struct {
  12. Status int
  13. Msg string
  14. }
  15. func Throw(code int, msg string) {
  16. panic(Exception{
  17. Status: code,
  18. Msg: msg,
  19. })
  20. }
  21. func CheckSqlErr(err error) {
  22. if err != nil {
  23. Throw(SQL_CODE, err.Error())
  24. }
  25. }
  26. func CheckErr(code int, err error) {
  27. if err != nil {
  28. Throw(code, err.Error())
  29. }
  30. }
  31. func CheckBusinessErr(err error) {
  32. if err != nil {
  33. Throw(BUSINESS_CODE, err.Error())
  34. }
  35. }
  36. func CheckEmpty(str, msg string) {
  37. if gotool.StrUtils.HasEmpty(str) {
  38. Throw(BUSINESS_CODE, msg)
  39. }
  40. }
  41. func CheckNil(ptr interface{}, msg string) {
  42. if ptr == nil {
  43. Throw(BUSINESS_CODE, msg)
  44. }
  45. }
  46. func CheckNotNil(ptr interface{}, msg string) {
  47. if ptr != nil {
  48. Throw(BUSINESS_CODE, msg)
  49. }
  50. }
  51. func CheckFalse(bl bool, msg string) {
  52. if !bl {
  53. Throw(BUSINESS_CODE, msg)
  54. }
  55. }
  56. func CheckTrue(bl bool, msg string) {
  57. if bl {
  58. Throw(BUSINESS_CODE, msg)
  59. }
  60. }
  61. // GetError 自定义错误消息
  62. func GetError(errs validator.ValidationErrors, r interface{}) string {
  63. s := reflect.TypeOf(r)
  64. if s.Kind() == reflect.Ptr { //处理指针
  65. s = s.Elem()
  66. }
  67. for _, fieldError := range errs {
  68. filed, _ := s.FieldByName(fieldError.Field())
  69. errTag := fieldError.Tag() + "_msg"
  70. // 获取对应binding得错误消息
  71. errTagText := filed.Tag.Get(errTag)
  72. // 获取统一错误消息
  73. errText := filed.Tag.Get("msg")
  74. if errTagText != "" {
  75. return errTagText
  76. }
  77. if errText != "" {
  78. return errText
  79. }
  80. return fieldError.Field() + ":" + fieldError.Tag()
  81. }
  82. return ""
  83. }