整理trigger 到不同的文件夹

IRC_NewDev
hang 2024-09-27 13:58:33 +08:00
parent 654fb7116b
commit b6459d2f9f
22 changed files with 170 additions and 72 deletions

View File

@ -34,6 +34,7 @@ using Microsoft.AspNetCore.Diagnostics;
using IRaCIS.Core.Application.MassTransit.Command; using IRaCIS.Core.Application.MassTransit.Command;
using IRaCIS.Core.Application.MassTransit.Consumer; using IRaCIS.Core.Application.MassTransit.Consumer;
using DocumentFormat.OpenXml.InkML; using DocumentFormat.OpenXml.InkML;
using IRaCIS.Core.Domain;
AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true); AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);
AppContext.SetSwitch("Npgsql.DisableDateTimeInfinityConversions", true); AppContext.SetSwitch("Npgsql.DisableDateTimeInfinityConversions", true);
@ -149,13 +150,14 @@ builder.Services.AddJWTAuthSetup(_configuration);
builder.Services.AddMediator(cfg => builder.Services.AddMediator(cfg =>
{ {
cfg.AddConsumer<ConsistencyCheckConsumer>(); cfg.AddConsumer<ConsistencyCheckConsumer>();
cfg.AddConsumer<AddUserLogTriggerConsumer>();
}); });
// 添加 MassTransit 和 InMemory 传输 // 添加 MassTransit 和 InMemory 传输
builder.Services.AddMassTransit(cfg => builder.Services.AddMassTransit(cfg =>
{ {
// 注册消费者 // 注册消费者
cfg.AddConsumer<AddSubjectTriggerConsumer>(); // 替换为你的消费者类 //cfg.AddConsumer<AddSubjectTriggerConsumer>(); // 替换为你的消费者类
// 使用 InMemory 作为消息传递机制 // 使用 InMemory 作为消息传递机制
cfg.UsingInMemory((context, cfg) => cfg.UsingInMemory((context, cfg) =>

View File

@ -81,12 +81,12 @@ namespace IRaCIS.Core.API
triggerOptions.AddTrigger<AddCRCCliniaclDataTrigger>(); triggerOptions.AddTrigger<AddCRCCliniaclDataTrigger>();
triggerOptions.AddTrigger<SubjectVisitCheckPassedTrigger>(); triggerOptions.AddTrigger<SubjectVisitCheckPassedTrigger>();
triggerOptions.AddTrigger<SubjectVisitFinalVisitTrigger>(); triggerOptions.AddTrigger<SubjectVisitFinalVisitTrigger>();
triggerOptions.AddTrigger<SubjectVisitTrigger>(); triggerOptions.AddTrigger<SubjectVisitScanDateTrigger>();
triggerOptions.AddTrigger<TrialCriterionSignTrigger>(); triggerOptions.AddTrigger<TrialCriterionSignTrigger>();
triggerOptions.AddTrigger<TableQuestionRowTrigger>(); triggerOptions.AddTrigger<TableQuestionRowTrigger>();
//triggerOptions.AddTrigger<AddlTrialUserTrigger>(); //triggerOptions.AddTrigger<AddlTrialUserTrigger>();
triggerOptions.AddTrigger<VisitTaskIsFrontTaskNeedSignButNotSignTrigger>(); triggerOptions.AddTrigger<VisitTaskIsFrontTaskNeedSignButNotSignTrigger>();
triggerOptions.AddTrigger<VisitTaskIbeforeTrigger>(); triggerOptions.AddTrigger<JudgeVisitTaskTrigger>();
triggerOptions.AddTrigger<UserLogTrigger>(); triggerOptions.AddTrigger<UserLogTrigger>();

View File

@ -85,4 +85,8 @@
</None> </None>
</ItemGroup> </ItemGroup>
<ItemGroup>
<Folder Include="Triggers\TempAbandon\" />
</ItemGroup>
</Project> </Project>

View File

@ -12648,6 +12648,24 @@
构造函数注入 构造函数注入
</summary> </summary>
</member> </member>
<member name="T:IRaCIS.Core.Application.MassTransit.Consumer.AddSubjectTriggerConsumer">
<summary>
添加Subject 触发添加访视 不能代替 Trigger,稽查BatchId 不一致 暂时废弃
</summary>
<param name="_subjectVisitRepository"></param>
<param name="_visitStageRepository"></param>
<param name="_trialRepository"></param>
<param name="_mapper"></param>
</member>
<member name="M:IRaCIS.Core.Application.MassTransit.Consumer.AddSubjectTriggerConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitStage},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},AutoMapper.IMapper)">
<summary>
添加Subject 触发添加访视 不能代替 Trigger,稽查BatchId 不一致 暂时废弃
</summary>
<param name="_subjectVisitRepository"></param>
<param name="_visitStageRepository"></param>
<param name="_trialRepository"></param>
<param name="_mapper"></param>
</member>
<member name="T:IRaCIS.Core.Application.ViewModel.TaskAllocationRuleView"> <member name="T:IRaCIS.Core.Application.ViewModel.TaskAllocationRuleView">
<summary> TaskAllocationRuleView 列表视图模型 </summary> <summary> TaskAllocationRuleView 列表视图模型 </summary>
</member> </member>
@ -16079,16 +16097,6 @@
<param name="trialConfig"></param> <param name="trialConfig"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="T:IRaCIS.Core.Application.Triggers.AddSubjectTrigger">
<summary>
添加访视计划 要给改项目下的所有Subject 添加该访视
</summary>
</member>
<member name="M:IRaCIS.Core.Application.Triggers.AddSubjectTrigger.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitStage},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},AutoMapper.IMapper)">
<summary>
添加访视计划 要给改项目下的所有Subject 添加该访视
</summary>
</member>
<member name="T:IRaCIS.Core.Application.Triggers.SubjectStateTrigger"> <member name="T:IRaCIS.Core.Application.Triggers.SubjectStateTrigger">
<summary> <summary>
@ -16099,16 +16107,6 @@
</summary> </summary>
</member> </member>
<member name="T:IRaCIS.Core.Application.Triggers.SubjectVisitCheckPassedTrigger">
<summary>
处理 访视 末次评估 会影响Subject 状态
</summary>
</member>
<member name="M:IRaCIS.Core.Application.Triggers.SubjectVisitCheckPassedTrigger.#ctor(IRaCIS.Core.Application.Service.IVisitTaskHelpeService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Subject},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial},IRaCIS.Core.Application.Interfaces.ISubjectCriteriaEvaluationService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectCriteriaEvaluation})">
<summary>
处理 访视 末次评估 会影响Subject 状态
</summary>
</member>
<member name="T:IRaCIS.Core.Application.Triggers.SubjectVisitFinalVisitTrigger"> <member name="T:IRaCIS.Core.Application.Triggers.SubjectVisitFinalVisitTrigger">
<summary> <summary>
处理 访视 末次评估 会影响Subject 状态 处理 访视 末次评估 会影响Subject 状态
@ -16126,21 +16124,35 @@
<param name="subjectVisit"></param> <param name="subjectVisit"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="T:IRaCIS.Core.Application.Triggers.SubjectVisitTrigger"> <member name="T:IRaCIS.Core.Application.Triggers.VisitTaskIsFrontTaskNeedSignButNotSignTrigger">
<summary> <summary>
处理 访视 1、提交状态 2、执行状态 3、最早最晚 拍片日期 维护 IsFrontTaskNeedSignButNotSign 字段 另外附加评估结果
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.Triggers.SubjectVisitTrigger.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Application.Service.Reading.Interface.IClinicalAnswerService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.DicomSeries},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.NoneDicomStudy})"> <member name="M:IRaCIS.Core.Application.Triggers.VisitTaskIsFrontTaskNeedSignButNotSignTrigger.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial})">
<summary> <summary>
处理 访视 1、提交状态 2、执行状态 3、最早最晚 拍片日期 维护 IsFrontTaskNeedSignButNotSign 字段 另外附加评估结果
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.Triggers.SubjectVisitTrigger.UpdateSubjectVisitSubmitStateAsync(System.Guid)"> <member name="T:IRaCIS.Core.Application.Triggers.AddSubjectTrigger">
<summary>处理提交状态</summary> <summary>
添加访视计划 要给改项目下的所有Subject 添加该访视
</summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.Triggers.SubjectVisitTrigger.UpdateSubjectVisitImageDateAsync(System.Guid)"> <member name="M:IRaCIS.Core.Application.Triggers.AddSubjectTrigger.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitStage},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},AutoMapper.IMapper)">
<summary>处理拍片日期</summary> <summary>
添加访视计划 要给改项目下的所有Subject 添加该访视
</summary>
</member>
<member name="T:IRaCIS.Core.Application.Triggers.SubjectVisitCheckPassedTrigger">
<summary>
处理 访视 末次评估 会影响Subject 状态
</summary>
</member>
<member name="M:IRaCIS.Core.Application.Triggers.SubjectVisitCheckPassedTrigger.#ctor(IRaCIS.Core.Application.Service.IVisitTaskHelpeService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Subject},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial},IRaCIS.Core.Application.Interfaces.ISubjectCriteriaEvaluationService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectCriteriaEvaluation})">
<summary>
处理 访视 末次评估 会影响Subject 状态
</summary>
</member> </member>
<member name="T:IRaCIS.Core.Application.Triggers.TrialCriterionSignTrigger"> <member name="T:IRaCIS.Core.Application.Triggers.TrialCriterionSignTrigger">
<summary> <summary>
@ -16152,7 +16164,7 @@
因为可能先一致性核查通过,生成其他标准的任务了,新签名的标准也需要产生任务 因为可能先一致性核查通过,生成其他标准的任务了,新签名的标准也需要产生任务
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.Triggers.VisitTaskIbeforeTrigger.AfterSave(EntityFrameworkCore.Triggered.ITriggerContext{IRaCIS.Core.Domain.Models.VisitTask},System.Threading.CancellationToken)"> <member name="M:IRaCIS.Core.Application.Triggers.JudgeVisitTaskTrigger.AfterSave(EntityFrameworkCore.Triggered.ITriggerContext{IRaCIS.Core.Domain.Models.VisitTask},System.Threading.CancellationToken)">
<summary> <summary>
因为维护状态先后顺序导致 裁判任务关联的 任务上的JudgeVisitTaskId==nulll 在这里需要重新设置下 因为维护状态先后顺序导致 裁判任务关联的 任务上的JudgeVisitTaskId==nulll 在这里需要重新设置下
@ -16162,7 +16174,7 @@
<param name="cancellationToken"></param> <param name="cancellationToken"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:IRaCIS.Core.Application.Triggers.VisitTaskIbeforeTrigger.BeforeSave(EntityFrameworkCore.Triggered.ITriggerContext{IRaCIS.Core.Domain.Models.VisitTask},System.Threading.CancellationToken)"> <member name="M:IRaCIS.Core.Application.Triggers.JudgeVisitTaskTrigger.BeforeSave(EntityFrameworkCore.Triggered.ITriggerContext{IRaCIS.Core.Domain.Models.VisitTask},System.Threading.CancellationToken)">
<summary> <summary>
比如 两个任务产生了裁判然后其中一个人申请了重阅影响了裁判需要清理之前任务的上裁判id 比如 两个任务产生了裁判然后其中一个人申请了重阅影响了裁判需要清理之前任务的上裁判id
@ -16173,16 +16185,30 @@
<param name="cancellationToken"></param> <param name="cancellationToken"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="T:IRaCIS.Core.Application.Triggers.VisitTaskIsFrontTaskNeedSignButNotSignTrigger"> <member name="T:IRaCIS.Core.Application.Triggers.SubjectVisitScanDateTrigger">
<summary> <summary>
维护 IsFrontTaskNeedSignButNotSign 字段 另外附加评估结果 处理 访视 1、提交状态 2、执行状态 3、最早最晚 拍片日期
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.Triggers.VisitTaskIsFrontTaskNeedSignButNotSignTrigger.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial})"> <member name="M:IRaCIS.Core.Application.Triggers.SubjectVisitScanDateTrigger.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Application.Service.Reading.Interface.IClinicalAnswerService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.DicomSeries},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.NoneDicomStudy})">
<summary> <summary>
维护 IsFrontTaskNeedSignButNotSign 字段 另外附加评估结果 处理 访视 1、提交状态 2、执行状态 3、最早最晚 拍片日期
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.Triggers.SubjectVisitScanDateTrigger.UpdateSubjectVisitSubmitStateAsync(System.Guid)">
<summary>
处理提交状态
</summary>
<param name="subjectVisitId"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Triggers.SubjectVisitScanDateTrigger.UpdateSubjectVisitImageDateAsync(System.Guid)">
<summary>
处理访视拍片日期
</summary>
<param name="subjectVisitId"></param>
<returns></returns>
</member>
<member name="P:IRaCIS.Core.Domain.Models.ReadModuleView.Id"> <member name="P:IRaCIS.Core.Domain.Models.ReadModuleView.Id">
<summary> <summary>
Id(阅片期Id 或者 访视ID) Id(阅片期Id 或者 访视ID)

