From a8537203c6acaa2f3be3d8294c81d16d61d13de7 Mon Sep 17 00:00:00 2001 From: gazebo Date: Sat, 29 Jun 2019 20:00:12 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E8=B0=83=E7=94=A8updateActPrice4StoreSkuNa?= =?UTF-8?q?me=E6=97=B6=EF=BC=8C=E6=A0=B9=E6=8D=AE=E7=BB=93=E6=9E=9C?= =?UTF-8?q?=E9=9B=86=E9=99=90=E5=88=B6storeID=E4=B8=8EskuIDs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 49 +++++++++++++++++++++---------- business/model/dao/promotion.go | 2 +- 2 files changed, 34 insertions(+), 17 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 8885cfe7f..ff7bcaa34 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -316,6 +316,9 @@ func GetStoresSkusNew(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus bo return nil, err } pageSize = jxutils.FormalizePageSize(pageSize) + if offset < 0 { + offset = 0 + } sqlOffset := offset sqlPageSize := pageSize isSaleInfo := params["stFromTime"] != nil @@ -351,7 +354,7 @@ func GetStoresSkusNew(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus bo dao.Rollback(db) return nil, err } - globals.SugarLogger.Debug(time.Now().Sub(beginTime)) + globals.SugarLogger.Debugf("GetStoresSkusNew get result1:%v", time.Now().Sub(beginTime)) skuNamesInfo.TotalCount = dao.GetLastTotalRowCount(db) sql += " AND (1 = 0" for _, v := range storeNameList { @@ -394,7 +397,7 @@ func GetStoresSkusNew(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus bo skuNamesInfo.TotalCount = dao.GetLastTotalRowCount(db) } dao.Commit(db) - globals.SugarLogger.Debug(time.Now().Sub(beginTime)) + globals.SugarLogger.Debugf("GetStoresSkusNew get result2:%v", time.Now().Sub(beginTime)) storeNameMap := make(map[int64]*StoreSkuNameExt) for _, v := range tmpList { var storeName *StoreSkuNameExt @@ -415,14 +418,37 @@ func GetStoresSkusNew(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus bo } storeName.Skus2 = append(storeName.Skus2, &v.StoreSkuExt) } - err = updateActPrice4StoreSkuName(db, storeIDs, skuIDs, skuNamesInfo) - if err == nil && isSaleInfo { - err = updateSaleInfo4StoreSkuName(ctx, db, offset, pageSize, params, skuNamesInfo) + if err == nil { + if isSaleInfo { + beginTime := time.Now() + err = updateSaleInfo4StoreSkuName(ctx, db, storeIDs, skuIDs, params, skuNamesInfo, offset, pageSize) + globals.SugarLogger.Debugf("GetStoresSkusNew updateSaleInfo4StoreSkuName:%v", time.Now().Sub(beginTime)) + } + if err == nil { + if !(offset == 0 && pageSize == model.UnlimitedPageSize) { + storeIDs, skuIDs = GetStoreAndSkuIDsFromInfo(skuNamesInfo) + } + beginTime := time.Now() + err = updateActPrice4StoreSkuName(db, storeIDs, skuIDs, skuNamesInfo) + globals.SugarLogger.Debugf("GetStoresSkusNew updateActPrice4StoreSkuName:%v", time.Now().Sub(beginTime)) + } } // globals.SugarLogger.Debug(utils.Format4Output(skuNamesInfo, false)) return skuNamesInfo, err } +func GetStoreAndSkuIDsFromInfo(skuNamesInfo *StoreSkuNamesInfo) (storeIDs, skuIDs []int) { + storeIDMap := make(map[int]int) + skuIDMap := make(map[int]int) + for _, skuName := range skuNamesInfo.SkuNames { + storeIDMap[skuName.StoreID] = 1 + for _, sku := range skuName.Skus2 { + skuIDMap[sku.SkuID] = 1 + } + } + return jxutils.IntMap2List(storeIDMap), jxutils.IntMap2List(skuIDMap) +} + func updateActPrice4StoreSkuName(db *dao.DaoDB, storeIDs, skuIDs []int, skuNamesInfo *StoreSkuNamesInfo) (err error) { // 活动商品信息 jxSkuPriceMap, err := dao.GetPromotionSkuPriceMap(db, model.VendorIDJX, storeIDs, skuIDs, time.Now(), time.Now()) @@ -458,23 +484,14 @@ func updateActPrice4StoreSkuName(db *dao.DaoDB, storeIDs, skuIDs []int, skuNames return err } -func updateSaleInfo4StoreSkuName(ctx *jxcontext.Context, db *dao.DaoDB, offset, pageSize int, params map[string]interface{}, skuNamesInfo *StoreSkuNamesInfo) (err error) { +func updateSaleInfo4StoreSkuName(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs, skuIDs []int, params map[string]interface{}, skuNamesInfo *StoreSkuNamesInfo, offset, pageSize int) (err error) { var ( saleInfoList []*SkuSaleInfo timeList []time.Time fromCount, toCount int ) - storeIDMap := make(map[int]int) - skuIDMap := make(map[int]int) saleInfoMap := make(map[int64]*SkuSaleInfo) - for _, skuName := range skuNamesInfo.SkuNames { - storeIDMap[skuName.StoreID] = 1 - for _, sku := range skuName.Skus2 { - skuIDMap[sku.SkuID] = 1 - } - } - storeIDs := jxutils.IntMap2List(storeIDMap) - skuIDs := jxutils.IntMap2List(skuIDMap) + toTimeStr := "" if params["stToTime"] != nil { toTimeStr = params["stToTime"].(string) diff --git a/business/model/dao/promotion.go b/business/model/dao/promotion.go index 8c5fb0d70..cf4310354 100644 --- a/business/model/dao/promotion.go +++ b/business/model/dao/promotion.go @@ -43,7 +43,7 @@ func GetPromotionSkuPriceMap(db *DaoDB, vendorID int, storeIDs, skuIDs []int, fr sql += " AND t3.sku_id IN (" + GenQuestionMarks(len(skuIDs)) + ")" sqlParams = append(sqlParams, skuIDs) } - sql += "ORDER BY t2.store_id, t3.sku_id, t3.price" + sql += " ORDER BY t2.store_id, t3.sku_id, t3.price" var skuPriceList []*PromotionStoreSku if err = GetRows(db, &skuPriceList, sql, sqlParams...); err != nil { return nil, err