同步历史版本代码

This commit is contained in:
2026-03-03 09:32:22 -08:00
parent 7d46b31866
commit 4d8516b2e1
140 changed files with 8399 additions and 489 deletions
+14 -2
View File
@@ -3,6 +3,7 @@ package order
import (
"context"
"encoding/json"
"math"
"time"
"github.com/perfect-panel/server/internal/model/log"
@@ -72,7 +73,18 @@ func (l *PurchaseLogic) Purchase(req *types.PurchaseOrderRequest) (resp *types.P
}
if l.svcCtx.Config.Subscribe.SingleModel {
if len(userSub) > 0 {
return nil, errors.Wrapf(xerr.NewErrCode(xerr.UserSubscribeExist), "user has subscription")
// Only block if user has a paid subscription (OrderId > 0)
// Allow purchase if user only has gift subscriptions
hasPaidSubscription := false
for _, s := range userSub {
if s.OrderId > 0 {
hasPaidSubscription = true
break
}
}
if hasPaidSubscription {
return nil, errors.Wrapf(xerr.NewErrCode(xerr.UserSubscribeExist), "user has subscription")
}
}
}
@@ -101,7 +113,7 @@ func (l *PurchaseLogic) Purchase(req *types.PurchaseOrderRequest) (resp *types.P
}
price := sub.UnitPrice * req.Quantity
// discount amount
amount := int64(float64(price) * discount)
amount := int64(math.Round(float64(price) * discount))
discountAmount := price - amount
// Validate amount to prevent overflow