295 lines
13 KiB
C#
295 lines
13 KiB
C#
using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Threading.Tasks;
|
||
using System.Windows.Forms;
|
||
using 全自动水压检测仪;
|
||
using 全自动水压检测仪.DATA;
|
||
using 呼吸过滤器气雾直径测试仪;
|
||
|
||
namespace 全自动水压检测仪
|
||
{
|
||
internal static class Program
|
||
{
|
||
|
||
/// <summary>
|
||
/// 应用程序的主入口点。
|
||
/// </summary>
|
||
[STAThread]
|
||
|
||
static void Main(string[] args)
|
||
{
|
||
Application.EnableVisualStyles();
|
||
Application.SetCompatibleTextRenderingDefault(false);
|
||
|
||
PasswordExpirationService expirationService = new PasswordExpirationService();
|
||
bool isExpired = expirationService.IsPasswordExpired(DateTime.Parse("2026-2-6"));
|
||
bool isExpiringSoon = expirationService.IsPasswordExpiringSoon(DateTime.Parse("2026-2-6"));
|
||
if (isExpired)
|
||
{
|
||
MessageBox.Show("授权已过期,请联系经销商处理");
|
||
Application.Run(new ChangPassword());
|
||
}
|
||
if (isExpiringSoon && !isExpired)
|
||
{
|
||
MessageBox.Show("授权即将过期,请联系经销商处理");
|
||
try
|
||
{
|
||
// 测试密码加密功能
|
||
System.Diagnostics.Debug.WriteLine("\n========================================");
|
||
System.Diagnostics.Debug.WriteLine("程序启动 - 密码加密测试");
|
||
System.Diagnostics.Debug.WriteLine("========================================");
|
||
PasswordHelper.TestPasswordEncryption();
|
||
|
||
// 检查是否有重置参数
|
||
bool forceReset = args.Length > 0 && args[0].ToLower() == "--reset-users";
|
||
|
||
if (forceReset)
|
||
{
|
||
var result = MessageBox.Show(
|
||
"确定要重置默认用户吗?\n\n这将删除并重新创建:\n• admin / admin123 (管理员)\n• csi / 123456 (普通用户)\n\n其他用户不受影响。",
|
||
"重置默认用户",
|
||
MessageBoxButtons.YesNo,
|
||
MessageBoxIcon.Question);
|
||
|
||
if (result == DialogResult.Yes)
|
||
{
|
||
DatabaseInitializer.Initialize();
|
||
DatabaseInitializer.ForceResetDefaultUsers();
|
||
MessageBox.Show("默认用户已重置!\n\n管理员: admin / admin123\n普通用户: csi / 123456",
|
||
"重置成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||
}
|
||
return;
|
||
}
|
||
|
||
// 初始化数据库表和默认管理员账户
|
||
System.Diagnostics.Debug.WriteLine("\n========================================");
|
||
System.Diagnostics.Debug.WriteLine("初始化数据库");
|
||
System.Diagnostics.Debug.WriteLine("========================================");
|
||
DatabaseInitializer.Initialize();
|
||
|
||
// 检查并修复损坏的密码数据
|
||
System.Diagnostics.Debug.WriteLine("\n========================================");
|
||
System.Diagnostics.Debug.WriteLine("检查密码数据完整性");
|
||
System.Diagnostics.Debug.WriteLine("========================================");
|
||
CheckAndFixPasswordData();
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
MessageBox.Show($"数据库初始化失败:{ex.Message}\n\n请检查:\n1. MySQL服务是否启动\n2. 数据库连接配置是否正确\n3. 数据库 fullautowaterpressure 是否存在\n\n应用程序将退出。",
|
||
"初始化错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||
return;
|
||
}
|
||
|
||
// 显示登录窗体
|
||
using (var loginForm = new LoginForm())
|
||
{
|
||
if (loginForm.ShowDialog() == DialogResult.OK)
|
||
{
|
||
// 登录成功,根据用户权限显示对应窗体
|
||
if (LoginData.IsAdmin())
|
||
{
|
||
// 管理员登录,显示 ScanImport 页面
|
||
Application.Run(new ScanImport());
|
||
}
|
||
else
|
||
{
|
||
|
||
// 普通用户登录,显示 NormalTemperatureMode 页面
|
||
Application.Run(new NormalTemperatureMode());
|
||
|
||
}
|
||
}
|
||
// 登录失败或取消,直接退出
|
||
}
|
||
}
|
||
if (!isExpired && !isExpiringSoon)
|
||
{
|
||
|
||
|
||
try
|
||
{
|
||
// 测试密码加密功能
|
||
System.Diagnostics.Debug.WriteLine("\n========================================");
|
||
System.Diagnostics.Debug.WriteLine("程序启动 - 密码加密测试");
|
||
System.Diagnostics.Debug.WriteLine("========================================");
|
||
PasswordHelper.TestPasswordEncryption();
|
||
|
||
// 检查是否有重置参数
|
||
bool forceReset = args.Length > 0 && args[0].ToLower() == "--reset-users";
|
||
|
||
if (forceReset)
|
||
{
|
||
var result = MessageBox.Show(
|
||
"确定要重置默认用户吗?\n\n这将删除并重新创建:\n• admin / admin123 (管理员)\n• csi / 123456 (普通用户)\n\n其他用户不受影响。",
|
||
"重置默认用户",
|
||
MessageBoxButtons.YesNo,
|
||
MessageBoxIcon.Question);
|
||
|
||
if (result == DialogResult.Yes)
|
||
{
|
||
DatabaseInitializer.Initialize();
|
||
DatabaseInitializer.ForceResetDefaultUsers();
|
||
MessageBox.Show("默认用户已重置!\n\n管理员: admin / admin123\n普通用户: csi / 123456",
|
||
"重置成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||
}
|
||
return;
|
||
}
|
||
|
||
// 初始化数据库表和默认管理员账户
|
||
System.Diagnostics.Debug.WriteLine("\n========================================");
|
||
System.Diagnostics.Debug.WriteLine("初始化数据库");
|
||
System.Diagnostics.Debug.WriteLine("========================================");
|
||
DatabaseInitializer.Initialize();
|
||
|
||
// 检查并修复损坏的密码数据
|
||
System.Diagnostics.Debug.WriteLine("\n========================================");
|
||
System.Diagnostics.Debug.WriteLine("检查密码数据完整性");
|
||
System.Diagnostics.Debug.WriteLine("========================================");
|
||
CheckAndFixPasswordData();
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
MessageBox.Show($"数据库初始化失败:{ex.Message}\n\n请检查:\n1. MySQL服务是否启动\n2. 数据库连接配置是否正确\n3. 数据库 fullautowaterpressure 是否存在\n\n应用程序将退出。",
|
||
"初始化错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||
return;
|
||
}
|
||
|
||
// 显示登录窗体
|
||
using (var loginForm = new LoginForm())
|
||
{
|
||
if (loginForm.ShowDialog() == DialogResult.OK)
|
||
{
|
||
// 登录成功,根据用户权限显示对应窗体
|
||
if (LoginData.IsAdmin())
|
||
{
|
||
// 管理员登录,显示 ScanImport 页面
|
||
Application.Run(new ScanImport());
|
||
}
|
||
else
|
||
{
|
||
|
||
// 普通用户登录,显示 NormalTemperatureMode 页面
|
||
Application.Run(new NormalTemperatureMode());
|
||
|
||
}
|
||
}
|
||
// 登录失败或取消,直接退出
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 检查并修复损坏的密码数据
|
||
/// </summary>
|
||
private static void CheckAndFixPasswordData()
|
||
{
|
||
try
|
||
{
|
||
var userRepo = new UserRepository();
|
||
|
||
// 检查默认用户
|
||
var adminUser = userRepo.GetUserByUsername("admin");
|
||
var csiUser = userRepo.GetUserByUsername("csi");
|
||
|
||
bool needsReset = false;
|
||
|
||
// 检查 admin 用户
|
||
if (adminUser != null)
|
||
{
|
||
string storedPassword = adminUser.PasswordHash ?? "";
|
||
|
||
System.Diagnostics.Debug.WriteLine($"\n检查 admin 用户:");
|
||
System.Diagnostics.Debug.WriteLine($" 当前密码值: '{storedPassword}'");
|
||
System.Diagnostics.Debug.WriteLine($" 密码长度: {storedPassword.Length}");
|
||
|
||
// 检查是否为空
|
||
if (string.IsNullOrEmpty(storedPassword))
|
||
{
|
||
System.Diagnostics.Debug.WriteLine($" 状态: 密码为空");
|
||
needsReset = true;
|
||
}
|
||
// 检查是否是旧的加密格式(包含 Base64 特殊字符)
|
||
else if (storedPassword.Length > 20 && (storedPassword.Contains("+") || storedPassword.Contains("/") || storedPassword.Contains("=")))
|
||
{
|
||
System.Diagnostics.Debug.WriteLine($" 状态: 旧的加密格式");
|
||
needsReset = true;
|
||
}
|
||
// 检查是否是正确的明文密码
|
||
else if (storedPassword != "admin123")
|
||
{
|
||
System.Diagnostics.Debug.WriteLine($" 状态: 密码不正确(应该是 'admin123')");
|
||
needsReset = true;
|
||
}
|
||
else
|
||
{
|
||
System.Diagnostics.Debug.WriteLine($" 状态: ✓ 正确");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
System.Diagnostics.Debug.WriteLine($"\nadmin 用户不存在");
|
||
needsReset = true;
|
||
}
|
||
|
||
// 检查 cgx 用户
|
||
if (csiUser != null)
|
||
{
|
||
string storedPassword = csiUser.PasswordHash ?? "";
|
||
|
||
System.Diagnostics.Debug.WriteLine($"\n检查 csi 用户:");
|
||
System.Diagnostics.Debug.WriteLine($" 当前密码值: '{storedPassword}'");
|
||
System.Diagnostics.Debug.WriteLine($" 密码长度: {storedPassword.Length}");
|
||
|
||
if (string.IsNullOrEmpty(storedPassword))
|
||
{
|
||
System.Diagnostics.Debug.WriteLine($" 状态: 密码为空");
|
||
needsReset = true;
|
||
}
|
||
else if (storedPassword.Length > 20 && (storedPassword.Contains("+") || storedPassword.Contains("/") || storedPassword.Contains("=")))
|
||
{
|
||
System.Diagnostics.Debug.WriteLine($" 状态: 旧的加密格式");
|
||
needsReset = true;
|
||
}
|
||
else if (storedPassword != "123")
|
||
{
|
||
System.Diagnostics.Debug.WriteLine($" 状态: 密码不正确(应该是 '123')");
|
||
needsReset = true;
|
||
}
|
||
else
|
||
{
|
||
System.Diagnostics.Debug.WriteLine($" 状态: ✓ 正确");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
System.Diagnostics.Debug.WriteLine($"\ncsi 用户不存在");
|
||
needsReset = true;
|
||
}
|
||
|
||
if (needsReset)
|
||
{
|
||
System.Diagnostics.Debug.WriteLine("\n检测到密码数据异常,自动重置默认用户...");
|
||
DatabaseInitializer.ForceResetDefaultUsers();
|
||
System.Diagnostics.Debug.WriteLine("密码数据已修复!");
|
||
System.Diagnostics.Debug.WriteLine(" admin 密码: admin123");
|
||
System.Diagnostics.Debug.WriteLine(" csi 密码: 123456");
|
||
}
|
||
else
|
||
{
|
||
System.Diagnostics.Debug.WriteLine("\n密码数据检查通过 ✓");
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
System.Diagnostics.Debug.WriteLine($"密码数据检查失败: {ex.Message}");
|
||
System.Diagnostics.Debug.WriteLine($"详细信息: {ex}");
|
||
// 不影响程序启动,继续运行
|
||
}
|
||
}
|
||
}
|
||
}
|