diff --git a/gateway/src/IntegrationGateway.Adapters.Kms/KmsAdapter.cs b/gateway/src/IntegrationGateway.Adapters.Kms/KmsAdapter.cs index 5cdf835..5a02c7a 100644 --- a/gateway/src/IntegrationGateway.Adapters.Kms/KmsAdapter.cs +++ b/gateway/src/IntegrationGateway.Adapters.Kms/KmsAdapter.cs @@ -168,4 +168,73 @@ public class KmsAdapter : IHasFlatDevices, IHasAlarms // KMS 第三方接口 (2.18.7) 不提供告警结束 API return Task.CompletedTask; } + + // ═══════════════════════════════════════════ + // 扩展方法 — 2.18 第三方接口全覆盖 + // ═══════════════════════════════════════════ + + /// 2.18.6 查询借还记录列表 + public async Task> GetBorrowRecordsAsync(DateTime? from = null, DateTime? to = null) + { + await _limiter.WaitAsync(); + var client = await _auth.GetAuthenticatedClientAsync(); + var body = "{}"; // 联调时加入时间范围参数 + var resp = await client.PostAsync("/prod-api/getRecordList", + new StringContent(body, Encoding.UTF8, "application/json")); + resp.EnsureSuccessStatusCode(); + var data = await resp.Content.ReadFromJsonAsync()!; + return new PagedResult { Items = data.Rows ?? new(), Total = data.Total }; + } + + /// 2.18.5 查询授权记录列表 + public async Task> GetPermissionListAsync(DateTime? from = null, DateTime? to = null) + { + await _limiter.WaitAsync(); + var client = await _auth.GetAuthenticatedClientAsync(); + var body = "{}"; // 联调时加入时间范围 + var resp = await client.PostAsync("/prod-api/getPermissionList", + new StringContent(body, Encoding.UTF8, "application/json")); + resp.EnsureSuccessStatusCode(); + var data = await resp.Content.ReadFromJsonAsync()!; + return new PagedResult { Items = data.Rows ?? new(), Total = data.Total }; + } + + /// 2.18.3 从 Vol.Pro 向 KMS 批量同步员工 + public async Task BatchSyncStaffAsync(List staffList) + { + await _limiter.WaitAsync(); + var client = await _auth.GetAuthenticatedClientAsync(); + var resp = await client.PostAsJsonAsync("/prod-api/batchSyncStaff", new { staff = staffList }); + resp.EnsureSuccessStatusCode(); + } + + /// 2.18.2 从 Vol.Pro 向 KMS 批量删除员工 + public async Task BatchDeleteStaffAsync(List staffUuids) + { + await _limiter.WaitAsync(); + var client = await _auth.GetAuthenticatedClientAsync(); + var resp = await client.PostAsJsonAsync("/prod-api/batchDeleteStaff", staffUuids); + resp.EnsureSuccessStatusCode(); + } + + /// 2.4.3 远程授权开门 + public async Task RemoteAuthorizeAsync(KmsRemotePermissionRequest request) + { + await _limiter.WaitAsync(); + var client = await _auth.GetAuthenticatedClientAsync(); + var resp = await client.PostAsJsonAsync("/prod-api/kms/permission/remote", request); + resp.EnsureSuccessStatusCode(); + } + + /// 2.18.8 代理 KMS 第三方登录/事件记录 + public async Task ThirdPlatLoginAsync(string username) + { + await _limiter.WaitAsync(); + var client = await _auth.GetAuthenticatedClientAsync(); + var resp = await client.PostAsync($"/thirdPlatlogin?username={Uri.EscapeDataString(username)}", null); + if (resp.StatusCode == System.Net.HttpStatusCode.Redirect) + return resp.Headers.Location?.ToString(); + resp.EnsureSuccessStatusCode(); + return await resp.Content.ReadAsStringAsync(); + } }