价格包参数添加priceAdd

This commit is contained in:
gazebo
2019-11-11 09:20:14 +08:00
parent 6a37def14f
commit 83f9493352
5 changed files with 18 additions and 17 deletions

View File

@@ -146,8 +146,6 @@ func ActStoreSkuParam2Model(ctx *jxcontext.Context, db *dao.DaoDB, act *model.Ac
storeSkuInfo := storeSkuMap[jxutils.Combine2Int(v.StoreID, v.SkuID)] storeSkuInfo := storeSkuMap[jxutils.Combine2Int(v.StoreID, v.SkuID)]
if storeSkuInfo != nil { if storeSkuInfo != nil {
jxPrice := storeSkuInfo.Price jxPrice := storeSkuInfo.Price
// pricePercentage := jxutils.GetPricePercentage(storeDetail.PricePercentagePackObj, jxPrice, int(storeDetail.PricePercentage))
// actSkuMap.VendorPrice = int64(jxutils.CaculateSkuVendorPrice(jxPrice, pricePercentage))
actSkuMap.VendorPrice = int64(getVendorPriceFromStoreSkuBind(storeSkuInfo, vendorID)) actSkuMap.VendorPrice = int64(getVendorPriceFromStoreSkuBind(storeSkuInfo, vendorID))
v.OriginalPrice = int64(jxPrice) v.OriginalPrice = int64(jxPrice)
} }
@@ -166,7 +164,7 @@ func ActStoreSkuParam2Model(ctx *jxcontext.Context, db *dao.DaoDB, act *model.Ac
if v.PricePercentage != 0 { if v.PricePercentage != 0 {
percentage = v.PricePercentage percentage = v.PricePercentage
} }
actSkuMap.ActualActPrice = int64(jxutils.CaculateSkuVendorPrice(int(actSkuMap.VendorPrice), percentage)) actSkuMap.ActualActPrice = int64(jxutils.CaculateSkuVendorPrice(int(actSkuMap.VendorPrice), percentage, 0))
if actSkuMap.ActualActPrice > 10 { if actSkuMap.ActualActPrice > 10 {
actSkuMap.ActualActPrice = int64(math.Floor(float64(actSkuMap.ActualActPrice)/10) * 10) actSkuMap.ActualActPrice = int64(math.Floor(float64(actSkuMap.ActualActPrice)/10) * 10)
} }

View File

@@ -1888,10 +1888,10 @@ func RefreshStoresSkuByVendor(ctx *jxcontext.Context, storeIDs []int, vendorID i
} }
} }
for _, v := range storeSkuList { for _, v := range storeSkuList {
pricePercentage := jxutils.GetPricePercentageByVendorPrice(storeMap[v.StoreID].PricePercentagePackObj, v.Price, int(storeMap[v.StoreID].PricePercentage)) pricePercentage, priceAdd := jxutils.GetPricePercentageByVendorPrice(storeMap[v.StoreID].PricePercentagePackObj, v.Price, int(storeMap[v.StoreID].PricePercentage))
skuName := skuNameMap[skuMap[v.SkuID].NameID] skuName := skuNameMap[skuMap[v.SkuID].NameID]
v.Price = jxutils.CaculateSkuPriceFromVendor(v.Price, pricePercentage) v.Price = jxutils.CaculateSkuPriceFromVendor(v.Price, pricePercentage, priceAdd)
v.UnitPrice = jxutils.CaculateSkuPriceFromVendor(skuName.Price, pricePercentage) v.UnitPrice = jxutils.CaculateSkuPriceFromVendor(skuName.Price, pricePercentage, priceAdd)
dao.WrapAddIDCULDEntity(v, ctx.GetUserName()) dao.WrapAddIDCULDEntity(v, ctx.GetUserName())
setStoreSkuBindStatus(v, model.SyncFlagNewMask) setStoreSkuBindStatus(v, model.SyncFlagNewMask)
v.JdSyncStatus = 0 v.JdSyncStatus = 0

View File

@@ -213,8 +213,8 @@ func storeSkuSyncInfo2Bare(inSku *dao.StoreSkuSyncInfo) (outSku *partner.StoreSk
func calVendorPrice4StoreSku(inSku *dao.StoreSkuSyncInfo, pricePercentagePack model.PricePercentagePack, pricePercentage int) (outSku *dao.StoreSkuSyncInfo) { func calVendorPrice4StoreSku(inSku *dao.StoreSkuSyncInfo, pricePercentagePack model.PricePercentagePack, pricePercentage int) (outSku *dao.StoreSkuSyncInfo) {
if inSku.VendorPrice <= 0 { // 避免重新计算 if inSku.VendorPrice <= 0 { // 避免重新计算
pricePercentage = jxutils.GetPricePercentage(pricePercentagePack, int(inSku.Price), pricePercentage) pricePercentage2, priceAdd2 := jxutils.GetPricePercentage(pricePercentagePack, int(inSku.Price), pricePercentage)
inSku.VendorPrice = int64(jxutils.CaculateSkuVendorPrice(int(inSku.Price), pricePercentage)) inSku.VendorPrice = int64(jxutils.CaculateSkuVendorPrice(int(inSku.Price), pricePercentage2, priceAdd2))
if inSku.VendorPrice <= 0 { if inSku.VendorPrice <= 0 {
inSku.VendorPrice = 1 // 最少1分钱 inSku.VendorPrice = 1 // 最少1分钱
} }

View File

@@ -245,29 +245,29 @@ func CaculateUnitPrice(skuPrice int, specQuality float32, specUnit string, skuNa
return unitPrice return unitPrice
} }
func CaculateSkuVendorPrice(price, percentage int) (vendorPrice int) { func CaculateSkuVendorPrice(price, percentage, priceAdd int) (vendorPrice int) {
if percentage <= 10 || percentage >= 400 { if percentage <= 10 || percentage >= 400 {
percentage = 100 percentage = 100
} }
vendorPrice = int(math.Round(float64(price*percentage) / 100)) vendorPrice = int(math.Round(float64(price*percentage)/100)) + priceAdd
if vendorPrice < 1 { if vendorPrice < 1 {
vendorPrice = 1 vendorPrice = 1
} }
return vendorPrice return vendorPrice
} }
func CaculateSkuPriceFromVendor(vendorPrice, percentage int) (price int) { func CaculateSkuPriceFromVendor(vendorPrice, percentage, priceAdd int) (price int) {
if percentage <= 10 || percentage >= 400 { if percentage <= 10 || percentage >= 400 {
percentage = 100 percentage = 100
} }
price = int(math.Round(float64(vendorPrice) * 100 / float64(percentage))) price = int(math.Round(float64(vendorPrice-priceAdd) * 100 / float64(percentage)))
if price < 0 { if price < 0 {
price = 0 price = 0
} }
return price return price
} }
func GetPricePercentage(l model.PricePercentagePack, price int, defPricePercentage int) (pricePercentage int) { func GetPricePercentage(l model.PricePercentagePack, price int, defPricePercentage int) (pricePercentage, priceAdd int) {
pricePercentage = defPricePercentage pricePercentage = defPricePercentage
if len(l) > 0 { if len(l) > 0 {
var lastItem *model.PricePercentageItem var lastItem *model.PricePercentageItem
@@ -279,26 +279,28 @@ func GetPricePercentage(l model.PricePercentagePack, price int, defPricePercenta
} }
if lastItem != nil { if lastItem != nil {
pricePercentage = lastItem.PricePercentage pricePercentage = lastItem.PricePercentage
priceAdd = lastItem.PriceAdd
} }
} }
return pricePercentage return pricePercentage, priceAdd
} }
func GetPricePercentageByVendorPrice(l model.PricePercentagePack, vendorPrice int, defPricePercentage int) (pricePercentage int) { func GetPricePercentageByVendorPrice(l model.PricePercentagePack, vendorPrice int, defPricePercentage int) (pricePercentage, priceAdd int) {
pricePercentage = defPricePercentage pricePercentage = defPricePercentage
if len(l) > 0 { if len(l) > 0 {
var lastItem *model.PricePercentageItem var lastItem *model.PricePercentageItem
for _, v := range l { for _, v := range l {
if CaculateSkuVendorPrice(v.BeginPrice, v.PricePercentage) > vendorPrice { if CaculateSkuVendorPrice(v.BeginPrice, v.PricePercentage, v.PriceAdd) > vendorPrice {
break break
} }
lastItem = v lastItem = v
} }
if lastItem != nil { if lastItem != nil {
pricePercentage = lastItem.PricePercentage pricePercentage = lastItem.PricePercentage
priceAdd = lastItem.PriceAdd
} }
} }
return pricePercentage return pricePercentage, priceAdd
} }
func IsSkuSpecial(specQuality float32, specUnit string) bool { func IsSkuSpecial(specQuality float32, specUnit string) bool {

View File

@@ -465,6 +465,7 @@ func (v *VendorStoreSnapshot) CompareOperationTime(s2 *VendorStoreSnapshot) int
type PricePercentageItem struct { type PricePercentageItem struct {
BeginPrice int `json:"beginPrice"` // 起始价格区间(包括) BeginPrice int `json:"beginPrice"` // 起始价格区间(包括)
PricePercentage int `json:"pricePercentage"` // 调价比例 PricePercentage int `json:"pricePercentage"` // 调价比例
PriceAdd int `json:"priceAdd"` // 调价额定值
} }
type PricePercentagePack []*PricePercentageItem type PricePercentagePack []*PricePercentageItem