From 744ce126fd5dc3a0448719832d1e9667e44d30b5 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期三, 06 八月 2025 18:39:52 +0800 Subject: [PATCH] fix:bug --- FlexJobApi.User.Application/Menus/Commands/SaveMenuButtonCommandHandler.cs | 60 +++++++++++++++++++++++------------------------------------- 1 files changed, 23 insertions(+), 37 deletions(-) diff --git a/FlexJobApi.User.Application/Menus/Commands/SaveMenuButtonCommandHandler.cs b/FlexJobApi.User.Application/Menus/Commands/SaveMenuButtonCommandHandler.cs index 3816ddf..8f77325 100644 --- a/FlexJobApi.User.Application/Menus/Commands/SaveMenuButtonCommandHandler.cs +++ b/FlexJobApi.User.Application/Menus/Commands/SaveMenuButtonCommandHandler.cs @@ -26,43 +26,29 @@ { var parent = await rep.FirstOrDefaultAsync(it => it.Id == request.ParentId); if (parent == null) throw Oops.Oh(EnumErrorCodeType.s404, "涓婄骇鑿滃崟"); - if (request.Id.HasValue) - { - var entity = await rep.FirstOrDefaultAsync(it => it.Id == it.Id); - if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "璇ヨ彍鍗�"); - if (entity.ParentId != request.ParentId) throw Oops.Oh(EnumErrorCodeType.s410, "涓婄骇Id"); - request.Adapt(entity); - if (await CheckExist(entity)) throw Oops.Oh(EnumErrorCodeType.s405, "鑿滃崟缂栧彿"); - await rep.UpdateAsync(entity); - return entity.Id; - } - else - { - var entity = new Menu(); - entity.Path = $"{parent.Path}{parent.Code}/"; - entity.Type = EnumMenuType.Button; - entity.VisitLevel = parent.VisitLevel; - request.Adapt(entity); - if (await CheckExist(entity)) throw Oops.Oh(EnumErrorCodeType.s405, "鑿滃崟缂栧彿"); - await rep.InsertAsync(entity); - return entity.Id; - } - } - - /// <summary> - /// 鏍¢獙鑿滃崟鏄惁閲嶅 - /// </summary> - /// <param name="entity"></param> - /// <returns></returns> - private async Task<bool> CheckExist(Menu entity) - { - return await rep.AsQueryable().AsNoTracking() - .AnyAsync(it => - it.ParentId == entity.ParentId - && it.Group == entity.Group - && it.Location == entity.Location - && it.Code == entity.Code - && it.Id != entity.Id); + return await request.SaveData<Menu, SaveMenuButtonCommand>( + it => + it.ParentId == request.ParentId + && it.Type == EnumMenuType.Button + && it.Group == request.Group + && it.Location == request.Location + && it.Code == request.Code + && it.Id != request.Id, + (entity) => + { + if (request.Id.HasValue) + { + if (entity.ParentId != request.ParentId) throw Oops.Oh(EnumErrorCodeType.s410, "涓婄骇Id"); + } + else + { + entity.Path = $"{parent.Path}{parent.Code}/"; + entity.Type = EnumMenuType.Button; + entity.VisitLevel = parent.VisitLevel; + } + request.Adapt(entity); + }, + cancellationToken); } } } -- Gitblit v1.9.1