From c914975bffe90f808a05dba2c53d4a750e8403c0 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期三, 06 八月 2025 18:17:08 +0800 Subject: [PATCH] feat:企业开发 --- FlexJobApi.User.Application/Enterprises/Queries/EnterprisesQueryHandler.cs | 122 ++++++++++++++++++++++++++++++++++------ 1 files changed, 104 insertions(+), 18 deletions(-) diff --git a/FlexJobApi.User.Application/Enterprises/Queries/EnterprisesQueryHandler.cs b/FlexJobApi.User.Application/Enterprises/Queries/EnterprisesQueryHandler.cs index 4bc19bf..a8917d7 100644 --- a/FlexJobApi.User.Application/Enterprises/Queries/EnterprisesQueryHandler.cs +++ b/FlexJobApi.User.Application/Enterprises/Queries/EnterprisesQueryHandler.cs @@ -1,5 +1,9 @@ 锘縰sing FlexJobApi.Core; +using Furion.DatabaseAccessor; +using Furion.FriendlyException; +using Mapster; using MediatR; +using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; @@ -11,9 +15,19 @@ /// <summary> /// 浼佷笟鏌ヨ澶勭悊鍣� /// </summary> - public class EnterprisesQueryHandler - : IRequestHandler<GetEnterprisesQuery, PagedListQueryResult<GetEnterprisesQueryResultItem>> + public class EnterprisesQueryHandler( + IRepository<Enterprise> rep, + IRepository<EnterpriseAuth> repEnterpriseAuth, + IRepository<DictionaryData> repDictionaryData + ) : + IRequestHandler<GetEnterprisesQuery, PagedListQueryResult<GetEnterprisesQueryResultItem>>, + IRequestHandler<GetEnterpriseQuery, GetEnterpriseQueryResult>, + IRequestHandler<GetEnterpriseElectronSignSettingQuery, GetEnterpriseElectronSignSettingQueryResult>, + IRequestHandler<GetEnterpriseSmsSettingQuery, GetEnterpriseSmsSettingQueryResult> { + private readonly IRepository<Enterprise> rep = rep; + private readonly IRepository<EnterpriseAuth> repEnterpriseAuth = repEnterpriseAuth; + /// <summary> /// 鏌ヨ浼佷笟淇℃伅鍒嗛〉鍒楄〃鏁版嵁 /// </summary> @@ -22,22 +36,94 @@ /// <returns></returns> public Task<PagedListQueryResult<GetEnterprisesQueryResultItem>> Handle(GetEnterprisesQuery request, CancellationToken cancellationToken) { - return request.PageModel.GetPagedListAsync<Enterprise, GetEnterprisesQueryResultItem>( - q => - { - if (request.Keywords.IsNotNull()) - { - q = q.Where(it => - it.EnterpriseAuth.EnterpriseName.Contains(request.Keywords) - || it.EnterpriseAuth.LegalPerson.Contains(request.Keywords) - || it.Contacts.Contains(request.Keywords)); - } - if (request.IsConfigured.HasValue) - { - q = q.Where(it => (it.IsCheckedBankCard && it.RealAccess.HasValue && it.SmsAccess.HasValue) == request.IsConfigured); - } - return q; - }, cancellationToken: cancellationToken); + var q = rep.AsQueryable().AsNoTracking(); + if (request.Keywords.IsNotNull()) + { + q = q.Where(it => + it.EnterpriseAuth.EnterpriseName.Contains(request.Keywords) + || it.EnterpriseAuth.LegalPerson.Contains(request.Keywords) + || it.Contacts.Contains(request.Keywords)); + } + if (request.IsConfigured.HasValue) + { + q = q.Where(it => (it.IsCheckedBankCard && it.RealAccess.HasValue && it.SmsAccess.HasValue) == request.IsConfigured); + } + var s = (from e in q + join a in repEnterpriseAuth.AsQueryable().AsNoTracking() on e.EnterpriseAuthId equals a.Id + join p in repDictionaryData.AsQueryable().AsNoTracking() on e.ProvinceId equals p.Id into pg + from pgi in pg.DefaultIfEmpty() + join c in repDictionaryData.AsQueryable().AsNoTracking() on e.CityId equals c.Id into cg + from cgi in cg.DefaultIfEmpty() + join i in repDictionaryData.AsQueryable().AsNoTracking() on e.IndustryTypeId equals i.Id into ig + from igi in ig.DefaultIfEmpty() + select new GetEnterprisesQueryResultItem + { + Id = e.Id, + EnterpriseName = a.EnterpriseName, + LegalPerson = a.LegalPerson, + SocietyCreditCode = a.SocietyCreditCode, + Contacts = e.Contacts, + ContactPhoneNumber = e.ContactPhoneNumber, + ProvinceContent = pgi.Content, + CityContent = cgi.Content, + IndustryTypeContent = igi.Content, + IsReal = a.IsReal, + IsConfigured = e.IsCheckedBankCard && e.RealAccess.HasValue && e.SmsAccess.HasValue + }); + return request.PageModel.GetPagedListAsync(s, cancellationToken: cancellationToken); + } + + /// <summary> + /// 鏌ヨ浼佷笟璇︽儏 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<GetEnterpriseQueryResult> Handle(GetEnterpriseQuery request, CancellationToken cancellationToken) + { + var model = await rep.AsQueryable().AsNoTracking() + .Where(it => it.Id == request.Id) + .ProjectToType<GetEnterpriseQueryResult>() + .FirstOrDefaultAsync(cancellationToken); + if (model == null) throw Oops.Oh(EnumErrorCodeType.s404, "璇ヤ紒涓�"); + model.UserName = await rep.Change<UserInfo>().AsQueryable().AsNoTracking() + .Include(it => it.UserAuth) + .Where(it => it.EnterpriseId == model.Id) + .Select(it => it.UserAuth.UserName) + .FirstOrDefaultAsync(cancellationToken); + return model; + } + + /// <summary> + /// 鏌ヨ浼佷笟鐢靛瓙绛鹃厤缃� + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<GetEnterpriseElectronSignSettingQueryResult> Handle(GetEnterpriseElectronSignSettingQuery request, CancellationToken cancellationToken) + { + var model = await rep.AsQueryable().AsNoTracking() + .Where(it => it.Id == request.Id) + .ProjectToType<GetEnterpriseElectronSignSettingQueryResult>() + .FirstOrDefaultAsync(cancellationToken); + if (model == null) throw Oops.Oh(EnumErrorCodeType.s404, "璇ヤ紒涓�"); + return model; + } + + /// <summary> + /// 鏌ヨ浼佷笟鐭俊閰嶇疆 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<GetEnterpriseSmsSettingQueryResult> Handle(GetEnterpriseSmsSettingQuery request, CancellationToken cancellationToken) + { + var model = await rep.AsQueryable().AsNoTracking() + .Where(it => it.Id == request.Id) + .ProjectToType<GetEnterpriseSmsSettingQueryResult>() + .FirstOrDefaultAsync(cancellationToken); + if (model == null) throw Oops.Oh(EnumErrorCodeType.s404, "璇ヤ紒涓�"); + return model; } } } -- Gitblit v1.9.1