View File

@ -0,0 +1,26 @@

using AutoMapper;
using IP2Region.Net.Abstractions;
using IRaCIS.Core.Domain;
using IRaCIS.Core.Domain.Models;
using MassTransit;
namespace IRaCIS.Core.Application.MassTransit.Consumer;
//国家|区域|省份|城市|ISP 缺省的地域信息默认是0
//0|0|0|内网IP|内网IP
// 中国|0|湖北省|武汉市|电信
public class AddUserLogTriggerConsumer(ISearcher _searcher) : IConsumer<AddUserLogTriggerCommand>
{
public async Task Consume(ConsumeContext<AddUserLogTriggerCommand> context)
{
var userLog = context.Message.UserLog;
var ipinfo = _searcher.Search(userLog.IP);
userLog.IPRegion = string.Join('|', ipinfo.Split('|').TakeLast(3));
}
}

View File

@ -6,6 +6,13 @@ using MassTransit;
namespace IRaCIS.Core.Application.MassTransit.Consumer; namespace IRaCIS.Core.Application.MassTransit.Consumer;
/// <summary>
/// 添加Subject 触发添加访视 不能代替 Trigger,稽查BatchId 不一致 暂时废弃
/// </summary>
/// <param name="_subjectVisitRepository"></param>
/// <param name="_visitStageRepository"></param>
/// <param name="_trialRepository"></param>
/// <param name="_mapper"></param>
public class AddSubjectTriggerConsumer(IRepository<SubjectVisit> _subjectVisitRepository, public class AddSubjectTriggerConsumer(IRepository<SubjectVisit> _subjectVisitRepository,
IRepository<VisitStage> _visitStageRepository, IRepository<VisitStage> _visitStageRepository,
@ -34,5 +41,6 @@ public class AddSubjectTriggerConsumer(IRepository<SubjectVisit> _subjectVisitRe
}); });
await _subjectVisitRepository.AddRangeAsync(svList); await _subjectVisitRepository.AddRangeAsync(svList);
await _subjectVisitRepository.SaveChangesAsync();
} }
} }

