From 9fd157a63dfbb8ee9f32fff7540c97eb4a3d3cce Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期五, 01 八月 2025 17:00:30 +0800
Subject: [PATCH] feat:菜单开发

---
 FlexJobApi.User.Application/Menus/Commands/MenuSaveCommandHandler.cs |   24 ++++++++++++++++++++++--
 1 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/FlexJobApi.User.Application/Menus/Commands/MenuSaveCommandHandler.cs b/FlexJobApi.User.Application/Menus/Commands/MenuSaveCommandHandler.cs
index 4ab1616..f7d5f52 100644
--- a/FlexJobApi.User.Application/Menus/Commands/MenuSaveCommandHandler.cs
+++ b/FlexJobApi.User.Application/Menus/Commands/MenuSaveCommandHandler.cs
@@ -29,10 +29,30 @@
                 ? await menuRep.AsQueryable().FirstOrDefaultAsync(it => it.Id == request.Id, cancellationToken)
                 : new Menu();
             if (menu == null) throw Oops.Oh(EnumUserErrorCodeType.s100, "鑿滃崟");
+
+            if (request.Id.HasValue && menu.Code != request.Code)
+            {
+                throw Oops.Oh(EnumUserErrorCodeType.s200, "缂栧彿涓嶅彲淇敼");
+            }
+
             request.Adapt(menu);
+
+            if (menu.ParentId.HasValue)
+            {
+                menu.Path = await menuRep.AsQueryable().AsNoTracking().Where(it => it.Id == menu.ParentId).Select(it => it.Path).FirstOrDefaultAsync();
+                menu.Path = $"{menu.Path}/{menu.Code}";
+            }
+            else
+            {
+                menu.Path = "/";
+            }
+
             var result = request.Id == null
-                ? await menuRep.InsertNowAsync(menu, cancellationToken: cancellationToken)
-                : await menuRep.UpdateNowAsync(menu, cancellationToken: cancellationToken);
+                ? await menuRep.InsertAsync(menu, cancellationToken: cancellationToken)
+                : await menuRep.UpdateAsync(menu);
+
+            await menuRep.SaveNowAsync(cancellationToken);
+
             return menu.Id;
         }
     }

--
Gitblit v1.9.1