diff --git a/business/jxstore/cms/cms.go b/business/jxstore/cms/cms.go index 28d21fe1a..cdd174d63 100644 --- a/business/jxstore/cms/cms.go +++ b/business/jxstore/cms/cms.go @@ -301,12 +301,12 @@ func DeleteConfig(ctx *jxcontext.Context, key, configType string) (err error) { return err } -func UpdateConfig(ctx *jxcontext.Context, key, configType, value string) (err error) { +func UpdateConfig(ctx *jxcontext.Context, key, configType, value string) (hint string, err error) { if key == "" { - return fmt.Errorf("修改配置必须给定key") + return "", fmt.Errorf("修改配置必须给定key") } if err = checkConfig(model.SyncFlagModifiedMask, configType, key, value); err != nil { - return err + return "", err } db := dao.GetDB() @@ -320,27 +320,27 @@ func UpdateConfig(ctx *jxcontext.Context, key, configType, value string) (err er configList, err := dao.QueryConfigs(db, key, configType, "") if err != nil { dao.Rollback(db) - return err + return "", err } if _, err = dao.UpdateEntityLogically(db, configList[0], map[string]interface{}{ "Value": value, }, ctx.GetUserName(), nil); err != nil { dao.Rollback(db) - return err + return "", err } switch configType { case model.ConfigTypePricePack: storeMapList, err := dao.GetStoresMapList(db, nil, nil, model.StoreStatusAll, model.StoreIsSyncYes, key) if err != nil { dao.Rollback(db) - return err + return "", err } for _, v := range storeMapList { if _, err = dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, &model.StoreSkuBind{}, nil, ctx.GetUserName(), map[string]interface{}{ model.FieldStoreID: v.StoreID, }, dao.GetSyncStatusStructField(model.VendorNames[v.VendorID]), model.SyncFlagPriceMask); err != nil { dao.Rollback(db) - return err + return "", err } } dao.Commit(db) @@ -348,17 +348,32 @@ func UpdateConfig(ctx *jxcontext.Context, key, configType, value string) (err er dao.Commit(db) storeMapList, err := dao.GetStoresMapList(db, nil, nil, model.StoreStatusAll, model.StoreIsSyncYes, "") if err != nil { - return err + return "", err } for _, v := range storeMapList { + var storeMapList2 []*model.StoreMap if v.FreightDeductionPack == key { - _, _ = CurVendorSync.SyncStore(ctx, db, v.VendorID, v.StoreID, false, ctx.GetUserName()) + storeMapList2 = append(storeMapList2, v) + } + if len(storeMapList2) > 0 { + task := tasksch.NewParallelTask("同步门店配送免运", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx, + func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + storeMap := batchItemList[0].(*model.StoreMap) + _, err = CurVendorSync.SyncStore(ctx, db, storeMap.VendorID, storeMap.StoreID, false, ctx.GetUserName()) + return retVal, err + }, storeMapList2) + tasksch.HandleTask(task, nil, true).Run() + if len(storeMapList2) < 5 { + _, err = task.GetResult(0) + } else { + hint = task.GetID() + } } } default: dao.Commit(db) } - return err + return hint, err } func QueryConfigs(key, configType, keyword string) (configList []*model.NewConfig, err error) { diff --git a/controllers/cms.go b/controllers/cms.go index e6d47e614..9bd8cb168 100644 --- a/controllers/cms.go +++ b/controllers/cms.go @@ -278,7 +278,7 @@ func (c *CmsController) DeleteConfig() { // @router /UpdateConfig [put] func (c *CmsController) UpdateConfig() { c.callUpdateConfig(func(params *tCmsUpdateConfigParams) (retVal interface{}, errCode string, err error) { - err = cms.UpdateConfig(params.Ctx, params.Key, params.Type, params.Value) + retVal, err = cms.UpdateConfig(params.Ctx, params.Key, params.Type, params.Value) return retVal, "", err }) }