using Dlhis.Basic.Api; using Dlhis.Jip.Api.Requests; using Dlhis.Sys.Api; using Hangfire; using Kurisu.AspNetCore.Cache; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace Dlhis.ScheduledTask.TaskAssignment.Controllers; /// /// 调度任务 /// [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; } /// /// 手动获取人员 /// /// /// [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(x => x.SyncGainfoByUserCodeAsync(request.Code)); } } /// /// 手动启动人事范围同步 /// /// /// [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(x => x.SyncGainfoByWerkAsync(request.Code)); } } [AllowAnonymous] [HttpPost("test")] public async Task TestAsync() { return await _tenantApi.GetTenantsInternalAsync(); } }