From 0aba5c1b5955af3e8952d5db4d370246141b6247 Mon Sep 17 00:00:00 2001 From: renzhiyuan <465386466@qq.com> Date: Fri, 24 Jul 2026 18:13:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=96=87=E4=BB=B6:=20xy=5Fsh?= =?UTF-8?q?/internal/service/service.go?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- xy_sh/internal/service/service.go | 70 +++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 xy_sh/internal/service/service.go diff --git a/xy_sh/internal/service/service.go b/xy_sh/internal/service/service.go new file mode 100644 index 0000000..e848006 --- /dev/null +++ b/xy_sh/internal/service/service.go @@ -0,0 +1,70 @@ +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, + }) +} \ No newline at end of file