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 | 37 ++++++++++++++++++++++++++++--------- 1 files changed, 28 insertions(+), 9 deletions(-) diff --git a/FlexJobApi.User.Application/Menus/Commands/MenuSaveCommandHandler.cs b/FlexJobApi.User.Application/Menus/Commands/MenuSaveCommandHandler.cs index 480faa0..f7d5f52 100644 --- a/FlexJobApi.User.Application/Menus/Commands/MenuSaveCommandHandler.cs +++ b/FlexJobApi.User.Application/Menus/Commands/MenuSaveCommandHandler.cs @@ -15,16 +15,13 @@ /// <summary> /// 淇濆瓨鑿滃崟 /// </summary> - public class MenuSaveCommandHandler : IRequestHandler<MenuSaveCommand, Guid> + public class MenuSaveCommandHandler( + IRepository<Menu> menuRep) + : IRequestHandler<MenuSaveCommand, Guid> { - private readonly IRepository<Menu> menuRep; + private readonly IRepository<Menu> menuRep = menuRep; - public MenuSaveCommandHandler( - IRepository<Menu> menuRep) - { - this.menuRep = menuRep; - } - + /// <inheritdoc/> public async Task<Guid> Handle(MenuSaveCommand request, CancellationToken cancellationToken) { var menu = @@ -32,8 +29,30 @@ ? await menuRep.AsQueryable().FirstOrDefaultAsync(it => it.Id == request.Id, cancellationToken) : new Menu(); if (menu == null) throw Oops.Oh(EnumUserErrorCodeType.s100, "鑿滃崟"); - menu.Adapt(request); + + 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.InsertAsync(menu, cancellationToken: cancellationToken) + : await menuRep.UpdateAsync(menu); + await menuRep.SaveNowAsync(cancellationToken); + return menu.Id; } } -- Gitblit v1.9.1