145 lines
3.1 KiB
Go
145 lines
3.1 KiB
Go
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")
|
|
} |