From 2fc06708ddc52389a76de806d3425debaa56d7ba Mon Sep 17 00:00:00 2001 From: tanglong <842690096@qq.com> Date: Tue, 13 Jan 2026 12:21:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AiSportsMicrospaceDB/Entities/BasicConfig.cs | 39 ++++- .../Entities/DeviceAssocSchool.cs | 41 +++++ .../Entities/JumpLongPoints.cs | 19 ++- AiSportsMicrospaceDB/Entities/Point.cs | 2 + .../Entities/SixGroupPoints.cs | 34 +++- Wpf_AiSportsMicrospace/App.xaml.cs | 158 +++++++++--------- Wpf_AiSportsMicrospace/Common/AppSettings.cs | 17 +- .../PublishProfiles/FolderProfile.pubxml | 3 +- Wpf_AiSportsMicrospace/Views/Home.xaml.cs | 48 +++++- .../Views/JumpLong/StandingLeap.xaml.cs | 5 +- .../Views/JumpRope/GroupJumpRope.xaml.cs | 9 +- .../Views/JumpRope/MusicJumpRope.xaml.cs | 5 +- .../Views/JumpingJack/BambooDragonfly.xaml.cs | 9 +- .../Views/Setting/LongSetting.xaml.cs | 7 +- .../Views/SquatFu/WhackAMole.xaml.cs | 9 +- .../Wpf_AiSportsMicrospace.csproj | 2 +- Wpf_AiSportsMicrospace/appsettings.json | 7 +- 17 files changed, 292 insertions(+), 122 deletions(-) create mode 100644 AiSportsMicrospaceDB/Entities/DeviceAssocSchool.cs diff --git a/AiSportsMicrospaceDB/Entities/BasicConfig.cs b/AiSportsMicrospaceDB/Entities/BasicConfig.cs index ed40770..6771b82 100644 --- a/AiSportsMicrospaceDB/Entities/BasicConfig.cs +++ b/AiSportsMicrospaceDB/Entities/BasicConfig.cs @@ -1,18 +1,55 @@ -using System; +using Microsoft.EntityFrameworkCore; +using System; using System.Collections; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AiSportsMicrospaceDB.Entities { + [Table("BasicConfig")] public class BasicConfig { + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + [Display(Description = "主键Id")] + [Comment("Id")] // ✅ 主键 public int Id { get; set; } + + /// + ///设备编号 + /// + [Display(Name = "设备编号")] + [Comment("设备编号")] + [Column(TypeName = "nvarchar(100)")] + public string Code { get; set; } + + /// + ///摄像头地址 + /// + [Display(Name = "摄像头地址")] + [Comment("摄像头地址")] + [Column(TypeName = "nvarchar(100)")] public string Host { get; set; } + + /// + ///用户名 + /// + [Display(Name = "用户名")] + [Comment("用户名")] + [Column(TypeName = "nvarchar(20)")] public string UserName { get; set; } + + /// + ///密码 + /// + [Display(Name = "密码")] + [Comment("密码")] + [Column(TypeName = "nvarchar(20)")] public string Password { get; set; } } } diff --git a/AiSportsMicrospaceDB/Entities/DeviceAssocSchool.cs b/AiSportsMicrospaceDB/Entities/DeviceAssocSchool.cs new file mode 100644 index 0000000..a934ffd --- /dev/null +++ b/AiSportsMicrospaceDB/Entities/DeviceAssocSchool.cs @@ -0,0 +1,41 @@ +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AiSportsMicrospaceDB.Entities +{ + /// + /// 设备学校绑定 + /// + [Table("DeviceAssocSchool")] + public class DeviceAssocSchool + { + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + [Display(Description = "主键Id")] + [Comment("Id")] + // ✅ 主键 + public int Id { get; set; } + + /// + ///学校编号 + /// + [Display(Name = "学校编号")] + [Comment("学校编号")] + [Column(TypeName = "nvarchar(100)")] + public string SchoolCode { get; set; } + + /// + ///设备编号 + /// + [Display(Name = "设备编号")] + [Comment("设备编号")] + [Column(TypeName = "nvarchar(100)")] + public string Code { get; set; } + } +} diff --git a/AiSportsMicrospaceDB/Entities/JumpLongPoints.cs b/AiSportsMicrospaceDB/Entities/JumpLongPoints.cs index c3e5bad..b5eed68 100644 --- a/AiSportsMicrospaceDB/Entities/JumpLongPoints.cs +++ b/AiSportsMicrospaceDB/Entities/JumpLongPoints.cs @@ -2,6 +2,8 @@ using System; using System.Collections; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -9,9 +11,21 @@ using System.Threading.Tasks; namespace AiSportsMicrospaceDB.Entities { + [Table("JumpLongPoints")] public class JumpLongPoints { - // ✅ 主键 + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + [Display(Description = "主键Id")] + [Comment("Id")] public int Id { get; set; } + + /// + ///设备编号 + /// + [Display(Name = "设备编号")] + [Comment("设备编号")] + [Column(TypeName = "nvarchar(100)")] + public string Code { get; set; } public Point TopPoint1 { get; set; } public Point TopPoint2 { get; set; } public Point TopPoint3 { get; set; } @@ -19,7 +33,4 @@ namespace AiSportsMicrospaceDB.Entities public Point BottomPoint2 { get; set; } public Point BottomPoint3 { get; set; } } - - - } diff --git a/AiSportsMicrospaceDB/Entities/Point.cs b/AiSportsMicrospaceDB/Entities/Point.cs index 087d7b7..f367862 100644 --- a/AiSportsMicrospaceDB/Entities/Point.cs +++ b/AiSportsMicrospaceDB/Entities/Point.cs @@ -1,6 +1,8 @@ using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; diff --git a/AiSportsMicrospaceDB/Entities/SixGroupPoints.cs b/AiSportsMicrospaceDB/Entities/SixGroupPoints.cs index 5100e5d..710df43 100644 --- a/AiSportsMicrospaceDB/Entities/SixGroupPoints.cs +++ b/AiSportsMicrospaceDB/Entities/SixGroupPoints.cs @@ -2,6 +2,8 @@ using System; using System.Collections; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -9,15 +11,31 @@ using System.Threading.Tasks; namespace AiSportsMicrospaceDB.Entities { + [Table("SixGroupPoints")] public class SixGroupPoints { - // ✅ 主键 + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + [Display(Description = "主键Id")] + [Comment("Id")] public int Id { get; set; } - public Point point1 { get; set; } - public Point point2 { get; set; } - public Point point3 { get; set; } - public Point point4 { get; set; } - public Point point5 { get; set; } - public Point point6 { get; set; } - } + /// + ///设备编号 + /// + [Display(Name = "设备编号")] + [Comment("设备编号")] + [Column(TypeName = "nvarchar(100)")] + public string Code { get; set; } + + public Point Point1 { get; set; } + public Point Point2 { get; set; } + public Point Point3 { get; set; } + public Point Point4 { get; set; } + public Point Point5 { get; set; } + public Point Point6 { get; set; } + public Point? Point7 { get; set; } + public Point? Point8 { get; set; } + public Point? Point9 { get; set; } + public Point? Point10 { get; set; } + } } diff --git a/Wpf_AiSportsMicrospace/App.xaml.cs b/Wpf_AiSportsMicrospace/App.xaml.cs index 34d90c6..43b6688 100644 --- a/Wpf_AiSportsMicrospace/App.xaml.cs +++ b/Wpf_AiSportsMicrospace/App.xaml.cs @@ -1,5 +1,5 @@ using AiSportsMicrospaceDB.DBContext; -using Microsoft.Data.Sqlite; +using Common; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -32,6 +32,9 @@ public partial class App : Application DebugTracker.Channels.Add(new DiagnosisDebugTrackChannel()); #endif + base.OnStartup(e); + + // 创建 Host AppHost = Host.CreateDefaultBuilder() .ConfigureAppConfiguration((context, config) => { @@ -40,81 +43,86 @@ public partial class App : Application }) .ConfigureServices((context, services) => { + // 读取数据库连接 var connectionString = context.Configuration.GetConnectionString("DefaultConnection"); services.AddDbContext(options => - options.UseSqlite(connectionString)); + options.UseSqlServer(connectionString)); - //services.AddSingleton(); + // 初始化全局配置 + AppSettings.Init(context.Configuration); + + // 注入 MainWindow services.AddSingleton
(); + + var SSS = AppSettings.SchoolCode; }) .Build(); + // 启动 Host AppHost.Start(); - using (var scope = AppHost.Services.CreateScope()) - { - var db = scope.ServiceProvider.GetRequiredService(); - //db.Database.EnsureDeleted(); // 删除数据库和表 - db.Database.EnsureCreated(); - //db.Database.ExecuteSqlRaw("DROP TABLE [JumpLongPoints]"); - if (!db.SixGroupPoints.Any()) - { - db.SixGroupPoints.Add(new AiSportsMicrospaceDB.Entities.SixGroupPoints - { - Id = 1, - point1 = new AiSportsMicrospaceDB.Entities.Point { X = 0.21, Y = 0.88 }, - point2 = new AiSportsMicrospaceDB.Entities.Point { X = 0.36, Y = 0.58 }, - point3 = new AiSportsMicrospaceDB.Entities.Point { X = 0.50, Y = 0.88 }, - point4 = new AiSportsMicrospaceDB.Entities.Point { X = 0.64, Y = 0.58 }, - point5 = new AiSportsMicrospaceDB.Entities.Point { X = 0.78, Y = 0.88 }, - point6 = new AiSportsMicrospaceDB.Entities.Point { X = 0.92, Y = 0.58 } - }); - db.SaveChanges(); - } + //using (var scope = AppHost.Services.CreateScope()) + //{ + // var db = scope.ServiceProvider.GetRequiredService(); + // //db.Database.EnsureDeleted(); // 删除数据库和表 + // db.Database.EnsureCreated(); + // //db.Database.ExecuteSqlRaw("DROP TABLE [JumpLongPoints]"); + // if (!db.SixGroupPoints.Any()) + // { + // db.SixGroupPoints.Add(new AiSportsMicrospaceDB.Entities.SixGroupPoints + // { + // Id = 1, + // Point1 = new AiSportsMicrospaceDB.Entities.Point { X = 0.21, Y = 0.88 }, + // Point2 = new AiSportsMicrospaceDB.Entities.Point { X = 0.36, Y = 0.58 }, + // Point3 = new AiSportsMicrospaceDB.Entities.Point { X = 0.50, Y = 0.88 }, + // Point4 = new AiSportsMicrospaceDB.Entities.Point { X = 0.64, Y = 0.58 }, + // Point5 = new AiSportsMicrospaceDB.Entities.Point { X = 0.78, Y = 0.88 }, + // Point6 = new AiSportsMicrospaceDB.Entities.Point { X = 0.92, Y = 0.58 } + // }); + // db.SaveChanges(); + // } - if (!CheckTableExists(db , "JumpLongPoints")) - { - var createTableSql = @" - CREATE TABLE IF NOT EXISTS JumpLongPoints ( - Id INTEGER PRIMARY KEY, - TopPoint1_X TEXT NOT NULL, - TopPoint2_X TEXT NOT NULL, - TopPoint3_X TEXT NOT NULL, - BottomPoint1_X TEXT NOT NULL, - BottomPoint2_X TEXT NOT NULL, - BottomPoint3_X TEXT NOT NULL, - TopPoint1_Y TEXT NOT NULL, - TopPoint2_Y TEXT NOT NULL, - TopPoint3_Y TEXT NOT NULL, - BottomPoint1_Y TEXT NOT NULL, - BottomPoint2_Y TEXT NOT NULL, - BottomPoint3_Y TEXT NOT NULL - )"; + // //if (!CheckTableExists(db , "JumpLongPoints")) + // //{ + // // var createTableSql = @" + // // CREATE TABLE IF NOT EXISTS JumpLongPoints ( + // // Id INTEGER PRIMARY KEY, + // // TopPoint1_X TEXT NOT NULL, + // // TopPoint2_X TEXT NOT NULL, + // // TopPoint3_X TEXT NOT NULL, + // // BottomPoint1_X TEXT NOT NULL, + // // BottomPoint2_X TEXT NOT NULL, + // // BottomPoint3_X TEXT NOT NULL, + // // TopPoint1_Y TEXT NOT NULL, + // // TopPoint2_Y TEXT NOT NULL, + // // TopPoint3_Y TEXT NOT NULL, + // // BottomPoint1_Y TEXT NOT NULL, + // // BottomPoint2_Y TEXT NOT NULL, + // // BottomPoint3_Y TEXT NOT NULL + // // )"; - db.Database.ExecuteSqlRaw(createTableSql); - } + // // db.Database.ExecuteSqlRaw(createTableSql); + // //} - if (!db.JumpLongPoints.Any()) - { - db.JumpLongPoints.Add(new AiSportsMicrospaceDB.Entities.JumpLongPoints - { - Id = 1, - TopPoint1 = new AiSportsMicrospaceDB.Entities.Point { X = 245, Y = 741 }, - TopPoint2 = new AiSportsMicrospaceDB.Entities.Point { X = 1498, Y = 730 }, - TopPoint3 = new AiSportsMicrospaceDB.Entities.Point { X = 1689, Y = 724 }, - BottomPoint1 = new AiSportsMicrospaceDB.Entities.Point { X = 191, Y = 918 }, - BottomPoint3 = new AiSportsMicrospaceDB.Entities.Point { X = 1722, Y = 909 }, - }); - db.SaveChanges(); - } - //var mainWindow = new MainWindow(db); - //mainWindow.Show(); - } + // if (!db.JumpLongPoints.Any()) + // { + // db.JumpLongPoints.Add(new AiSportsMicrospaceDB.Entities.JumpLongPoints + // { + // Id = 1, + // TopPoint1 = new AiSportsMicrospaceDB.Entities.Point { X = 245, Y = 741 }, + // TopPoint2 = new AiSportsMicrospaceDB.Entities.Point { X = 1498, Y = 730 }, + // TopPoint3 = new AiSportsMicrospaceDB.Entities.Point { X = 1689, Y = 724 }, + // BottomPoint1 = new AiSportsMicrospaceDB.Entities.Point { X = 191, Y = 918 }, + // BottomPoint3 = new AiSportsMicrospaceDB.Entities.Point { X = 1722, Y = 909 }, + // }); + // db.SaveChanges(); + // } + // //var mainWindow = new MainWindow(db); + // //mainWindow.Show(); + //} // 用 DI 创建窗口 - - var mainWin = AppHost.Services.GetRequiredService
(); Current.MainWindow = mainWin; mainWin.Show(); @@ -124,19 +132,19 @@ public partial class App : Application } - private bool CheckTableExists(AppDbContext dbContext , String name) - { - try - { - // 使用原始SQL检查表是否存在 - var sql = "SELECT count(*) FROM sqlite_master WHERE type='table' AND name=@name"; - var result = dbContext.Database.ExecuteSqlRaw(sql, new SqliteParameter("@name", name)); - return result > 0; - } - catch - { - return false; - } - } + //private bool CheckTableExists(AppDbContext dbContext , String name) + //{ + // try + // { + // // 使用原始SQL检查表是否存在 + // var sql = "SELECT count(*) FROM sqlite_master WHERE type='table' AND name=@name"; + // var result = dbContext.Database.ExecuteSqlRaw(sql, new SqlServerParameter("@name", name)); + // return result > 0; + // } + // catch + // { + // return false; + // } + //} } diff --git a/Wpf_AiSportsMicrospace/Common/AppSettings.cs b/Wpf_AiSportsMicrospace/Common/AppSettings.cs index ed5c9df..0551909 100644 --- a/Wpf_AiSportsMicrospace/Common/AppSettings.cs +++ b/Wpf_AiSportsMicrospace/Common/AppSettings.cs @@ -1,12 +1,23 @@ -using System; +using Microsoft.Extensions.Configuration; +using System; using System.Collections.Generic; +using System.Net.Sockets; using System.Text; namespace Common { public static class AppSettings { - public static string SchoolCode = "202501060001"; - public static string BackendUrl = "http://localhost:9991/api/StudentFace"; + public static string Code; + public static string SchoolCode; + public static string BackendUrl; + + + public static void Init(IConfiguration configuration) + { + Code = configuration["Code"] ?? ""; + SchoolCode = configuration["SchoolCode"] ?? ""; + BackendUrl = configuration["BackendUrl"] ?? ""; + } } } diff --git a/Wpf_AiSportsMicrospace/Properties/PublishProfiles/FolderProfile.pubxml b/Wpf_AiSportsMicrospace/Properties/PublishProfiles/FolderProfile.pubxml index 073a10d..303eda9 100644 --- a/Wpf_AiSportsMicrospace/Properties/PublishProfiles/FolderProfile.pubxml +++ b/Wpf_AiSportsMicrospace/Properties/PublishProfiles/FolderProfile.pubxml @@ -2,12 +2,11 @@ - Debug + Release Any CPU C:\Users\tangl\Desktop\exe FileSystem <_TargetId>Folder - net8.0-windows win-x64 false false diff --git a/Wpf_AiSportsMicrospace/Views/Home.xaml.cs b/Wpf_AiSportsMicrospace/Views/Home.xaml.cs index e29be72..086f95a 100644 --- a/Wpf_AiSportsMicrospace/Views/Home.xaml.cs +++ b/Wpf_AiSportsMicrospace/Views/Home.xaml.cs @@ -1,5 +1,6 @@ using AiSportsMicrospaceDB.DBContext; using AiSportsMicrospaceDB.Entities; +using Common; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using Microsoft.ML.Runtime; @@ -64,12 +65,25 @@ namespace Wpf_AiSportsMicrospace _adminClickCount = 0; _resetTimer.Stop(); }; - string projectRoot = Path.Combine(AppContext.BaseDirectory, @"..\..\.."); - string albumPath = Path.Combine(projectRoot, "Resources", "Img"); - - coverFlow.Images.Add(new CoverFlowItem { ImageUri = new Uri(Path.Combine(albumPath, "test_img/test_rope.png")), ProgressColor1 = "#215bc7", ProgressColor2 = "#fc640e" }); - coverFlow.Images.Add(new CoverFlowItem { ImageUri = new Uri(Path.Combine(albumPath, "play_img/play_music.png")), ProgressColor1 = "#e73d42", ProgressColor2 = "#fd8212" }); - coverFlow.Images.Add(new CoverFlowItem { ImageUri = new Uri(Path.Combine(albumPath, "Album/home_history.png")), ProgressColor1 = "#e73d42", ProgressColor2 = "#215bc7" }); + // --------------------- CoverFlow 加载 --------------------- + coverFlow.Images.Add(new CoverFlowItem + { + ImageUri = GetResourceUri("test_img/test_rope.png"), + ProgressColor1 = "#215bc7", + ProgressColor2 = "#fc640e" + }); + coverFlow.Images.Add(new CoverFlowItem + { + ImageUri = GetResourceUri("play_img/play_music.png"), + ProgressColor1 = "#e73d42", + ProgressColor2 = "#fd8212" + }); + coverFlow.Images.Add(new CoverFlowItem + { + ImageUri = GetResourceUri("Album/home_history.png"), + ProgressColor1 = "#e73d42", + ProgressColor2 = "#215bc7" + }); // 默认选中第3张 coverFlow.SelectedIndex = 0; @@ -274,7 +288,7 @@ namespace Wpf_AiSportsMicrospace var app = (App)Application.Current; using var scope = App.AppHost.Services.CreateScope(); var db = scope.ServiceProvider.GetRequiredService(); - var baseData = await db.BasicConfig.FirstOrDefaultAsync(); + var baseData = await db.BasicConfig.FirstOrDefaultAsync(x=>x.Code==AppSettings.Code); if (baseData == null) { baseData = new BasicConfig { Id = 1 , Host = host.Text , UserName = name.Text , Password = password.Text}; @@ -349,5 +363,25 @@ namespace Wpf_AiSportsMicrospace else this.ShowError($"与相机通信失败,错误:{reply.Status}。"); } + + // 辅助方法:获取资源绝对 Uri,兼容 Debug 和 发布 + private static Uri GetResourceUri(string relativePath) + { + string baseDir = AppContext.BaseDirectory; + + // 发布目录下路径 + string fullPath = Path.Combine(baseDir, "Resources", "Img", relativePath.Replace("/", Path.DirectorySeparatorChar.ToString())); + + if (!File.Exists(fullPath)) + { +#if DEBUG + // Debug 下 fallback 到项目根目录 + string projectRoot = Path.Combine(baseDir, @"..\..\.."); + fullPath = Path.Combine(projectRoot, "Resources", "Img", relativePath.Replace("/", Path.DirectorySeparatorChar.ToString())); +#endif + } + + return new Uri(fullPath, UriKind.Absolute); + } } } diff --git a/Wpf_AiSportsMicrospace/Views/JumpLong/StandingLeap.xaml.cs b/Wpf_AiSportsMicrospace/Views/JumpLong/StandingLeap.xaml.cs index 8bfa1de..db719ca 100644 --- a/Wpf_AiSportsMicrospace/Views/JumpLong/StandingLeap.xaml.cs +++ b/Wpf_AiSportsMicrospace/Views/JumpLong/StandingLeap.xaml.cs @@ -1,4 +1,5 @@ using AiSportsMicrospaceDB.DBContext; +using Common; using Dto; using Enum; using Microsoft.Extensions.DependencyInjection; @@ -262,7 +263,7 @@ namespace Views.JumpLong { countDown.Text = i.ToString() + "s"; - if(i == 8) + if (i == 8) { centerImg4.Visibility = Visibility.Hidden; centerImg3.Visibility = Visibility.Visible; @@ -300,7 +301,7 @@ namespace Views.JumpLong var app = (App)Application.Current; using var scope = App.AppHost.Services.CreateScope(); var db = scope.ServiceProvider.GetRequiredService(); - var points = db.JumpLongPoints.FirstOrDefault(); + var points = db.JumpLongPoints.FirstOrDefault(x => x.Code == AppSettings.Code); var boxes = new List() { new(){ diff --git a/Wpf_AiSportsMicrospace/Views/JumpRope/GroupJumpRope.xaml.cs b/Wpf_AiSportsMicrospace/Views/JumpRope/GroupJumpRope.xaml.cs index 6658b7e..9d1e7f7 100644 --- a/Wpf_AiSportsMicrospace/Views/JumpRope/GroupJumpRope.xaml.cs +++ b/Wpf_AiSportsMicrospace/Views/JumpRope/GroupJumpRope.xaml.cs @@ -1,4 +1,5 @@ using AiSportsMicrospaceDB.DBContext; +using Common; using Dto; using Emgu.CV.Flann; using Enum; @@ -79,13 +80,13 @@ namespace Wpf_AiSportsMicrospace.Views var app = (App)Application.Current; using var scope = App.AppHost.Services.CreateScope(); var db = scope.ServiceProvider.GetRequiredService(); - var cfg = await db.SixGroupPoints.FirstOrDefaultAsync(); + var cfg = await db.SixGroupPoints.FirstOrDefaultAsync(x=>x.Code==AppSettings.Code); //var pointlist = JsonSerializer.Deserialize>(cfg!.PointsJson); List<(double XNorm, double YNorm)> pointlist = - [(cfg.point1.X, cfg.point1.Y),(cfg.point2.X, cfg.point2.Y), - (cfg.point3.X, cfg.point3.Y), (cfg.point4.X, cfg.point4.Y), - (cfg.point5.X, cfg.point5.Y),(cfg.point6.X, cfg.point6.Y)]; + [(cfg.Point1.X, cfg.Point1.Y),(cfg.Point2.X, cfg.Point2.Y), + (cfg.Point3.X, cfg.Point3.Y), (cfg.Point4.X, cfg.Point4.Y), + (cfg.Point5.X, cfg.Point5.Y),(cfg.Point6.X, cfg.Point6.Y)]; _groupJumpRopeContext.CirclePositions = pointlist; DrawCirclesWithText(); diff --git a/Wpf_AiSportsMicrospace/Views/JumpRope/MusicJumpRope.xaml.cs b/Wpf_AiSportsMicrospace/Views/JumpRope/MusicJumpRope.xaml.cs index 2dde2a0..5285dc9 100644 --- a/Wpf_AiSportsMicrospace/Views/JumpRope/MusicJumpRope.xaml.cs +++ b/Wpf_AiSportsMicrospace/Views/JumpRope/MusicJumpRope.xaml.cs @@ -1,4 +1,5 @@ using AiSportsMicrospaceDB.DBContext; +using Common; using Dto; using Enum; using Microsoft.EntityFrameworkCore; @@ -86,10 +87,10 @@ namespace Wpf_AiSportsMicrospace.Views.JumpRope var app = (App)Application.Current; using var scope = App.AppHost.Services.CreateScope(); var db = scope.ServiceProvider.GetRequiredService(); - var cfg = await db.SixGroupPoints.FirstOrDefaultAsync(); + var cfg = await db.SixGroupPoints.FirstOrDefaultAsync(x => x.Code == AppSettings.Code); //var pointlist = JsonSerializer.Deserialize>(cfg!.PointsJson); - List<(double XNorm, double YNorm)> pointlist = [(cfg.point3.X, cfg.point3.Y),(cfg.point5.X, cfg.point5.Y)]; + List<(double XNorm, double YNorm)> pointlist = [(cfg.Point3.X, cfg.Point3.Y),(cfg.Point5.X, cfg.Point5.Y)]; _musicJumpRopeContext.UpdateCirclePositions(pointlist); } diff --git a/Wpf_AiSportsMicrospace/Views/JumpingJack/BambooDragonfly.xaml.cs b/Wpf_AiSportsMicrospace/Views/JumpingJack/BambooDragonfly.xaml.cs index 5af73be..916a2c9 100644 --- a/Wpf_AiSportsMicrospace/Views/JumpingJack/BambooDragonfly.xaml.cs +++ b/Wpf_AiSportsMicrospace/Views/JumpingJack/BambooDragonfly.xaml.cs @@ -1,4 +1,5 @@ using AiSportsMicrospaceDB.DBContext; +using Common; using Dto; using Enum; using Microsoft.EntityFrameworkCore; @@ -66,13 +67,13 @@ namespace Views.JumpingJack var app = (App)Application.Current; using var scope = App.AppHost.Services.CreateScope(); var db = scope.ServiceProvider.GetRequiredService(); - var cfg = await db.SixGroupPoints.FirstOrDefaultAsync(); + var cfg = await db.SixGroupPoints.FirstOrDefaultAsync(x => x.Code == AppSettings.Code); //var pointlist = JsonSerializer.Deserialize>(cfg!.PointsJson); List<(double XNorm, double YNorm)> pointlist = - [(cfg.point1.X, cfg.point1.Y),(cfg.point2.X, cfg.point2.Y), - (cfg.point3.X, cfg.point3.Y), (cfg.point4.X, cfg.point4.Y), - (cfg.point5.X, cfg.point5.Y),(cfg.point6.X, cfg.point6.Y)]; + [(cfg.Point1.X, cfg.Point1.Y),(cfg.Point2.X, cfg.Point2.Y), + (cfg.Point3.X, cfg.Point3.Y), (cfg.Point4.X, cfg.Point4.Y), + (cfg.Point5.X, cfg.Point5.Y),(cfg.Point6.X, cfg.Point6.Y)]; _groupJumpRopeContext.CirclePositions = pointlist; DrawCirclesWithText(); diff --git a/Wpf_AiSportsMicrospace/Views/Setting/LongSetting.xaml.cs b/Wpf_AiSportsMicrospace/Views/Setting/LongSetting.xaml.cs index 42a0733..108707c 100644 --- a/Wpf_AiSportsMicrospace/Views/Setting/LongSetting.xaml.cs +++ b/Wpf_AiSportsMicrospace/Views/Setting/LongSetting.xaml.cs @@ -1,5 +1,6 @@ using AiSportsMicrospaceDB.DBContext; using AiSportsMicrospaceDB.Entities; +using Common; using Emgu.CV.Reg; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; @@ -205,7 +206,8 @@ namespace Wpf_AiSportsMicrospace.Views var app = (App)Application.Current; using var scope = App.AppHost.Services.CreateScope(); var db = scope.ServiceProvider.GetRequiredService(); - var pointsData = db.JumpLongPoints.FirstOrDefault(); + var pointsData = db.JumpLongPoints.FirstOrDefault(x => x.Code == AppSettings.Code); + if (pointsData == null) { pointsData = new JumpLongPoints { Id = 1 }; @@ -376,7 +378,7 @@ namespace Wpf_AiSportsMicrospace.Views var app = (App)Application.Current; using var scope = App.AppHost.Services.CreateScope(); var db = scope.ServiceProvider.GetRequiredService(); - var pointsData = db.JumpLongPoints.FirstOrDefault(); + var pointsData = db.JumpLongPoints.FirstOrDefault(x => x.Code == AppSettings.Code); if (pointsData == null) { pointsData = new JumpLongPoints { Id = 1 }; @@ -384,7 +386,6 @@ namespace Wpf_AiSportsMicrospace.Views } var defaultPoints = new JumpLongPoints { - Id = 1, TopPoint1 = new AiSportsMicrospaceDB.Entities.Point { X = 245, Y = 741 }, TopPoint2 = new AiSportsMicrospaceDB.Entities.Point { X = 1498, Y = 730 }, TopPoint3 = new AiSportsMicrospaceDB.Entities.Point { X = 1689, Y = 724 }, diff --git a/Wpf_AiSportsMicrospace/Views/SquatFu/WhackAMole.xaml.cs b/Wpf_AiSportsMicrospace/Views/SquatFu/WhackAMole.xaml.cs index 8e52c88..9e589c1 100644 --- a/Wpf_AiSportsMicrospace/Views/SquatFu/WhackAMole.xaml.cs +++ b/Wpf_AiSportsMicrospace/Views/SquatFu/WhackAMole.xaml.cs @@ -1,4 +1,5 @@ using AiSportsMicrospaceDB.DBContext; +using Common; using Dto; using Enum; using Microsoft.EntityFrameworkCore; @@ -59,13 +60,13 @@ namespace Views.SquatFu var app = (App)Application.Current; using var scope = App.AppHost.Services.CreateScope(); var db = scope.ServiceProvider.GetRequiredService(); - var cfg = await db.SixGroupPoints.FirstOrDefaultAsync(); + var cfg = await db.SixGroupPoints.FirstOrDefaultAsync(x => x.Code == AppSettings.Code); //var pointlist = JsonSerializer.Deserialize>(cfg!.PointsJson); List<(double XNorm, double YNorm)> pointlist = - [(cfg.point1.X, cfg.point1.Y),(cfg.point2.X, cfg.point2.Y), - (cfg.point3.X, cfg.point3.Y), (cfg.point4.X, cfg.point4.Y), - (cfg.point5.X, cfg.point5.Y),(cfg.point6.X, cfg.point6.Y)]; + [(cfg.Point1.X, cfg.Point1.Y),(cfg.Point2.X, cfg.Point2.Y), + (cfg.Point3.X, cfg.Point3.Y), (cfg.Point4.X, cfg.Point4.Y), + (cfg.Point5.X, cfg.Point5.Y),(cfg.Point6.X, cfg.Point6.Y)]; _groupJumpRopeContext.CirclePositions = pointlist; DrawCirclesWithText(); diff --git a/Wpf_AiSportsMicrospace/Wpf_AiSportsMicrospace.csproj b/Wpf_AiSportsMicrospace/Wpf_AiSportsMicrospace.csproj index 1519f0d..2f2913c 100644 --- a/Wpf_AiSportsMicrospace/Wpf_AiSportsMicrospace.csproj +++ b/Wpf_AiSportsMicrospace/Wpf_AiSportsMicrospace.csproj @@ -224,7 +224,7 @@ - + diff --git a/Wpf_AiSportsMicrospace/appsettings.json b/Wpf_AiSportsMicrospace/appsettings.json index 877ad19..ccc2182 100644 --- a/Wpf_AiSportsMicrospace/appsettings.json +++ b/Wpf_AiSportsMicrospace/appsettings.json @@ -1,5 +1,8 @@ { "ConnectionStrings": { - "DefaultConnection": "Data Source=AiSportsMicrospaceDB.db" - } + "DefaultConnection": "Data Source=rm-uf64b8oxdt19pfyxfao.sqlserver.rds.aliyuncs.com;Database=AiSportsMicrospaceDB_QA;User ID=qa;Password=Admin@123;Connect Timeout=500;TrustServerCertificate=True;" + }, + "Code": "04-68-74-3F-87-72", + "SchoolCode": "202501060001", + "BackendUrl": "http://localhost:9991/api/StudentFace" } \ No newline at end of file