From 547142730ea178007685aaacc8d5c946fad00b48 Mon Sep 17 00:00:00 2001 From: sangzhen Date: Mon, 7 Jul 2025 18:41:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=90=E5=8A=9F=E5=86=99=E5=85=A5Uesrs?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WorkStation.Client/App.xaml.cs | 9 ++++- .../ViewModels/Dialogs/LoginViewModel.cs | 2 +- .../Context/Entity/BaseEntity.cs | 9 +++++ WorkStation.Server/Context/Entity/User.cs | 8 ++++ WorkStation.Server/Context/MyDbContext.cs | 10 +++++ .../Context/Repository/UserRepository.cs | 9 +++++ .../Controllers/UserController.cs | 17 +++++++++ .../Controllers/WeatherForecastController.cs | 33 ---------------- WorkStation.Server/Program.cs | 18 ++++++++- WorkStation.Server/Services/IBaseSerivice.cs | 14 +++++++ WorkStation.Server/Services/IUserService.cs | 9 +++++ WorkStation.Server/Services/UserService.cs | 38 +++++++++++++++++++ WorkStation.Server/WeatherForecast.cs | 13 ------- WorkStation.Server/WorkStation.Server.csproj | 13 ++++++- WorkStation.Server/appsettings.json | 5 ++- WorkStation.Share/ApiResponse.cs | 15 ++++++++ WorkStation.Share/Class1.cs | 7 ---- 17 files changed, 170 insertions(+), 59 deletions(-) create mode 100644 WorkStation.Server/Context/Entity/BaseEntity.cs create mode 100644 WorkStation.Server/Context/Entity/User.cs create mode 100644 WorkStation.Server/Context/MyDbContext.cs create mode 100644 WorkStation.Server/Context/Repository/UserRepository.cs create mode 100644 WorkStation.Server/Controllers/UserController.cs delete mode 100644 WorkStation.Server/Controllers/WeatherForecastController.cs create mode 100644 WorkStation.Server/Services/IBaseSerivice.cs create mode 100644 WorkStation.Server/Services/IUserService.cs create mode 100644 WorkStation.Server/Services/UserService.cs delete mode 100644 WorkStation.Server/WeatherForecast.cs create mode 100644 WorkStation.Share/ApiResponse.cs delete mode 100644 WorkStation.Share/Class1.cs diff --git a/WorkStation.Client/App.xaml.cs b/WorkStation.Client/App.xaml.cs index 1df9d57..070e9e7 100644 --- a/WorkStation.Client/App.xaml.cs +++ b/WorkStation.Client/App.xaml.cs @@ -18,19 +18,24 @@ namespace WorkStation.Client } protected override void OnInitialized() { + + // 从依赖注入容器中解析出 IDialogService 实例(用于显示对话框) var dialogService = Container.Resolve(); + + // 显示登录对话框("LoginView" 是注册的视图名称) dialogService.ShowDialog("LoginView", result => { + // 当对话框返回结果为 "OK" 时(例如用户点击了“登录”按钮) if (result.Result == ButtonResult.OK) { + // 调用基类的 OnInitialized 方法,继续执行应用程序初始化逻辑 base.OnInitialized(); } }); - - } protected override void RegisterTypes(IContainerRegistry containerRegistry) { + //注册登录弹窗 containerRegistry.RegisterDialog(); } } diff --git a/WorkStation.Client/ViewModels/Dialogs/LoginViewModel.cs b/WorkStation.Client/ViewModels/Dialogs/LoginViewModel.cs index 2c4a25c..ff0299c 100644 --- a/WorkStation.Client/ViewModels/Dialogs/LoginViewModel.cs +++ b/WorkStation.Client/ViewModels/Dialogs/LoginViewModel.cs @@ -45,7 +45,7 @@ namespace WorkStation.Client.ViewModels.Dialogs private bool _isSuccess = false; /// - /// 登录名利 + /// 登录命令 /// public DelegateCommand LoginCommand { get; set; } diff --git a/WorkStation.Server/Context/Entity/BaseEntity.cs b/WorkStation.Server/Context/Entity/BaseEntity.cs new file mode 100644 index 0000000..3d13c75 --- /dev/null +++ b/WorkStation.Server/Context/Entity/BaseEntity.cs @@ -0,0 +1,9 @@ +namespace WorkStation.Server.Context.Entity +{ + public class BaseEntity + { + public int Id { get; set; } + public DateTime CreateTime { get; set; } + public DateTime UpdateTime { get; set; } + } +} diff --git a/WorkStation.Server/Context/Entity/User.cs b/WorkStation.Server/Context/Entity/User.cs new file mode 100644 index 0000000..135e9c3 --- /dev/null +++ b/WorkStation.Server/Context/Entity/User.cs @@ -0,0 +1,8 @@ +namespace WorkStation.Server.Context.Entity +{ + public class User : BaseEntity + { + public string? Account { get; set; } + public string? Password { get; set; } + } +} diff --git a/WorkStation.Server/Context/MyDbContext.cs b/WorkStation.Server/Context/MyDbContext.cs new file mode 100644 index 0000000..ee4b3fa --- /dev/null +++ b/WorkStation.Server/Context/MyDbContext.cs @@ -0,0 +1,10 @@ +using Microsoft.EntityFrameworkCore; +using WorkStation.Server.Context.Entity; + +namespace WorkStation.Server.Context +{ + public class MyDbContext(DbContextOptions options) : DbContext(options) + { + public DbSet Users { get; set; } + } +} diff --git a/WorkStation.Server/Context/Repository/UserRepository.cs b/WorkStation.Server/Context/Repository/UserRepository.cs new file mode 100644 index 0000000..b3616e2 --- /dev/null +++ b/WorkStation.Server/Context/Repository/UserRepository.cs @@ -0,0 +1,9 @@ +using Arch.EntityFrameworkCore.UnitOfWork; +using WorkStation.Server.Context.Entity; + +namespace WorkStation.Server.Context.Repository +{ + public class UserRepository(MyDbContext context) : Repository(context), IRepository + { + } +} diff --git a/WorkStation.Server/Controllers/UserController.cs b/WorkStation.Server/Controllers/UserController.cs new file mode 100644 index 0000000..932b347 --- /dev/null +++ b/WorkStation.Server/Controllers/UserController.cs @@ -0,0 +1,17 @@ +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using WorkStation.Server.Context.Entity; +using WorkStation.Server.Services; +using WorkStation.Share; + +namespace WorkStation.Server.Controllers +{ + [Route("api/[controller]/[action]")] + [ApiController] + public class UserController(IUserService service) : ControllerBase + { + private readonly IUserService _service = service; + [HttpPost] + public Task Add(User item) => _service.AddAsync(item); + } +} diff --git a/WorkStation.Server/Controllers/WeatherForecastController.cs b/WorkStation.Server/Controllers/WeatherForecastController.cs deleted file mode 100644 index 73e46d6..0000000 --- a/WorkStation.Server/Controllers/WeatherForecastController.cs +++ /dev/null @@ -1,33 +0,0 @@ -using Microsoft.AspNetCore.Mvc; - -namespace WorkStation.Server.Controllers -{ - [ApiController] - [Route("[controller]")] - public class WeatherForecastController : ControllerBase - { - private static readonly string[] Summaries = new[] - { - "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" - }; - - private readonly ILogger _logger; - - public WeatherForecastController(ILogger logger) - { - _logger = logger; - } - - [HttpGet(Name = "GetWeatherForecast")] - public IEnumerable Get() - { - return Enumerable.Range(1, 5).Select(index => new WeatherForecast - { - Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)), - TemperatureC = Random.Shared.Next(-20, 55), - Summary = Summaries[Random.Shared.Next(Summaries.Length)] - }) - .ToArray(); - } - } -} diff --git a/WorkStation.Server/Program.cs b/WorkStation.Server/Program.cs index 48863a6..eed867c 100644 --- a/WorkStation.Server/Program.cs +++ b/WorkStation.Server/Program.cs @@ -1,7 +1,22 @@ +using Arch.EntityFrameworkCore.UnitOfWork; +using Microsoft.EntityFrameworkCore; +using WorkStation.Server.Context; +using WorkStation.Server.Context.Entity; +using WorkStation.Server.Context.Repository; +using WorkStation.Server.Services; + var builder = WebApplication.CreateBuilder(args); -// Add services to the container. +// Add services to the container. +var connectionString = builder.Configuration.GetConnectionString("MySQLConnection"); +builder.Services.AddDbContext(options => +{ + options.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString)); +}); +builder.Services.AddUnitOfWork(); +builder.Services.AddCustomRepository(); +builder.Services.AddTransient(); builder.Services.AddControllers(); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); @@ -9,6 +24,7 @@ builder.Services.AddSwaggerGen(); var app = builder.Build(); + // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { diff --git a/WorkStation.Server/Services/IBaseSerivice.cs b/WorkStation.Server/Services/IBaseSerivice.cs new file mode 100644 index 0000000..967fe9d --- /dev/null +++ b/WorkStation.Server/Services/IBaseSerivice.cs @@ -0,0 +1,14 @@ +using WorkStation.Share; + +namespace WorkStation.Server.Services +{ + public interface IBaseSerivice + { + Task AddAsync(T item); + Task DelateAsync(int id); + Task UpdateAsync(T item); + Task GetByIdAsync(int id); + Task GetAllAsync(); + + } +} diff --git a/WorkStation.Server/Services/IUserService.cs b/WorkStation.Server/Services/IUserService.cs new file mode 100644 index 0000000..91abc3f --- /dev/null +++ b/WorkStation.Server/Services/IUserService.cs @@ -0,0 +1,9 @@ +using WorkStation.Server.Context.Entity; + +namespace WorkStation.Server.Services +{ + public interface IUserService : IBaseSerivice + { + + } +} diff --git a/WorkStation.Server/Services/UserService.cs b/WorkStation.Server/Services/UserService.cs new file mode 100644 index 0000000..6b55af1 --- /dev/null +++ b/WorkStation.Server/Services/UserService.cs @@ -0,0 +1,38 @@ +using Arch.EntityFrameworkCore.UnitOfWork; +using WorkStation.Server.Context.Entity; +using WorkStation.Share; + +namespace WorkStation.Server.Services +{ + public class UserService(IUnitOfWork unitOfWork) : IUserService + { + private IUnitOfWork _unitOfWork = unitOfWork; + public async Task AddAsync(User item) + { + var repository = _unitOfWork.GetRepository(); + await repository.InsertAsync(item); + var count = await _unitOfWork.SaveChangesAsync(); + return new ApiResponse(true, "添加数据", count); + } + + public Task DelateAsync(int id) + { + throw new NotImplementedException(); + } + + public Task GetAllAsync() + { + throw new NotImplementedException(); + } + + public Task GetByIdAsync(int id) + { + throw new NotImplementedException(); + } + + public Task UpdateAsync(User item) + { + throw new NotImplementedException(); + } + } +} diff --git a/WorkStation.Server/WeatherForecast.cs b/WorkStation.Server/WeatherForecast.cs deleted file mode 100644 index 55d094d..0000000 --- a/WorkStation.Server/WeatherForecast.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace WorkStation.Server -{ - public class WeatherForecast - { - public DateOnly Date { get; set; } - - public int TemperatureC { get; set; } - - public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); - - public string? Summary { get; set; } - } -} diff --git a/WorkStation.Server/WorkStation.Server.csproj b/WorkStation.Server/WorkStation.Server.csproj index 5419ef0..fc4bff3 100644 --- a/WorkStation.Server/WorkStation.Server.csproj +++ b/WorkStation.Server/WorkStation.Server.csproj @@ -1,4 +1,4 @@ - + net8.0 @@ -7,7 +7,18 @@ + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + diff --git a/WorkStation.Server/appsettings.json b/WorkStation.Server/appsettings.json index 10f68b8..49689dc 100644 --- a/WorkStation.Server/appsettings.json +++ b/WorkStation.Server/appsettings.json @@ -5,5 +5,8 @@ "Microsoft.AspNetCore": "Warning" } }, - "AllowedHosts": "*" + "AllowedHosts": "*", + "ConnectionStrings": { + "MySQLConnection": "server=106.14.189.125;Database=WorkStationDB;User=root;Password=Mysql!950307" + } } diff --git a/WorkStation.Share/ApiResponse.cs b/WorkStation.Share/ApiResponse.cs new file mode 100644 index 0000000..647b705 --- /dev/null +++ b/WorkStation.Share/ApiResponse.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WorkStation.Share +{ + public class ApiResponse(bool success, string? message, object? data) + { + public bool Success { get; set; } = success; + public string? Message { get; set; } = message; + public object? Data { get; set; } = data; + } +} diff --git a/WorkStation.Share/Class1.cs b/WorkStation.Share/Class1.cs deleted file mode 100644 index 310e2d1..0000000 --- a/WorkStation.Share/Class1.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace WorkStation.Share -{ - public class Class1 - { - - } -}