From 350aa66d4818f85f042cb2d399691209dc97b97e Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期三, 06 八月 2025 14:46:54 +0800 Subject: [PATCH] feat:字典开发 --- FlexJobApi.User.Application/Menus/Commands/SaveMenuFieldCommandHandler.cs | 60 ++++++++++++++++++++++-------------------------------------- 1 files changed, 22 insertions(+), 38 deletions(-) diff --git a/FlexJobApi.User.Application/Menus/Commands/SaveMenuFieldCommandHandler.cs b/FlexJobApi.User.Application/Menus/Commands/SaveMenuFieldCommandHandler.cs index 8a0993f..a4889e4 100644 --- a/FlexJobApi.User.Application/Menus/Commands/SaveMenuFieldCommandHandler.cs +++ b/FlexJobApi.User.Application/Menus/Commands/SaveMenuFieldCommandHandler.cs @@ -26,44 +26,28 @@ { 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 == request.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.Field; - entity.VisitLevel = parent.VisitLevel; - request.Adapt(entity); - if (await CheckExist(entity)) throw Oops.Oh(EnumErrorCodeType.s406, "鑿滃崟缂栧彿"); - await rep.InsertAsync(entity); - return entity.Id; - } + 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.Type == entity.Type - && it.Group == entity.Group - && it.Code == entity.Code - && it.Id != entity.Id); - } - } } -- Gitblit v1.9.1