82 lines
1.6 KiB
Go
82 lines
1.6 KiB
Go
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(),
|
|
})
|
|
}
|