非羁押人员管理平台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

85 lines
2.3 KiB

using ATS.NonCustodial.Application.Contracts.Interfaces.Admins.Api;
using ATS.NonCustodial.Application.Contracts.Interfaces.Admins.Api.Output;
using ATS.NonCustodial.Shared.Common.Attributes;
using ATS.NonCustodial.Shared.Common.UnifiedResults;
using ATS.NonCustodial.Shared.Extensions;
namespace ATS.NonCustodial.AdminUi.Helpers.Logs
{
/// <summary>
/// Api帮助类
/// </summary>
/// Author:mxg
/// CreatedTimed:2022-05-18 09:46 AM
[SingleInstance]
public class ApiHelper
{
#region Identity
private List<ApiHelperDto> _apis;
private static readonly object LockObject = new();
private readonly IApiService _apiService;
public ApiHelper(IApiService apiService)
{
_apiService = apiService;
}
#endregion Identity
/// <summary>
/// 主要是在Action 操作的时候添加操作日志时候用
/// </summary>
/// <returns></returns>
public List<ApiHelperDto> GetApis()
{
if (_apis != null && _apis.Any()) return _apis;
lock (LockObject)
{
if (_apis != null && _apis.Any()) return _apis;
_apis = new List<ApiHelperDto>();
var apis = ((ResultOutput<List<ApiListOutput>>)_apiService.GetListAsync("").Result)
.Data
.Select(a => new
{
a.Id,
a.ParentId,
a.Label,
a.Path
});
foreach (var api in apis)
{
var parentLabel = apis.FirstOrDefault(a => a.Id == api.ParentId)?.Label;
_apis.Add(new ApiHelperDto
{
Label = parentLabel.NotNull() ? $"{parentLabel} / {api.Label}" : api.Label,
Path = api.Path?.ToLower().Trim('/')
});
}
return _apis;
}
}
}
/// <summary>
///
/// </summary>
public class ApiHelperDto
{
/// <summary>
/// 接口名称
/// </summary>
public string Label { get; set; }
/// <summary>
/// 接口地址
/// </summary>
public string Path { get; set; }
}
}