using ATS.Models; using ATS.Windows; using MahApps.Metro.Controls; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Text.Json; using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; using Path = System.IO.Path; namespace ATS.Windows { /// /// Login.xaml 的交互逻辑 /// public partial class Login : MetroWindow { public List UserList { get; set; } = new List(); private readonly string filePath = Path.Combine(SystemConfig.Instance.SystemPath, "Users.json"); public Login() { InitializeComponent(); FindUsersByJson(); } //查询用户列表 public void FindUsersByJson() { if (File.Exists(filePath)) { string listStr = File.ReadAllText(filePath); //反序列化 UserList = JsonSerializer.Deserialize>(listStr)!; } else { UserList = []; UserList.Add(new() { UserName = "超级管理员", UserId = Guid.NewGuid(), PassWord = "admin", Role = 2 }); string listStr = JsonSerializer.Serialize(UserList, new JsonSerializerOptions { WriteIndented = true }); File.WriteAllText(filePath, listStr); } } private void LoginClick(object sender, RoutedEventArgs e) { if (!Regex.IsMatch(nameBox.Text, @"^[^\s\u4e00-\u9fa5]+$") || !Regex.IsMatch(pwdBox.Password, @"^[^\s\u4e00-\u9fa5]+$")) { MessageBox.Show("请输入正确格式的账号或密码"); return; } UserModel? userInfo = UserList.Where(item => item.UserAccount == nameBox.Text && item.PassWord == pwdBox.Password).FirstOrDefault(); if (userInfo != null) { userInfo.LoginCount += 1; userInfo.LoginTime = DateTime.Now; //保存文件 string listStr = JsonSerializer.Serialize(UserList, new JsonSerializerOptions { WriteIndented = true }); File.WriteAllText(filePath, listStr); new MainWindow(userInfo).Show(); this.Close(); } else { MessageBox.Show("用户名或密码错误"); } } private void Login_PreviewKeyDown(object sender, KeyEventArgs e) { if (e.Key == Key.Enter) { LoginClick(sender, e); } } } }