This repository has been archived by the owner on Nov 11, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 208
/
Wx_MainLogin.cs
267 lines (255 loc) · 11.8 KB
/
Wx_MainLogin.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using YUNkefu;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Net;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using YUNkefu.Core;
using YUNkefu.Wxlogin;
namespace YUNkefu
{
public partial class Wx_MainLogin : SkinMain
{
Xmloperation xmlop;
public Xmloperation Xmlop
{
get { return xmlop; }
set { xmlop = value; }
}
public Wx_MainLogin(Xmloperation xmlop)
: this()
{
this.xmlop = xmlop;
}
List<User> UsersList;
public bool flag = false; //用户登录的标记
int CheckCode = 0; //用户是否敲击回车以便检测编号(0:无,1:有)
public Wx_MainLogin()
{
InitializeComponent();
}
/// <summary>
/// 系统启动加载
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Main_Login_Load(object sender, System.EventArgs e)
{
XmlDocument doc = new XmlDocument();
doc.Load(Environment.CurrentDirectory + '\\' + "ClentFile.xml");
string path = "Config/Version";
XmlNode node = doc.SelectSingleNode(path);
string text = node.InnerText;//xml.
vs.Text = "当前云客服版本号" + text;
if (File.Exists("User_013.dll"))
{
FileStream fs = new FileStream("User_013.dll", FileMode.Open, FileAccess.Read);
BinaryFormatter bf = new BinaryFormatter(); //创建一个序列化和反序列化类的对象
UsersList = (List<User>)bf.Deserialize(fs); //调用反序列化方法,从文件User_013.dll中读取对象信息
for (int i = 0; i < UsersList.Count; i++)//将集合中的用户登录ID读取到下拉框中
{
if (i == 0 && UsersList[i].LoingPassword != "") //如果第一个用户已经记住密码。
{
chkMemoryPwd.Checked = true;
txtPwd.Text = UsersList[i].LoingPassword; //给密码框赋值
}
tbCode.Items.Add(UsersList[i].LoginName.ToString());
txtPwd.Text = UsersList[i].LoingPassword; //给密码框赋值
}
fs.Close(); //关闭文件流
tbCode.SelectedIndex = 0; //默认下拉框选中为第一项
}
else
{
UsersList = new List<User>();
}
}
private void btDL_Click(object sender, System.EventArgs e)
{
if (CheckCode == 0) //直接点击按钮登录,此时需要检测编号是否存在以及当前是否在使用!
{
if (tbCode.Text == "")
{
msgss.Text = "提示:呃...没帐号怎么登录!";
tbCode.Focus();
}
else
{
string loginName = tbCode.Text.Trim(); //将下拉框的登录名先保存在变量中
for (int i = 0; i < tbCode.Items.Count; i++) //遍历下拉框中的所有元素
{
if (tbCode.Items[i].ToString() == loginName)
{
tbCode.Items.RemoveAt(i); //如果当前登录用户在下拉列表中已经存在,则将其移除
break;
}
}
for (int i = 0; i < UsersList.Count; i++) //遍历用户集合中的所有元素
{
if (UsersList[i].LoginName == loginName) //如果当前登录用户在用户集合中已经存在,则将其移除
{
UsersList.RemoveAt(i);
break;
}
}
tbCode.Items.Insert(0, loginName); //每次都将最后一个登录的用户放插入到第一位
User user;
if (chkMemoryPwd.Checked == true) //如果用户要记住密码
{
string newPwd = MyEncrypt.EncryptDES(txtPwd.Text.Trim()); //如果用户要求记住密码则对该密码进行加密
user = new User(loginName, newPwd); //将登录ID和密码一起插入到用户集合中
UsersList.Add(user);
}
{
// user = new User(loginName, ""); //否则只插入一个用户名到用户集合中,密码设为空
// UsersList.Insert(0, user); //在用户集合中插入一个用户
tbCode.SelectedIndex = 0; //让下拉框选中集合中的第一个
}
StringWriter sw = new StringWriter();
JsonWriter writer = new JsonTextWriter(sw);
writer.WriteStartObject();
writer.WritePropertyName("org_id");
writer.WriteValue("1");
writer.WritePropertyName("dev_id");
writer.WriteValue("1");
writer.WritePropertyName("id");
writer.WriteValue(tbCode.Text);
writer.WritePropertyName("passwd");
writer.WriteValue(txtPwd.Text);
writer.WriteEndObject();
writer.Flush();
string jsonText = sw.GetStringBuilder().ToString();
ASCIIEncoding encoding = new ASCIIEncoding();
string postData = "" + sw.GetStringBuilder().ToString();
byte[] data = encoding.GetBytes(postData);
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(Yihuyun.Yihuyun_loginurl);
myRequest.Method = "POST";
myRequest.ContentType = "application/x-www-form-urlencoded";
myRequest.ContentLength = data.Length;
Stream newStream = myRequest.GetRequestStream();
newStream.Write(data, 0, data.Length);
newStream.Close();
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
try
{
string content = reader.ReadToEnd();
JObject getlogin = (JObject)JsonConvert.DeserializeObject(content);
string msg = getlogin["msg"].ToString();
if (msg == "success")
{
JObject jo = (JObject)JsonConvert.DeserializeObject(content);
string token = jo["token"].ToString();
texttoken.Text = token;
this.Hide();
Wx_MainFrom dig = new Wx_MainFrom();
Program.token = token;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://139.224.61.240:7655/api/v2/org?token" + texttoken.Text);
request.Method = "GET";
request.ContentType = "text/html;charset=UTF-8";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
string retString = myStreamReader.ReadToEnd();
JObject getname = (JObject)JsonConvert.DeserializeObject(content);
string real_name = getname["real_name"].ToString();
Program.opreal_name = real_name;
FileStream fs = new FileStream("User_013.dll", FileMode.Create, FileAccess.Write); //创建一个文件流对象
BinaryFormatter bf = new BinaryFormatter(); //创建一个序列化和反序列化对象
bf.Serialize(fs, UsersList); //要先将User类先设为可以序列化(即在类的前面加[Serializable]),将用户集合信息写入到硬盘中。
fs.Close(); //关闭文件流
myStreamReader.Close();
myResponseStream.Close();
dig.ShowDialog();
}
else
{
msgss.Text = "登录 失败 请检查用户名密码!";
tbCode.Focus();
}
}
catch (Exception logex)
{
msgss.Text = "登录失败网络异常!";
//写日志
Tools.WriteLog(msgss.Text + logex.ToString());
}
finally
{
this.Close();
}
}
}
}
private void txtPwd_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == 13)
{
btDL_Click(sender, e);
}
}
private void tbCode_SelectionChangeCommitted(object sender, EventArgs e)
{
if (UsersList[tbCode.SelectedIndex].LoingPassword != "") //如果用户密码不为空时
{
//把用户ID所对应的密码赋给密码框
tbCode.Text = UsersList[tbCode.SelectedIndex].LoingPassword.ToString();
chkMemoryPwd.Checked = true;
}
else
{
tbCode.Text = ""; //如果用户密码本身就为空
chkMemoryPwd.Checked = false;
}
}
/// <summary>
///最小化动画事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void pic_Mxi_Click(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
}
private void pic_Mxi_MouseDown(object sender, MouseEventArgs e)
{
pic_Mxi.Image = Properties.Resources.mxi_hover;
pic_Mxi.Location = new Point(pic_Mxi.Location.X + 1, pic_Mxi.Location.Y + 1);
}
private void pic_Mxi_MouseEnter(object sender, EventArgs e)
{
pic_Mxi.Image = Properties.Resources.mxi_hover;
}
private void pic_Mxi_MouseLeave(object sender, EventArgs e)
{
pic_Mxi.Image = Properties.Resources.mxi;
}
/// <summary>
/// 关闭事件动画
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void loginclose_Click(object sender, EventArgs e)
{
Close();
}
private void loginclose_MouseDown(object sender, MouseEventArgs e)
{
loginclose.Image = Properties.Resources.close_hover;
}
private void loginclose_MouseEnter(object sender, EventArgs e)
{
loginclose.Image = Properties.Resources.close_hover;
}
private void loginclose_MouseLeave(object sender, EventArgs e)
{
loginclose.Image = Properties.Resources.close;
}
}
}