限制美团活动最小折扣为3折

活动至少要有98折
This commit is contained in:
gazebo
2019-11-30 14:11:46 +08:00
parent 5f2da8a4dc
commit 0b4886c246

View File

@@ -22,8 +22,10 @@ import (
const ( const (
DefActSkuStock = 200 // 缺省活动库存 DefActSkuStock = 200 // 缺省活动库存
maxDiscount4SkuSecKill = 80 maxDiscount4SkuSecKill = 80
minDiscount4SkuDirectDown = 0 maxDiscount4Sku = 98
minDiscount4SkuDirectDown = 0
minDiscount4SkuDirectDownMTWM = 30
) )
type ActOrderRuleParam struct { type ActOrderRuleParam struct {
@@ -179,7 +181,7 @@ func ActStoreSkuParam2Model(ctx *jxcontext.Context, db *dao.DaoDB, act *model.Ac
if actSkuMap.ActualActPrice <= 0 { if actSkuMap.ActualActPrice <= 0 {
actSkuMap.ActualActPrice = 1 actSkuMap.ActualActPrice = 1
} }
if err2 = checkDiscountValidation(act.Type, float64(actSkuMap.ActualActPrice)*100/float64(actSkuMap.VendorPrice)); err2 != nil { if err2 = checkDiscountValidation(vendorIDs, act.Type, float64(actSkuMap.ActualActPrice)*100/float64(actSkuMap.VendorPrice)); err2 != nil {
v.ErrMsg = err2.Error() v.ErrMsg = err2.Error()
v.ActualActPrice = actSkuMap.ActualActPrice v.ActualActPrice = actSkuMap.ActualActPrice
v.VendorPrice = actSkuMap.VendorPrice v.VendorPrice = actSkuMap.VendorPrice
@@ -303,14 +305,16 @@ func AddActStoreSkuBind(ctx *jxcontext.Context, db *dao.DaoDB, actID int, actSto
return err return err
} }
func checkDiscountValidation(actType int, pricePercentage float64) (err error) { func checkDiscountValidation(vendorIDs []int, actType int, pricePercentage float64) (err error) {
pricePercentageMin := int(math.Floor(pricePercentage)) pricePercentageMin := int(math.Floor(pricePercentage))
pricePercentageMax := int(math.Ceil(pricePercentage)) pricePercentageMax := int(math.Ceil(pricePercentage))
if actType == model.ActSkuDirectDown && (pricePercentageMin < minDiscount4SkuDirectDown || pricePercentageMax > 99) { if actType == model.ActSkuDirectDown && (pricePercentageMin < minDiscount4SkuDirectDown || pricePercentageMax > 99) {
if pricePercentageMin < minDiscount4SkuDirectDown { if pricePercentageMin < minDiscount4SkuDirectDown {
err = fmt.Errorf("%s活动折扣必须大于:%d", model.ActTypeName[actType], minDiscount4SkuDirectDown) err = fmt.Errorf("%s活动折扣必须大于:%d", model.ActTypeName[actType], minDiscount4SkuDirectDown)
} else if pricePercentageMax > 99 { } else if pricePercentageMax > maxDiscount4Sku {
err = fmt.Errorf("%s活动必须折扣", model.ActTypeName[actType]) err = fmt.Errorf("%s活动必须至少有%d折扣", model.ActTypeName[actType], maxDiscount4Sku)
} else if len(vendorIDs) > 0 && vendorIDs[0] == model.VendorIDMTWM && pricePercentageMin < minDiscount4SkuDirectDownMTWM {
err = fmt.Errorf("美团平台%s活动折扣必须大于:%d", model.ActTypeName[actType], minDiscount4SkuDirectDownMTWM)
} }
} else if actType == model.ActSkuSecKill && pricePercentageMax > maxDiscount4SkuSecKill { } else if actType == model.ActSkuSecKill && pricePercentageMax > maxDiscount4SkuSecKill {
err = fmt.Errorf("%s活动折扣必须小于:%d", model.ActTypeName[actType], maxDiscount4SkuSecKill) err = fmt.Errorf("%s活动折扣必须小于:%d", model.ActTypeName[actType], maxDiscount4SkuSecKill)
@@ -333,7 +337,7 @@ func checkActValidation(act *model.Act, vendorIDs []int) (err error) {
if act.Type == model.ActSkuDirectDown || act.Type == model.ActSkuSecKill { if act.Type == model.ActSkuDirectDown || act.Type == model.ActSkuSecKill {
if act.PricePercentage == 0 { if act.PricePercentage == 0 {
errList.AddErr(fmt.Errorf("必须指定缺省活动折扣")) errList.AddErr(fmt.Errorf("必须指定缺省活动折扣"))
} else if err = checkDiscountValidation(act.Type, float64(act.PricePercentage)); err != nil { } else if err = checkDiscountValidation(vendorIDs, act.Type, float64(act.PricePercentage)); err != nil {
errList.AddErr(err) errList.AddErr(err)
} else if act.Type == model.ActSkuSecKill && vendorIDMap[model.VendorIDMTWM] == 1 { } else if act.Type == model.ActSkuSecKill && vendorIDMap[model.VendorIDMTWM] == 1 {
errList.AddErr(fmt.Errorf("%s平台不支持%s活动", model.VendorChineseNames[model.VendorIDMTWM], model.ActTypeName[model.ActSkuSecKill])) errList.AddErr(fmt.Errorf("%s平台不支持%s活动", model.VendorChineseNames[model.VendorIDMTWM], model.ActTypeName[model.ActSkuSecKill]))
@@ -954,7 +958,7 @@ func ForceUpdateVendorPrice(ctx *jxcontext.Context, vendorID int, actType int, s
if err = dao.GetEntity(db, storeSkuBind, model.FieldStoreID, model.FieldSkuID, model.FieldDeletedAt); err == nil { if err = dao.GetEntity(db, storeSkuBind, model.FieldStoreID, model.FieldSkuID, model.FieldDeletedAt); err == nil {
vendorPrice := int(v.VendorPrice) vendorPrice := int(v.VendorPrice)
if vendorPrice != 0 { if vendorPrice != 0 {
if err2 := checkDiscountValidation(actType, float64(v.ActPrice)*100/float64(v.VendorPrice)); err2 != nil { if err2 := checkDiscountValidation([]int{vendorID}, actType, float64(v.ActPrice)*100/float64(v.VendorPrice)); err2 != nil {
v.ErrMsg = err2.Error() v.ErrMsg = err2.Error()
v.ActualActPrice = v.ActPrice v.ActualActPrice = v.ActPrice
wrongSkuList = append(wrongSkuList, v) wrongSkuList = append(wrongSkuList, v)
@@ -962,7 +966,7 @@ func ForceUpdateVendorPrice(ctx *jxcontext.Context, vendorID int, actType int, s
} }
} else { } else {
vendorPrice = dao.GetStoreSkuBindVendorPrice(storeSkuBind, vendorID) vendorPrice = dao.GetStoreSkuBindVendorPrice(storeSkuBind, vendorID)
if checkDiscountValidation(actType, float64(v.ActPrice)*100/float64(vendorPrice)) != nil { if checkDiscountValidation([]int{vendorID}, actType, float64(v.ActPrice)*100/float64(vendorPrice)) != nil {
if actType == model.ActSkuSecKill { if actType == model.ActSkuSecKill {
vendorPrice = int(v.ActPrice)*100/maxDiscount4SkuSecKill + 10 vendorPrice = int(v.ActPrice)*100/maxDiscount4SkuSecKill + 10
} else if actType == model.ActSkuDirectDown { } else if actType == model.ActSkuDirectDown {