Browse Source

封装Result格式

dev
majun 7 months ago
parent
commit
9333bfe9b6
  1. 3
      api/live/live.go
  2. 8
      internal/cmd/cmd.go
  3. 12
      internal/controller/live/live_v1_get_live.go
  4. 24
      internal/middleware/middleware.go

3
api/live/live.go

@ -8,8 +8,9 @@ import (
"context" "context"
"practice_Go/api/live/v1" "practice_Go/api/live/v1"
"practice_Go/internal/model/dto"
) )
type ILiveV1 interface { 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)
} }

8
internal/cmd/cmd.go

@ -6,12 +6,14 @@ import (
"practice_Go/internal/controller/live" "practice_Go/internal/controller/live"
"practice_Go/internal/controller/reservation" "practice_Go/internal/controller/reservation"
"practice_Go/internal/controller/subscription" "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/clubPage"
"practice_Go/internal/controller/mainPage" "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" "github.com/gogf/gf/v2/os/gcmd"
) )
@ -40,7 +42,7 @@ var (
Func: func(ctx context.Context, parser *gcmd.Parser) (err error) { Func: func(ctx context.Context, parser *gcmd.Parser) (err error) {
s := g.Server() s := g.Server()
s.Group("/", func(group *ghttp.RouterGroup) { s.Group("/", func(group *ghttp.RouterGroup) {
group.Middleware(ghttp.MiddlewareHandlerResponse)
group.Middleware(middleware.CustomResponseMiddleware)
group.Bind( group.Bind(
channel.NewV1(), channel.NewV1(),
subscription.NewV1(), subscription.NewV1(),

12
internal/controller/live/live_v1_get_live.go

@ -6,15 +6,19 @@ import (
"practice_Go/api/live/v1" "practice_Go/api/live/v1"
"practice_Go/internal/dao" "practice_Go/internal/dao"
"practice_Go/internal/model/dto"
"practice_Go/internal/model/entity" "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() 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 { 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() 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
} }

24
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)
}
Loading…
Cancel
Save