using Admin.NET.Application.CommonHelper; using Admin.NET.Application.Entity; using Furion.DatabaseAccessor; namespace Admin.NET.Application; /// /// pda服务 /// [ApiDescriptionSettings(ApplicationConst.PdaUpdateGroup, Order = 100)] public class PdaUpdateService : IDynamicApiController, ITransient { public PdaUpdateService( ) { } /// /// PDA程序更新文件地址 /// /// /// string [HttpGet] [ApiDescriptionSettings(Name = "GetUpdate")] [Description("PdaUpdate/GetUpdate")] [AllowAnonymous] public async Task GetUpdate() { /** ly-0729*/ var savePath = Path.Combine(App.HostEnvironment.ContentRootPath + "wwwroot\\", "PDAUpdate"); if (!Directory.Exists(savePath)) { throw Oops.Oh("文件夹不存在"); } List lstfiles = await GetFile(savePath, ".wgt"); //Regex rxNonDigits = new Regex(@"[^\d]+"); //long i = 0; FileInfo fileInfo = null; foreach (var item in lstfiles) { //string str = rxNonDigits.Replace(item.Name, ""); //long j = Convert.ToInt64(rxNonDigits.Replace(item.Name, "")); //if (i < j) //{ // fileInfo = item; // i = j; //} if (fileInfo == null) { fileInfo = item; } else { //比较两个文件的生成时间,取生成比较晚的 if (item.CreationTimeUtc.Subtract(fileInfo.CreationTimeUtc).TotalSeconds > 0) { fileInfo = item; } } } if (fileInfo == null) { throw Oops.Oh("没有要更新的文件"); } return GetFilePreviewURL() + "PDAUpdate/" + fileInfo.Name; } /// /// 获取文件预览地址 /// /// private static string GetFilePreviewURL() { try { //App.Configuration.GetSection("IpRateLimiting") return App.Configuration["AppSettings:FilePreviewUrl"].ToString(); } catch { return string.Empty; } } /// /// 获取文件夹下的指定后缀的所有文件 /// /// 文件路径 /// 文件后缀 /// [NonAction] public async Task> GetFile(string path, string ExtName) { try { List lst = new List(); string[] dir = Directory.GetDirectories(path);// 文件夹列表 DirectoryInfo directoryInfo = new DirectoryInfo(path); FileInfo[] files = directoryInfo.GetFiles(); if (files.Length != 0 || dir.Length != 0) // 当前目录文件或文件夹不能为空 { foreach (FileInfo f in files) { if (ExtName.ToLower().IndexOf(f.Extension.ToLower()) >= 0) { lst.Add(f); } } foreach (string d in dir) { await GetFile(d, ExtName); } } return lst; } catch (Exception ex) { throw Oops.Oh(ex.Message); } } }