UpdateConfig在有时会异步操作

This commit is contained in:
gazebo
2019-10-15 16:08:15 +08:00
parent b442d55ebe
commit b94a527a15
2 changed files with 26 additions and 11 deletions

View File

@@ -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) {

View File

@@ -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
})
}