From 3cfaaa3ef93df843b4a6322cde206e7b18eef39f Mon Sep 17 00:00:00 2001 From: renzhiyuan <465386466@qq.com> Date: Fri, 24 Jul 2026 11:54:44 +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 | 145 ++++++++++++++++++++++++++++++ 1 file changed, 145 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..e0423fb --- /dev/null +++ b/xy_sh/internal/service/service.go @@ -0,0 +1,145 @@ +package service + +import ( + "encoding/json" + + "github.com/gofiber/fiber/v2" + "xy_sh/internal/biz" + "xy_sh/internal/config" + "xy_sh/internal/entities" +) + +// Service 服务层 +type Service struct { + biz *biz.Biz + cfg *config.Config +} + +// NewService 创建服务实例 +func NewService(cfg *config.Config) *Service { + return &Service{ + biz: biz.NewBiz(cfg), + cfg: cfg, + } +} + +// Order 卡券/直充权益下单接口 +func (s *Service) Order(c *fiber.Ctx) error { + decrypted := c.Locals("decryptedBody").([]byte) + + var req entities.OrderRequest + if err := json.Unmarshal(decrypted, &req); err != nil { + return c.JSON(entities.ApiResponse{ + Code: -1, + Msg: "业务参数解析失败: " + err.Error(), + }) + } + + resp, err := s.biz.ProcessOrder(&req) + if err != nil { + return c.JSON(entities.ApiResponse{ + Code: -1, + Msg: err.Error(), + }) + } + + encryptedData, err := s.biz.EncryptResponse(resp) + if err != nil { + return c.JSON(entities.ApiResponse{ + Code: -1, + Msg: "响应加密失败: " + err.Error(), + }) + } + + return c.JSON(entities.ApiResponse{ + Code: 0, + Msg: "请求成功", + Data: encryptedData, + }) +} + +// Query 卡券/直充/微信立减金订单查询接口 +func (s *Service) Query(c *fiber.Ctx) error { + decrypted := c.Locals("decryptedBody").([]byte) + + var req entities.QueryRequest + if err := json.Unmarshal(decrypted, &req); err != nil { + return c.JSON(entities.ApiResponse{ + Code: -1, + Msg: "业务参数解析失败: " + err.Error(), + }) + } + + resp, err := s.biz.ProcessQuery(&req) + if err != nil { + return c.JSON(entities.ApiResponse{ + Code: -1, + Msg: err.Error(), + }) + } + + encryptedData, err := s.biz.EncryptResponse(resp) + if err != nil { + return c.JSON(entities.ApiResponse{ + Code: -1, + Msg: "响应加密失败: " + err.Error(), + }) + } + + return c.JSON(entities.ApiResponse{ + Code: 0, + Msg: "请求成功", + Data: encryptedData, + }) +} + +// WechatRecharge 微信立减金订单充值接口 +func (s *Service) WechatRecharge(c *fiber.Ctx) error { + decrypted := c.Locals("decryptedBody").([]byte) + + var req entities.WechatRechargeRequest + if err := json.Unmarshal(decrypted, &req); err != nil { + return c.JSON(entities.ApiResponse{ + Code: -1, + Msg: "业务参数解析失败: " + err.Error(), + }) + } + + resp, err := s.biz.ProcessWechatRecharge(&req) + if err != nil { + return c.JSON(entities.ApiResponse{ + Code: -1, + Msg: err.Error(), + }) + } + + encryptedData, err := s.biz.EncryptResponse(resp) + if err != nil { + return c.JSON(entities.ApiResponse{ + Code: -1, + Msg: "响应加密失败: " + err.Error(), + }) + } + + return c.JSON(entities.ApiResponse{ + Code: 0, + Msg: "请求成功", + Data: encryptedData, + }) +} + +// Callback 卡券/直充/微信立减金充值结果通知接口 +func (s *Service) Callback(c *fiber.Ctx) error { + decrypted := c.Locals("decryptedBody").([]byte) + + var req entities.CallbackRequest + if err := json.Unmarshal(decrypted, &req); err != nil { + return c.Status(fiber.StatusBadRequest).SendString("参数解析失败") + } + + if err := s.biz.ProcessCallback(&req); err != nil { + return c.Status(fiber.StatusInternalServerError).SendString(err.Error()) + } + + return c.SendString("ok") +} \ No newline at end of file