Files
Yi.Framework/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/EventHandlers/AssignmentEventHandler.cs
2024-08-13 16:45:56 +08:00

78 lines
2.8 KiB
C#

using Volo.Abp.DependencyInjection;
using Volo.Abp.EventBus;
using Yi.Framework.Bbs.Domain.Entities.Assignment;
using Yi.Framework.Bbs.Domain.Shared.Enums;
using Yi.Framework.Bbs.Domain.Shared.Etos;
using Yi.Framework.SqlSugarCore.Abstractions;
namespace Yi.Framework.Bbs.Domain.EventHandlers;
/// <summary>
/// 任务系统的领域事件,处理不同任务触发变化
/// </summary>
public class AssignmentEventHandler : ILocalEventHandler<AssignmentEventArgs>, ITransientDependency
{
private readonly ISqlSugarRepository<AssignmentAggregateRoot> _repository;
public AssignmentEventHandler(ISqlSugarRepository<AssignmentAggregateRoot> repository)
{
_repository = repository;
}
public async Task HandleEventAsync(AssignmentEventArgs eventData)
{
var currentAssignmentList = await _repository.GetListAsync(x =>
x.AssignmentState == AssignmentStateEnum.Progress && x.UserId == eventData.CurrentUserId);
//如果有接收的任务
if (currentAssignmentList.Count > 0)
{
switch (eventData.RequirementType)
{
//发表主题
case AssignmentRequirementTypeEnum.Discuss:
SetCurrentStepNumber(AssignmentRequirementTypeEnum.Discuss, currentAssignmentList);
break;
//发表评论
case AssignmentRequirementTypeEnum.Comment:
SetCurrentStepNumber(AssignmentRequirementTypeEnum.Comment, currentAssignmentList);
break;
//点赞
case AssignmentRequirementTypeEnum.Agree:
SetCurrentStepNumber(AssignmentRequirementTypeEnum.Agree, currentAssignmentList);
break;
//更新个人信息
case AssignmentRequirementTypeEnum.UpdateProfile:
//这里还需判断是否更新了
break;
default:
throw new ArgumentOutOfRangeException();
}
//更新
await _repository.UpdateRangeAsync(currentAssignmentList);
}
}
/// <summary>
/// 设置当前进度
/// </summary>
/// <param name="requirementType"></param>
/// <param name="currentAssignmentList"></param>
private void SetCurrentStepNumber(AssignmentRequirementTypeEnum requirementType,
List<AssignmentAggregateRoot> currentAssignmentList)
{
currentAssignmentList.ForEach(x =>
{
if (x.AssignmentRequirementType == AssignmentRequirementTypeEnum.Agree &&
x.CurrentStepNumber < x.TotalStepNumber)
{
x.CurrentStepNumber += 1;
}
});
}
}