Files
jinko.yikatong/Src/Dlhis.ScheduledTask/TaskAssignment/Controllers/HangfireController.cs
2025-02-12 11:14:20 +08:00

66 lines
1.8 KiB
C#

using Dlhis.Basic.Api;
using Dlhis.Jip.Api.Request;
using Dlhis.Sys.Api;
using Hangfire;
using Kurisu.AspNetCore.Cache;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace Dlhis.ScheduledTask.TaskAssignment.Controllers;
/// <summary>
/// 调度任务
/// </summary>
[AllowAnonymous]
[Route("api/[controller]")]
[ApiController]
public class HangfireController : ControllerBase
{
private readonly RedisCache _redisCache;
private readonly ITenantApi _tenantApi;
public HangfireController(RedisCache redisCache, ITenantApi tenantApi)
{
_redisCache = redisCache;
_tenantApi = tenantApi;
}
/// <summary>
/// 手动获取人员
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost("sap/person/no")]
public async Task PersonManuallySync(SapNoRequest request)
{
var jobKey = $"hangfire:background:person:{request.Code}";
await using var handler = await _redisCache.LockAsync(jobKey);
if (handler.Acquired)
{
BackgroundJob.Enqueue<ISyncApi>(x => x.SyncGainfoByUserCodeAsync(request.Code));
}
}
/// <summary>
/// 手动启动人事范围同步
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost("sap/werk/no")]
public async Task WerkManuallySync(SapNoRequest request)
{
var jobKey = $"hangfire:background:werk:{request.Code}";
await using var handler = await _redisCache.LockAsync(jobKey);
if (handler.Acquired)
{
BackgroundJob.Enqueue<ISyncApi>(x => x.SyncGainfoByWerkAsync(request.Code));
}
}
[AllowAnonymous]
[HttpPost("test")]
public async Task<object> TestAsync()
{
return await _tenantApi.GetTenantsInternalAsync();
}
}