diff --git a/business/jxstore/cms/cms.go b/business/jxstore/cms/cms.go index 807fa932e..28d21fe1a 100644 --- a/business/jxstore/cms/cms.go +++ b/business/jxstore/cms/cms.go @@ -310,37 +310,54 @@ func UpdateConfig(ctx *jxcontext.Context, key, configType, value string) (err er } db := dao.GetDB() - configList, err := dao.QueryConfigs(db, key, configType, "") - if err != nil { - return err - } - storeMapList, err := dao.GetStoresMapList(db, nil, nil, model.StoreStatusAll, model.StoreIsSyncYes, key) - if err != nil { - return err - } - dao.Begin(db) defer func() { - if r := recover(); r != nil || err != nil { + if r := recover(); r != nil { dao.Rollback(db) - if r != nil { - panic(r) - } + panic(r) } }() + configList, err := dao.QueryConfigs(db, key, configType, "") + if err != nil { + dao.Rollback(db) + return err + } if _, err = dao.UpdateEntityLogically(db, configList[0], map[string]interface{}{ "Value": value, }, ctx.GetUserName(), nil); err != nil { + dao.Rollback(db) 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 { + 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 } + 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 + } + } + dao.Commit(db) + case model.ConfigTypeFreightPack: + dao.Commit(db) + storeMapList, err := dao.GetStoresMapList(db, nil, nil, model.StoreStatusAll, model.StoreIsSyncYes, "") + if err != nil { + return err + } + for _, v := range storeMapList { + if v.FreightDeductionPack == key { + _, _ = CurVendorSync.SyncStore(ctx, db, v.VendorID, v.StoreID, false, ctx.GetUserName()) + } + } + default: + dao.Commit(db) } - dao.Commit(db) return err }