调整交易和账单模型,完善支付与用户余额基础处理逻辑

This commit is contained in:
2025-04-09 16:34:41 +08:00
parent 4c47a71f30
commit 02897db890
10 changed files with 203 additions and 85 deletions

View File

@@ -44,12 +44,21 @@ func CreateResourceByBalance(c *fiber.Ctx) error {
}
// 计算价格
var amount = 0
var payment = 0
var amount = 100
var payment = 100
// 检查余额
if user.Balance < float64(req.Quota)/100 {
return errors.New("余额不足")
if user.Balance < float64(amount)/100 {
return fiber.NewError(fiber.StatusBadRequest, "余额不足")
}
// 更新用户余额
user.Balance -= float64(payment)
_, err = q.User.
Where(q.User.ID.Eq(authContext.Payload.Id)).
Update(q.User.Balance, user.Balance)
if err != nil {
return err
}
// 创建资源
@@ -73,26 +82,18 @@ func CreateResourceByBalance(c *fiber.Ctx) error {
return err
}
// 更新用户余额
user.Balance -= float64(payment)
_, err = q.User.
Where(q.User.ID.Eq(authContext.Payload.Id)).
Update(q.User.Balance, user.Balance)
if err != nil {
return err
}
// 生成账单
bill := m.Bill{
UserID: authContext.Payload.Id,
ResourceID: resource.ID,
BillNo: services.ID.GenReadable("bil"),
Type: 1,
Info: "购买套餐",
Amount: float64(amount),
Payment: float64(payment),
Type: 1,
Status: 1,
}
err = q.Bill.Save(&bill)
err = q.Bill.
Omit(q.Bill.TradeID, q.Bill.RefundID).
Create(&bill)
if err != nil {
return err
}
@@ -103,7 +104,7 @@ func CreateResourceByBalance(c *fiber.Ctx) error {
return err
}
return errors.New("not implemented")
return nil
}
// endregion