Ver código fonte

修复 未配置多语言时,修改菜单报错,但实际修改成功了(上一提交未做空值判断导致)

夜鹰 7 meses atrás
pai
commit
3f4d398949
1 arquivos alterados com 20 adições e 11 exclusões
  1. 20 11
      Admin.NET/Admin.NET.Core/Service/Menu/SysMenuService.cs

+ 20 - 11
Admin.NET/Admin.NET.Core/Service/Menu/SysMenuService.cs

@@ -221,19 +221,28 @@ public class SysMenuService : IDynamicApiController, ITransient
         var sysMenu = input.Adapt<SysMenu>();
         CheckMenuParam(sysMenu);
 
-        await _sysMenuRep.AsUpdateable(sysMenu).ExecuteCommandAsync();
+        await _sysMenuRep.AsTenant().UseTranAsync(async () => {
+            // 更新菜单
+            await _sysMenuRep.AsUpdateable(sysMenu).ExecuteCommandAsync();
 
-        // 同步更新翻译表
-        var menuTranslation = await _sysLangTextCacheService.GetTranslationEntity("SysMenu", "Title", sysMenu.Id, _userManager.LangCode);
-        await _sysLangTextService.Update(new UpdateSysLangTextInput
-        {
-            Id = menuTranslation.Id,
-            EntityName = "SysMenu",
-            EntityId = sysMenu.Id,
-            FieldName = "Title",
-            LangCode = _userManager.LangCode,
-            Content = sysMenu.Title
+            // 同步更新翻译表
+            var menuTranslation = await _sysLangTextCacheService.GetTranslationEntity("SysMenu", "Title", sysMenu.Id, _userManager.LangCode);
+            if (!menuTranslation.IsNullOrEmpty())
+            {
+                await _sysLangTextService.Update(new UpdateSysLangTextInput
+                {
+                    Id = menuTranslation.Id,
+                    EntityName = "SysMenu",
+                    EntityId = sysMenu.Id,
+                    FieldName = "Title",
+                    LangCode = _userManager.LangCode,
+                    Content = sysMenu.Title
+                });
+            }
+        }, err => {
+            Oops.Oh("更新数据时发生错误", err.Message);
         });
+        
 
         // 清除缓存
         DeleteMenuCache();