package portal import ( "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 { var finalDiscount float64 = 1.0 for _, discount := range discounts { if inputMonths >= discount.Quantity && discount.Discount < finalDiscount { finalDiscount = discount.Discount } } return finalDiscount } func calculateCoupon(amount int64, couponInfo *coupon.Coupon) int64 { if couponInfo.Type == 1 { return int64(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(fee) }