shanshanzhong fafb229295
All checks were successful
Build docker and publish / build (20.15.1) (push) Successful in 7m37s
feat: 为折扣计算函数 getDiscount 引入新用户判断逻辑以支持新用户专属折扣。
2026-03-11 03:56:48 -07:00

35 lines
933 B
Go

package order
import "github.com/perfect-panel/server/internal/types"
func getDiscount(discounts []types.SubscribeDiscount, inputMonths int64, isNewUser bool) float64 {
var finalDiscount float64 = 100
for _, discount := range discounts {
if discount.NewUserOnly && !isNewUser {
continue
}
if inputMonths >= discount.Quantity && discount.Discount < finalDiscount {
finalDiscount = discount.Discount
}
}
return finalDiscount / float64(100)
}
// isNewUserOnlyForQuantity checks whether the matched discount tier has new_user_only enabled.
func isNewUserOnlyForQuantity(discounts []types.SubscribeDiscount, inputQuantity int64) bool {
var finalDiscount float64 = 100
var newUserOnly bool
for _, discount := range discounts {
if inputQuantity >= discount.Quantity && discount.Discount < finalDiscount {
finalDiscount = discount.Discount
newUserOnly = discount.NewUserOnly
}
}
return newUserOnly
}