2024-08-12 17:16:30 +08:00
|
|
|
|
using SqlSugar;
|
|
|
|
|
|
using Yi.Framework.Bbs.Domain.Entities.Assignment;
|
|
|
|
|
|
using Yi.Framework.Bbs.Domain.Shared.Enums;
|
2024-08-11 23:23:38 +08:00
|
|
|
|
|
|
|
|
|
|
namespace Yi.Framework.Bbs.Domain.Managers.AssignmentProviders;
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2024-08-12 17:16:30 +08:00
|
|
|
|
/// 循环任务提供者
|
2024-08-11 23:23:38 +08:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
public abstract class TimerProvider : IAssignmentProvider
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
2024-08-12 17:16:30 +08:00
|
|
|
|
/// 任务类型
|
2024-08-11 23:23:38 +08:00
|
|
|
|
/// </summary>
|
2024-08-12 17:16:30 +08:00
|
|
|
|
protected abstract AssignmentTypeEnum AssignmentType { get; }
|
2024-08-11 23:23:38 +08:00
|
|
|
|
|
|
|
|
|
|
public Task<List<AssignmentDefineAggregateRoot>> GetCanReceiveListAsync(AssignmentContext context)
|
|
|
|
|
|
{
|
2024-08-12 17:16:30 +08:00
|
|
|
|
//先获取到对应任务定义列表
|
|
|
|
|
|
var assignmentDefines = context.AllAssignmentDefine.Where(x => x.AssignmentType == AssignmentType).ToList();
|
2024-08-11 23:23:38 +08:00
|
|
|
|
|
2024-08-12 17:16:30 +08:00
|
|
|
|
//满足以下1个条件
|
|
|
|
|
|
//1:没有正在运行的
|
|
|
|
|
|
//2: 存在已完成,但是完成时间是过期的
|
|
|
|
|
|
var assignmentFilterIds = context.CurrentUserAssignments
|
|
|
|
|
|
.Where(x =>
|
2024-08-14 18:31:37 +08:00
|
|
|
|
//正在进行的,已经完成,要去掉
|
2024-08-12 17:16:30 +08:00
|
|
|
|
x.AssignmentState == AssignmentStateEnum.Progress||
|
2024-08-14 18:31:37 +08:00
|
|
|
|
x.AssignmentState==AssignmentStateEnum.Completed||
|
|
|
|
|
|
//已结束,但是还没过期,要去掉
|
|
|
|
|
|
(x.AssignmentState == AssignmentStateEnum.End&&!AssignmentType.IsExpire(x.EndTime!.Value)))
|
2024-08-12 17:16:30 +08:00
|
|
|
|
.Select(x => x.AssignmentDefineId)
|
|
|
|
|
|
.ToList();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//出去不可接收的任务,就是可接收任务
|
|
|
|
|
|
var output = assignmentDefines.Where(x => !assignmentFilterIds.Contains(x.Id)).ToList();
|
|
|
|
|
|
return Task.FromResult(output);
|
2024-08-11 23:23:38 +08:00
|
|
|
|
}
|
2024-08-12 17:16:30 +08:00
|
|
|
|
|
2024-08-11 23:23:38 +08:00
|
|
|
|
}
|