1
lu
2024-12-10 d58da7f38629d712136a29b60f3257605bb54983
DevApp/Gs.DevApp/DevFrm/FrmLogin.cs
@@ -1,67 +1,230 @@
using Gs.DevApp.ToolBox;
using Newtonsoft.Json;
using System;
using System;
using System.Configuration;
using System.Linq;
using System.Windows.Forms;
using Gs.DevApp.Models;
using AutoUpdaterDotNET;
using DevExpress.XtraEditors;
using Gs.DevApp.Entity;
using Gs.DevApp.Properties;
using Gs.DevApp.ToolBox;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace Gs.DevApp.DevFrm
{
    public partial class FrmLogin : DevExpress.XtraEditors.XtraForm
    public partial class FrmLogin : XtraForm
    {
        public FrmLogin()
        {
            InitializeComponent();
            this.Text=lbVersion.Text = System.Configuration.ConfigurationSettings.AppSettings.Get("ProductName").ToString();
            if (ConfigurationManager.AppSettings["IsAutoUpdater"] == "1")
                _autoUpdate();
            else
                getTree();
            Text = lbVersion.Text = ConfigurationManager.AppSettings["ProductName"];
            btnLogin.Click += BtnLogin_Click;
            btnCancel.Click += BtnCancel_Click;
            UtilityHelper.SetFont(panel1);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel, ((byte)(134)));
        }
        private void BtnCancel_Click(object sender, EventArgs e)
        /// <summary>
        ///     读取组织
        /// </summary>
        private void getTree()
        {
            if (MsgHelper.AskQuestion("确定要退出系统吗?"))
            var pgq = new PageQueryModel(1, 999999, "FID", "asc", "",
                " and IS_STATUS=1");
            var json = JsonConvert.SerializeObject(pgq);
            try
            {
                var strReturn = UtilityHelper.HttpPost("",
                    "Organization/GetListPage", json);
                var rtn = UtilityHelper.ReturnToTablePage(strReturn);
                var dt = rtn.rtnData.list;
                comOrg.DataSource = dt;
                comOrg.DisplayMember = "name";
                comOrg.ValueMember = "guid";
                comOrg.SelectedIndex = 0;
                _getRemember();
            }
            catch (Exception ex)
            {
                MsgHelper.Warning("提示:" + ex.Message);
                Close();
                Application.Exit();
            }
        }
        private void BtnCancel_Click(object sender, EventArgs e)
        {
            if (MsgHelper.AskQuestion("确定要退出系统吗?")) Application.Exit();
        }
        private void BtnLogin_Click(object sender, EventArgs e)
        {
            int i = 100;
            Gs.DevApp.UserControl.ShowDialogForm sdf = new Gs.DevApp.UserControl.ShowDialogForm("提示", "", "请耐心等候,正在验证您的身份!");
            if (string.IsNullOrEmpty(txtUser.Text.Trim()))
            {
                MsgHelper.Warning("登录账号不能为空!");
                txtUser.Focus();
                return;
            }
            if (string.IsNullOrEmpty(txtPwd.Text.Trim()))
            {
                MsgHelper.Warning("密码不能为空!");
                txtUser.Focus();
                return;
            }
            if (comOrg.SelectedValue == null ||
                string.IsNullOrEmpty(comOrg.SelectedValue.ToString().Trim()))
            {
                MsgHelper.Warning("组织机构不能为空!");
                txtUser.Focus();
                return;
            }
            var _obj = new
            {
                accountPwd = txtUser.Text.Trim(),
                accountNo = txtPwd.Text.Trim(),
                orgGuid = Guid.NewGuid()
                accountPwd = txtPwd.Text.Trim(),
                accountNo = txtUser.Text.Trim(),
                orgGuid = comOrg.SelectedValue.ToString().Trim()
            };
            sdf.SetCaption("执行进度(" + (i - 80) + "/" + i.ToString() + ")");
            try
            {
                string strJson = UtilityHelper.HttpPost("", "User/UserLogin", JsonConvert.SerializeObject(_obj));
                ReturnModel<dynamic> _rtn = ToolBox.UtilityHelper.GetDataByJson(strJson);
                var strJson = UtilityHelper.HttpPost("", "User/UserLogin",
                    JsonConvert.SerializeObject(_obj));
                var _rtn = UtilityHelper.ReturnToDynamic(strJson);
                JObject _login = _rtn.rtnData;
                if (_rtn.rtnCode > 0)
                {
                    LoginInfoModel.CurrentUser.LoginUserGuid = _login["loginGuid"].ToString();
                    LoginInfoModel.CurrentUser.LoginOrgGuid = _login["loginOrgGuid"].ToString();
                    LoginInfoModel.CurrentUser.LoginTime = DateTime.Now.ToString("yyyy-MM-dd hh:mm");
                    Settings.Default.userName = ckRemember.Checked
                        ? txtUser.Text.Trim()
                        : "";
                    Settings.Default.userPwd =
                        ckRemember.Checked ? txtPwd.Text.Trim() : "";
                    Settings.Default.orgGuid = ckRemember.Checked
                        ? comOrg.SelectedValue.ToString()
                        : "";
                    Settings.Default.remember = ckRemember.Checked;
                    Settings.Default.Save();
                    LoginInfoModel.CurrentUser.LoginUserGuid =
                        _login["loginGuid"].ToString();
                    LoginInfoModel.CurrentUser.LoginOrgGuid =
                        _login["loginOrgGuid"].ToString();
                    LoginInfoModel.CurrentUser.LoginTime =
                        DateTime.Now.ToString("yyyy-MM-dd hh:mm");
                    DialogResult = DialogResult.OK;
                }
                else
                {
                    ToolBox.MsgHelper.Warning("提示:" + _rtn.rtnMsg);
                    MsgHelper.Warning("提示:" + _rtn.rtnMsg);
                    DialogResult = DialogResult.None;
                }
                sdf.SetCaption("执行进度(" + (i - 10) + "/" + i.ToString() + ")");
            }
            catch (Exception ex)
            {
                sdf.Close();
                ToolBox.MsgHelper.Warning("提示:" + ex.Message);
                DialogResult = DialogResult.Cancel;
                MsgHelper.Warning("提示:" + ex.Message);
            }
        }
        /// <summary>
        ///     读取记住密码
        /// </summary>
        private void _getRemember()
        {
            try
            {
                if (Settings.Default.remember)
                {
                    txtUser.Text = Settings.Default.userName;
                    txtPwd.Text = Settings.Default.userPwd;
                    comOrg.SelectedValue = Settings.Default.orgGuid;
                    ckRemember.Checked = true;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        private void _autoUpdate()
        {
            var _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;
            }
            sdf.Close();
            this.DialogResult = DialogResult.OK;
            if (!args.IsUpdateAvailable)
            {
                getTree();
                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();
            }
        }
    }
}