| | |
| | | using FlexJobApi.Core; |
| | | using Furion.DatabaseAccessor; |
| | | using Furion.FriendlyException; |
| | | using Mapster; |
| | | using MediatR; |
| | | using Microsoft.EntityFrameworkCore; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | |
| | | /// <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> |
| | |
| | | /// <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.ProvinceCode equals p.Code into pg |
| | | from pgi in pg.DefaultIfEmpty() |
| | | join c in repDictionaryData.AsQueryable().AsNoTracking() on e.CityCode equals c.Code into cg |
| | | from cgi in cg.DefaultIfEmpty() |
| | | join i in repDictionaryData.AsQueryable().AsNoTracking() on e.IndustryTypeCode equals i.Code 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; |
| | | } |
| | | } |
| | | } |