irc-netcore-api/IRaCIS.Core.Application/MassTransit/Consumer/SubjectCriterionClaimCancel...

39 lines
1.5 KiB
C#

using IRaCIS.Core.Domain;
using IRaCIS.Core.Domain._DomainEvent;
using IRaCIS.Core.Domain.Models;
using MassTransit;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace IRaCIS.Core.Application.MassTransit.Consumer
{
public class SubjectCriterionClaimCancelConsumer(IRepository<VisitTask> _visitTaskRepository) : IConsumer<SubjectCriterionClaimCancelEvent>
{
public async Task Consume(ConsumeContext<SubjectCriterionClaimCancelEvent> context)
{
Log.Logger.Warning($"定时任务取消领取!{context.Message.ToJsonStr()}");
bool isInOrder = context.Message.IsInOrder;
if (isInOrder)
{
Guid subjectId = (Guid)context.Message.SubjectId;
Guid trialReadingCriterionId = (Guid)context.Message.TrialReadingCriterionId;
await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCriterionId && t.ReadingTaskState != ReadingTaskState.HaveSigned, u => new VisitTask() { SubjectCriterionClaimUserId = null });
}
else
{
Guid id = (Guid)context.Message.VisitTaskId;
await _visitTaskRepository.UpdatePartialFromQueryAsync(t => t.Id == id && t.ReadingTaskState != ReadingTaskState.HaveSigned, u => new VisitTask() { DoctorUserId = null }, true);
}
}
}
}