From 17b91e4ee7cf9dd17387cc05086dc9e4c6f1a2f4 Mon Sep 17 00:00:00 2001 From: gazebo Date: Thu, 8 Aug 2019 14:57:26 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E6=A0=B9=E6=8D=AE=E5=B7=B2=E7=BB=8F?= =?UTF-8?q?=E9=83=A8=E5=88=86=E5=85=B3=E6=B3=A8=E7=9A=84=E5=95=86=E5=93=81?= =?UTF-8?q?=EF=BC=8C=E5=BE=97=E5=88=B0=E5=B7=B2=E7=BB=8F=E5=AD=98=E5=9C=A8?= =?UTF-8?q?=E7=9A=84=E9=97=A8=E5=BA=97=E5=95=86=E5=93=81=E5=8D=95=E4=BB=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 25 +++++++++++++++++++++++++ business/model/dao/store_sku.go | 26 ++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index d30197e63..b11d51bfb 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -436,6 +436,8 @@ func GetStoresSkusNew(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus bo // err = updateActPrice4StoreSkuName(db, storeIDs, skuIDs, skuNamesInfo) } globals.SugarLogger.Debugf("GetStoresSkusNew updateActPrice4StoreSkuName:%v", time.Now().Sub(beginTime)) + + err = updateUnitPrice4StoreSkuNameNew(db, skuNamesInfo) } } // globals.SugarLogger.Debug(utils.Format4Output(skuNamesInfo, false)) @@ -489,6 +491,29 @@ func GetStoreAndSkuIDsFromInfo(skuNamesInfo *StoreSkuNamesInfo) (storeIDs, skuID // return err // } +// 根据已经部分关注的商品,得到已经存在的门店商品单价 +func updateUnitPrice4StoreSkuNameNew(db *dao.DaoDB, skuNamesInfo *StoreSkuNamesInfo) (err error) { + storeIDMap := make(map[int]int) + skuNameIDMap := make(map[int]int) + for _, skuName := range skuNamesInfo.SkuNames { + storeIDMap[skuName.StoreID] = 1 + skuNameIDMap[skuName.SkuName.ID] = 1 + } + storeSkuNameInfo, err := dao.GetExistingStoreSkuNameInfo(db, jxutils.IntMap2List(storeIDMap), jxutils.IntMap2List(skuNameIDMap)) + if err == nil { + infoMap := make(map[int64]*dao.StoreSkuNameInfo) + for _, v := range storeSkuNameInfo { + infoMap[jxutils.Combine2Int(v.StoreID, v.NameID)] = v + } + for _, skuName := range skuNamesInfo.SkuNames { + if tmpInfo := infoMap[jxutils.Combine2Int(skuName.StoreID, skuName.SkuName.ID)]; tmpInfo != nil { + skuName.UnitPrice = int(tmpInfo.UnitPrice) + } + } + } + return err +} + func updateActPrice4StoreSkuNameNew(db *dao.DaoDB, storeIDs, skuIDs []int, skuNamesInfo *StoreSkuNamesInfo) (err error) { // jxSkuPriceMap, err := dao.GetPromotionSkuPriceMap(db, model.VendorIDJX, storeIDs, skuIDs, time.Now(), time.Now()) // if err != nil { diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 89b89cfcd..96407195a 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -95,6 +95,12 @@ type StoreSkuBindWithVendorInfo struct { VendorSkuID string `orm:"column(vendor_sku_id)"` } +type StoreSkuNameInfo struct { + StoreID int `orm:"column(store_id)"` + NameID int `orm:"column(name_id)"` + UnitPrice int64 +} + // 单门店模式厂商适用 // 从store_sku_bind中,得到所有依赖的商家分类信息 func GetSkusCategories(db *DaoDB, vendorID, storeID int, skuIDs []int, level int) (cats []*SkuStoreCatInfo, err error) { @@ -497,3 +503,23 @@ func GetAutoSaleStoreSku(db *DaoDB, storeIDs []int) (storeSkuList []*model.Store err = GetRows(db, &storeSkuList, sql, sqlParams...) return storeSkuList, err } + +func GetExistingStoreSkuNameInfo(db *DaoDB, storeIDs, skuNameIDs []int) (storeSkuNameList []*StoreSkuNameInfo, err error) { + if len(storeIDs) == 0 || len(skuNameIDs) == 0 { + return nil, nil + } + sql := ` + SELECT t1.store_id, t2.name_id, MAX(t1.unit_price) unit_price + FROM store_sku_bind t1 + JOIN sku t2 ON t2.id = t1.sku_id + WHERE t1.deleted_at = ? AND t1.store_id IN (` + GenQuestionMarks(len(storeIDs)) + `) + AND t2.name_id IN (` + GenQuestionMarks(len(skuNameIDs)) + `) + GROUP BY 1, 2` + sqlParams := []interface{}{ + utils.DefaultTimeValue, + storeIDs, + skuNameIDs, + } + err = GetRows(db, &storeSkuNameList, sql, sqlParams...) + return storeSkuNameList, err +}