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 +}