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/SaveMenuFieldCommandHandler.cs | 57 ++++++++++++++++++++++++--------------------------------- 1 files changed, 24 insertions(+), 33 deletions(-) diff --git a/FlexJobApi.User.Application/Menus/Commands/SaveMenuFieldCommandHandler.cs b/FlexJobApi.User.Application/Menus/Commands/SaveMenuFieldCommandHandler.cs index 774ce2f..a4889e4 100644 --- a/FlexJobApi.User.Application/Menus/Commands/SaveMenuFieldCommandHandler.cs +++ b/FlexJobApi.User.Application/Menus/Commands/SaveMenuFieldCommandHandler.cs @@ -24,39 +24,30 @@ /// <inheritdoc/> public async Task<Guid> Handle(SaveMenuFieldCommand request, CancellationToken cancellationToken) { - if (request.Id.HasValue) - { - var entity = await rep.FirstOrDefaultAsync(it => it.Id == it.Id); - 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(); - request.Adapt(entity); - if (await CheckExist(entity)) throw Oops.Oh(EnumErrorCodeType.s405, "鑿滃崟缂栧彿"); - await rep.InsertAsync(entity); - return entity.Id; - } + var parent = await rep.FirstOrDefaultAsync(it => it.Id == request.ParentId); + if (parent == null) throw Oops.Oh(EnumErrorCodeType.s404, "涓婄骇鑿滃崟"); + return await request.SaveData<Menu, SaveMenuFieldCommand>( + it => + it.ParentId == request.ParentId + && it.Type == EnumMenuType.Field + && it.Group == request.Group + && 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.Field; + entity.VisitLevel = parent.VisitLevel; + } + request.Adapt(entity); + }, + cancellationToken); } - - /// <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.Code == entity.Code - && it.Id != entity.Id); - } - } } -- Gitblit v1.9.1