(bizFn func(ctx *gin.Context, req Req) (Result, error))
| 51 | } |
| 52 | |
| 53 | func WrapQuery[Req any](bizFn func(ctx *gin.Context, req Req) (Result, error)) gin.HandlerFunc { |
| 54 | return func(ctx *gin.Context) { |
| 55 | var req Req |
| 56 | if err := ctx.ShouldBindQuery(&req); err != nil { |
| 57 | apiresponse.BadRequestError(ctx, "无效的查询参数") |
| 58 | return |
| 59 | } |
| 60 | res, err := bizFn(ctx, req) |
| 61 | if err != nil { |
| 62 | apiresponse.InternalServerErrorWithDetails(ctx, gin.H{"error": err.Error()}, res.Msg) |
| 63 | return |
| 64 | } |
| 65 | ctx.JSON(http.StatusOK, apiresponse.ApiResponse{ |
| 66 | Code: res.Code, |
| 67 | Data: res.Data, |
| 68 | Message: res.Msg, |
| 69 | }) |
| 70 | } |
| 71 | } |
| 72 | |
| 73 | // WrapNoParam 是一个中间件,用于包裹不需要请求参数的业务逻辑函数,处理响应并集中管理错误处理。 |
| 74 | func WrapNoParam(bizFn func(ctx *gin.Context) (Result, error)) gin.HandlerFunc { |
no test coverage detected