| | |
| | | using FlexJobApi.Core; |
| | | using Furion.DatabaseAccessor; |
| | | using Mapster; |
| | | using MediatR; |
| | | using Microsoft.EntityFrameworkCore; |
| | | using System; |
| | |
| | | public class CodeUrlQueryHandler( |
| | | IRepository<CodeUrl> rep |
| | | ) : |
| | | IRequestHandler<GetCodeUrlQuery, string?> |
| | | IRequestHandler<GetCodeUrlQuery, GetCodeUrlQueryResult> |
| | | { |
| | | private readonly IRepository<CodeUrl> rep = rep; |
| | | |
| | |
| | | /// <param name="request"></param> |
| | | /// <param name="cancellationToken"></param> |
| | | /// <returns></returns> |
| | | public async Task<string?> Handle(GetCodeUrlQuery request, CancellationToken cancellationToken) |
| | | public async Task<GetCodeUrlQueryResult> Handle(GetCodeUrlQuery request, CancellationToken cancellationToken) |
| | | { |
| | | var now = DateTime.Now; |
| | | return await rep.AsQueryable().AsNoTracking() |
| | |
| | | && it.Code == request.Code |
| | | && (it.ExpiredTime == null |
| | | || it.ExpiredTime > now)) |
| | | .Select(it => it.Url) |
| | | .FirstOrDefaultAsync(); |
| | | .GetDetail<CodeUrl, GetCodeUrlQueryResult>(); |
| | | } |
| | | } |
| | | } |