package portal import ( "math" "github.com/perfect-panel/server/internal/model/coupon" "github.com/perfect-panel/server/internal/model/payment" "github.com/perfect-panel/server/internal/types" ) func getDiscount(discounts []types.SubscribeDiscount, inputMonths int64) float64 { final := 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 < final { final = val } } return final } func calculateCoupon(amount int64, couponInfo *coupon.Coupon) int64 { if couponInfo.Type == 1 { return int64(math.Round(float64(amount) * (float64(couponInfo.Discount) / float64(100)))) } else { return min(couponInfo.Discount, amount) } } func calculateFee(amount int64, config *payment.Payment) int64 { var fee float64 switch config.FeeMode { case 0: return 0 case 1: fee = float64(amount) * (float64(config.FeePercent) / float64(100)) case 2: if amount > 0 { fee = float64(config.FeeAmount) } case 3: fee = float64(amount)*(float64(config.FeePercent)/float64(100)) + float64(config.FeeAmount) } return int64(math.Round(fee)) }