diff --git a/business/jxstore/initdata/initdata.go b/business/jxstore/initdata/initdata.go index f3191df07..4f1325fe3 100644 --- a/business/jxstore/initdata/initdata.go +++ b/business/jxstore/initdata/initdata.go @@ -146,7 +146,46 @@ func InitPlace(ctx *jxcontext.Context) (err error) { return err } -func InitSkuName(ctx *jxcontext.Context, isForce, isAsync, isContinueWhenError bool) (hint string, err error) { +func RefreshSkuNameImg(ctx *jxcontext.Context, parentTask tasksch.ITask, isForce, isAsync, isContinueWhenError bool) (hint string, err error) { + db := dao.GetDB() + var skuNameList []*model.SkuName + if err = dao.GetRows(db, &skuNameList, ` + SELECT t1.id, t1.img, MAX(t2.jd_id) jd_id + FROM sku_name t1 + JOIN sku t2 ON t2.name_id = t1.id AND t2.deleted_at = ? + WHERE t1.deleted_at = ? + GROUP BY 1,2 + ORDER BY t1.id + `, utils.DefaultTimeValue, utils.DefaultTimeValue); err != nil { + return "", err + } + + task := tasksch.NewParallelTask("RefreshSkuNameImg", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, + func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + skuName := batchItemList[0].(*model.SkuName) + if !jxutils.IsFakeID(skuName.JdID) { + if skuName.Img == "" || isForce { + var imgList []*jdapi.SkuPageImg + if imgList, err = api.JdAPI.GetSkuPageImageInfo(skuName.JdID); err == nil { + if len(imgList) > 0 { + skuName.Img = imgList[0].Big + _, err = dao.UpdateEntity(db, skuName, "Img") + } + } + } + } + return nil, err + }, skuNameList) + tasksch.HandleTask(task, parentTask, true).Run() + if !isAsync { + _, err = task.GetResult(0) + } else { + hint = task.ID + } + return hint, err +} + +func RefreshImgMd5(ctx *jxcontext.Context, parentTask tasksch.ITask, isForce, isAsync, isContinueWhenError bool) (hint string, err error) { db := dao.GetDB() var skuNameList []*model.SkuName if err = dao.GetRows(db, &skuNameList, ` @@ -179,7 +218,7 @@ func InitSkuName(ctx *jxcontext.Context, isForce, isAsync, isContinueWhenError b } return nil, err }, skuNameList) - tasksch.ManageTask(task).Run() + tasksch.HandleTask(task, parentTask, true).Run() if !isAsync { _, err = task.GetResult(0) } else { @@ -188,6 +227,26 @@ func InitSkuName(ctx *jxcontext.Context, isForce, isAsync, isContinueWhenError b return hint, err } +func InitSkuName(ctx *jxcontext.Context, isForce, isAsync, isContinueWhenError bool) (hint string, err error) { + rootTask := tasksch.NewSeqTask("InitSkuName", ctx, + func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) { + switch step { + case 0: + _, err = RefreshSkuNameImg(ctx, task, isForce, false, isContinueWhenError) + case 1: + _, err = RefreshImgMd5(ctx, task, isForce, false, isContinueWhenError) + } + return nil, err + }, 2) + tasksch.ManageTask(rootTask).Run() + if !isAsync { + _, err = rootTask.GetResult(0) + } else { + hint = rootTask.ID + } + return hint, err +} + func InitVendorCategory(ctx *jxcontext.Context, vendorID int) (num int64, err error) { if handler := partner.GetPurchasePlatformFromVendorID(vendorID); handler != nil { cats, err2 := handler.GetVendorCategories(ctx)