155 lines
5.3 KiB
C#
155 lines
5.3 KiB
C#
using BDU.Models;
|
|
using DocumentFormat.OpenXml.Spreadsheet;
|
|
using MahApps.Metro.Controls;
|
|
using PropertyChanged;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.ObjectModel;
|
|
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.Navigation;
|
|
using System.Windows.Shapes;
|
|
using Path = System.IO.Path;
|
|
|
|
namespace BDU.Windows
|
|
{
|
|
/// <summary>
|
|
/// UsersManage.xaml 的交互逻辑
|
|
/// </summary>
|
|
[AddINotifyPropertyChangedInterface]
|
|
public partial class UsersManage : MetroWindow
|
|
{
|
|
public ObservableCollection<UserModel> UserList { get; set; }
|
|
|
|
public UserModel SelectedUser { get; set; } = new();
|
|
|
|
private readonly string filePath = Path.Combine(SystemConfig.Instance.SystemPath, "Users.json");
|
|
|
|
public UsersManage()
|
|
{
|
|
InitializeComponent();
|
|
this.DataContext = this;
|
|
LoadUserJson();
|
|
}
|
|
|
|
protected override void OnClosed(EventArgs e)
|
|
{
|
|
string listStr = JsonSerializer.Serialize(UserList, new JsonSerializerOptions { WriteIndented = true });
|
|
File.WriteAllText(filePath, listStr);
|
|
base.OnClosed(e);
|
|
}
|
|
|
|
private void AddUserClick(object sender, RoutedEventArgs e)
|
|
{
|
|
UserSettingWindow tmp = new();
|
|
tmp.ShowDialog();
|
|
var userFind = UserList.FirstOrDefault(x => x.UserAccount == tmp.UserInfo.UserAccount);
|
|
if (userFind != null && userFind.UserId != tmp.UserInfo.UserId)
|
|
{
|
|
MessageBox.Show("用户添加失败:账号已存在");
|
|
return;
|
|
}
|
|
if (tmp.IsSave)
|
|
{
|
|
UserList.Add(tmp.UserInfo);
|
|
}
|
|
}
|
|
|
|
//反序列化用户列表
|
|
public void LoadUserJson()
|
|
{
|
|
if (File.Exists(filePath))
|
|
{
|
|
// 反序列化用户列表
|
|
string json = File.ReadAllText(filePath, Encoding.UTF8);
|
|
// 移除 /* 多行注释 */
|
|
json = Regex.Replace(json, @"/\*.*?\*/", "", RegexOptions.Singleline);
|
|
var list = JsonSerializer.Deserialize<List<UserModel>>(json);
|
|
UserList = new ObservableCollection<UserModel>(list!);
|
|
}
|
|
else
|
|
{
|
|
UserList = [];
|
|
UserList.Add(new()
|
|
{
|
|
UserName = "超级管理员",
|
|
UserAccount = "admin",
|
|
PassWord = "admin",
|
|
Role = 2
|
|
});
|
|
string listStr = JsonSerializer.Serialize(UserList, new JsonSerializerOptions { WriteIndented = true });
|
|
File.WriteAllText(filePath, listStr);
|
|
}
|
|
}
|
|
|
|
private void DelUserClick(object sender, RoutedEventArgs e)
|
|
{
|
|
if (userTable.SelectedItems.Count < 1)
|
|
{
|
|
MessageBox.Show("请选择至少一名用户!", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
|
|
return;
|
|
}
|
|
MessageBoxResult result = MessageBox.Show($"确定执行删除操作?", "提示", MessageBoxButton.YesNo, MessageBoxImage.Question);
|
|
if (result == MessageBoxResult.Yes)
|
|
{
|
|
List<UserModel> deleteUsers = [];
|
|
foreach (var item in userTable.SelectedItems)
|
|
{
|
|
if (item is UserModel user)
|
|
{
|
|
deleteUsers.Add(user);
|
|
}
|
|
}
|
|
foreach (var deleteUser in deleteUsers)
|
|
{
|
|
UserList.Remove(deleteUser);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
private void GroupBox_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
|
|
{
|
|
if (e.ChangedButton == MouseButton.Left) DragMove();
|
|
}
|
|
|
|
private void EditUserClick(object sender, RoutedEventArgs e)
|
|
{
|
|
if (userTable.SelectedItems.Count != 1)
|
|
{
|
|
MessageBox.Show("请选择一名用户!", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
|
|
return;
|
|
}
|
|
if (userTable.SelectedItem is UserModel user)
|
|
{
|
|
var tmp = new UserSettingWindow(new(user));
|
|
tmp.ShowDialog();
|
|
var userFind = UserList.FirstOrDefault(x => x.UserAccount == tmp.UserInfo.UserAccount);
|
|
if (userFind != null && userFind.UserId != tmp.UserInfo.UserId)
|
|
{
|
|
MessageBox.Show("用户添加失败:账号已存在");
|
|
return;
|
|
}
|
|
if (tmp.IsSave)
|
|
{
|
|
userFind!.UserName = tmp.UserInfo.UserName;
|
|
userFind!.PassWord = tmp.UserInfo.PassWord;
|
|
userFind!.LoginCount = tmp.UserInfo.LoginCount;
|
|
userFind!.Role = tmp.UserInfo.Role;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|