info_pricing_strategy.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package db
  2. import (
  3. "context"
  4. "fmt"
  5. "youngee_m_api/model/gorm_model"
  6. log "github.com/sirupsen/logrus"
  7. )
  8. func GetPricingStrategy(ctx context.Context, fansLow int64, fansUp int64, feeForm int64, platForm int64) (*gorm_model.InfoPricingStrategy, error) {
  9. db := GetReadDB(context.Background())
  10. PricingStrategys := []gorm_model.InfoPricingStrategy{}
  11. whereStr := fmt.Sprintf("fee_form = %d and platform = %d and fans_low <= %d and fans_up >= %d", feeForm, platForm, fansLow, fansLow)
  12. orStr := fmt.Sprintf("fee_form = %d and platform = %d and fans_low <= %d and fans_up >= %d", feeForm, platForm, fansUp, fansUp)
  13. err := db.Model(gorm_model.InfoPricingStrategy{}).Where(whereStr).Or(orStr).Scan(&PricingStrategys).Error
  14. if err != nil {
  15. log.Println("DB GetLastAutoDefaultID:", err)
  16. return nil, err
  17. }
  18. PricingStrategy := gorm_model.InfoPricingStrategy{}
  19. if feeForm == 1 {
  20. var maxCharge float64 = 0
  21. for _, v := range PricingStrategys {
  22. if v.ServiceCharge >= maxCharge {
  23. maxCharge = v.ServiceCharge
  24. PricingStrategy = v
  25. }
  26. }
  27. } else {
  28. var maxRate int64 = 0
  29. for _, v := range PricingStrategys {
  30. if v.ServiceRate >= maxRate {
  31. maxRate = v.ServiceRate
  32. PricingStrategy = v
  33. }
  34. }
  35. }
  36. //fmt.Printf("auto task %+v %+v", result, LastTask)
  37. return &PricingStrategy, nil
  38. }