diff --git a/xy_sh/internal/service/service.go b/xy_sh/internal/service/service.go new file mode 100644 index 0000000..2025a6e --- /dev/null +++ b/xy_sh/internal/service/service.go @@ -0,0 +1,145 @@ +package service + +import ( + "encoding/json" + + "xy_sh/internal/biz" + "xy_sh/internal/entities" + + "github.com/gofiber/fiber/v2" +) + +func CreateOrderHandler(c *fiber.Ctx) error { + decryptedData := c.Locals("decryptedData").([]byte) + + var req entities.OrderRequest + if err := json.Unmarshal(decryptedData, &req); err != nil { + return c.Status(fiber.StatusBadRequest).JSON(entities.CommonResponse{ + Code: entities.CodeFailed, + Msg: "业务参数解析失败: " + err.Error(), + Data: nil, + }) + } + + if req.ActCode == "" || req.GoodsCode == "" || req.ActOrderNum == "" { + return c.Status(fiber.StatusBadRequest).JSON(entities.CommonResponse{ + Code: entities.CodeFailed, + Msg: "缺少必填参数: actCode, goodsCode, actOrderNum", + Data: nil, + }) + } + + result, err := biz.CreateOrder(&req) + if err != nil { + return c.Status(fiber.StatusOK).JSON(entities.CommonResponse{ + Code: entities.CodeFailed, + Msg: err.Error(), + Data: nil, + }) + } + + return c.Status(fiber.StatusOK).JSON(entities.CommonResponse{ + Code: entities.CodeSuccess, + Msg: "请求成功", + Data: result, + }) +} + +func QueryOrderHandler(c *fiber.Ctx) error { + decryptedData := c.Locals("decryptedData").([]byte) + + var req entities.QueryOrderRequest + if err := json.Unmarshal(decryptedData, &req); err != nil { + return c.Status(fiber.StatusBadRequest).JSON(entities.CommonResponse{ + Code: entities.CodeFailed, + Msg: "业务参数解析失败: " + err.Error(), + Data: nil, + }) + } + + if req.ActCode == "" || req.OrderNo == "" { + return c.Status(fiber.StatusBadRequest).JSON(entities.CommonResponse{ + Code: entities.CodeFailed, + Msg: "缺少必填参数: actCode, orderNo", + Data: nil, + }) + } + + result, err := biz.QueryOrder(&req) + if err != nil { + return c.Status(fiber.StatusOK).JSON(entities.CommonResponse{ + Code: entities.CodeFailed, + Msg: err.Error(), + Data: nil, + }) + } + + return c.Status(fiber.StatusOK).JSON(entities.CommonResponse{ + Code: entities.CodeSuccess, + Msg: "请求成功", + Data: result, + }) +} + +func WxRechargeHandler(c *fiber.Ctx) error { + decryptedData := c.Locals("decryptedData").([]byte) + + var req entities.WxRechargeRequest + if err := json.Unmarshal(decryptedData, &req); err != nil { + return c.Status(fiber.StatusBadRequest).JSON(entities.CommonResponse{ + Code: entities.CodeFailed, + Msg: "业务参数解析失败: " + err.Error(), + Data: nil, + }) + } + + if req.ActCode == "" || req.OrderNo == "" || req.GoodsCode == "" || req.ActOrderNum == "" || + req.AppId == "" || req.OpenId == "" { + return c.Status(fiber.StatusBadRequest).JSON(entities.CommonResponse{ + Code: entities.CodeFailed, + Msg: "缺少必填参数: actCode, orderNo, goodsCode, actOrderNum, appId, openId", + Data: nil, + }) + } + + result, err := biz.WxRecharge(&req) + if err != nil { + return c.Status(fiber.StatusOK).JSON(entities.CommonResponse{ + Code: entities.CodeFailed, + Msg: err.Error(), + Data: nil, + }) + } + + return c.Status(fiber.StatusOK).JSON(entities.CommonResponse{ + Code: entities.CodeSuccess, + Msg: "请求成功", + Data: result, + }) +} + +func CallbackHandler(c *fiber.Ctx) error { + decryptedData := c.Locals("decryptedData").([]byte) + + var req entities.CallbackRequest + if err := json.Unmarshal(decryptedData, &req); err != nil { + return c.Status(fiber.StatusBadRequest).SendString("参数解析失败") + } + + if req.OrderNo == "" || req.ActOrderNum == "" { + return c.Status(fiber.StatusBadRequest).SendString("缺少必填参数") + } + + if err := biz.HandleCallback(&req); err != nil { + return c.Status(fiber.StatusInternalServerError).SendString("处理失败") + } + + return c.Status(fiber.StatusOK).SendString("ok") +} + +func HealthHandler(c *fiber.Ctx) error { + return c.Status(fiber.StatusOK).JSON(fiber.Map{ + "status": "ok", + "message": "服务运行正常", + }) +} \ No newline at end of file