enhance: use transaction to update site settings

This commit is contained in:
HFO4
2022-04-19 15:36:29 +08:00
parent 0c9383e329
commit 3804efd792
3 changed files with 12 additions and 6 deletions

View File

@@ -52,17 +52,23 @@ func (service *BatchSettingGet) Get() serializer.Response {
// Change 批量更改站点设定
func (service *BatchSettingChangeService) Change() serializer.Response {
cacheClean := make([]string, 0, len(service.Options))
tx := model.DB.Begin()
for _, setting := range service.Options {
if err := model.DB.Model(&model.Setting{}).Where("name = ?", setting.Key).Update("value", setting.Value).Error; err != nil {
if err := tx.Model(&model.Setting{}).Where("name = ?", setting.Key).Update("value", setting.Value).Error; err != nil {
cache.Deletes(cacheClean, "setting_")
tx.Rollback()
return serializer.DBErr("设置 "+setting.Key+" 更新失败", err)
}
cacheClean = append(cacheClean, setting.Key)
}
if err := tx.Commit().Error; err != nil {
return serializer.DBErr("设置更新失败", err)
}
cache.Deletes(cacheClean, "setting_")
return serializer.Response{}