using AutoUpdaterDotNET; using DevExpress.XtraEditors; using DevExpress.XtraRichEdit.Export.Rtf; using Gs.DevApp.Entity; using Gs.DevApp.Properties; using Gs.DevApp.ToolBox; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Configuration; using System.Linq; using System.Management; using System.Net; using System.Net.Sockets; using System.Windows.Forms; namespace Gs.DevApp.DevFrm { public partial class FrmLogin : XtraForm { private string _productName = ""; private string _version = "未知"; private string _strFont = ""; private string _webApiUrl = ""; public FrmLogin() { InitializeComponent(); _productName = ConfigurationManager.AppSettings["ProductName"]; _webApiUrl = ConfigurationManager.AppSettings["WebApiUrl"]; if (ConfigurationManager.AppSettings["IsAutoUpdater"] == "1") _autoUpdate(); _getFont(); _getRemember(); btnLogin.Click += BtnLogin_Click; btnCancel.Click += BtnCancel_Click; lbVersion.Text = _productName+ ",版本(" + _version + ")" + ",使用字体(" + _strFont + ")"+",服务地址("+ _webApiUrl + ")"; } private void BtnCancel_Click(object sender, EventArgs e) { if (MsgHelper.AskQuestion("确定要退出系统吗?")) Application.Exit(); } private void BtnLogin_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(txtUser.Text.Trim())) { MsgHelper.Warning("登录账号不能为空!"); txtUser.Focus(); return; } if (string.IsNullOrEmpty(txtPwd.Text.Trim())) { MsgHelper.Warning("密码不能为空!"); txtUser.Focus(); return; } string strLog = GetMacAddress(); var _obj = new { accountPwd = txtPwd.Text.Trim(), accountNo = txtUser.Text.Trim(), accountLog = strLog }; try { var strJson = UtilityHelper.HttpPost("", "User/UserLogin", JsonConvert.SerializeObject(_obj)); var _rtn = UtilityHelper.ReturnToDynamic(strJson); JObject _login = _rtn.rtnData; if (_rtn.rtnCode > 0) { Settings.Default.userName = ckRemember.Checked ? txtUser.Text.Trim() : ""; Settings.Default.userPwd = ckRemember.Checked ? txtPwd.Text.Trim() : ""; Settings.Default.remember = ckRemember.Checked; Settings.Default.Save(); LoginInfoModel.CurrentUser.LoginUserGuid = _login["loginGuid"].ToString(); LoginInfoModel.CurrentUser.LoginTime = DateTime.Now.ToString("yyyy-MM-dd hh:mm"); DialogResult = DialogResult.OK; } else { MsgHelper.Warning("提示:" + _rtn.rtnMsg); DialogResult = DialogResult.None; } } catch (Exception ex) { DialogResult = DialogResult.Cancel; MsgHelper.Warning("提示:" + ex.Message); } } /// /// 读取记住密码 /// private void _getRemember() { try { if (Settings.Default.remember) { txtUser.Text = Settings.Default.userName; txtPwd.Text = Settings.Default.userPwd; ckRemember.Checked = true; } } catch (Exception ex) { MessageBox.Show(ex.Message); } } /// /// 读取字体 /// private void _getFont() { try { _strFont = Settings.Default.fontSizeName; if (string.IsNullOrEmpty(_strFont)) return; string[] ary = _strFont.Split(','); if (ary.Length < 2) return; float _ft = float.Parse(ary[1]); #region 设置默认字体、日期格式、汉化dev DevExpress.Utils.AppearanceObject.DefaultFont = new System.Drawing.Font(ary[0], _ft); DevExpress.XtraEditors.WindowsFormsSettings.DefaultFont = new System.Drawing.Font(ary[0], _ft); DevExpress.XtraEditors.WindowsFormsSettings.DefaultMenuFont = new System.Drawing.Font(ary[0], _ft); DevExpress.XtraEditors.WindowsFormsSettings.DefaultPrintFont = new System.Drawing.Font(ary[0], _ft); #endregion } catch (Exception) { } } private void _autoUpdate() { _version = ConfigurationManager.AppSettings["Version"]; AutoUpdater.InstalledVersion = new Version(_version); AutoUpdater.Start(ConfigurationManager.AppSettings["AutoUpdaterXml"]); AutoUpdater.CheckForUpdateEvent += AutoUpdater_CheckForUpdateEvent; } private void AutoUpdater_CheckForUpdateEvent(UpdateInfoEventArgs args) { if (args == null || string.IsNullOrEmpty(args.DownloadURL)) { MsgHelper.ShowError("读取自动更新失败,无法登录,请联系管理员!"); Close(); Application.Exit(); return; } if (!args.IsUpdateAvailable) { return; } var _strMsg = string.Format( $@"有新版本 {args.CurrentVersion} 可用,您使用的是 {args.InstalledVersion}版本,这是必需的更新,按“是(Y)”开始更新应用程序。"); if (!MsgHelper.AskQuestion(_strMsg)) { Close(); Application.Exit(); return; } try { if (AutoUpdater.DownloadUpdate(args)) { var config = ConfigurationManager.OpenExeConfiguration( ConfigurationUserLevel.None); if (config != null) { var appSettings = (AppSettingsSection)config.GetSection( "appSettings"); if (appSettings.Settings.AllKeys.Contains("Version")) appSettings.Settings["Version"].Value = args.CurrentVersion; else appSettings.Settings.Add("Version", args.CurrentVersion); config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("appSettings"); } Application.Exit(); } else { MsgHelper.ShowError("读取自动更新失败,无法登录,请联系管理员!"); Close(); Application.Exit(); } } catch (Exception exception) { MsgHelper.ShowError(exception.Message + ":" + exception.GetType()); Close(); Application.Exit(); } } private string GetMacAddress() { System.Text.StringBuilder sb = new System.Text.StringBuilder(); try { sb.Append("主机名: "); string hostName = Dns.GetHostName(); sb.Append(hostName); sb.Append(";IPv4: "); IPAddress[] addresses = Dns.GetHostAddresses(hostName); int i = 0; foreach (IPAddress address in addresses) { if (address.AddressFamily == AddressFamily.InterNetwork) // 过滤出IPv4地址 { if (i > 0) sb.Append(","); sb.Append(address.ToString()); } } i = 0; sb.Append(";MAC: "); ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection moc = mc.GetInstances(); string macAddress = string.Empty; foreach (ManagementObject mo in moc) { if ((bool)mo["IPEnabled"]) { if (i > 0) sb.Append(","); macAddress = mo["MacAddress"].ToString(); sb.Append(macAddress); break; } } return sb.ToString(); } catch (Exception ex) { sb.Append(ex.Message); } return sb.ToString(); } } }