Projects STRLCPY SeaMoon Commits 214f3725
🤬
  • ■ ■ ■ ■
    pkg/api/controller/middleware/jwt.go
    skipped 16 lines
    17 17   tokenString := c.GetHeader("Authorization")
    18 18   
    19 19   if tokenString == "" {
    20  - servant.ErrorMsg(c, http.StatusUnauthorized, errors.ApiError(errors.ApiParamsRequire))
     20 + servant.ErrorMsg(c, http.StatusUnauthorized, errors.ApiError(errors.ApiParamsRequire, nil))
    21 21   c.Abort()
    22 22   return
    23 23   }
    skipped 25 lines
  • ■ ■ ■ ■
    pkg/api/controller/servant/response.go
    skipped 20 lines
    21 21  // ErrorMsg 通用错误响应
    22 22  func ErrorMsg(c *gin.Context, code int, err error) {
    23 23   if err == nil {
    24  - err = errors.ApiError(errors.ApiCommonError)
     24 + err = errors.ApiError(errors.ApiCommonError, nil)
    25 25   }
    26 26   c.JSON(code, gin.H{
    27 27   "success": false,
    skipped 5 lines
  • ■ ■ ■ ■ ■ ■
    pkg/api/controller/v1/provider.go
    skipped 64 lines
    65 65   return
    66 66   }
    67 67   
    68  - if res, err := service.SVC.CreateProvider(c, obj.ToModel()); err != nil {
     68 + if res, err := service.SVC.CreateProvider(c, obj.ToModel(true)); err != nil {
    69 69   servant.ErrorMsg(c, http.StatusInternalServerError, errors.ApiError(errors.ApiServiceError, err))
    70 70   } else {
    71 71   servant.SuccessMsg(c, 1, res.ToApi())
    skipped 15 lines
    87 87   
    88 88   obj.ID = uint(id)
    89 89   
    90  - if res, err := service.SVC.UpdateProvider(c, obj.ToModel()); err != nil {
     90 + if res, err := service.SVC.UpdateProvider(c, obj.ToModel(false)); err != nil {
    91 91   servant.ErrorMsg(c, http.StatusInternalServerError, errors.ApiError(errors.ApiServiceError, err))
    92 92   } else {
    93 93   servant.SuccessMsg(c, 1, res.ToApi())
    skipped 30 lines
  • ■ ■ ■ ■ ■ ■
    pkg/api/controller/v1/proxy.go
    skipped 54 lines
    55 55   
    56 56   // 判断是否从账户来的,账户来的需要先创建 tunnel
    57 57   if obj.TunnelCreateApi != nil {
    58  - if tun, err := service.SVC.CreateTunnel(c, obj.TunnelCreateApi.ToModel()); err != nil {
     58 + if tun, err := service.SVC.CreateTunnel(c, obj.TunnelCreateApi.ToModel(true)); err != nil {
    59 59   *obj.Status = enum.ProxyStatusError
    60 60   *obj.StatusMessage = err.Error()
    61 61   } else {
    skipped 2 lines
    64 64   }
    65 65   }
    66 66   
    67  - if res, err := service.SVC.CreateProxy(c, obj.ToModel()); err != nil {
     67 + if res, err := service.SVC.CreateProxy(c, obj.ToModel(true)); err != nil {
    68 68   servant.ErrorMsg(c, http.StatusInternalServerError, errors.ApiError(errors.ApiServiceError, err))
    69 69   return
    70 70   } else {
    skipped 18 lines
    89 89   // 朝着队列发送控制信号
    90 90   signal.Signal().SendProxySignal(obj.ID, *obj.Status)
    91 91   
    92  - if res, err := service.SVC.UpdateProxy(c, uint(id), obj.ToModel()); err != nil {
     92 + if res, err := service.SVC.UpdateProxy(c, uint(id), obj.ToModel(false)); err != nil {
    93 93   servant.ErrorMsg(c, http.StatusInternalServerError, errors.ApiError(errors.ApiServiceError, err))
    94 94   } else {
    95 95   servant.SuccessMsg(c, 1, res.ToApi())
    skipped 37 lines
  • ■ ■ ■ ■ ■ ■
    pkg/api/controller/v1/tunnel.go
    skipped 52 lines
    53 53   return
    54 54   }
    55 55   
    56  - if res, err := service.SVC.CreateTunnel(c, obj.ToModel()); err != nil {
     56 + if res, err := service.SVC.CreateTunnel(c, obj.ToModel(true)); err != nil {
    57 57   servant.ErrorMsg(c, http.StatusInternalServerError, errors.ApiError(errors.ApiServiceError, err))
    58 58   } else {
    59 59   servant.SuccessMsg(c, 1, res.ToApi(extra()))
    skipped 15 lines
    75 75   
    76 76   obj.ID = uint(id)
    77 77   
    78  - if res, err := service.SVC.UpdateTunnel(c, obj.ToModel()); err != nil {
     78 + if res, err := service.SVC.UpdateTunnel(c, obj.ToModel(false)); err != nil {
    79 79   servant.ErrorMsg(c, http.StatusInternalServerError, errors.ApiError(errors.ApiServiceError, err))
    80 80   } else {
    81 81   servant.SuccessMsg(c, 1, res.ToApi(extra()))
    skipped 33 lines
  • ■ ■ ■ ■ ■ ■
    pkg/api/models/models.go
    skipped 25 lines
    26 26  func toModel(src interface{}, dst interface{}, full bool) interface{} {
    27 27   copyReflect(src, dst)
    28 28   if full {
     29 + // 实际上这里自动填充防止空指针,做了很多次的改动
     30 + // 最终决定,只有 create 一个新对象时候是需要自动填充的,
     31 + // update 不要帮别人填充,null 就是 null
    29 32   autoFull(dst)
    30 33   }
    31 34   return dst
    skipped 65 lines
  • ■ ■ ■ ■ ■ ■
    pkg/api/models/provider.go
    skipped 84 lines
    85 85   return toApi(p, &ProviderApi{}, p.extra()).(*ProviderApi)
    86 86  }
    87 87   
    88  -func (pa ProviderCreateApi) ToModel() *Provider {
    89  - return toModel(pa, &Provider{}, true).(*Provider)
     88 +func (pa ProviderCreateApi) ToModel(full bool) *Provider {
     89 + return toModel(pa, &Provider{}, full).(*Provider)
    90 90  }
    91 91   
    92 92  func (p Provider) extra() func(api interface{}) {
    skipped 29 lines
  • ■ ■ ■ ■ ■ ■
    pkg/api/models/proxy.go
    skipped 80 lines
    81 81   return res
    82 82  }
    83 83   
    84  -func (pa ProxyCreateApi) ToModel() *Proxy {
    85  - return toModel(pa, &Proxy{}, true).(*Proxy)
     84 +func (pa ProxyCreateApi) ToModel(full bool) *Proxy {
     85 + return toModel(pa, &Proxy{}, full).(*Proxy)
    86 86  }
    87 87   
  • ■ ■ ■ ■ ■ ■
    pkg/api/models/tunnel.go
    skipped 104 lines
    105 105   return res
    106 106  }
    107 107   
    108  -func (ta TunnelCreateApi) ToModel() *Tunnel {
    109  - return toModel(ta, &Tunnel{}, true).(*Tunnel)
     108 +func (ta TunnelCreateApi) ToModel(full bool) *Tunnel {
     109 + return toModel(ta, &Tunnel{}, full).(*Tunnel)
    110 110  }
    111 111   
    112 112  func NewTunnelCreateApi() *TunnelCreateApi {
    skipped 5 lines
  • ■ ■ ■ ■
    pkg/api/service/provider.go
    skipped 139 lines
    140 140   continue
    141 141   }
    142 142   tun.ProviderId = id
    143  - if _, err = SVC.CreateTunnel(ctx, tun.ToModel()); err != nil {
     143 + if _, err = SVC.CreateTunnel(ctx, tun.ToModel(true)); err != nil {
    144 144   return err
    145 145   }
    146 146   }
    skipped 12 lines
  • ■ ■ ■ ■ ■
    pkg/system/errors/api.go
    1 1  package errors
    2 2   
    3 3  import (
    4  - "github.com/pkg/errors"
    5  - 
    6 4   "github.com/DVKunion/SeaMoon/pkg/system/xlog"
    7 5  )
    8 6   
    skipped 9 lines
    18 16   return a.s
    19 17  }
    20 18   
    21  -func ApiError(msg APIErrorMsg, e ...error) APIError {
    22  - res := APIError{
     19 +func ApiError(msg APIErrorMsg, e error) APIError {
     20 + return APIError{
    23 21   s: string(msg),
    24  - e: errors.New(""),
    25  - }
    26  - if len(e) > 0 {
    27  - for _, es := range e {
    28  - res.e = errors.Wrap(res.e, es.Error())
    29  - }
     22 + e: e,
    30 23   }
    31  - return res
    32 24  }
    33 25   
Please wait...
Page is in error, reload to recover