From 2b61c193461f8acbd92d8ccf55e735bf695fa315 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 13 Jul 2020 13:48:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=95=86=E5=93=81=E5=89=8D?= =?UTF-8?q?=E7=BC=80=E5=9B=BE=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/sku.go | 104 ++++++++++++++++++++---------------- 1 file changed, 57 insertions(+), 47 deletions(-) diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index 275d4bec9..a3c2effa1 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -2542,6 +2542,7 @@ func UpdateSkuExinfoMap(ctx *jxcontext.Context, nameIDs []int, imgWaterMark stri fromTimeP time.Time toTimeP time.Time db = dao.GetDB() + skuIDs []int ) if fromTime != "" { fromTimeP = utils.Time2Date(utils.Str2Time(fromTime)) @@ -2552,66 +2553,75 @@ func UpdateSkuExinfoMap(ctx *jxcontext.Context, nameIDs []int, imgWaterMark stri if toTimeP.Before(fromTimeP) { return "", fmt.Errorf("结束时间不可以小于开始时间!开始时间:[%v],结束时间:[%v]", fromTimeP, toTimeP) } - task := tasksch.NewParallelTask("UpdateSkuExinfoMap", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, - func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { - nameID := batchItemList[0].(int) - skuEx := &model.SkuExinfoMap{ - NameID: nameID, - ImgWatermark: imgWaterMark, - ExPrefix: exPrefix, - VendorID: vendorID, - BeginAt: fromTimeP, - EndAt: toTimeP, - } - dao.WrapAddIDCULDEntity(skuEx, ctx.GetUserName()) - skuExs, _ := dao.GetSkuExinfos(db, []int{nameID}, []int{vendorID}, "", utils.ZeroTimeValue, utils.ZeroTimeValue) - if len(skuExs) > 0 { - skuEx2 := skuExs[0] - skuEx2.DeletedAt = time.Now() - skuEx2.LastOperator = ctx.GetUserName() - dao.UpdateEntity(db, skuEx2, "DeletedAt", "LastOperator") - dao.CreateEntity(db, skuEx) - } else { - dao.CreateEntity(db, skuEx) - } - now := utils.Time2Date(time.Now()) - if now.Sub(fromTimeP) >= 0 && now.Sub(toTimeP) <= 0 { - var skuIDs []int - skuList, err2 := dao.GetSkus(db, nil, []int{nameID}, nil, nil, nil) - if err = err2; err == nil { - if len(skuList) > 0 { - for _, v := range skuList { - skuIDs = append(skuIDs, v.ID) - retVal = []int{v.ID} - } - if partner.IsMultiStore(vendorID) { - for _, v := range skuIDs { - OnUpdateThing(ctx, db, nil, int64(v), model.ThingTypeSku) + taskSeqFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) { + switch step { + case 0: + taskFunc := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + nameID := batchItemList[0].(int) + skuEx := &model.SkuExinfoMap{ + NameID: nameID, + ImgWatermark: imgWaterMark, + ExPrefix: exPrefix, + VendorID: vendorID, + BeginAt: fromTimeP, + EndAt: toTimeP, + } + dao.WrapAddIDCULDEntity(skuEx, ctx.GetUserName()) + skuExs, _ := dao.GetSkuExinfos(db, []int{nameID}, []int{vendorID}, "", utils.ZeroTimeValue, utils.ZeroTimeValue) + if len(skuExs) > 0 { + skuEx2 := skuExs[0] + skuEx2.DeletedAt = time.Now() + skuEx2.LastOperator = ctx.GetUserName() + dao.UpdateEntity(db, skuEx2, "DeletedAt", "LastOperator") + dao.CreateEntity(db, skuEx) + } else { + dao.CreateEntity(db, skuEx) + } + now := utils.Time2Date(time.Now()) + if now.Sub(fromTimeP) >= 0 && now.Sub(toTimeP) <= 0 { + var skuIDs []int + skuList, err2 := dao.GetSkus(db, nil, []int{nameID}, nil, nil, nil) + if err = err2; err == nil { + if len(skuList) > 0 { + for _, v := range skuList { + skuIDs = append(skuIDs, v.ID) + retVal = []int{v.ID} + } + if partner.IsMultiStore(vendorID) { + for _, v := range skuIDs { + OnUpdateThing(ctx, db, nil, int64(v), model.ThingTypeSku) + } } } } } + return retVal, err } - return retVal, err - }, nameIDs) - tasksch.HandleTask(task, nil, true).Run() - if isAsync { - hint = task.GetID() - } else { - var skuIDs []int - result, err2 := task.GetResult(0) - err = err2 - if len(result) > 0 { - for _, v := range result { - skuIDs = append(skuIDs, int(utils.Interface2Int64WithDefault(v, 0))) + taskParallel := tasksch.NewParallelTask("UpdateSkuExinfoMap", tasksch.NewParallelConfig().SetParallelCount(parallelCount), ctx, taskFunc, nameIDs) + tasksch.HandleTask(taskParallel, task, true).Run() + result, err2 := task.GetResult(0) + err = err2 + if len(result) > 0 { + for _, v := range result { + skuIDs = append(skuIDs, int(utils.Interface2Int64WithDefault(v, 0))) + } } + case 1: if partner.IsMultiStore(vendorID) { CurVendorSync.SyncSkus(ctx, db, nil, skuIDs, isAsync, isContinueWhenError, ctx.GetUserName()) } else { CurVendorSync.SyncStoresSkus2(ctx, nil, 0, db, []int{vendorID}, nil, false, skuIDs, nil, model.SyncFlagModifiedMask, isAsync, isContinueWhenError) } } + return result, err + } + taskSeq := tasksch.NewSeqTask2("更新商品前缀", ctx, isContinueWhenError, taskSeqFunc, 2) + tasksch.HandleTask(taskSeq, nil, true).Run() + if !isAsync { + _, err = taskSeq.GetResult(0) hint = "1" + } else { + hint = taskSeq.GetID() } return hint, err }