支付功能动态化扩展

This commit is contained in:
2026-03-18 13:07:06 +08:00
parent 99853b8514
commit 9d996acf5f
16 changed files with 1402 additions and 195 deletions

View File

@@ -516,16 +516,21 @@ func ResourcePrice(c *fiber.Ctx) error {
}
// 获取套餐价格
amount, err := req.GetAmount()
sku, err := s.Resource.GetSku(req.CreateResourceData)
if err != nil {
return err
}
before, after, err := s.Resource.GetPrice(sku, req.Count(), nil)
if err != nil {
return err
}
// 计算折扣
return c.JSON(ResourcePriceResp{
Price: amount.StringFixed(2),
Discounted: 1,
DiscountedPrice: amount.StringFixed(2),
Price: before.StringFixed(2),
Discounted: sku.Discount,
DiscountedPrice: after.StringFixed(2),
})
}

View File

@@ -60,21 +60,25 @@ func TradeCreate(c *fiber.Ctx) error {
return err
}
var product s.ProductInfo
switch req.Type {
case m.TradeTypePurchase:
if req.Resource == nil {
return core.NewBizErr("购买信息不能为空")
}
req.Product = req.Resource
product, err = s.NewCreateResourceByTradeData(req.Resource)
if err != nil {
return core.NewServErr("处理购买产品信息失败", err)
}
case m.TradeTypeRecharge:
if req.Recharge == nil {
return core.NewBizErr("充值信息不能为空")
}
req.Product = req.Recharge
product = req.Recharge
}
// 创建交易
result, err := s.Trade.CreateTrade(authCtx.User.ID, time.Now(), &req.CreateTradeData)
result, err := s.Trade.CreateTrade(authCtx.User.ID, time.Now(), &req.CreateTradeData, product)
if err != nil {
slog.Error("创建交易失败", "error", err)
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{"error": "创建交易失败"})