修复计算活动比例的舍入误差

This commit is contained in:
gazebo
2019-11-07 15:45:10 +08:00
parent 0ca50bec4c
commit 5d6e531058

View File

@@ -160,7 +160,7 @@ func ActStoreSkuParam2Model(ctx *jxcontext.Context, db *dao.DaoDB, act *model.Ac
if actSkuMap.ActualActPrice <= 0 {
actSkuMap.ActualActPrice = 1
}
if err2 = checkDiscountValidation(act.Type, int(actSkuMap.ActualActPrice*100/actSkuMap.VendorPrice)); err2 != nil {
if err2 = checkDiscountValidation(act.Type, float64(actSkuMap.ActualActPrice)*100/float64(actSkuMap.VendorPrice)); err2 != nil {
v.ErrMsg = err2.Error()
v.ActualActPrice = actSkuMap.ActualActPrice
wrongSkuList = append(wrongSkuList, v)
@@ -280,14 +280,16 @@ func AddActStoreSkuBind(ctx *jxcontext.Context, db *dao.DaoDB, actID int, actSto
return err
}
func checkDiscountValidation(actType int, pricePercentage int) (err error) {
if actType == model.ActSkuDirectDown && (pricePercentage < minDiscount4SkuDirectDown || pricePercentage > 99) {
if pricePercentage < minDiscount4SkuDirectDown {
func checkDiscountValidation(actType int, pricePercentage float64) (err error) {
pricePercentageMin := int(math.Floor(pricePercentage))
pricePercentageMax := int(math.Ceil(pricePercentage))
if actType == model.ActSkuDirectDown && (pricePercentageMin < minDiscount4SkuDirectDown || pricePercentageMax > 99) {
if pricePercentageMin < minDiscount4SkuDirectDown {
err = fmt.Errorf("%s活动折扣必须大于:%d", model.ActTypeName[actType], minDiscount4SkuDirectDown)
} else if pricePercentage > 99 {
} else if pricePercentageMax > 99 {
err = fmt.Errorf("%s活动必须有折扣", model.ActTypeName[actType])
}
} else if actType == model.ActSkuSecKill && pricePercentage > maxDiscount4SkuSecKill {
} else if actType == model.ActSkuSecKill && pricePercentageMax > maxDiscount4SkuSecKill {
err = fmt.Errorf("%s活动折扣必须小于:%d", model.ActTypeName[actType], maxDiscount4SkuSecKill)
}
return err
@@ -308,7 +310,7 @@ func checkActValidation(act *model.Act, vendorIDs []int) (err error) {
if act.Type == model.ActSkuDirectDown || act.Type == model.ActSkuSecKill {
if act.PricePercentage == 0 {
errList.AddErr(fmt.Errorf("必须指定缺省活动折扣"))
} else if err = checkDiscountValidation(act.Type, act.PricePercentage); err != nil {
} else if err = checkDiscountValidation(act.Type, float64(act.PricePercentage)); err != nil {
errList.AddErr(err)
} else if act.Type == model.ActSkuSecKill && vendorIDMap[model.VendorIDMTWM] == 1 {
errList.AddErr(fmt.Errorf("%s平台不支持%s活动", model.VendorChineseNames[model.VendorIDMTWM], model.ActTypeName[model.ActSkuSecKill]))