From 9333bfe9b6c5814d7e611ee4da4b24f76bf811de Mon Sep 17 00:00:00 2001 From: majun <3060162534@qq.com> Date: Thu, 5 Dec 2024 11:11:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=81=E8=A3=85Result=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/live/live.go | 3 ++- internal/cmd/cmd.go | 8 +++++--- internal/controller/live/live_v1_get_live.go | 12 ++++++++---- internal/middleware/middleware.go | 24 ++++++++++++++++++++++++ 4 files changed, 39 insertions(+), 8 deletions(-) create mode 100644 internal/middleware/middleware.go diff --git a/api/live/live.go b/api/live/live.go index 5003154..b70883f 100644 --- a/api/live/live.go +++ b/api/live/live.go @@ -8,8 +8,9 @@ import ( "context" "practice_Go/api/live/v1" + "practice_Go/internal/model/dto" ) type ILiveV1 interface { - GetLive(ctx context.Context, req *v1.GetLiveReq) (res *v1.GetLiveRes, err error) + GetLive(ctx context.Context, req *v1.GetLiveReq) (*dto.Result, error) } diff --git a/internal/cmd/cmd.go b/internal/cmd/cmd.go index 8568148..b723c00 100644 --- a/internal/cmd/cmd.go +++ b/internal/cmd/cmd.go @@ -6,12 +6,14 @@ import ( "practice_Go/internal/controller/live" "practice_Go/internal/controller/reservation" "practice_Go/internal/controller/subscription" + "practice_Go/internal/middleware" - "github.com/gogf/gf/v2/frame/g" - "github.com/gogf/gf/v2/net/ghttp" "practice_Go/internal/controller/clubPage" "practice_Go/internal/controller/mainPage" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/net/ghttp" + "github.com/gogf/gf/v2/os/gcmd" ) @@ -40,7 +42,7 @@ var ( Func: func(ctx context.Context, parser *gcmd.Parser) (err error) { s := g.Server() s.Group("/", func(group *ghttp.RouterGroup) { - group.Middleware(ghttp.MiddlewareHandlerResponse) + group.Middleware(middleware.CustomResponseMiddleware) group.Bind( channel.NewV1(), subscription.NewV1(), diff --git a/internal/controller/live/live_v1_get_live.go b/internal/controller/live/live_v1_get_live.go index 4f30391..d8bf410 100644 --- a/internal/controller/live/live_v1_get_live.go +++ b/internal/controller/live/live_v1_get_live.go @@ -6,15 +6,19 @@ import ( "practice_Go/api/live/v1" "practice_Go/internal/dao" + "practice_Go/internal/model/dto" "practice_Go/internal/model/entity" ) -func (c *ControllerV1) GetLive(ctx context.Context, req *v1.GetLiveReq) (res *v1.GetLiveRes, err error) { - res = &v1.GetLiveRes{} +func (c *ControllerV1) GetLive(ctx context.Context, req *v1.GetLiveReq) (*dto.Result, error) { + res := v1.GetLiveRes{} now := time.Now() - err = dao.GoLives.Ctx(ctx).With(entity.GoUsers{}).Where("start_time >=? or status = 1", now).Order("status desc, start_time asc").Scan(&res.List) + err := dao.GoLives.Ctx(ctx).With(entity.GoUsers{}).Where("start_time >=? or status = 1", now).Order("status desc, start_time asc").Scan(&res.List) for i, live := range res.List { res.List[i].Reservation, err = dao.GoLiveReservations.Ctx(ctx).Wheref("live_id =? and user_id =?", live.Id, req.UserId).Count() } - return + if err != nil { + return dto.Error(err.Error()), nil + } + return dto.SuccessWithData(res.List), nil } diff --git a/internal/middleware/middleware.go b/internal/middleware/middleware.go new file mode 100644 index 0000000..8afe3a1 --- /dev/null +++ b/internal/middleware/middleware.go @@ -0,0 +1,24 @@ +package middleware + +import ( + "github.com/gogf/gf/v2/net/ghttp" +) + +// CustomResponseMiddleware 自定义响应中间件,处理嵌套问题 +func CustomResponseMiddleware(r *ghttp.Request) { + // 执行下一个中间件或处理程序 + r.Middleware.Next() + + // 获取处理程序的响应内容 + response := r.GetHandlerResponse() + if response == nil { + // 如果没有响应内容,则直接返回 + return + } + + // 清空原始响应缓冲区,避免重复输出 + r.Response.ClearBuffer() + + // 自定义返回格式,避免嵌套 + r.Response.WriteJson(response) +}