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 _visitTaskRepository) : IConsumer { public async Task Consume(ConsumeContext 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); } } } }