添加项目文件。
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
using Microsoft.Extensions.Logging;
|
||||
using RedisHelper;
|
||||
using ScheduledService;
|
||||
using UserService.User;
|
||||
|
||||
namespace UserService.Jobs;
|
||||
|
||||
public class EveryDayTask : CronJobService
|
||||
{
|
||||
private readonly IUserService _userService;
|
||||
private readonly IDistributedLock _distributedLock;
|
||||
private const string LockKey = "lock:everyday";
|
||||
|
||||
public EveryDayTask(IScheduleConfig<EveryDayTask> config, IUserService userService, IDistributedLock distributedLock)
|
||||
: base(config.CronExpression, config.TimeZoneInfo)
|
||||
{
|
||||
_userService = userService;
|
||||
_distributedLock = distributedLock;
|
||||
}
|
||||
|
||||
public override Task StartAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
|
||||
return base.StartAsync(cancellationToken);
|
||||
}
|
||||
|
||||
public override async Task DoWork(CancellationToken cancellationToken)
|
||||
{
|
||||
await _distributedLock.TryExecuteAsync(LockKey, async () =>
|
||||
{
|
||||
|
||||
await _userService.EveryDayTask();
|
||||
|
||||
}, expiry: 600);
|
||||
}
|
||||
|
||||
public override Task StopAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
|
||||
return base.StopAsync(cancellationToken);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
using Microsoft.Extensions.Logging;
|
||||
using RedisHelper;
|
||||
using ScheduledService;
|
||||
using UserService.User;
|
||||
|
||||
namespace UserService.Jobs;
|
||||
|
||||
public class EveryHourTask : CronJobService
|
||||
{
|
||||
private readonly IUserService _userService;
|
||||
private readonly IDistributedLock _distributedLock;
|
||||
private const string LockKey = "lock:everyhour";
|
||||
|
||||
public EveryHourTask(
|
||||
IScheduleConfig<EveryHourTask> config,
|
||||
IUserService userService,
|
||||
IDistributedLock distributedLock)
|
||||
: base(config.CronExpression, config.TimeZoneInfo)
|
||||
{
|
||||
_userService = userService;
|
||||
_distributedLock = distributedLock;
|
||||
}
|
||||
|
||||
public override async Task DoWork(CancellationToken cancellationToken)
|
||||
{
|
||||
await _distributedLock.TryExecuteAsync(LockKey, async () =>
|
||||
{
|
||||
|
||||
await _userService.EveryHourTask();
|
||||
|
||||
}, expiry: 300);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
using Microsoft.Extensions.Logging;
|
||||
using RedisHelper;
|
||||
using ScheduledService;
|
||||
using UserService.User;
|
||||
|
||||
namespace UserService.Jobs;
|
||||
|
||||
public class RankingRewardJob : CronJobService
|
||||
{
|
||||
private readonly IUserService _userService;
|
||||
private readonly IDistributedLock _distributedLock;
|
||||
private const string LockKey = "lock:rankingreward";
|
||||
|
||||
public RankingRewardJob(
|
||||
IScheduleConfig<RankingRewardJob> config,
|
||||
IUserService userService,
|
||||
IDistributedLock distributedLock)
|
||||
: base(config.CronExpression, config.TimeZoneInfo)
|
||||
{
|
||||
_userService = userService;
|
||||
_distributedLock = distributedLock;
|
||||
}
|
||||
|
||||
public override async Task DoWork(CancellationToken cancellationToken)
|
||||
{
|
||||
await _distributedLock.TryExecuteAsync(LockKey, async () =>
|
||||
{
|
||||
|
||||
await _userService.DailyRankingReward();
|
||||
|
||||
}, expiry: 600);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user