shanshanzhong 9987bd43fa
All checks were successful
Build docker and publish / build (20.15.1) (push) Successful in 6m53s
fix(订单): 修复折扣计算问题并添加四舍五入处理
统一处理百分比和系数两种折扣输入方式,增加边界保护
在金额计算中使用math.Round进行四舍五入处理
添加相关单元测试确保计算准确性
2025-12-02 02:22:09 -08:00

26 lines
723 B
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package order
import "github.com/perfect-panel/server/internal/types"
// getDiscount 计算最终价格倍数
// 参数discounts 折扣规则列表(数量阈值 + 折扣倍数inputMonths 购买时长
// 返回:最终价格倍数(如 0.95 表示按 95% 计价)
func getDiscount(discounts []types.SubscribeDiscount, inputMonths int64) float64 {
var finalDiscount float64 = 1.0
for _, d := range discounts {
val := d.Discount
if val > 1 && val <= 100 {
val = val / 100.0
}
if val < 0 {
val = 0
}
if inputMonths >= d.Quantity && val < finalDiscount {
finalDiscount = val
}
}
return finalDiscount
}