diff --git a/Yi.Abp.Net8/tool/Yi.Abp.Tool.Application/NueGetInfoService.cs b/Yi.Abp.Net8/tool/Yi.Abp.Tool.Application/NueGetInfoService.cs new file mode 100644 index 00000000..928e2b22 --- /dev/null +++ b/Yi.Abp.Net8/tool/Yi.Abp.Tool.Application/NueGetInfoService.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Volo.Abp.Application.Services; +using Yi.Abp.Tool.Domain; + +namespace Yi.Abp.Tool.Application +{ + public class NueGetInfoService : ApplicationService + { + private NugetCrawlerManager _nugetCrawlerManager; + public NueGetInfoService(NugetCrawlerManager nugetCrawlerManager) { _nugetCrawlerManager = nugetCrawlerManager; } + + /// + /// 获取爬虫结果 + /// + /// + public NugetResult GetInfo() + { + return _nugetCrawlerManager.GetNugetResult(); + } + } +} diff --git a/Yi.Abp.Net8/tool/Yi.Abp.Tool.Domain/NugetCrawlerManager.cs b/Yi.Abp.Net8/tool/Yi.Abp.Tool.Domain/NugetCrawlerManager.cs new file mode 100644 index 00000000..782eadf0 --- /dev/null +++ b/Yi.Abp.Net8/tool/Yi.Abp.Tool.Domain/NugetCrawlerManager.cs @@ -0,0 +1,85 @@ +using HtmlAgilityPack; +using Microsoft.Extensions.Caching.Distributed; +using Volo.Abp.Caching; +using Volo.Abp.DependencyInjection; + +namespace Yi.Abp.Tool.Domain +{ + public class NugetCrawlerManager : ITransientDependency + { + private const string NugetVersionUrl = "https://www.nuget.org/packages/Yi.Abp.Tool#versions-body-tab"; + public NugetCrawlerManager(IDistributedCache cache) + { + //缓存设置1分钟获取一次结果 + this.NugetResult = cache.GetOrAdd("NugetResult", () => + { + return InitData(); + }, () => + { + var options = new DistributedCacheEntryOptions(); + options.AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(1); + return options; + })!; + + } + private HtmlDocument HtmlDoc { get; set; } + private NugetResult NugetResult { get; set; } = new NugetResult(); + + private NugetResult InitData() + { + NugetResult nugetResult = new NugetResult(); + + HtmlWeb web = new HtmlWeb(); + this.HtmlDoc = web.Load(NugetVersionUrl); + nugetResult.Versions = GetVersionList(); + nugetResult.DownloadNumberNumber = GetDownloadNumber(); + + return nugetResult; + } + + + public NugetResult GetNugetResult() + { + return this.NugetResult; + } + + /// + /// 获取版本号列表 + /// + /// + private List GetVersionList() + { + List versions = new List(); + + var versionDoc = HtmlDoc.DocumentNode.SelectNodes("//*[@id=\"version-history\"]/table/tbody"); + var trDoc = versionDoc.First().ChildNodes.Where(x => x.Name == "tr").ToList(); + + foreach (var tr in trDoc) + { + var version = tr.ChildNodes.Where(x => x.Name == "td").First().ChildNodes.Where(x => x.Name == "a").First().GetAttributes("title").First().Value; + + versions.Add(version); + + } + return versions; + } + + /// + /// 获取下载总数 + /// + /// + private long GetDownloadNumber() + { + var spanDoc = HtmlDoc.DocumentNode.SelectNodes("//*[@id=\"skippedToContent\"]/section/div/aside/div[1]/div[2]/div[1]/span[2]"); + var downLoadNumber = spanDoc.First().InnerText; + return long.Parse(downLoadNumber); + } + } + + + public class NugetResult + { + public long DownloadNumberNumber { get; set; } + public List Versions { get; set; } + } +} diff --git a/Yi.Abp.Net8/tool/Yi.Abp.Tool.Domain/Yi.Abp.Tool.Domain.csproj b/Yi.Abp.Net8/tool/Yi.Abp.Tool.Domain/Yi.Abp.Tool.Domain.csproj index 062edcec..40a316eb 100644 --- a/Yi.Abp.Net8/tool/Yi.Abp.Tool.Domain/Yi.Abp.Tool.Domain.csproj +++ b/Yi.Abp.Net8/tool/Yi.Abp.Tool.Domain/Yi.Abp.Tool.Domain.csproj @@ -5,8 +5,13 @@ enable enable + + + + + diff --git a/Yi.Abp.Net8/tool/Yi.Abp.Tool.Web/Program.cs b/Yi.Abp.Net8/tool/Yi.Abp.Tool.Web/Program.cs index c0ad451f..da0910d9 100644 --- a/Yi.Abp.Net8/tool/Yi.Abp.Tool.Web/Program.cs +++ b/Yi.Abp.Net8/tool/Yi.Abp.Tool.Web/Program.cs @@ -1,9 +1,11 @@ using Yi.Abp.Tool.Web; + var builder = WebApplication.CreateBuilder(args); builder.WebHost.UseUrls(builder.Configuration["App:SelfUrl"]); builder.Host.UseAutofac(); await builder.Services.AddApplicationAsync(); var app = builder.Build(); + await app.InitializeApplicationAsync(); await app.RunAsync(); \ No newline at end of file diff --git a/Yi.Abp.Net8/tool/Yi.Abp.Tool/Commands/ClearCommand.cs b/Yi.Abp.Net8/tool/Yi.Abp.Tool/Commands/ClearCommand.cs index 241a883e..052f1932 100644 --- a/Yi.Abp.Net8/tool/Yi.Abp.Tool/Commands/ClearCommand.cs +++ b/Yi.Abp.Net8/tool/Yi.Abp.Tool/Commands/ClearCommand.cs @@ -13,7 +13,13 @@ namespace Yi.Abp.Tool.Commands public Task InvokerAsync(Dictionary options, string[] args) { List delDirBlacklist = ["obj", "bin"]; - DeleteObjBinFolders("./", delDirBlacklist); + options.TryGetValue("path", out var path); + + if (string.IsNullOrEmpty(path)) + { + path = "./"; + } + DeleteObjBinFolders(path, delDirBlacklist); return Task.CompletedTask; } @@ -24,7 +30,7 @@ namespace Yi.Abp.Tool.Commands { foreach (string subDir in Directory.GetDirectories(directory)) { - if (delDirBlacklist.Contains(subDir)) + if (delDirBlacklist.Contains(Path.GetFileName( subDir))) { Directory.Delete(subDir, true); Console.WriteLine($"已删除文件夹:{subDir}"); diff --git a/Yi.Abp.Net8/tool/Yi.Abp.Tool/Commands/HelpCommand.cs b/Yi.Abp.Net8/tool/Yi.Abp.Tool/Commands/HelpCommand.cs index 07d9c980..d3917b84 100644 --- a/Yi.Abp.Net8/tool/Yi.Abp.Tool/Commands/HelpCommand.cs +++ b/Yi.Abp.Net8/tool/Yi.Abp.Tool/Commands/HelpCommand.cs @@ -31,6 +31,7 @@ namespace Yi.Abp.Tool.Commands > new: 创建模块模板` yi-abp new -t module -csf ` > new: 创建项目模板` yi-abp new -csf ` > add-module: 将内容添加到当前解决方案` yi-abp add-module [-modulePath ] [-s ] ` + > clear: 清除当前目录及子目录下的obj、bin文件夹` yi-abp clear ` """); return Task.CompletedTask; diff --git a/Yi.Abp.Net8/tool/Yi.Abp.Tool/Program.cs b/Yi.Abp.Net8/tool/Yi.Abp.Tool/Program.cs index 9e8edcfd..bcd9bfe5 100644 --- a/Yi.Abp.Net8/tool/Yi.Abp.Tool/Program.cs +++ b/Yi.Abp.Net8/tool/Yi.Abp.Tool/Program.cs @@ -16,7 +16,8 @@ class Program //args = ["12312"]; //args = ["new", "Acme.Book", "-t", "module", "-csf"]; //args = ["new", "Acme.Book", "-t", "module"]; - args = ["add-module", "Acme.Demo", "-s", "D:\\code\\csharp\\source\\Yi\\Yi.Abp.Net8", "-modulePath", "D:\\code\\csharp\\source\\Yi\\Yi.Abp.Net8\\module\\acme-demo"]; + //args = ["add-module", "Acme.Demo", "-s", "D:\\code\\csharp\\source\\Yi\\Yi.Abp.Net8", "-modulePath", "D:\\code\\csharp\\source\\Yi\\Yi.Abp.Net8\\module\\acme-demo"]; + args = ["clear", "-path", "D:\\code\\csharp\\source\\Yi\\Yi.Abp.Net8\\src"]; #endif try { diff --git a/Yi.Abp.Net8/tool/Yi.Abp.Tool/Yi.Abp.Tool.csproj b/Yi.Abp.Net8/tool/Yi.Abp.Tool/Yi.Abp.Tool.csproj index c84bd573..1ff25060 100644 --- a/Yi.Abp.Net8/tool/Yi.Abp.Tool/Yi.Abp.Tool.csproj +++ b/Yi.Abp.Net8/tool/Yi.Abp.Tool/Yi.Abp.Tool.csproj @@ -5,7 +5,7 @@ net8.0 enable enable - 0.8.0 + 1.0.0 橙子老哥 yi-framework框架配套工具 https://ccnetcore.com diff --git a/Yi.Bbs.Vue3/src/layout/AppHeader.vue b/Yi.Bbs.Vue3/src/layout/AppHeader.vue index 0d67eaa4..a063c692 100644 --- a/Yi.Bbs.Vue3/src/layout/AppHeader.vue +++ b/Yi.Bbs.Vue3/src/layout/AppHeader.vue @@ -212,7 +212,7 @@ const hanldeReadClick=async ()=>{ } const enterStart=()=>{ -alert("即将发布Yi.Abp.Tool,官方脚手架工具集,敬请期待!") + router.push("/start"); } diff --git a/Yi.Bbs.Vue3/src/views/chathub/Index.vue b/Yi.Bbs.Vue3/src/views/chathub/Index.vue index 9f477832..71db7d70 100644 --- a/Yi.Bbs.Vue3/src/views/chathub/Index.vue +++ b/Yi.Bbs.Vue3/src/views/chathub/Index.vue @@ -203,11 +203,10 @@ const getLastMessage = ((receiveId, isAll) => {