package router import ( "xy_sh/internal/entities" "xy_sh/internal/middleware" "xy_sh/internal/service" "xy_sh/pkg/crypto" "xy_sh/tmpl/errcode" "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/log" ) func SetupRoutes( app *fiber.App, service *service.Order, ) { v1 := app.Group("/api/v1", middleware.SetLogReq()) app.Get("/test", func(c *fiber.Ctx) error { return c.SendString("test ok") }) registerResponse(v1) v1.Post("/order/create", middleware.SignVerifyMiddleware(), service.CreateOrderHandler, ) v1.Post("/order/query", middleware.SignVerifyMiddleware(), service.QueryOrderHandler, ) v1.Post("/callback/notify", service.CallbackHandler, ) } func registerResponse(router fiber.Router) { // 自定义返回 router.Use(func(c *fiber.Ctx) error { err := c.Next() return registerCommon(c, err) }) } func registerCommon(c *fiber.Ctx, err error) error { log.Info("Response: ", string(c.Response().Body()), " Err: ", err) if c.Path() == "/api/v1/callback/notify" { return nil } // 如果有错误发生 if err != nil { // 返回自定义错误响应 return c.JSON(fiber.Map{ "msg": err.Error(), "code": entities.CodeFailed, "data": nil, }) } var data string if len(c.Response().Body()) > 0 { data, err = crypto.SM4CBCEncrypt(c.Response().Body()) if err != nil { return c.JSON(fiber.Map{ "msg": err.Error(), "code": entities.CodeFailed, "data": nil, }) } } return c.JSON(fiber.Map{ "data": data, "message": errcode.Success.Error(), "code": errcode.Success.Code(), }) }