frmLogin.cs 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using LYFZ.OtherExpansion.SkinControl;
  10. namespace LYFZ.ERPCloudClient
  11. {
  12. public partial class frmLogin : LYFZ.ComponentLibrary.BaseForm360
  13. {
  14. public frmLogin()
  15. {
  16. InitializeComponent();
  17. this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
  18. this.stxtPwd.BaseText.PasswordChar = '*';
  19. this.stxtPwd.BaseText.UseSystemPasswordChar = true;
  20. this.spalHead.BackgroundImage = LYFZ.ComponentLibrary.Properties.UIBlueResources.LYFZHD;
  21. this.btnAppFormMenu.Click += btnAppFormMenu_Click;
  22. this.stxtPwd.KeyUp += stxtPwd_KeyUp;
  23. this.textBoxPwd.KeyUp += textBoxPwd_KeyUp;
  24. this.stxtUserName.KeyUp += stxtUserName_KeyUp;
  25. this.textBoxPwd.GotFocus += textBoxPwd_GotFocus;
  26. this.sMenuStripId.KeyUp += sMenuStripId_KeyUp;
  27. }
  28. void sMenuStripId_KeyUp(object sender, KeyEventArgs e)
  29. {
  30. if (e.KeyCode == Keys.Delete)
  31. {
  32. if (CurrentToolStripMenuItem != null)
  33. {
  34. try
  35. {
  36. string[] userInfos = (string[])CurrentToolStripMenuItem.Tag;
  37. if (frmMain.ClientCon.HistoryUserList.Any(s => s.UserID.ToLower() == userInfos[0].ToLower()))
  38. {
  39. frmMain.ClientCon.HistoryUserList.Remove(frmMain.ClientCon.HistoryUserList.Find(s => s.UserID.ToLower() == userInfos[0].ToLower()));
  40. }
  41. this.sMenuStripId.Items.Remove(CurrentToolStripMenuItem);
  42. this.sMenuStripId.Items.RemoveByKey(CurrentToolStripMenuItem.Name + "SP");
  43. LYFZ.CloudServerData.SystemConfig.WriteCloudClientConfig(frmMain.ClientCon);
  44. }
  45. catch { }
  46. }
  47. }
  48. }
  49. /// <summary>
  50. ///
  51. /// </summary>
  52. /// <param name="sender"></param>
  53. /// <param name="e"></param>
  54. protected void sBtnLogin_Click(object sender, EventArgs e)
  55. {
  56. isEnterBtnLogin = true;
  57. string userAccount = stxtUserName.Text.Trim();
  58. string userPwd = textBoxPwd.Text.Trim();
  59. if (userAccount.Trim() == "")
  60. {
  61. MessageBoxCustom.Show("用户名不能为空");
  62. this.stxtUserName.Focus();
  63. return;
  64. }
  65. else if (userPwd.Trim() == "")
  66. {
  67. MessageBoxCustom.Show("密码不能为空");
  68. this.textBoxPwd.Focus();
  69. return;
  70. }
  71. frmMain.LoginUser.UserID = userAccount;
  72. frmMain.LoginUser.Password = userPwd;
  73. ConnectServer();
  74. }
  75. /// <summary>
  76. /// 连接服务器
  77. /// </summary>
  78. void ConnectServer()
  79. {
  80. bool isSuccessfulLogin = false;
  81. string msg = "";
  82. LYFZ.ComponentLibrary.FrmLoadHandling.LoadDoWorkMethod(delegate(object obj, BackgroundWorker backgroundWorker)
  83. {
  84. try
  85. {
  86. backgroundWorker.ReportProgress(0, "正在连接服务器...");
  87. if (!frmMain.TcpClient.ConnectionServer(frmMain.ClientCon.ServerIP, frmMain.ClientCon.Port))
  88. {
  89. msg = "连接服务器失败,请检查网络环境";
  90. return;
  91. }
  92. else
  93. {
  94. try
  95. {
  96. backgroundWorker.ReportProgress(0, "正在验证用户登录信息...");
  97. if (VerifyUser(ref msg))
  98. {
  99. backgroundWorker.ReportProgress(0, "验证用户登录信息成功...");
  100. }
  101. else
  102. {
  103. backgroundWorker.ReportProgress(0, "验证用户登录信息失败...");
  104. return;
  105. }
  106. }
  107. catch (Exception ex)
  108. {
  109. msg = "验证用户时出错:" + ex.Message;
  110. return;
  111. }
  112. isSuccessfulLogin = true;
  113. }
  114. }
  115. catch (Exception ex)
  116. {
  117. msg = "连接服务器失败,请检查网络或确认服务器已启动!\r\n" + ex.Message;
  118. return;
  119. }
  120. });
  121. if (isSuccessfulLogin)
  122. {
  123. this.DialogResult = System.Windows.Forms.DialogResult.OK;
  124. }
  125. else
  126. {
  127. if (msg.Trim().Length > 0)
  128. {
  129. MessageBoxCustom.Show(msg);
  130. }
  131. return;
  132. }
  133. }
  134. /// <summary>
  135. /// 验证用户
  136. /// </summary>
  137. /// <returns></returns>
  138. bool VerifyUser(ref string msg)
  139. {
  140. bool bl = false;
  141. string userAccount =this.stxtUserName.Text.Trim();
  142. string userPwd = this.textBoxPwd.Text.Trim();
  143. try
  144. {
  145. //查询用户
  146. HPSocketCS.Extended.ReturnData returnData = LYFZ.CloudServerData.ClientDataRequestProcess.RequestQueryUser(frmMain.TcpClient.Client, userAccount);
  147. if (returnData.ReturnStatus)
  148. {
  149. frmMain.LoginUser =returnData.DataByteToModelObject<LYFZ.CloudServerData.Model.User>();
  150. }
  151. else
  152. {
  153. MessageBoxCustom.Show(returnData.ReturnMessage);
  154. }
  155. //usersModel.UserName = "管理员";
  156. //usersModel.Password = LYFZ.WinAPI.SDKSecurity.MD5Encrypt("123");
  157. //usersModel.UserID = userAccount;
  158. ////usersModel = null;
  159. //frmMain.LoginUser = usersModel;
  160. }
  161. catch (Exception ex)
  162. {
  163. msg = "获取用户信息出错:" + ex.Message;
  164. return false;
  165. }
  166. try
  167. {
  168. if (frmMain.LoginUser.ID > 0)
  169. {
  170. if (LYFZ.WinAPI.SDKSecurity.MD5Encrypt(userPwd).ToLower().Equals(frmMain.LoginUser.Password.Trim().ToLower()))
  171. {
  172. try
  173. {
  174. UpdateHistoryUsers();
  175. }
  176. catch { }
  177. bl = true;
  178. }
  179. else
  180. {
  181. msg = "用户名和密码不正确!";
  182. }
  183. }
  184. else
  185. {
  186. msg = "用户名不存在";
  187. }
  188. }
  189. catch (Exception ex)
  190. {
  191. msg = "用户验证时失败:" + ex.Message;
  192. }
  193. return bl;
  194. }
  195. /// <summary>
  196. /// 更新历史用户
  197. /// </summary>
  198. void UpdateHistoryUsers()
  199. {
  200. // LYFZ.WinAPI.SDKSecurity.Decode();
  201. string userPwd = textBoxPwd.Text.Trim();
  202. LYFZ.CloudServerData.Model.HistoryUser tempUser = null;
  203. if (frmMain.ClientCon.HistoryUserList.Any(s => s.UserID.ToLower() == frmMain.LoginUser.UserID.ToLower()))
  204. {
  205. tempUser = frmMain.ClientCon.HistoryUserList.Find(s => s.UserID.ToLower() == frmMain.LoginUser.UserID.ToLower());
  206. frmMain.ClientCon.HistoryUserList.Remove(tempUser);
  207. }
  208. else {
  209. tempUser = new CloudServerData.Model.HistoryUser();
  210. }
  211. tempUser.UserID = frmMain.LoginUser.UserID;
  212. tempUser.UserName = frmMain.LoginUser.UserName;
  213. tempUser.Sex = frmMain.LoginUser.Sex;
  214. if (this.schbRememberPwd.Checked)
  215. {
  216. tempUser.Password = LYFZ.WinAPI.SDKSecurity.Encode(userPwd);
  217. }
  218. else {
  219. tempUser.Password = "";
  220. }
  221. frmMain.ClientCon.HistoryUserList.Insert(0,tempUser);
  222. LYFZ.CloudServerData.SystemConfig.WriteCloudClientConfig(frmMain.ClientCon);
  223. }
  224. void btnAppFormMenu_Click(object sender, EventArgs e)
  225. {
  226. frmLoginSettings loginSet = new frmLoginSettings();
  227. loginSet.ClientCon = frmMain.ClientCon;
  228. loginSet.ShowDialog();
  229. }
  230. /// <summary>
  231. ///
  232. /// </summary>
  233. /// <param name="sender"></param>
  234. /// <param name="e"></param>
  235. protected void stxtPwd_IconClick(object sender, EventArgs e)
  236. {
  237. PassKey pass = new PassKey(this.Left + stxtPwd.Left - 100, this.Top + stxtPwd.Bottom, this.textBoxPwd);
  238. pass.Show(this);
  239. }
  240. protected void sMenuStripId_Closing(object sender, ToolStripDropDownClosingEventArgs e)
  241. {
  242. this.stxtUserName.Icon = LYFZ.ERPCloudClient.Properties.Resources.login_inputbtn_normal;
  243. }
  244. protected void stxtUserName_IconClick(object sender, EventArgs e)
  245. {
  246. if (this.sMenuStripId.Items.Count > 0)
  247. {
  248. stxtUserName.Icon = LYFZ.ERPCloudClient.Properties.Resources.login_inputbtn_down;
  249. }
  250. this.sMenuStripId.Show(this.stxtUserName, 1, this.stxtUserName.Height + 1);
  251. }
  252. protected void frmLogin_Load(object sender, EventArgs e)
  253. {
  254. this.slblMsgInfo.Text = this.slblMsgInfo.Text.Replace("{$}","V"+Application.ProductVersion);
  255. this.stxtPwd.BaseText.PasswordChar = '*';
  256. this.stxtPwd.BaseText.UseSystemPasswordChar = true;
  257. this.sMenuStripId.Items.Clear();
  258. for (int i = 0; i < frmMain.ClientCon.HistoryUserList.Count; i++)
  259. {
  260. LYFZ.CloudServerData.Model.HistoryUser tempUser = frmMain.ClientCon.HistoryUserList[i];
  261. try
  262. {
  263. if (this.sMenuStripId.Height < 220)
  264. {
  265. this.sMenuStripId.Height += (i + 1) * 48;
  266. }
  267. string UserAccount = tempUser.UserID;
  268. string nickName = tempUser.UserName;
  269. Image nickImage = LYFZ.ComponentLibrary.Properties.UIBlueResources.LYFZHD;
  270. string password = tempUser.Password;
  271. ToolStripMenuItem item = new ToolStripMenuItem();
  272. item.Name = "mi" + UserAccount;
  273. item.AutoSize = false;
  274. item.Size = new System.Drawing.Size(182, 40);
  275. item.Text = nickName + "\r\n" + UserAccount;
  276. item.Tag = new string[] { UserAccount, nickName, password }; //Tag用于存储UserID 和 NickName
  277. item.Image = nickImage; //根据ID获取头像
  278. item.Click += new EventHandler(toolStripMenuItemID_Click);
  279. item.MouseEnter += item_MouseEnter;
  280. ToolStripSeparator spItem = new ToolStripSeparator();
  281. spItem.Name = item.Name + "SP";
  282. this.sMenuStripId.Items.Add(item);
  283. this.sMenuStripId.Items.Add(spItem);
  284. }
  285. catch { }
  286. }
  287. this.stxtUserName.Focus();
  288. if (this.sMenuStripId.Items.Count > 0)
  289. {
  290. toolStripMenuItemID_Click(this.sMenuStripId.Items[0], null);
  291. }
  292. }
  293. void textBoxPwd_KeyUp(object sender, KeyEventArgs e)
  294. {
  295. try
  296. {
  297. if (e != null && e.KeyCode == Keys.Enter && !isEnterBtnLogin)
  298. {
  299. this.sBtnLogin_Click(null, null);
  300. }
  301. else
  302. {
  303. isEnterBtnLogin = false;
  304. }
  305. }
  306. catch { }
  307. }
  308. void stxtPwd_KeyUp(object sender, KeyEventArgs e)
  309. {
  310. this.textBoxPwd_KeyUp(sender, e);
  311. }
  312. /// <summary>
  313. /// 当前历史用户项
  314. /// </summary>
  315. ToolStripMenuItem CurrentToolStripMenuItem = null;
  316. void item_MouseEnter(object sender, EventArgs e)
  317. {
  318. if (sender.GetType() == typeof(ToolStripMenuItem))
  319. {
  320. CurrentToolStripMenuItem = (ToolStripMenuItem)sender;
  321. }
  322. }
  323. #region toolStripMenuItemID_Click
  324. void textBoxPwd_GotFocus(object sender, EventArgs e)
  325. {
  326. stxtUserName_KeyUp(null, null);
  327. }
  328. /// <summary>
  329. /// 是否按过回车并尝试登录过
  330. /// </summary>
  331. bool isEnterBtnLogin = false;
  332. void stxtUserName_KeyUp(object sender, KeyEventArgs e)
  333. {
  334. try
  335. {
  336. if (e != null && e.KeyCode == Keys.Enter && !isEnterBtnLogin)
  337. {
  338. if (e.KeyCode == Keys.Enter)
  339. {
  340. this.sBtnLogin_Click(null, null);
  341. }
  342. }
  343. else
  344. {
  345. this.spalHead.BackgroundImage = LYFZ.ComponentLibrary.Properties.UIBlueResources.LYFZHD;
  346. if (sender != null)
  347. {
  348. isEnterBtnLogin = false;
  349. this.schbRememberPwd.Checked = false;
  350. this.textBoxPwd.Text = "";
  351. foreach (LYFZ.CloudServerData.Model.HistoryUser user in frmMain.ClientCon.HistoryUserList)
  352. {
  353. try
  354. {
  355. string UserAccount = user.UserID;
  356. if (this.stxtUserName.Text.Trim().ToLower() == UserAccount.Trim().ToLower())
  357. {
  358. this.textBoxPwd.Text = LYFZ.WinAPI.SDKSecurity.Decode(user.Password).Trim();
  359. if (this.textBoxPwd.Text.Trim().Length > 0)
  360. {
  361. this.schbRememberPwd.Checked = true;
  362. }
  363. }
  364. }
  365. catch
  366. {
  367. }
  368. }
  369. }
  370. }
  371. }
  372. catch
  373. {
  374. }
  375. }
  376. //从帐号下拉列表中 选中某个登录帐号
  377. protected void toolStripMenuItemID_Click(object sender, EventArgs e)
  378. {
  379. ToolStripMenuItem item = (ToolStripMenuItem)sender;
  380. string[] tag = (string[])item.Tag;
  381. this.stxtUserName.Text = tag[0];
  382. this.schbRememberPwd.Checked = false;
  383. this.textBoxPwd.Text = "";
  384. if (tag.Length == 3)
  385. {
  386. if (tag[2].Trim() != "")
  387. {
  388. this.textBoxPwd.Text = LYFZ.WinAPI.SDKSecurity.Decode(tag[2]);
  389. this.schbRememberPwd.Checked = true;
  390. }
  391. }
  392. this.spalHead.BackgroundImage = item.Image;
  393. this.textBoxPwd.Focus();
  394. }
  395. #endregion
  396. }
  397. }