xy_sh-20260724181350/xy_sh/internal/service/service.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,
})
}