diff --git a/Src/Dlhis.ScheduledTask/TaskAssignment/Controllers/AssignmentsController.cs b/Src/Dlhis.ScheduledTask/TaskAssignment/Controllers/AssignmentsController.cs index 6250a029..6d739d5d 100644 --- a/Src/Dlhis.ScheduledTask/TaskAssignment/Controllers/AssignmentsController.cs +++ b/Src/Dlhis.ScheduledTask/TaskAssignment/Controllers/AssignmentsController.cs @@ -51,4 +51,14 @@ public class AssignmentsController : ControllerBase { await _assignmentService.UpdateDeviceTaskStatusAsync(request); } + /// + /// 获取新token + /// + /// + /// + [HttpGet("token")] + public async Task Token(long taskId) + { + return await _assignmentService.Token(taskId); + } } diff --git a/Src/Dlhis.ScheduledTask/TaskAssignment/Services/IAssignmentService.cs b/Src/Dlhis.ScheduledTask/TaskAssignment/Services/IAssignmentService.cs index 5fa65f35..db8f6f3b 100644 --- a/Src/Dlhis.ScheduledTask/TaskAssignment/Services/IAssignmentService.cs +++ b/Src/Dlhis.ScheduledTask/TaskAssignment/Services/IAssignmentService.cs @@ -19,4 +19,11 @@ public interface IAssignmentService : IScopeDependency /// /// Task UpdateDeviceTaskStatusAsync(UpdateDeviceTaskStatusRequest request); + + /// + /// 获取新token + /// + /// + /// + Task Token(long taskId); } diff --git a/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/AssignmentService.cs b/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/AssignmentService.cs index 9657e8ea..1ff5f76a 100644 --- a/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/AssignmentService.cs +++ b/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/AssignmentService.cs @@ -152,6 +152,39 @@ public class AssignmentService : IAssignmentService }).ToList(); }); } + /// + /// 获取新token + /// + /// + /// + /// + public async Task Token(long taskId) + { + var task = await _dbContext.Queryable().Where(x => x.Id == taskId).FirstAsync(); + + task.ThrowIfNull("该任务不存在"); + if (task.Status != DeviceTaskStatusEnumType.Success) + { + return ""; + } + string newtoken=""; + Scoped.Request.Value.Create((sp) => + { + FaceUrlOptions faceUrlOptions = sp.GetService>().Value; + var dataProtectionProvider = sp.GetService(); + + var timeLimitedDataProtector = dataProtectionProvider + .CreateProtector("down:face") + .ToTimeLimitedDataProtector(); + var userCode = task.UserCode; + + var key = $"face:{userCode}"; + var token = timeLimitedDataProtector.Protect(key, TimeSpan.FromSeconds(faceUrlOptions.Limit)); + newtoken = faceUrlOptions.Url + token; + }); + + return newtoken; + } public async Task UpdateDeviceTaskStatusAsync(UpdateDeviceTaskStatusRequest request)