namespace Admin.NET.Core.Service; public class CommonService : ICommonService, IScoped { private readonly IHttpContextAccessor _httpContextAccessor; private readonly CodeGenOptions _codeGenOptions; public CommonService(IHttpContextAccessor httpContextAccessor, IOptions codeGenOptions) { _httpContextAccessor = httpContextAccessor; _codeGenOptions = codeGenOptions.Value; } /// /// 获取库表信息 /// /// public async Task> GetEntityInfos() { var entityInfos = new List(); var type = typeof(SugarTable); var types = new List(); if (_codeGenOptions.EntityAssemblyNames != null) { foreach (var assemblyName in _codeGenOptions.EntityAssemblyNames) { Assembly asm = Assembly.Load(assemblyName); types.AddRange(asm.GetExportedTypes().ToList()); } } Func IsMyAttribute = o => { foreach (Attribute a in o) { if (a.GetType() == type) return true; } return false; }; Type[] cosType = types.Where(o => { return IsMyAttribute(Attribute.GetCustomAttributes(o, true)); } ).ToArray(); foreach (var c in cosType) { var sugarAttribute = c.GetCustomAttributes(type, true)?.FirstOrDefault(); var des = c.GetCustomAttributes(typeof(DescriptionAttribute), true); var description = ""; if (des.Length > 0) { description = ((DescriptionAttribute)des[0]).Description; } entityInfos.Add(new EntityInfo() { EntityName = c.Name, DbTableName = sugarAttribute == null ? c.Name : ((SugarTable)sugarAttribute).TableName, TableDescription = description }); } return await Task.FromResult(entityInfos); } /// /// 获取Host /// /// public string GetHost() { return $"{_httpContextAccessor.HttpContext.Request.Scheme}://{_httpContextAccessor.HttpContext.Request.Host.Value}"; } /// /// 获取文件URL /// /// /// public string GetFileUrl(SysFile sysFile) { return $"{GetHost()}/{sysFile.FilePath}/{sysFile.Id + sysFile.Suffix}"; } }