From df92f78cc423b0d9999b35507e2f56856ae8566b Mon Sep 17 00:00:00 2001 From: Rosy-zhudan Date: Tue, 30 Jul 2019 14:22:09 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/misc/misc2.go | 97 ++++++++++++++-------------------- 1 file changed, 40 insertions(+), 57 deletions(-) diff --git a/business/jxstore/misc/misc2.go b/business/jxstore/misc/misc2.go index 126b3eff0..9ba8019fa 100644 --- a/business/jxstore/misc/misc2.go +++ b/business/jxstore/misc/misc2.go @@ -1,8 +1,6 @@ package misc import ( - "encoding/json" - "strconv" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxstore/cms" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" @@ -21,8 +19,6 @@ const ( ) var ( - startOpStoreTime = startOpStoreTimeDefault - endOpStoreTime = endOpStoreTimeDefault startOpStoreTimeList = []string { "00:00:00", } @@ -35,35 +31,37 @@ var ( } ) -func AddOrDelExtraStoreOptime(vendorID, storeID int, vendorStoreID string, storeInfo *model.Store, needAddTime bool) { +func AddOrDelExtraStoreOptime(vendorID, storeID int, vendorStoreID string, storeInfo *model.Store, startOpStoreTime, endOpStoreTime int16, needAddTime bool) bool { ctx := jxcontext.AdminCtx opTimeList := storeInfo.GetOpTimeList() if needAddTime { - if len(opTimeList) == 0 { - opTimeList = append(opTimeList, startOpStoreTime, endOpStoreTime) - } else if len(opTimeList) >= 2 { - opTimeList[0] = startOpStoreTime - opTimeList[1] = endOpStoreTime - } + opTimeList = []int16{startOpStoreTime, endOpStoreTime} } handler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IStoreHandler) - handler.UpdateStoreOpTime(ctx, storeID, vendorStoreID, opTimeList) + return handler.UpdateStoreOpTime(ctx, storeID, vendorStoreID, opTimeList) == nil } -func GetStockValue(startOrEnd bool) int { - if startOrEnd { +func GetStockValue(isStart bool) int { + if isStart { return startOpStoreStockNumber } else { return endOpStoreStockNumber } } -func StartOrEndOpStore(startOrEnd bool, startTime, endTime int16) { - if startTime == 0 || endTime == 0 { - startOpStoreTime = startOpStoreTimeDefault - endOpStoreTime = endOpStoreTimeDefault - baseapi.SugarLogger.Debugf("The store time can't be 0") - } else { +func FilterSkuNameList(storeSkuNameList []*partner.SkuNameInfo) (filterStoreSkuNameList []*partner.SkuNameInfo) { + for _, skuNameInfo := range storeSkuNameList { + if skuNameInfo.Name != specialSkuName { + filterStoreSkuNameList = append(filterStoreSkuNameList, skuNameInfo) + } + } + return filterStoreSkuNameList +} + +func StartOrEndOpStore(isStart bool, startTime, endTime int16) { + startOpStoreTime := startOpStoreTimeDefault + endOpStoreTime := endOpStoreTimeDefault + if startTime != 0 && endTime != 0 { startOpStoreTime = startTime endOpStoreTime = endTime baseapi.SugarLogger.Debugf("SetStoreOptime:%d do:%d", startTime, endTime) @@ -77,54 +75,39 @@ func StartOrEndOpStore(startOrEnd bool, startTime, endTime int16) { for _, storeListValue := range storeInfo.Stores { storeID := storeListValue.ID if storeListValue.StoreMaps != nil { - for _, vendorListValue := range storeListValue.StoreMaps { - vendorID, _ := strconv.Atoi(vendorListValue["vendorID"].(json.Number).String()) + for _, vendorListValue := range storeListValue.StoreMaps { + vendorID := int(utils.MustInterface2Int64(vendorListValue["vendorID"])) if _, ok := vendorList[vendorID]; ok { - vendorStoreID := vendorListValue["vendorStoreID"].(string) + vendorStoreID := utils.Interface2String(vendorListValue["vendorStoreID"]) baseapi.SugarLogger.Debugf("storeID:%d vendorID:%d vendorStoreID:%s vendorListValue:%v", storeID, vendorID, vendorStoreID, vendorListValue) - storeSkuHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IPurchasePlatformStoreSkuHandler) - // storeSkuList, err := storeSkuHandler.GetStoreSkusBareInfo(ctx, nil, storeID, vendorStoreID, nil) singleStoreHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.ISingleStoreStoreSkuHandler) storeSkuNameList, err := singleStoreHandler.GetStoreSkusFullInfo(ctx, nil, storeID, vendorStoreID, nil) - storeSkuList := putils.StoreSkuFullList2Bare(storeSkuNameList) + filterStoreSkuNameList := FilterSkuNameList(storeSkuNameList) + storeSkuList := putils.StoreSkuFullList2Bare(filterStoreSkuNameList) if err != nil { baseapi.SugarLogger.Errorf("storeSkuList error:%v", err) } else { if len(storeSkuList) > 0 { - if !startOrEnd { - AddOrDelExtraStoreOptime(vendorID, storeID, vendorStoreID, &storeListValue.Store, false) + canProcessSkuList := true + if !isStart { + canProcessSkuList = AddOrDelExtraStoreOptime(vendorID, storeID, vendorStoreID, &storeListValue.Store, startOpStoreTime, endOpStoreTime, false) } - skuNameMap := make(map[int]*partner.SkuNameInfo) - for _, value := range storeSkuNameList { - skuNameMap[value.NameID] = value + if canProcessSkuList { + _, err = putils.FreeBatchStoreSkuInfo(func(batchedStoreSkuList []*partner.StoreSkuInfo) (result interface{}, err error) { + for _, skuValue := range batchedStoreSkuList { + skuValue.Stock = GetStockValue(isStart) + } + var successList []*partner.StoreSkuInfo + if successList, err = singleStoreHandler.UpdateStoreSkusStock(ctx, storeID, vendorStoreID, batchedStoreSkuList); err == nil { + successList = batchedStoreSkuList + baseapi.SugarLogger.Debugf("successList:%v error:%v", successList, err) + } + return nil, err + }, ctx, nil, storeSkuList, singleStoreHandler.GetStoreSkusBatchSize(partner.FuncUpdateStoreSkusStock), true) } - - isContinueWhenError := true - _, err = putils.FreeBatchStoreSkuInfo(func(batchedStoreSkuList []*partner.StoreSkuInfo) (result interface{}, err error) { - var filterBatchedStoreSkuList []*partner.StoreSkuInfo - for _, skuValue := range batchedStoreSkuList { - skuNameInfo := skuNameMap[skuValue.SkuID] - needCheckName := skuNameInfo != nil - skuName := "" - if skuNameInfo != nil { - skuName = skuNameInfo.Name - } - if (needCheckName && skuName != specialSkuName) || !needCheckName { - skuValue.Stock = GetStockValue(startOrEnd) - filterBatchedStoreSkuList = append(filterBatchedStoreSkuList, skuValue) - } - } - var successList []*partner.StoreSkuInfo - if successList, err = storeSkuHandler.UpdateStoreSkusStock(ctx, storeID, vendorStoreID, filterBatchedStoreSkuList); err == nil { - successList = batchedStoreSkuList - baseapi.SugarLogger.Debugf("successList:%v error:%v", successList, err) - } - return nil, err - }, ctx, nil, storeSkuList, storeSkuHandler.GetStoreSkusBatchSize(partner.FuncUpdateStoreSkusStock), isContinueWhenError) - - if startOrEnd { - AddOrDelExtraStoreOptime(vendorID, storeID, vendorStoreID, &storeListValue.Store, true) + if isStart { + AddOrDelExtraStoreOptime(vendorID, storeID, vendorStoreID, &storeListValue.Store, startOpStoreTime, endOpStoreTime, true) } } }