using System; using System.IO; using System.Linq; using System.Collections.Generic; using Newtonsoft.Json; using Admin.Core.Common.Helpers; using Admin.Core.Db; using Admin.Core.Common.Attributes; namespace Admin.Core.Logs { /// /// Api帮助类 /// [SingleInstance] public class ApiHelper { private List _apis; private static readonly object _lockObject = new object(); public List GetApis() { if (_apis != null && _apis.Any()) return _apis; lock (_lockObject) { if (_apis != null && _apis.Any()) return _apis; _apis = new List(); var filePath = Path.Combine(AppContext.BaseDirectory, "Db/Data/data.json").ToPath(); var jsonData = FileHelper.ReadFile(filePath); var apis = JsonConvert.DeserializeObject(jsonData).Apis; 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; } } } public class ApiHelperDto { /// /// 接口名称 /// public string Label { get; set; } /// /// 接口地址 /// public string Path { get; set; } } }