View File

@ -9,7 +9,6 @@ namespace IRaCIS.Core.Application.Triggers
/// </summary> /// </summary>
public class AddSubjectTrigger( public class AddSubjectTrigger(
IRepository<SubjectVisit> _subjectVisitRepository, IRepository<SubjectVisit> _subjectVisitRepository,
IRepository<VisitStage> _visitStageRepository, IRepository<VisitStage> _visitStageRepository,
IRepository<Trial> _trialRepository, IRepository<Trial> _trialRepository,
IMapper _mapper) : IBeforeSaveTrigger<Subject> IMapper _mapper) : IBeforeSaveTrigger<Subject>

View File

@ -4,7 +4,7 @@ using IRaCIS.Core.Domain.Share;
namespace IRaCIS.Core.Application.Triggers namespace IRaCIS.Core.Application.Triggers
{ {
public class VisitTaskIbeforeTrigger( public class JudgeVisitTaskTrigger(
IRepository<VisitTask> _visitTaskRepository, IRepository<VisitTask> _visitTaskRepository,
IRepository<ReadingJudgeInfo> _readingJudgeInfoRepository) : IBeforeSaveTrigger<VisitTask>, IAfterSaveTrigger<VisitTask> IRepository<ReadingJudgeInfo> _readingJudgeInfoRepository) : IBeforeSaveTrigger<VisitTask>, IAfterSaveTrigger<VisitTask>
{ {

View File

@ -7,7 +7,7 @@ namespace IRaCIS.Core.Application.Triggers
/// <summary> /// <summary>
/// 处理 访视 1、提交状态 2、执行状态 3、最早最晚 拍片日期 /// 处理 访视 1、提交状态 2、执行状态 3、最早最晚 拍片日期
/// </summary> /// </summary>
public class SubjectVisitTrigger( public class SubjectVisitScanDateTrigger(
IRepository<SubjectVisit> _subjectVisitRepository, IRepository<SubjectVisit> _subjectVisitRepository,
IClinicalAnswerService _iClinicalAnswerService, IClinicalAnswerService _iClinicalAnswerService,
IRepository<DicomSeries> _dicomSeriesRepository, IRepository<DicomSeries> _dicomSeriesRepository,
@ -106,7 +106,11 @@ namespace IRaCIS.Core.Application.Triggers
} }
/// <summary>处理提交状态</summary> /// <summary>
/// 处理提交状态
/// </summary>
/// <param name="subjectVisitId"></param>
/// <returns></returns>
public async Task UpdateSubjectVisitSubmitStateAsync(Guid subjectVisitId) public async Task UpdateSubjectVisitSubmitStateAsync(Guid subjectVisitId)
{ {
@ -127,7 +131,11 @@ namespace IRaCIS.Core.Application.Triggers
} }
} }
/// <summary>处理拍片日期</summary> /// <summary>
/// 处理访视拍片日期
/// </summary>
/// <param name="subjectVisitId"></param>
/// <returns></returns>
private async Task UpdateSubjectVisitImageDateAsync(Guid subjectVisitId) private async Task UpdateSubjectVisitImageDateAsync(Guid subjectVisitId)
{ {
var svTime = _subjectVisitRepository.Where(t => t.Id == subjectVisitId).Select(t => new var svTime = _subjectVisitRepository.Where(t => t.Id == subjectVisitId).Select(t => new

View File

@ -0,0 +1,11 @@

using IRaCIS.Core.Domain.BaseModel;
using IRaCIS.Core.Domain.Models;
namespace IRaCIS.Core.Domain;
public class AddUserLogTriggerCommand : DomainCommand
{
public UserLog UserLog { get; set; }
}

View File

@ -23,19 +23,32 @@ public static class DBContext_Ext
{ {
var changeTracker = context.ChangeTracker; var changeTracker = context.ChangeTracker;
// 遍历 ChangeTracker 中的实体 //遍历 ChangeTracker 中的实体
foreach (var entry in changeTracker.Entries<Subject>()) //foreach (var entry in changeTracker.Entries<UserLog>())
{ //{
var subject = entry.Entity; // var userLog = entry.Entity;
if (entry.State == EntityState.Added) // if (entry.State == EntityState.Added)
{ // {
// 受试者添加 触发访视自动添加 // // 受试者添加 触发访视自动添加
var addedEvent = new AddSubjectTriggerCommand { SubjectId = subject.Id, TrialId = subject.TrialId, TrialSiteId = subject.TrialSiteId }; // var addCommand = new AddUserLogTriggerCommand { UserLog=userLog };
subject.AddDomainCommand(addedEvent); // userLog.AddDomainCommand(addCommand);
} // }
} //}
//foreach (var entry in changeTracker.Entries<Subject>())
//{
// var subject = entry.Entity;
// if (entry.State == EntityState.Added)
// {
// // 受试者添加 触发访视自动添加
// var addedEvent = new AddSubjectTriggerCommand { SubjectId = subject.Id, TrialId = subject.TrialId, TrialSiteId = subject.TrialSiteId };
// subject.AddDomainCommand(addedEvent);
// }
//}
} }

View File

@ -3,6 +3,7 @@ using IRaCIS.Core.Domain.Models;
using IRaCIS.Core.Domain.Share; using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Infra.EFCore.Common; using IRaCIS.Core.Infra.EFCore.Common;
using MassTransit; using MassTransit;
using MassTransit.Mediator;
using MassTransit.Transports; using MassTransit.Transports;
using Microsoft.EntityFrameworkCore.Diagnostics; using Microsoft.EntityFrameworkCore.Diagnostics;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
@ -13,7 +14,7 @@ namespace IRaCIS.Core.Infra.EFCore;
public class AuditEntityInterceptor(IUserInfo _userInfo, public class AuditEntityInterceptor(IUserInfo _userInfo,
ILogger<AuditEntityInterceptor> _logger ILogger<AuditEntityInterceptor> _logger
//, IBus _bus , IMediator _mediator
) : SaveChangesInterceptor ) : SaveChangesInterceptor
{ {
@ -30,7 +31,7 @@ public class AuditEntityInterceptor(IUserInfo _userInfo,
//领域命令 同一个事务提交的一些逻辑类似Trigger 保存事务之前执行的一些逻辑) //领域命令 同一个事务提交的一些逻辑类似Trigger 保存事务之前执行的一些逻辑)
eventData.Context.AddDomainCommands(); eventData.Context.AddDomainCommands();
//DispatchDomainCommands(eventData.Context).GetAwaiter().GetResult(); DispatchDomainCommands(eventData.Context).GetAwaiter().GetResult();
//领域事件 //领域事件
eventData.Context.AddDomainEvents(); eventData.Context.AddDomainEvents();
@ -230,26 +231,26 @@ public class AuditEntityInterceptor(IUserInfo _userInfo,
#region 领域命令分发 #region 领域命令分发
//private async Task DispatchDomainCommands(DbContext? context) private async Task DispatchDomainCommands(DbContext? context)
//{ {
// if (context == null) return; if (context == null) return;
// var entities = context.ChangeTracker var entities = context.ChangeTracker
// .Entries<Entity>() .Entries<Entity>()
// .Where(e => e.Entity.DomainCommands.Any()) .Where(e => e.Entity.DomainCommands.Any())
// .Select(e => e.Entity) .Select(e => e.Entity)
// .ToList(); .ToList();
// var domainCommands = entities var domainCommands = entities
// .SelectMany(e => e.DomainCommands) .SelectMany(e => e.DomainCommands)
// .ToList(); .ToList();
// entities.ForEach(e => e.ClearDomainCommands()); entities.ForEach(e => e.ClearDomainCommands());
// foreach (var domainCommand in domainCommands) foreach (var domainCommand in domainCommands)
// { {
// await _bus.Send(domainCommand.GetType(), domainCommand); await _mediator.Send(domainCommand.GetType(), domainCommand);
// } }
//} }
#endregion #endregion
} }