From e3fe965f108e748a0bfa13f6f122d650d73575d9 Mon Sep 17 00:00:00 2001
From: luoqian <2769838458@qq.com>
Date: Thu, 21 May 2026 15:52:36 +0800
Subject: [PATCH] init
---
.config/dotnet-tools.json | 13 +
.gitignore | 30 +
.vscode/settings.json | 7 +
.../Authentication/ApiAuthEndpointService.cs | 160 +
Avalonia-API/Authentication/JwtOptions.cs | 33 +
.../Authentication/JwtTokenService.cs | 55 +
.../Authentication/RefreshTokenService.cs | 124 +
Avalonia-API/Avalonia-API.csproj | 31 +
Avalonia-API/Avalonia-API.csproj.user | 9 +
Avalonia-API/Avalonia-API.http | 6 +
.../Configuration/ServicesConfiguration.cs | 75 +
.../Extensions/UnifiedEndpointExtensions.cs | 225 +
Avalonia-API/Program.cs | 60 +
Avalonia-API/Properties/launchSettings.json | 23 +
Avalonia-API/appsettings.Development.json | 8 +
Avalonia-API/appsettings.json | 24 +
Avalonia-Common/Avalonia-Common.csproj | 18 +
Avalonia-Common/Core/ApiResponse.cs | 205 +
.../Infrastructure/LoggingConfiguration.cs | 167 +
Avalonia-EFCore/Avalonia-EFCore.csproj | 28 +
Avalonia-EFCore/Database/AppDataContext.cs | 50 +
.../Database/AppDataContextFactory.cs | 104 +
Avalonia-EFCore/Database/AppDbContext.cs | 115 +
.../Database/DatabaseConfiguration.cs | 93 +
.../Database/DatabaseExtensions.cs | 85 +
Avalonia-EFCore/Database/DatabaseManager.cs | 224 +
.../Database/DatabaseProviderRegistry.cs | 59 +
.../Database/ProviderAppDataContexts.cs | 30 +
...6_AutoMigration_20260520162543.Designer.cs | 175 +
...0520082626_AutoMigration_20260520162543.cs | 103 +
...6_AutoMigration_20260520163216.Designer.cs | 181 +
...0520083306_AutoMigration_20260520163216.cs | 30 +
.../MySQL/MySqlAppDataContextModelSnapshot.cs | 178 +
...7_AutoMigration_20260520162543.Designer.cs | 184 +
...0520082617_AutoMigration_20260520162543.cs | 97 +
...4_AutoMigration_20260520163216.Designer.cs | 190 +
...0520083254_AutoMigration_20260520163216.cs | 30 +
.../PostgreSqlAppDataContextModelSnapshot.cs | 187 +
.../20260514000100_InitialCreate.Designer.cs | 94 +
.../SQLite/20260514000100_InitialCreate.cs | 62 +
...5_AutoMigration_20260515152037.Designer.cs | 113 +
...0515072045_AutoMigration_20260515152037.cs | 30 +
...7_AutoMigration_20260515165835.Designer.cs | 173 +
...0515085847_AutoMigration_20260515165835.cs | 54 +
...0_AutoMigration_20260520163216.Designer.cs | 179 +
...0520083230_AutoMigration_20260520163216.cs | 30 +
.../SqliteAppDataContextModelSnapshot.cs | 176 +
...7_AutoMigration_20260520162543.Designer.cs | 184 +
...0520082607_AutoMigration_20260520162543.cs | 96 +
...2_AutoMigration_20260520163216.Designer.cs | 190 +
...0520083242_AutoMigration_20260520163216.cs | 30 +
.../SqlServerAppDataContextModelSnapshot.cs | 187 +
.../Models/ApiRefreshTokenEntity.cs | 79 +
Avalonia-EFCore/Models/UserEntity.cs | 69 +
Avalonia-EFCore/Models/WeatherForecast.cs | 28 +
.../Models/WeatherForecastEntity.cs | 59 +
Avalonia-PC/.github/copilot-instructions.md | 4 +
Avalonia-PC/App.axaml | 15 +
Avalonia-PC/App.axaml.cs | 37 +
Avalonia-PC/Assets/avalonia-logo.ico | Bin 0 -> 175875 bytes
.../DefaultPcThirdPartyAuthorizationClient.cs | 50 +
.../Authentication/PcAuthEndpointService.cs | 94 +
Avalonia-PC/Authentication/PcAuthService.cs | 60 +
.../Authentication/PcGlobalTokenService.cs | 227 +
Avalonia-PC/Avalonia-PC.csproj | 48 +
Avalonia-PC/Avalonia-PC.csproj.user | 9 +
Avalonia-PC/Avalonia-PC.slnx | 11 +
Avalonia-PC/Program.cs | 97 +
Avalonia-PC/Properties/launchSettings.json | 11 +
Avalonia-PC/ViewLocator.cs | 53 +
Avalonia-PC/ViewModels/MainWindowViewModel.cs | 13 +
Avalonia-PC/ViewModels/ViewModelBase.cs | 12 +
Avalonia-PC/Views/MainWindow.BridgeScript.cs | 345 ++
Avalonia-PC/Views/MainWindow.Routes.cs | 38 +
Avalonia-PC/Views/MainWindow.axaml | 23 +
Avalonia-PC/Views/MainWindow.axaml.cs | 684 +++
Avalonia-PC/app.manifest | 18 +
Avalonia-PC/www/api.js | 51 +
Avalonia-PC/www/index.html | 62 +
Avalonia-Services/Avalonia-Services.csproj | 24 +
Avalonia-Services/Core/EndpointPrinter.cs | 70 +
.../Core/GlobalExceptionFilter.cs | 107 +
Avalonia-Services/Core/IAuthService.cs | 39 +
Avalonia-Services/Core/IEndpointFilter.cs | 48 +
.../Core/ServiceEndpointCollection.cs | 364 ++
.../Core/ServiceEndpointContext.cs | 79 +
Avalonia-Services/Endpoints/AppEndpoints.cs | 147 +
Avalonia-Services/Endpoints/AuthEndpoints.cs | 61 +
.../Extensions/DesktopEndpointAdapter.cs | 233 +
.../Services/AuthService/AuthContracts.cs | 98 +
.../AuthService/AuthEndpointServices.cs | 59 +
.../Services/WeatherForecastService.cs | 30 +
Avalonia-Web-VUE/.editorconfig | 8 +
Avalonia-Web-VUE/.gitattributes | 1 +
Avalonia-Web-VUE/.gitignore | 39 +
Avalonia-Web-VUE/.oxlintrc.json | 10 +
Avalonia-Web-VUE/CHANGELOG.md | 13 +
Avalonia-Web-VUE/README.md | 48 +
Avalonia-Web-VUE/avalonia-web-vue.esproj | 11 +
Avalonia-Web-VUE/env.d.ts | 1 +
Avalonia-Web-VUE/eslint.config.ts | 23 +
Avalonia-Web-VUE/index.html | 13 +
Avalonia-Web-VUE/package-lock.json | 4880 +++++++++++++++++
Avalonia-Web-VUE/package.json | 40 +
Avalonia-Web-VUE/public/favicon.ico | Bin 0 -> 4286 bytes
Avalonia-Web-VUE/src/App.vue | 47 +
Avalonia-Web-VUE/src/api/env.ts | 15 +
Avalonia-Web-VUE/src/api/http.ts | 84 +
Avalonia-Web-VUE/src/api/index.ts | 8 +
Avalonia-Web-VUE/src/assets/base.css | 86 +
Avalonia-Web-VUE/src/assets/logo.svg | 1 +
Avalonia-Web-VUE/src/assets/main.css | 35 +
.../src/components/HelloWorld.vue | 41 +
.../src/components/TheWelcome.vue | 95 +
.../src/components/WelcomeItem.vue | 87 +
.../src/components/icons/IconCommunity.vue | 7 +
.../components/icons/IconDocumentation.vue | 7 +
.../src/components/icons/IconEcosystem.vue | 7 +
.../src/components/icons/IconSupport.vue | 7 +
.../src/components/icons/IconTooling.vue | 19 +
Avalonia-Web-VUE/src/main.ts | 6 +
Avalonia-Web-VUE/src/shims-vue.d.ts | 6 +
Avalonia-Web-VUE/tsconfig.app.json | 18 +
Avalonia-Web-VUE/tsconfig.json | 11 +
Avalonia-Web-VUE/tsconfig.node.json | 27 +
Avalonia-Web-VUE/vite.config.ts | 10 +
README.md | 0
package-scripts/installer/Avalonia-PC.iss | 59 +
package-scripts/package-pc.bat | 32 +
package-scripts/package-pc.ps1 | 171 +
scripts/add-migration.bat | 2 +
scripts/add-migration.cmd | 2 +
scripts/add-migration.ps1 | 92 +
scripts/find-missing-csharp-docs.bat | 6 +
scripts/find-missing-csharp-docs.ps1 | 358 ++
scripts/missing-csharp-docs.after.json | 23 +
scripts/missing-csharp-docs.txt | 1 +
scripts/生成注释提示词.txt | 60 +
138 files changed, 15087 insertions(+)
create mode 100644 .config/dotnet-tools.json
create mode 100644 .gitignore
create mode 100644 .vscode/settings.json
create mode 100644 Avalonia-API/Authentication/ApiAuthEndpointService.cs
create mode 100644 Avalonia-API/Authentication/JwtOptions.cs
create mode 100644 Avalonia-API/Authentication/JwtTokenService.cs
create mode 100644 Avalonia-API/Authentication/RefreshTokenService.cs
create mode 100644 Avalonia-API/Avalonia-API.csproj
create mode 100644 Avalonia-API/Avalonia-API.csproj.user
create mode 100644 Avalonia-API/Avalonia-API.http
create mode 100644 Avalonia-API/Configuration/ServicesConfiguration.cs
create mode 100644 Avalonia-API/Extensions/UnifiedEndpointExtensions.cs
create mode 100644 Avalonia-API/Program.cs
create mode 100644 Avalonia-API/Properties/launchSettings.json
create mode 100644 Avalonia-API/appsettings.Development.json
create mode 100644 Avalonia-API/appsettings.json
create mode 100644 Avalonia-Common/Avalonia-Common.csproj
create mode 100644 Avalonia-Common/Core/ApiResponse.cs
create mode 100644 Avalonia-Common/Infrastructure/LoggingConfiguration.cs
create mode 100644 Avalonia-EFCore/Avalonia-EFCore.csproj
create mode 100644 Avalonia-EFCore/Database/AppDataContext.cs
create mode 100644 Avalonia-EFCore/Database/AppDataContextFactory.cs
create mode 100644 Avalonia-EFCore/Database/AppDbContext.cs
create mode 100644 Avalonia-EFCore/Database/DatabaseConfiguration.cs
create mode 100644 Avalonia-EFCore/Database/DatabaseExtensions.cs
create mode 100644 Avalonia-EFCore/Database/DatabaseManager.cs
create mode 100644 Avalonia-EFCore/Database/DatabaseProviderRegistry.cs
create mode 100644 Avalonia-EFCore/Database/ProviderAppDataContexts.cs
create mode 100644 Avalonia-EFCore/Migrations/MySQL/20260520082626_AutoMigration_20260520162543.Designer.cs
create mode 100644 Avalonia-EFCore/Migrations/MySQL/20260520082626_AutoMigration_20260520162543.cs
create mode 100644 Avalonia-EFCore/Migrations/MySQL/20260520083306_AutoMigration_20260520163216.Designer.cs
create mode 100644 Avalonia-EFCore/Migrations/MySQL/20260520083306_AutoMigration_20260520163216.cs
create mode 100644 Avalonia-EFCore/Migrations/MySQL/MySqlAppDataContextModelSnapshot.cs
create mode 100644 Avalonia-EFCore/Migrations/PostgreSQL/20260520082617_AutoMigration_20260520162543.Designer.cs
create mode 100644 Avalonia-EFCore/Migrations/PostgreSQL/20260520082617_AutoMigration_20260520162543.cs
create mode 100644 Avalonia-EFCore/Migrations/PostgreSQL/20260520083254_AutoMigration_20260520163216.Designer.cs
create mode 100644 Avalonia-EFCore/Migrations/PostgreSQL/20260520083254_AutoMigration_20260520163216.cs
create mode 100644 Avalonia-EFCore/Migrations/PostgreSQL/PostgreSqlAppDataContextModelSnapshot.cs
create mode 100644 Avalonia-EFCore/Migrations/SQLite/20260514000100_InitialCreate.Designer.cs
create mode 100644 Avalonia-EFCore/Migrations/SQLite/20260514000100_InitialCreate.cs
create mode 100644 Avalonia-EFCore/Migrations/SQLite/20260515072045_AutoMigration_20260515152037.Designer.cs
create mode 100644 Avalonia-EFCore/Migrations/SQLite/20260515072045_AutoMigration_20260515152037.cs
create mode 100644 Avalonia-EFCore/Migrations/SQLite/20260515085847_AutoMigration_20260515165835.Designer.cs
create mode 100644 Avalonia-EFCore/Migrations/SQLite/20260515085847_AutoMigration_20260515165835.cs
create mode 100644 Avalonia-EFCore/Migrations/SQLite/20260520083230_AutoMigration_20260520163216.Designer.cs
create mode 100644 Avalonia-EFCore/Migrations/SQLite/20260520083230_AutoMigration_20260520163216.cs
create mode 100644 Avalonia-EFCore/Migrations/SQLite/SqliteAppDataContextModelSnapshot.cs
create mode 100644 Avalonia-EFCore/Migrations/SqlServer/20260520082607_AutoMigration_20260520162543.Designer.cs
create mode 100644 Avalonia-EFCore/Migrations/SqlServer/20260520082607_AutoMigration_20260520162543.cs
create mode 100644 Avalonia-EFCore/Migrations/SqlServer/20260520083242_AutoMigration_20260520163216.Designer.cs
create mode 100644 Avalonia-EFCore/Migrations/SqlServer/20260520083242_AutoMigration_20260520163216.cs
create mode 100644 Avalonia-EFCore/Migrations/SqlServer/SqlServerAppDataContextModelSnapshot.cs
create mode 100644 Avalonia-EFCore/Models/ApiRefreshTokenEntity.cs
create mode 100644 Avalonia-EFCore/Models/UserEntity.cs
create mode 100644 Avalonia-EFCore/Models/WeatherForecast.cs
create mode 100644 Avalonia-EFCore/Models/WeatherForecastEntity.cs
create mode 100644 Avalonia-PC/.github/copilot-instructions.md
create mode 100644 Avalonia-PC/App.axaml
create mode 100644 Avalonia-PC/App.axaml.cs
create mode 100644 Avalonia-PC/Assets/avalonia-logo.ico
create mode 100644 Avalonia-PC/Authentication/DefaultPcThirdPartyAuthorizationClient.cs
create mode 100644 Avalonia-PC/Authentication/PcAuthEndpointService.cs
create mode 100644 Avalonia-PC/Authentication/PcAuthService.cs
create mode 100644 Avalonia-PC/Authentication/PcGlobalTokenService.cs
create mode 100644 Avalonia-PC/Avalonia-PC.csproj
create mode 100644 Avalonia-PC/Avalonia-PC.csproj.user
create mode 100644 Avalonia-PC/Avalonia-PC.slnx
create mode 100644 Avalonia-PC/Program.cs
create mode 100644 Avalonia-PC/Properties/launchSettings.json
create mode 100644 Avalonia-PC/ViewLocator.cs
create mode 100644 Avalonia-PC/ViewModels/MainWindowViewModel.cs
create mode 100644 Avalonia-PC/ViewModels/ViewModelBase.cs
create mode 100644 Avalonia-PC/Views/MainWindow.BridgeScript.cs
create mode 100644 Avalonia-PC/Views/MainWindow.Routes.cs
create mode 100644 Avalonia-PC/Views/MainWindow.axaml
create mode 100644 Avalonia-PC/Views/MainWindow.axaml.cs
create mode 100644 Avalonia-PC/app.manifest
create mode 100644 Avalonia-PC/www/api.js
create mode 100644 Avalonia-PC/www/index.html
create mode 100644 Avalonia-Services/Avalonia-Services.csproj
create mode 100644 Avalonia-Services/Core/EndpointPrinter.cs
create mode 100644 Avalonia-Services/Core/GlobalExceptionFilter.cs
create mode 100644 Avalonia-Services/Core/IAuthService.cs
create mode 100644 Avalonia-Services/Core/IEndpointFilter.cs
create mode 100644 Avalonia-Services/Core/ServiceEndpointCollection.cs
create mode 100644 Avalonia-Services/Core/ServiceEndpointContext.cs
create mode 100644 Avalonia-Services/Endpoints/AppEndpoints.cs
create mode 100644 Avalonia-Services/Endpoints/AuthEndpoints.cs
create mode 100644 Avalonia-Services/Extensions/DesktopEndpointAdapter.cs
create mode 100644 Avalonia-Services/Services/AuthService/AuthContracts.cs
create mode 100644 Avalonia-Services/Services/AuthService/AuthEndpointServices.cs
create mode 100644 Avalonia-Services/Services/WeatherForecastService.cs
create mode 100644 Avalonia-Web-VUE/.editorconfig
create mode 100644 Avalonia-Web-VUE/.gitattributes
create mode 100644 Avalonia-Web-VUE/.gitignore
create mode 100644 Avalonia-Web-VUE/.oxlintrc.json
create mode 100644 Avalonia-Web-VUE/CHANGELOG.md
create mode 100644 Avalonia-Web-VUE/README.md
create mode 100644 Avalonia-Web-VUE/avalonia-web-vue.esproj
create mode 100644 Avalonia-Web-VUE/env.d.ts
create mode 100644 Avalonia-Web-VUE/eslint.config.ts
create mode 100644 Avalonia-Web-VUE/index.html
create mode 100644 Avalonia-Web-VUE/package-lock.json
create mode 100644 Avalonia-Web-VUE/package.json
create mode 100644 Avalonia-Web-VUE/public/favicon.ico
create mode 100644 Avalonia-Web-VUE/src/App.vue
create mode 100644 Avalonia-Web-VUE/src/api/env.ts
create mode 100644 Avalonia-Web-VUE/src/api/http.ts
create mode 100644 Avalonia-Web-VUE/src/api/index.ts
create mode 100644 Avalonia-Web-VUE/src/assets/base.css
create mode 100644 Avalonia-Web-VUE/src/assets/logo.svg
create mode 100644 Avalonia-Web-VUE/src/assets/main.css
create mode 100644 Avalonia-Web-VUE/src/components/HelloWorld.vue
create mode 100644 Avalonia-Web-VUE/src/components/TheWelcome.vue
create mode 100644 Avalonia-Web-VUE/src/components/WelcomeItem.vue
create mode 100644 Avalonia-Web-VUE/src/components/icons/IconCommunity.vue
create mode 100644 Avalonia-Web-VUE/src/components/icons/IconDocumentation.vue
create mode 100644 Avalonia-Web-VUE/src/components/icons/IconEcosystem.vue
create mode 100644 Avalonia-Web-VUE/src/components/icons/IconSupport.vue
create mode 100644 Avalonia-Web-VUE/src/components/icons/IconTooling.vue
create mode 100644 Avalonia-Web-VUE/src/main.ts
create mode 100644 Avalonia-Web-VUE/src/shims-vue.d.ts
create mode 100644 Avalonia-Web-VUE/tsconfig.app.json
create mode 100644 Avalonia-Web-VUE/tsconfig.json
create mode 100644 Avalonia-Web-VUE/tsconfig.node.json
create mode 100644 Avalonia-Web-VUE/vite.config.ts
create mode 100644 README.md
create mode 100644 package-scripts/installer/Avalonia-PC.iss
create mode 100644 package-scripts/package-pc.bat
create mode 100644 package-scripts/package-pc.ps1
create mode 100644 scripts/add-migration.bat
create mode 100644 scripts/add-migration.cmd
create mode 100644 scripts/add-migration.ps1
create mode 100644 scripts/find-missing-csharp-docs.bat
create mode 100644 scripts/find-missing-csharp-docs.ps1
create mode 100644 scripts/missing-csharp-docs.after.json
create mode 100644 scripts/missing-csharp-docs.txt
create mode 100644 scripts/生成注释提示词.txt
diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json
new file mode 100644
index 0000000..9755770
--- /dev/null
+++ b/.config/dotnet-tools.json
@@ -0,0 +1,13 @@
+{
+ "version": 1,
+ "isRoot": true,
+ "tools": {
+ "dotnet-ef": {
+ "version": "10.0.7",
+ "commands": [
+ "dotnet-ef"
+ ],
+ "rollForward": false
+ }
+ }
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..15db508
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,30 @@
+################################################################################
+# 此 .gitignore 文件已由 Microsoft(R) Visual Studio 自动创建。
+################################################################################
+
+/Avalonia-PC/bin
+/Avalonia-PC/.vs
+/Avalonia-PC/obj
+/Avalonia-API/bin
+/Avalonia-API/obj
+/Avalonia-Services/bin
+/Avalonia-Services/obj
+/Avalonia-Web-VUE/.vscode
+/Avalonia-Web-VUE/obj
+/Avalonia-Web-VUE/node_modules
+/Avalonia-Web-VUE/dist
+/Avalonia-Web-VUE/.vscode
+/avalonia-web-react/obj
+/avalonia-web-react/obj
+/avalonia-web-react/node_modules
+/avalonia-web-react/dist
+/Avalonia-EFCore/bin
+/Avalonia-EFCore/obj
+/Avalonia-Common/bin
+/Avalonia-Common/obj
+/Avalonia-API/logs
+/Avalonia-API/avalonia-api.db
+/Avalonia-API/avalonia-api.db-shm
+/Avalonia-API/avalonia-api.db-wal
+/package-output
+/package-scripts/tools
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..7c24122
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,7 @@
+{
+ "chat.tools.terminal.autoApprove": {
+ "ForEach-Object": true,
+ "dotnet list": true,
+ "dotnet build": true
+ }
+}
\ No newline at end of file
diff --git a/Avalonia-API/Authentication/ApiAuthEndpointService.cs b/Avalonia-API/Authentication/ApiAuthEndpointService.cs
new file mode 100644
index 0000000..8c97530
--- /dev/null
+++ b/Avalonia-API/Authentication/ApiAuthEndpointService.cs
@@ -0,0 +1,160 @@
+using Avalonia_Common.Core;
+using Avalonia_EFCore.Database;
+using Avalonia_EFCore.Models;
+using Avalonia_Services.Core;
+using Avalonia_Services.Services.AuthService;
+using Microsoft.EntityFrameworkCore;
+using System.Text.Json;
+
+namespace Avalonia_API.Authentication
+{
+ ///
+ /// API 鉴权端点服务,实现 ,
+ /// 处理登录、刷新 Token 和登出操作,使用 JWT 与 Refresh Token 机制。
+ ///
+ public sealed class ApiAuthEndpointService(
+ AppDataContext db,
+ JwtTokenService jwtTokenService,
+ RefreshTokenService refreshTokenService) : IApiAuthEndpointService
+ {
+ private static readonly JsonSerializerOptions JsonOptions = new()
+ {
+ PropertyNameCaseInsensitive = true,
+ };
+
+ ///
+ /// 处理用户登录请求。根据账号(邮箱或用户名)查找或创建用户,
+ /// 生成 JWT Access Token 和 Refresh Token 并返回。
+ ///
+ /// 服务端点上下文,包含请求体、请求头等信息。
+ /// 包含 AccessToken、RefreshToken 及过期时间的认证响应。
+ public async Task