feat: 搭建任务框架

This commit is contained in:
橙子
2024-08-11 23:23:38 +08:00
parent dee6ea1663
commit d46d6a58ab
11 changed files with 287 additions and 0 deletions

View File

@@ -0,0 +1,21 @@
using Yi.Framework.Bbs.Domain.Entities.Assignment;
namespace Yi.Framework.Bbs.Domain.Managers.AssignmentProviders;
public class AssignmentContext
{
/// <summary>
/// 全部的任务定义
/// </summary>
public List<AssignmentDefineAggregateRoot> AllAssignmentDefine { get; }
/// <summary>
/// 当前用户的全部任务数据
/// </summary>
public List<AssignmentAggregateRoot> CurrentUserAssignments { get; }
/// <summary>
/// 当前用户id
/// </summary>
public Guid CurrentUserId { get; set; }
}

View File

@@ -0,0 +1,24 @@
using Volo.Abp.DependencyInjection;
using Yi.Framework.Bbs.Domain.Entities.Assignment;
namespace Yi.Framework.Bbs.Domain.Managers.AssignmentProviders;
/// <summary>
/// 任务提供者接口
/// </summary>
public interface IAssignmentProvider : ITransientDependency
{
/// <summary>
/// 获取可领取的任务定义该方法需全部AssignmentProvider去重
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
Task<List<AssignmentDefineAggregateRoot>> GetCanReceiveListAsync(AssignmentContext context);
/// <summary>
/// 校验是否能够被领取,该方法还需工厂进行代理执行一次
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
Task VerifyCanAcceptAsync(AssignmentContext context);
}

View File

@@ -0,0 +1,9 @@
namespace Yi.Framework.Bbs.Domain.Managers.AssignmentProviders;
/// <summary>
/// 每日任务提供者
/// </summary>
public class DailyProvider : TimerProvider
{
protected override TimeSpan TimeCycle => TimeSpan.FromDays(1);
}

View File

@@ -0,0 +1,19 @@
using Yi.Framework.Bbs.Domain.Entities.Assignment;
namespace Yi.Framework.Bbs.Domain.Managers.AssignmentProviders;
/// <summary>
/// 新手任务提供者
/// </summary>
public class NoviceProvider : IAssignmentProvider
{
public Task<List<AssignmentDefineAggregateRoot>> GetCanReceiveListAsync(AssignmentContext context)
{
throw new NotImplementedException();
}
public Task VerifyCanAcceptAsync(AssignmentContext context)
{
throw new NotImplementedException();
}
}

View File

@@ -0,0 +1,9 @@
namespace Yi.Framework.Bbs.Domain.Managers.AssignmentProviders;
/// <summary>
/// 每周任务提供者
/// </summary>
public class WeeklyProvider : TimerProvider
{
protected override TimeSpan TimeCycle => TimeSpan.FromDays(7);
}

View File

@@ -0,0 +1,24 @@
using Yi.Framework.Bbs.Domain.Entities.Assignment;
namespace Yi.Framework.Bbs.Domain.Managers.AssignmentProviders;
/// <summary>
/// 定时任务提供者
/// </summary>
public abstract class TimerProvider : IAssignmentProvider
{
/// <summary>
/// 时间周期
/// </summary>
protected abstract TimeSpan TimeCycle { get; }
public Task<List<AssignmentDefineAggregateRoot>> GetCanReceiveListAsync(AssignmentContext context)
{
throw new NotImplementedException();
}
public Task VerifyCanAcceptAsync(AssignmentContext context)
{
throw new NotImplementedException();
}
}