Files
FullAutoWaterCheck/全自动水压检测仪/Forms/UserManagerForm.cs
2026-01-26 18:47:27 +08:00

288 lines
10 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using .DATA;
namespace
{
public partial class UserManagerForm : Form
{
private UserRepository _userRepository;
private List<User> _users;
public UserManagerForm()
{
InitializeComponent();
_userRepository = new UserRepository();
}
/// <summary>
/// 窗体加载事件
/// </summary>
private void UserManagerForm_Load(object sender, EventArgs e)
{
LoadUsers();
}
/// <summary>
/// 加载用户列表
/// </summary>
private void LoadUsers()
{
try
{
_users = _userRepository.GetAllUsers();
// 配置 DataGridView 列
dgvUsers.Columns.Clear();
dgvUsers.AutoGenerateColumns = false;
dgvUsers.Columns.Add(new DataGridViewTextBoxColumn
{
DataPropertyName = "Id",
HeaderText = "ID",
Visible = false
});
dgvUsers.Columns.Add(new DataGridViewTextBoxColumn
{
DataPropertyName = "Username",
HeaderText = "用户名"
});
dgvUsers.Columns.Add(new DataGridViewTextBoxColumn
{
DataPropertyName = "UserRole",
HeaderText = "角色"
});
dgvUsers.Columns.Add(new DataGridViewTextBoxColumn
{
DataPropertyName = "Status",
HeaderText = "状态"
});
dgvUsers.Columns.Add(new DataGridViewTextBoxColumn
{
DataPropertyName = "CreateTime",
HeaderText = "创建时间",
DefaultCellStyle = new DataGridViewCellStyle { Format = "yyyy-MM-dd HH:mm:ss" }
});
dgvUsers.Columns.Add(new DataGridViewTextBoxColumn
{
DataPropertyName = "LastLoginTime",
HeaderText = "最后登录时间",
DefaultCellStyle = new DataGridViewCellStyle { Format = "yyyy-MM-dd HH:mm:ss", NullValue = "" }
});
// 绑定数据
var displayData = _users.Select(u => new
{
u.Id,
u.Username,
UserRole = u.UserRole == 1 ? "管理员" : "普通用户",
Status = u.Status == 1 ? "启用" : "禁用",
u.CreateTime,
LastLoginTime = u.LastLoginTime.HasValue ? u.LastLoginTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : ""
}).ToList();
dgvUsers.DataSource = displayData;
}
catch (Exception ex)
{
MessageBox.Show($"加载用户列表失败:{ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
/// <summary>
/// 添加用户按钮
/// </summary>
private void btnAddUser_Click(object sender, EventArgs e)
{
var addUserForm = new UserEditForm();
if (addUserForm.ShowDialog() == DialogResult.OK)
{
LoadUsers();
MessageBox.Show("用户添加成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
/// <summary>
/// 编辑用户按钮
/// </summary>
private void btnEditUser_Click(object sender, EventArgs e)
{
if (dgvUsers.CurrentRow == null)
{
MessageBox.Show("请先选择要编辑的用户!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
int userId = Convert.ToInt32(dgvUsers.CurrentRow.Cells[0].Value);
User selectedUser = _userRepository.GetUserById(userId);
if (selectedUser == null)
{
MessageBox.Show("未找到用户信息!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
var editUserForm = new UserEditForm(selectedUser);
if (editUserForm.ShowDialog() == DialogResult.OK)
{
LoadUsers();
MessageBox.Show("用户信息更新成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
/// <summary>
/// 删除用户按钮
/// </summary>
private void btnDeleteUser_Click(object sender, EventArgs e)
{
if (dgvUsers.CurrentRow == null)
{
MessageBox.Show("请先选择要删除的用户!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
int userId = Convert.ToInt32(dgvUsers.CurrentRow.Cells[0].Value);
string username = dgvUsers.CurrentRow.Cells[1].Value.ToString();
if (userId == LoginData.CurrentUserId)
{
MessageBox.Show("不能删除当前登录的用户!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
if (MessageBox.Show($"确定要删除用户 {username} 吗?", "确认删除", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
try
{
if (_userRepository.DeleteUser(userId))
{
LoadUsers();
MessageBox.Show("用户删除成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("用户删除失败!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
catch (Exception ex)
{
MessageBox.Show($"删除用户失败:{ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
/// <summary>
/// 重置密码按钮
/// </summary>
private void btnResetPassword_Click(object sender, EventArgs e)
{
if (dgvUsers.CurrentRow == null)
{
MessageBox.Show("请先选择要重置密码的用户!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
int userId = Convert.ToInt32(dgvUsers.CurrentRow.Cells[0].Value);
string username = dgvUsers.CurrentRow.Cells[1].Value.ToString();
string newPassword = string.Empty;
using (var inputForm = new Form())
{
inputForm.Text = "重置密码";
inputForm.FormBorderStyle = FormBorderStyle.FixedDialog;
inputForm.StartPosition = FormStartPosition.CenterScreen;
inputForm.Size = new System.Drawing.Size(300, 150);
var label = new Label
{
Text = $"请输入 {username} 的新密码:",
Location = new System.Drawing.Point(10, 10),
Size = new System.Drawing.Size(280, 20)
};
var textBox = new TextBox
{
Location = new System.Drawing.Point(10, 35),
Size = new System.Drawing.Size(260, 25),
PasswordChar = '*'
};
var btnOk = new Button
{
Text = "确定",
DialogResult = DialogResult.OK,
Location = new System.Drawing.Point(70, 70),
Size = new System.Drawing.Size(80, 30)
};
var btnCancel = new Button
{
Text = "取消",
DialogResult = DialogResult.Cancel,
Location = new System.Drawing.Point(160, 70),
Size = new System.Drawing.Size(80, 30)
};
inputForm.Controls.AddRange(new Control[] { label, textBox, btnOk, btnCancel });
inputForm.AcceptButton = btnOk;
inputForm.CancelButton = btnCancel;
if (inputForm.ShowDialog() == DialogResult.OK)
{
newPassword = textBox.Text.Trim();
}
}
if (string.IsNullOrEmpty(newPassword) || newPassword.Length < 6)
{
MessageBox.Show("密码长度不能少于6位", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
try
{
if (_userRepository.ResetPassword(userId, newPassword))
{
MessageBox.Show("密码重置成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("密码重置失败!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
catch (Exception ex)
{
MessageBox.Show($"重置密码失败:{ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
/// <summary>
/// 刷新按钮
/// </summary>
private void btnRefresh_Click(object sender, EventArgs e)
{
LoadUsers();
}
/// <summary>
/// 表格行点击事件
/// </summary>
private void dgvUsers_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0 && e.RowIndex < dgvUsers.Rows.Count)
{
dgvUsers.Rows[e.RowIndex].Selected = true;
}
}
}
}