| | |
| | | /// </summary> |
| | | public class TaskInfoCommandHandler( |
| | | IRepository<TaskInfo> rep |
| | | ) |
| | | : IRequestHandler<SaveTaskInfoCommand, Guid> |
| | | ) : |
| | | IRequestHandler<SaveTaskInfoCommand, Guid>, |
| | | IRequestHandler<SetTaskInfoReleaseStatusCommand, int>, |
| | | IRequestHandler<SetTaskInfoRecommendStatusCommand, int> |
| | | { |
| | | private readonly IRepository<TaskInfo> rep = rep; |
| | | |
| | |
| | | { |
| | | var logier = JwtUtils.GetCurrentLogier(); |
| | | return await request.SaveData<TaskInfo, SaveTaskInfoCommand>( |
| | | q => TaskInfoQueryable.GetQueryable( |
| | | rep, |
| | | q => q |
| | | .Include(it => it.Benefits) |
| | | .Include(it => it.CredentialLimits), |
| | | logier), |
| | | q => |
| | | { |
| | | q = TaskInfoRepository.GetQueryable(rep) |
| | | .Include(it => it.Benefits) |
| | | .Include(it => it.CredentialLimits); |
| | | return q; |
| | | }, |
| | | null, |
| | | (entity) => |
| | | { |
| | |
| | | cancellationToken); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 设置任务发布状态 |
| | | /// </summary> |
| | | /// <param name="request"></param> |
| | | /// <param name="cancellationToken"></param> |
| | | /// <returns></returns> |
| | | public async Task<int> Handle(SetTaskInfoReleaseStatusCommand request, CancellationToken cancellationToken) |
| | | { |
| | | var entities = await TaskInfoRepository.GetQueryable(rep) |
| | | .Where(it => request.Ids.Contains(it.Id)) |
| | | .ToListAsync(); |
| | | foreach (var entity in entities) |
| | | { |
| | | entity.ReleaseStatus = request.ReleaseStatus; |
| | | } |
| | | await rep.UpdateAsync(entities); |
| | | return entities.Count; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 设置任务是否推荐 |
| | | /// </summary> |
| | | /// <param name="request"></param> |
| | | /// <param name="cancellationToken"></param> |
| | | /// <returns></returns> |
| | | public async Task<int> Handle(SetTaskInfoRecommendStatusCommand request, CancellationToken cancellationToken) |
| | | { |
| | | var entities = await TaskInfoRepository.GetQueryable(rep) |
| | | .Where(it => request.Ids.Contains(it.Id)) |
| | | .ToListAsync(); |
| | | foreach (var entity in entities) |
| | | { |
| | | entity.RecommendStatus = request.RecommendStatus; |
| | | } |
| | | await rep.UpdateAsync(entities); |
| | | return entities.Count; |
| | | } |
| | | |
| | | private async Task BuildCode(TaskInfo entity) |
| | | { |
| | | entity.Code = $"{DateTime.Now:yyyyMMddHHmm}{new Random(IDGen.NextID().GetHashCode()).Next(1000, 9999)}"; |