diff --git a/business/jxstore/cms/sync.go b/business/jxstore/cms/sync.go index 142f7d997..d7e5ab148 100644 --- a/business/jxstore/cms/sync.go +++ b/business/jxstore/cms/sync.go @@ -917,10 +917,10 @@ func syncStoreSkusFromYb(ctx *jxcontext.Context, storeID, vendorID int, vendorSt localSkuMap = make(map[string]*dao.StoreSkuSyncInfo) vendorSkuMap = make(map[string]*partner.SkuNameInfo) skuBindInfosDel []*StoreSkuBindInfo - // skuBindInfosUpt []*StoreSkuBindInfo - addList []*partner.SkuNameInfo - updateList []*partner.SkuNameInfo - deleteList []*dao.StoreSkuSyncInfo + skuBindInfosUpt []*StoreSkuBindInfo + addList []*partner.SkuNameInfo + updateList []*partner.SkuNameInfo + deleteList []*dao.StoreSkuSyncInfo ) handler, _ := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.ISingleStoreStoreSkuHandler) @@ -994,47 +994,47 @@ func syncStoreSkusFromYb(ctx *jxcontext.Context, storeID, vendorID int, vendorSt } _, err = updateStoresSkusWithoutSync(ctx, db, []int{storeID}, skuBindInfosDel, false) } - // case 2: - // if len(updateList) > 0 { - // taskFunc := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { - // var ( - // v = batchItemList[0].(*partner.SkuNameInfo) - // skuBindInfo = &StoreSkuBindInfo{} - // storeSkus []*dao.StoreSkuExt - // pricePercentagePack []*model.PricePercentageItem - // ) - // sql := ` - // SELECT a.*, c.id name_id - // FROM store_sku_bind a - // JOIN sku b ON a.sku_id = b.id - // JOIN sku_name c ON c.id = b.name_id - // WHERE a.store_id = ? AND a.yb_id = ? AND a.deleted_at = ? - // ` - // sqlParams := []interface{}{storeID, v.SkuList[0].VendorSkuID, utils.DefaultTimeValue} - // err = dao.GetRows(db, &storeSkus, sql, sqlParams) - // if len(storeSkus) > 0 { - // if storeSkus[0].YbPrice != int(v.SkuList[0].VendorPrice) { - // err = jxutils.Strings2Objs(store.PricePercentagePackStr, &pricePercentagePack) - // skuBindInfo.UnitPrice = jxutils.CaculateJxPriceByPricePack(pricePercentagePack, 0, int(v.SkuList[0].VendorPrice)) - // } - // } else { - // return retVal, fmt.Errorf("未查询到门店商品,yb_id [%v]", v.SkuList[0].VendorSkuID) - // } - // if v.SkuList[0].Stock < 1 { - // skuBindInfo.IsSale = model.DISABLED - // } - // skuBindInfo.NameID = storeSkus[0].NameID - // retVal = []*StoreSkuBindInfo{skuBindInfo} - // return retVal, err - // } - // taskParallel := tasksch.NewParallelTask("更新商品价格和库存", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx, taskFunc, deleteList) - // tasksch.HandleTask(taskParallel, task, true).Run() - // resultUpt, _ := taskParallel.GetResult(0) - // for _, v := range resultUpt { - // skuBindInfosUpt = append(skuBindInfosUpt, v.(*StoreSkuBindInfo)) - // } - // _, err = updateStoresSkusWithoutSync(ctx, db, []int{storeID}, skuBindInfosUpt, false) - // } + case 2: + if len(updateList) > 0 { + taskFunc := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + var ( + v = batchItemList[0].(*partner.SkuNameInfo) + skuBindInfo = &StoreSkuBindInfo{} + storeSkus []*dao.StoreSkuExt + pricePercentagePack []*model.PricePercentageItem + ) + sql := ` + SELECT a.*, c.id name_id + FROM store_sku_bind a + JOIN sku b ON a.sku_id = b.id + JOIN sku_name c ON c.id = b.name_id + WHERE a.store_id = ? AND a.yb_id = ? AND a.deleted_at = ? + ` + sqlParams := []interface{}{storeID, v.SkuList[0].VendorSkuID, utils.DefaultTimeValue} + err = dao.GetRows(db, &storeSkus, sql, sqlParams) + if len(storeSkus) > 0 { + if storeSkus[0].YbPrice != int(v.SkuList[0].VendorPrice) { + err = jxutils.Strings2Objs(store.PricePercentagePackStr, &pricePercentagePack) + skuBindInfo.UnitPrice = jxutils.CaculateJxPriceByPricePack(pricePercentagePack, 0, int(v.SkuList[0].VendorPrice)) + } + } else { + return retVal, fmt.Errorf("未查询到门店商品,yb_id [%v]", v.SkuList[0].VendorSkuID) + } + if v.SkuList[0].Stock < 1 { + skuBindInfo.IsSale = model.DISABLED + } + skuBindInfo.NameID = storeSkus[0].NameID + retVal = []*StoreSkuBindInfo{skuBindInfo} + return retVal, err + } + taskParallel := tasksch.NewParallelTask("更新商品价格和库存", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx, taskFunc, deleteList) + tasksch.HandleTask(taskParallel, task, true).Run() + resultUpt, _ := taskParallel.GetResult(0) + for _, v := range resultUpt { + skuBindInfosUpt = append(skuBindInfosUpt, v.(*StoreSkuBindInfo)) + } + _, err = updateStoresSkusWithoutSync(ctx, db, []int{storeID}, skuBindInfosUpt, false) + } } return result, err }