70 lines
1.6 KiB
Go
70 lines
1.6 KiB
Go
package service
|
|
|
|
import (
|
|
"log"
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
|
|
"xy_sh/internal/biz"
|
|
"xy_sh/internal/entities"
|
|
)
|
|
|
|
// Service HTTP服务层
|
|
type Service struct {
|
|
biz *biz.Biz
|
|
}
|
|
|
|
// NewService 创建服务实例
|
|
func NewService(biz *biz.Biz) *Service {
|
|
return &Service{biz: biz}
|
|
}
|
|
|
|
// HandleOrderCreate 卡券/直充权益下单接口
|
|
func (s *Service) HandleOrderCreate(c *fiber.Ctx) error {
|
|
// 解析请求体
|
|
var req entities.EncryptedRequest
|
|
if err := c.BodyParser(&req); err != nil {
|
|
log.Printf("[服务] 请求体解析失败: %v", err)
|
|
return c.Status(fiber.StatusBadRequest).JSON(entities.ApiResponse{
|
|
Code: -1,
|
|
Msg: "请求体解析失败",
|
|
})
|
|
}
|
|
|
|
// 解密业务参数
|
|
var bizReq entities.OrderCreateRequest
|
|
if err := s.biz.DecryptRequest(req.EncryptedData, &bizReq); err != nil {
|
|
log.Printf("[服务] 解密业务参数失败: %v", err)
|
|
return c.JSON(entities.ApiResponse{
|
|
Code: -1,
|
|
Msg: "解密业务参数失败: " + err.Error(),
|
|
})
|
|
}
|
|
|
|
// 调用业务逻辑
|
|
bizResp, err := s.biz.CreateOrder(&bizReq)
|
|
if err != nil {
|
|
log.Printf("[服务] 下单失败: %v", err)
|
|
return c.JSON(entities.ApiResponse{
|
|
Code: -1,
|
|
Msg: err.Error(),
|
|
})
|
|
}
|
|
|
|
// 加密响应业务数据
|
|
encryptedData, err := s.biz.EncryptResponse(bizResp)
|
|
if err != nil {
|
|
log.Printf("[服务] 加密响应数据失败: %v", err)
|
|
return c.JSON(entities.ApiResponse{
|
|
Code: -1,
|
|
Msg: "加密响应数据失败",
|
|
})
|
|
}
|
|
|
|
log.Printf("[服务] 下单成功: orderNo=%s", bizResp.OrderNo)
|
|
return c.JSON(entities.ApiResponse{
|
|
Code: 0,
|
|
Msg: "请求成功",
|
|
Data: encryptedData,
|
|
})
|
|
} |