限制美团活动最小折扣为3折
活动至少要有98折
This commit is contained in:
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user