43 lines
1.1 KiB
C#
43 lines
1.1 KiB
C#
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);
|
|
}
|
|
}
|