- CaculateSkuPrice return UnitPrice when unit is 份

This commit is contained in:
gazebo
2018-09-30 11:13:52 +08:00
parent 11fc8edf6f
commit 834a5b9c24
3 changed files with 9 additions and 5 deletions

View File

@@ -47,6 +47,7 @@ type tStoreSkuBindAndSpec struct {
SpecQuality float32 SpecQuality float32
SpecUnit string SpecUnit string
SkuNamePrice int SkuNamePrice int
SkuNameUnit string
RealSkuID int `orm:"column(real_sku_id)"` RealSkuID int `orm:"column(real_sku_id)"`
} }
@@ -241,7 +242,7 @@ func UpdateStoreSkus(storeID int, skuBindInfos []*StoreSkuBindInfo, userName str
inSkuBinds := skuBindInfo.Skus inSkuBinds := skuBindInfo.Skus
var allBinds []*tStoreSkuBindAndSpec var allBinds []*tStoreSkuBindAndSpec
if err = dao.GetRows(db, &allBinds, ` if err = dao.GetRows(db, &allBinds, `
SELECT t2.*, t1.id real_sku_id, t1.spec_quality, t1.spec_unit, t3.price sku_name_price SELECT t2.*, t1.id real_sku_id, t1.spec_quality, t1.spec_unit, t3.price sku_name_price, t3.unit sku_name_unit
FROM sku t1 FROM sku t1
LEFT JOIN store_sku_bind t2 ON t2.sku_id = t1.id AND store_id = ? LEFT JOIN store_sku_bind t2 ON t2.sku_id = t1.id AND store_id = ?
JOIN sku_name t3 ON t1.name_id = t3.id JOIN sku_name t3 ON t1.name_id = t3.id
@@ -272,7 +273,7 @@ func UpdateStoreSkus(storeID int, skuBindInfos []*StoreSkuBindInfo, userName str
SkuID: v.RealSkuID, SkuID: v.RealSkuID,
SubStoreID: skuBindInfo.SubStoreID, // todo 这个应该从用户信息中自动获得 SubStoreID: skuBindInfo.SubStoreID, // todo 这个应该从用户信息中自动获得
UnitPrice: unitPrice, UnitPrice: unitPrice,
Price: jxutils.CaculateSkuPrice(unitPrice, v.SpecQuality, v.SpecUnit), Price: jxutils.CaculateSkuPrice(unitPrice, v.SpecQuality, v.SpecUnit, v.SkuNameUnit),
Status: model.StoreSkuBindStatusDontSale, // 缺省不可售? Status: model.StoreSkuBindStatusDontSale, // 缺省不可售?
} }
if inSkuBind != nil && inSkuBind.IsSale == 1 { if inSkuBind != nil && inSkuBind.IsSale == 1 {
@@ -318,7 +319,7 @@ func UpdateStoreSkus(storeID int, skuBindInfos []*StoreSkuBindInfo, userName str
} }
if skuBindInfo.UnitPrice != 0 { // 这里是否需要加此条件限制 if skuBindInfo.UnitPrice != 0 { // 这里是否需要加此条件限制
skuBind.UnitPrice = unitPrice skuBind.UnitPrice = unitPrice
skuBind.Price = jxutils.CaculateSkuPrice(unitPrice, v.SpecQuality, v.SpecUnit) skuBind.Price = jxutils.CaculateSkuPrice(unitPrice, v.SpecQuality, v.SpecUnit, v.SkuNameUnit)
setStoreSkuBindStatus(skuBind, model.SyncFlagPriceMask) setStoreSkuBindStatus(skuBind, model.SyncFlagPriceMask)
needUpdate = true needUpdate = true
} }

View File

@@ -114,7 +114,10 @@ func IntMap2List(intMap map[int]int) []int {
} }
// 计算SKU价格unitPrice为一斤的单价specQuality为质量单位为克 // 计算SKU价格unitPrice为一斤的单价specQuality为质量单位为克
func CaculateSkuPrice(unitPrice int, specQuality float32, specUnit string) int { func CaculateSkuPrice(unitPrice int, specQuality float32, specUnit string, skuNameUnit string) int {
if skuNameUnit == "份" {
return unitPrice
}
if strings.ToLower(specUnit) == "kg" { if strings.ToLower(specUnit) == "kg" {
specQuality *= 1000 specQuality *= 1000
} }

View File

@@ -139,7 +139,7 @@ func (p *PurchaseHandler) cuSku(db *dao.DaoDB, sku *model.Sku, handler func(skuE
} }
if err == nil { if err == nil {
skuName := jxutils.ComposeSkuName(skuInfoExt.Prefix, skuInfoExt.Name, skuInfoExt.Comment, skuInfoExt.Unit, sku.SpecQuality, sku.SpecUnit, 0) skuName := jxutils.ComposeSkuName(skuInfoExt.Prefix, skuInfoExt.Name, skuInfoExt.Comment, skuInfoExt.Unit, sku.SpecQuality, sku.SpecUnit, 0)
skuPrice := jxutils.CaculateSkuPrice(skuInfoExt.Price, sku.SpecQuality, sku.SpecUnit) skuPrice := jxutils.CaculateSkuPrice(skuInfoExt.Price, sku.SpecQuality, sku.SpecUnit, skuInfoExt.Unit)
result, err2 := handler(&skuInfoExt, skuPrice, skuName, shopCategories, addParams) result, err2 := handler(&skuInfoExt, skuPrice, skuName, shopCategories, addParams)
if err = err2; err == nil { if err = err2; err == nil {
if jdID := utils.Str2Int64WithDefault(result, 0); jdID != 0 { if jdID := utils.Str2Int64WithDefault(result, 0); jdID != 0 {