ServiceHelper.cs 45 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199
  1. using Dragablz;
  2. using Newtonsoft.Json;
  3. using Newtonsoft.Json.Linq;
  4. using PDF_Master.Model;
  5. using PDF_Master.Properties;
  6. using PDF_Master.ViewModels;
  7. using PDF_Master.Views;
  8. using Prism.Services.Dialogs;
  9. using System;
  10. using System.Collections.Generic;
  11. using System.Globalization;
  12. using System.IO;
  13. using System.Linq;
  14. using System.Management;
  15. using System.Net;
  16. using System.Runtime.InteropServices;
  17. using System.Security.Cryptography;
  18. using System.Text;
  19. using System.Text.RegularExpressions;
  20. using System.Threading.Tasks;
  21. using System.Windows;
  22. namespace PDF_Master.Helper
  23. {
  24. /// <summary>
  25. /// 注册登陆相关的工具类
  26. /// </summary>
  27. ///
  28. public static class ServiceHelper
  29. {
  30. public static bool IsLogin=false;
  31. public static string ALLPassword = "";
  32. public static string access_token = "";
  33. public static string outemail = "";
  34. public static string outcode = "";
  35. public static string outregister = "";
  36. public static string outlogin = "";
  37. public static string code = "";
  38. public static string okcode = "";
  39. public static string remsg = "";
  40. public static string state = "";
  41. public static string AppCode = "com.brother.pdfreaderprofree.windows";
  42. #if DEBUG
  43. //测试环境
  44. public static string RequestHost = "http://139.196.160.101:8081";
  45. #else
  46. //正式环境
  47. public static string RequestHost = "https://pdfmaster.pdfreaderpro.com";
  48. #endif
  49. /// <summary>
  50. /// 验证邮箱
  51. /// </summary>
  52. public static string OKemailUrl = "/pdf-office-sso/auth/validUser";
  53. /// <summary>
  54. /// 验证验证码
  55. /// </summary>
  56. public static string OKcodeUrl = "/pdf-office-sso/auth/isEmailCodeValid";
  57. /// <summary>
  58. /// 发送验证码
  59. /// </summary>
  60. public static string GetcodeUrl = "/pdf-office-sso/auth/getVerifyCode";
  61. /// <summary>
  62. /// 注册邮箱
  63. /// </summary>
  64. public static string registerUrl = "/pdf-office-sso/auth/emailRegister";
  65. /// <summary>
  66. /// /登录
  67. /// </summary>
  68. public static string LoginUrl = "/pdf-office-sso/auth/emailLogin";
  69. /// <summary>
  70. /// 登出
  71. /// </summary>
  72. public static string LogoutUrl = "/pdf-office-sso/user/logout";
  73. /// <summary>
  74. /// 注销
  75. /// </summary>
  76. public static string UseroutUrl = "/pdf-office-sso/user/logOffForUser";
  77. /// <summary>
  78. /// 重置密码
  79. /// </summary>
  80. public static string RebirthUrl = "/pdf-office-sso/auth/resetPassword";
  81. /// <summary>
  82. /// 获取用户信息
  83. /// </summary>
  84. public static string GetUserUrl = "/pdf-office-sso/user/me";
  85. /// <summary>
  86. /// 收集软件启动数据
  87. /// </summary>
  88. public static string DeviceLogUrl = "/pdf-office-account/deviceLog/create";
  89. /// <summary>
  90. /// 设备是否被自动登出
  91. /// </summary>
  92. public static string CheckDeviceStatusUrl = "/pdf-office-sso/auth/checkDeviceStatus";
  93. /// <summary>
  94. /// 用于检查网络是否可以连接互联网,true表示连接成功,false表示连接失败
  95. /// </summary>
  96. /// <returns></returns>
  97. [DllImport("wininet.dll")]
  98. private extern static bool InternetGetConnectedState(int Description, int ReservedValue);
  99. public static bool IsConnectInternet()
  100. {
  101. int Description = 0;
  102. return InternetGetConnectedState(Description, 0);
  103. }
  104. private static string computerInfo;
  105. /// <summary>
  106. /// 电脑品牌信息
  107. /// </summary>
  108. public static string ComputerInfo
  109. {
  110. get
  111. {
  112. if (computerInfo == null)
  113. {
  114. computerInfo = GetComputerInfo();
  115. }
  116. return computerInfo;
  117. }
  118. set { computerInfo = value; }
  119. }
  120. private static string systemInfo;
  121. /// <summary>
  122. /// 系统信息
  123. /// </summary>
  124. public static string SystemInfo
  125. {
  126. get
  127. {
  128. if (systemInfo == null)
  129. {
  130. systemInfo = GetSystemInfo();
  131. }
  132. return systemInfo;
  133. }
  134. set { systemInfo = value; }
  135. }
  136. private static string GetSystemInfo()
  137. {
  138. try
  139. {
  140. string s = "";
  141. SelectQuery sq = new SelectQuery("Win32_OperatingSystem");
  142. ManagementObjectSearcher mos = new ManagementObjectSearcher(sq);
  143. ManagementObjectCollection moc = mos.Get();
  144. foreach (ManagementObject mo in moc)
  145. {
  146. s = mo.Properties["Version"].Value.ToString();
  147. }
  148. moc.Dispose();
  149. sq = null;
  150. return s;
  151. }
  152. catch { return ""; }
  153. }
  154. private static string GetComputerInfo()
  155. {
  156. try
  157. {
  158. string s = "";
  159. System.Windows.Controls.TextBox text = new System.Windows.Controls.TextBox();
  160. SelectQuery sq = new SelectQuery("Win32_ComputerSystem");
  161. ManagementObjectSearcher mos = new ManagementObjectSearcher(sq);
  162. ManagementObjectCollection moc = mos.Get();
  163. foreach (ManagementObject mo in moc)
  164. {
  165. s = mo.Properties["Manufacturer"].Value + " " + mo.Properties["Model"].Value;
  166. }
  167. moc.Dispose();
  168. sq = null;
  169. return s;
  170. }
  171. catch { return ""; }
  172. }
  173. /// <summary>
  174. /// 操作系统生成的UUID,用于获取虚拟机用户的设备识别码
  175. /// </summary>
  176. /// <returns></returns>
  177. public static string GetUUID()
  178. {
  179. string systemId = null;
  180. using (ManagementObjectSearcher mos = new ManagementObjectSearcher("select * from Win32_ComputerSystemProduct"))
  181. {
  182. foreach (var item in mos.Get())
  183. {
  184. systemId = item["UUID"].ToString();
  185. }
  186. }
  187. return systemId;
  188. }
  189. /// <summary>
  190. /// 主板编号
  191. /// </summary>
  192. /// <returns></returns>
  193. public static string GetBoardId()
  194. {
  195. var st = string.Empty;
  196. var mos = new ManagementObjectSearcher("Select * from Win32_BaseBoard");
  197. foreach (var o in mos.Get())
  198. {
  199. var mo = (ManagementObject)o;
  200. st = mo["SerialNumber"].ToString();
  201. }
  202. return st;
  203. }
  204. /// <summary>
  205. /// 获取设备唯一ID
  206. /// </summary>
  207. /// <returns></returns>
  208. public static string GetDeviceSerialNumber()
  209. {
  210. StringBuilder DeviceBuilder = new StringBuilder();
  211. bool IsVirtual = false;
  212. string boardId = GetBoardId();
  213. string uuid = GetUUID();
  214. //判断是否是虚拟机用户
  215. if (boardId.ToLower() == "" || boardId.ToLower() == "none")
  216. {
  217. if (string.IsNullOrEmpty(uuid) || uuid.ToLower() == "none")
  218. return string.Empty;
  219. else
  220. IsVirtual = true;
  221. }
  222. //真实机器用户 用主板id作为唯一识别码
  223. if (!IsVirtual)
  224. {
  225. DeviceBuilder.Append(boardId);
  226. }
  227. else
  228. {
  229. DeviceBuilder.Append(uuid);
  230. }
  231. MD5 md5 = MD5.Create();
  232. List<byte> charbytes = new List<byte>();
  233. foreach (char code in DeviceBuilder.ToString().ToArray())
  234. {
  235. charbytes.Add((byte)code);
  236. }
  237. byte[] md5Array = md5.ComputeHash(charbytes.ToArray());
  238. DeviceBuilder = new StringBuilder();
  239. foreach (var code in md5Array)
  240. {
  241. DeviceBuilder.Append(code.ToString("X2"));
  242. }
  243. return DeviceBuilder.ToString();
  244. }
  245. /// <summary>
  246. /// 获取设备系统版本
  247. /// </summary>
  248. /// <returns></returns>
  249. public static string GetSystemVersionNumber()
  250. {
  251. var st = string.Empty;
  252. try
  253. {
  254. var mc = new ManagementClass("Win32_OperatingSystem");
  255. var moc = mc.GetInstances();
  256. foreach (var o in moc)
  257. {
  258. var mo = (ManagementObject)o;
  259. st = mo.Properties["Version"].Value.ToString();
  260. if (st != string.Empty)
  261. {
  262. break;
  263. }
  264. }
  265. }
  266. catch (Exception ex)
  267. {
  268. }
  269. return st;
  270. }
  271. /// <summary>
  272. /// 高级功能前弹出比较表
  273. /// </summary>
  274. /// <param name="post">是否请求服务器</param>
  275. public static bool IAPBeforeFunction(bool post = false)
  276. {
  277. (App.mainWindowViewModel.SelectedItem.DataContext as MainContentViewModel).IsUsedVIP=true;
  278. if (!post)
  279. {
  280. //判断本地有没有token,没有显示登录,有再判断登录状态
  281. if (Settings.Default.AppProperties.LoginToken != "")
  282. {
  283. if (ServiceHelper.GetUser() == "330"|| ServiceHelper.GetUser() == "304")
  284. {
  285. App.mainWindowViewModel.UserVis = Visibility.Collapsed;
  286. App.mainWindowViewModel.LoginVis = Visibility.Visible;
  287. App.mainWindowViewModel.OphVis = Visibility.Visible;
  288. if (Settings.Default.UserDate.IsLoginoff == false)
  289. {
  290. App.mainWindowViewModel.OpenLoginoff();
  291. Settings.Default.UserDate.IsLoginoff = true;
  292. Settings.Default.Save();
  293. }
  294. }
  295. }
  296. else
  297. {
  298. App.mainWindowViewModel.UserVis = Visibility.Collapsed;
  299. App.mainWindowViewModel.LoginVis = Visibility.Visible;
  300. App.mainWindowViewModel.OphVis = Visibility.Visible;
  301. }
  302. }
  303. //付费锁
  304. //删掉 Settings.Default.UserDate.isInFreeUseTime == false,没有试用期了;
  305. if (!App.IsLogin)
  306. {
  307. if(Settings.Default.UserDate.Email=="")
  308. {
  309. App.mainWindowViewModel.OpenRegister();
  310. return false;
  311. }
  312. else
  313. {
  314. App.mainWindowViewModel.OpenLogin();
  315. return false;
  316. }
  317. }
  318. return true;
  319. }
  320. //超时同步为20秒
  321. /// <summary>
  322. /// 用户信息获取
  323. /// </summary>
  324. /// <returns></returns>
  325. public static String GetUser()
  326. {
  327. HttpWebResponse response = null;
  328. ServicePointManager.DefaultConnectionLimit = 200;
  329. HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(RequestHost + GetUserUrl + "");
  330. request.Method = "Get";
  331. request.Headers.Add("Authorization", $"Bearer {Settings.Default.AppProperties.LoginToken}");
  332. request.ContentType = "text/html;charset=UTF-8";
  333. //request.Accept = "application/vnd.api+json;version=1";
  334. request.UserAgent = "Apifox/1.0.0 (https://www.apifox.cn)";
  335. request.Timeout = 20000;
  336. request.ServicePoint.Expect100Continue = false;
  337. try
  338. {
  339. response = (HttpWebResponse)request.GetResponse();
  340. using (StreamReader reader = new StreamReader(response.GetResponseStream()))
  341. {
  342. string responseData = reader.ReadToEnd();
  343. Console.WriteLine(responseData);
  344. reader.Close();
  345. JObject jobject = (JObject)JsonConvert.DeserializeObject(responseData);
  346. if (response != null)
  347. {
  348. response.Close();
  349. }
  350. if (request != null)
  351. {
  352. request.Abort();
  353. }
  354. Console.WriteLine(responseData);
  355. JToken jToken;
  356. if (jobject.TryGetValue("msg", out jToken) == false)
  357. {
  358. App.IsLogin = true;
  359. Settings.Default.UserDate.Email= jobject["email"].ToObject<string>().ToLower();
  360. Settings.Default.UserDate.id= jobject["id"].ToObject<string>().ToLower();
  361. JArray subscriptionInfoList = (JArray)jobject["subscriptionInfoList"];
  362. foreach (JToken info in subscriptionInfoList)
  363. {
  364. if ((int)info["platform"] == 2)
  365. {
  366. Settings.Default.UserDate.subscribeid = (string)info["id"];
  367. Settings.Default.UserDate.subscribeuserid = (string)info["userId"];
  368. Settings.Default.UserDate.subscribeplatform = (int)info["platform"];
  369. Settings.Default.UserDate.subscribestatus = (int)info["status"];
  370. if (Settings.Default.UserDate.subscribestatus > 0)
  371. {
  372. Settings.Default.UserDate.subscribeendDate = (string)info["endDate"];
  373. Settings.Default.UserDate.subscribepayType = (int)info["payType"];
  374. }
  375. }
  376. }
  377. //此处为主页UPgread按钮的Visible
  378. if (Settings.Default.UserDate.subscribestatus == 1)
  379. {
  380. for (int i = 0; i < App.Current.Windows.Count; i++)
  381. {
  382. MainWindow win = App.Current.Windows[i] as MainWindow;
  383. if (win != null&& win.DataContext!=null)
  384. {
  385. (win.DataContext as MainWindowViewModel).UpgradeVis = Visibility.Collapsed;
  386. (win.DataContext as MainWindowViewModel).Useremailchar = Settings.Default.UserDate.Email.Substring(0, 1);
  387. }
  388. }
  389. }
  390. else
  391. {
  392. for (int i = 0; i < App.Current.Windows.Count; i++)
  393. {
  394. MainWindow win = App.Current.Windows[i] as MainWindow;
  395. if (win != null&& win.DataContext!=null)
  396. {
  397. (win.DataContext as MainWindowViewModel).UpgradeVis = Visibility.Visible;
  398. (win.DataContext as MainWindowViewModel).Useremailchar = Settings.Default.UserDate.Email.Substring(0, 1);
  399. }
  400. }
  401. }
  402. #region 试用策略
  403. //Settings.Default.UserDate.isInFreeUseTime= jobject["isInFreeUseTime"].ToObject<bool>();
  404. //Settings.Default.UserDate.freeDate= jobject["freeDate"].ToObject<string>().ToLower();
  405. //if(DateTime.Parse(Settings.Default.UserDate.freeDate)<=DateTime.Now)
  406. //{
  407. // Settings.Default.UserDate.isInFreeUseTime = false;
  408. //}
  409. #endregion
  410. App.mainWindowViewModel.Useremailchar = Settings.Default.UserDate.Email.Substring(0, 1);
  411. Settings.Default.Save();
  412. return "ture";
  413. }
  414. else
  415. {
  416. return "false";
  417. }
  418. }
  419. }
  420. catch (System.Net.WebException e)
  421. {
  422. int statusCode = 0;
  423. if (e.Response is HttpWebResponse)
  424. {
  425. //从网络异常信息里解析错误,后面的逻辑根据错误码判断会更准确
  426. statusCode = (int)((HttpWebResponse)e.Response).StatusCode;
  427. }
  428. //试用策略注释
  429. //if (DateTime.Parse(Settings.Default.UserDate.freeDate) <= DateTime.Now)
  430. //{
  431. // Settings.Default.UserDate.isInFreeUseTime = false;
  432. //}
  433. Console.WriteLine(e.Message);
  434. //无权限
  435. if (Settings.Default.AppProperties.LoginToken == "")
  436. return "No Token";
  437. else if(statusCode == 401)
  438. {
  439. if(CheckDeviceStatusout()=="330")
  440. {
  441. App.IsLogin = false;
  442. return "330";
  443. }
  444. else
  445. {
  446. return "304";
  447. }
  448. }
  449. else return "300";
  450. }
  451. catch
  452. {
  453. //试用策略注释
  454. //if (DateTime.Parse(Settings.Default.UserDate.freeDate) <= DateTime.Now)
  455. //{
  456. // Settings.Default.UserDate.isInFreeUseTime = false;
  457. //}
  458. return "300";
  459. }
  460. }
  461. /// <summary>
  462. /// 验证email格式
  463. /// </summary>
  464. /// <param name="intemail"></param>
  465. /// <param name="validType"></param>
  466. /// <returns></returns>
  467. public static String Ok_email(string intemail, string validType)
  468. {
  469. HttpWebResponse response = null;
  470. ServicePointManager.DefaultConnectionLimit = 200;
  471. HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(RequestHost + OKemailUrl);
  472. request.Method = "Post";
  473. request.ContentType = "application/json";
  474. //request.Accept = "application/vnd.api+json;version=1";
  475. request.UserAgent = "Apifox/1.0.0 (https://www.apifox.cn)";
  476. request.Timeout = 20000;
  477. request.ServicePoint.Expect100Continue = false;
  478. StringWriter sw = new StringWriter();
  479. using (JsonWriter writer = new JsonTextWriter(sw))
  480. {
  481. writer.WriteStartObject();
  482. writer.WritePropertyName("appId");
  483. writer.WriteValue(16);
  484. writer.WritePropertyName("platformType");
  485. writer.WriteValue(0);
  486. writer.WritePropertyName("username");
  487. writer.WriteValue(intemail);
  488. writer.WritePropertyName("validType");
  489. writer.WriteValue(validType);
  490. writer.WriteEndObject();
  491. }
  492. try
  493. {
  494. string postBody = sw.ToString();
  495. using (StreamWriter writer = new StreamWriter(request.GetRequestStream()))
  496. {
  497. writer.Write(postBody);
  498. writer.Close();
  499. }
  500. response = (HttpWebResponse)request.GetResponse();
  501. using (StreamReader reader = new StreamReader(response.GetResponseStream()))
  502. {
  503. string responseData = reader.ReadToEnd();
  504. Console.WriteLine(responseData);
  505. reader.Close();
  506. JObject jobject = (JObject)JsonConvert.DeserializeObject(responseData);
  507. //outemail = jobject["msg"].ToObject<string>().ToLower();
  508. if (response != null)
  509. {
  510. response.Close();
  511. }
  512. if (request != null)
  513. {
  514. request.Abort();
  515. }
  516. return jobject["code"].ToObject<string>().ToLower();
  517. }
  518. }
  519. catch
  520. {
  521. return "300";
  522. }
  523. }
  524. /// <summary>
  525. /// 获取验证码
  526. /// </summary>
  527. /// <param name="action"></param>
  528. /// <param name="email"></param>
  529. /// <returns></returns>
  530. public static string Get_code(string action, string email)
  531. {
  532. string post = $"?action={action}&appId=16&receiver={email}&type=0";
  533. HttpWebResponse response = null;
  534. ServicePointManager.DefaultConnectionLimit = 200;
  535. HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(RequestHost + GetcodeUrl + post);
  536. request.Method = "Get";
  537. request.ContentType = "text/html;charset=UTF-8";
  538. //request.Accept = "application/vnd.api+json;version=1";
  539. request.UserAgent = "Apifox/1.0.0 (https://www.apifox.cn)";
  540. request.Timeout = 20000;
  541. request.ServicePoint.Expect100Continue = false;
  542. try
  543. {
  544. response = (HttpWebResponse)request.GetResponse();
  545. using (StreamReader reader = new StreamReader(response.GetResponseStream()))
  546. {
  547. string responseData = reader.ReadToEnd();
  548. Console.WriteLine(responseData);
  549. reader.Close();
  550. JObject jobject = (JObject)JsonConvert.DeserializeObject(responseData);
  551. if (response != null)
  552. {
  553. response.Close();
  554. }
  555. if (request != null)
  556. {
  557. request.Abort();
  558. }
  559. return jobject["code"].ToObject<string>().ToLower();
  560. }
  561. }
  562. catch
  563. {
  564. return "300";
  565. }
  566. }
  567. /// <summary>
  568. /// 验证验证码是否正确
  569. /// </summary>
  570. /// <param name="email"></param>
  571. /// <param name="code"></param>
  572. /// <param name="type"></param>
  573. /// <returns></returns>
  574. public static String Ok_code(string email, string code, string type)
  575. {
  576. string post = $"?account={email}&code={code}&type={type}&appId=16";
  577. HttpWebResponse response = null;
  578. ServicePointManager.DefaultConnectionLimit = 200;
  579. HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(RequestHost + OKcodeUrl + post);
  580. request.Method = "Get";
  581. request.ContentType = "text/html;charset=UTF-8";
  582. //request.Accept = "application/vnd.api+json;version=1";
  583. request.UserAgent = "Apifox/1.0.0 (https://www.apifox.cn)";
  584. request.Timeout = 20000;
  585. request.ServicePoint.Expect100Continue = false;
  586. try
  587. {
  588. response = (HttpWebResponse)request.GetResponse();
  589. using (StreamReader reader = new StreamReader(response.GetResponseStream()))
  590. {
  591. string responseData = reader.ReadToEnd();
  592. Console.WriteLine(responseData);
  593. reader.Close();
  594. JObject jobject = (JObject)JsonConvert.DeserializeObject(responseData);
  595. if (response != null)
  596. {
  597. response.Close();
  598. }
  599. if (request != null)
  600. {
  601. request.Abort();
  602. }
  603. return jobject["code"].ToObject<string>().ToLower();
  604. }
  605. }
  606. catch
  607. {
  608. return "300";
  609. }
  610. }
  611. /// <summary>
  612. /// 注册账号
  613. /// </summary>
  614. /// <param name="intemail"></param>
  615. /// <param name="intpassword"></param>
  616. /// <param name="intcode"></param>
  617. /// <param name="uuid"></param>
  618. /// <returns></returns>
  619. public static String Register_email(string intemail, string intpassword, string intcode, string uuid)
  620. {
  621. HttpWebResponse response = null;
  622. ServicePointManager.DefaultConnectionLimit = 200;
  623. HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(RequestHost + registerUrl);
  624. request.Method = "Post";
  625. request.ContentType = "application/json";
  626. //request.Accept = "application/vnd.api+json;version=1";
  627. request.UserAgent = "Apifox/1.0.0 (https://www.apifox.cn)";
  628. request.Timeout = 20000;
  629. request.ServicePoint.Expect100Continue = false;
  630. StringWriter sw = new StringWriter();
  631. using (JsonWriter writer = new JsonTextWriter(sw))
  632. {
  633. writer.WriteStartObject();
  634. writer.WritePropertyName("appId");
  635. writer.WriteValue(16);
  636. writer.WritePropertyName("deviceSign");
  637. writer.WriteValue(uuid);
  638. writer.WritePropertyName("password");
  639. writer.WriteValue(intpassword);
  640. writer.WritePropertyName("platformType");
  641. writer.WriteValue(0);
  642. writer.WritePropertyName("username");
  643. writer.WriteValue(intemail);
  644. writer.WritePropertyName("verifyCode");
  645. writer.WriteValue(intcode);
  646. writer.WritePropertyName("model");
  647. writer.WriteValue("windows");
  648. writer.WriteEndObject();
  649. }
  650. try
  651. {
  652. string postBody = sw.ToString();
  653. using (StreamWriter writer = new StreamWriter(request.GetRequestStream()))
  654. {
  655. writer.Write(postBody);
  656. writer.Close();
  657. }
  658. response = (HttpWebResponse)request.GetResponse();
  659. using (StreamReader reader = new StreamReader(response.GetResponseStream()))
  660. {
  661. string responseData = reader.ReadToEnd();
  662. Console.WriteLine(responseData);
  663. reader.Close();
  664. JObject jobject = (JObject)JsonConvert.DeserializeObject(responseData);
  665. if (response != null)
  666. {
  667. response.Close();
  668. }
  669. if (request != null)
  670. {
  671. request.Abort();
  672. }
  673. if (jobject["code"].ToObject<string>().ToLower() == "200")
  674. {
  675. App.IsLogin =true;
  676. for (int i = 0; i < App.Current.Windows.Count; i++)
  677. {
  678. MainWindow win = App.Current.Windows[i] as MainWindow;
  679. if (win != null)
  680. {
  681. (win.DataContext as MainWindowViewModel).UserVis = Visibility.Visible;
  682. (win.DataContext as MainWindowViewModel).LoginVis = Visibility.Collapsed;
  683. (win.DataContext as MainWindowViewModel).RegisterVis = Visibility.Collapsed;
  684. }
  685. }
  686. Settings.Default.UserDate.Email = intemail;
  687. Settings.Default.UserDate.IsLoginoff = false;
  688. access_token = jobject["result"]["access_token"].ToObject<string>().ToLower();
  689. Settings.Default.AppProperties.LoginToken = jobject["result"]["access_token"].ToObject<string>().ToLower();
  690. Settings.Default.Save();
  691. GetUser();
  692. }
  693. //return jobject["code"].ToObject<string>().ToLower();
  694. return "200";
  695. }
  696. }
  697. catch
  698. {
  699. return "300";
  700. }
  701. }
  702. /// <summary>
  703. /// 登录
  704. /// </summary>
  705. /// <param name="intemail"></param>
  706. /// <param name="intpassword"></param>
  707. /// <param name="uuid"></param>
  708. /// <returns></returns>
  709. public static String Login(string intemail, string intpassword, string uuid)
  710. {
  711. string postBody = $"?appId=16&deviceSign={uuid}&email={intemail}&password={intpassword}&platformType=0&model=windows";
  712. HttpWebResponse response = null;
  713. ServicePointManager.DefaultConnectionLimit = 200;
  714. HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(RequestHost + LoginUrl + postBody);
  715. request.Method = "Post";
  716. request.ContentType = "application/x-www-form-urlencoded";
  717. //request.Accept = "application/vnd.api+json;version=1";
  718. request.UserAgent = "Apifox/1.0.0 (https://www.apifox.cn)";
  719. request.Timeout = 20000;
  720. request.ServicePoint.Expect100Continue = false;
  721. try
  722. {
  723. response = (HttpWebResponse)request.GetResponse();
  724. using (StreamReader reader = new StreamReader(response.GetResponseStream()))
  725. {
  726. string responseData = reader.ReadToEnd();
  727. Console.WriteLine(responseData);
  728. reader.Close();
  729. JObject jobject = (JObject)JsonConvert.DeserializeObject(responseData);
  730. if (response != null)
  731. {
  732. response.Close();
  733. }
  734. if (request != null)
  735. {
  736. request.Abort();
  737. }
  738. if (jobject["code"].ToObject<string>().ToLower() == "200")
  739. {
  740. for (int i = 0; i < App.Current.Windows.Count; i++)
  741. {
  742. MainWindow win = App.Current.Windows[i] as MainWindow;
  743. if (win != null)
  744. {
  745. (win.DataContext as MainWindowViewModel).UserVis = Visibility.Visible;
  746. (win.DataContext as MainWindowViewModel).LoginVis = Visibility.Collapsed;
  747. (win.DataContext as MainWindowViewModel).RegisterVis = Visibility.Collapsed;
  748. }
  749. }
  750. App.IsLogin = true;
  751. Settings.Default.UserDate.Email = intemail;
  752. Settings.Default.UserDate.IsLoginoff = false;
  753. access_token = jobject["result"]["access_token"].ToObject<string>().ToLower();
  754. Settings.Default.AppProperties.LoginToken = jobject["result"]["access_token"].ToObject<string>().ToLower();
  755. Settings.Default.Save();
  756. GetUser();
  757. }
  758. return jobject["code"].ToObject<string>().ToLower();
  759. }
  760. }
  761. catch
  762. {
  763. return "300";
  764. }
  765. }
  766. /// <summary>
  767. /// 登出
  768. /// </summary>
  769. /// <param name="uuid"></param>
  770. public static void Logout(string uuid)
  771. {
  772. string postBody = $"?deviceSign={uuid}&appId=16";
  773. HttpWebResponse response = null;
  774. ServicePointManager.DefaultConnectionLimit = 200;
  775. HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(RequestHost + LogoutUrl + postBody);
  776. request.Method = "Post";
  777. request.Headers.Add("Authorization", $"Bearer {Settings.Default.AppProperties.LoginToken}");
  778. request.ContentType = "application/x-www-form-urlencoded";
  779. //request.Accept = "application/vnd.api+json;version=1";
  780. request.UserAgent = "Apifox/1.0.0 (https://www.apifox.cn)";
  781. request.Timeout = 20000;
  782. request.ServicePoint.Expect100Continue = false;
  783. try
  784. {
  785. response = (HttpWebResponse)request.GetResponse();
  786. using (StreamReader reader = new StreamReader(response.GetResponseStream()))
  787. {
  788. string responseData = reader.ReadToEnd();
  789. Console.WriteLine(responseData);
  790. reader.Close();
  791. JObject jobject = (JObject)JsonConvert.DeserializeObject(responseData);
  792. App.IsLogin = false;
  793. Settings.Default.UserDate.subscribestatus = -1;
  794. Settings.Default.UserDate.subscribepayType = 0;
  795. App.mainWindowViewModel.UpgradeVis = Visibility.Visible;
  796. for (int i = 0; i < App.Current.Windows.Count; i++)
  797. {
  798. MainWindow win = App.Current.Windows[i] as MainWindow;
  799. if (win != null)
  800. {
  801. (win.DataContext as MainWindowViewModel).UserVis = Visibility.Collapsed;
  802. (win.DataContext as MainWindowViewModel).LoginVis = Visibility.Visible;
  803. (win.DataContext as MainWindowViewModel).RegisterVis = Visibility.Collapsed;
  804. (win.DataContext as MainWindowViewModel).UpgradeVis = Visibility.Visible;
  805. }
  806. }
  807. if (response != null)
  808. {
  809. response.Close();
  810. }
  811. if (request != null)
  812. {
  813. request.Abort();
  814. }
  815. }
  816. }
  817. catch
  818. {
  819. }
  820. }
  821. /// <summary>
  822. /// 注销
  823. /// </summary>
  824. /// <param name="code"></param>
  825. /// <returns></returns>
  826. public static String Usergout(string code)
  827. {
  828. string postBody = $"?code={code}&appId=16";
  829. HttpWebResponse response = null;
  830. ServicePointManager.DefaultConnectionLimit = 200;
  831. HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(RequestHost + UseroutUrl + postBody);
  832. request.Method = "Post";
  833. request.Headers.Add("Authorization", $"Bearer {Settings.Default.AppProperties.LoginToken}");
  834. request.ContentType = "application/x-www-form-urlencoded";
  835. //request.Accept = "application/vnd.api+json;version=1";
  836. request.UserAgent = "Apifox/1.0.0 (https://www.apifox.cn)";
  837. request.Timeout = 20000;
  838. request.ServicePoint.Expect100Continue = false;
  839. try
  840. {
  841. response = (HttpWebResponse)request.GetResponse();
  842. using (StreamReader reader = new StreamReader(response.GetResponseStream()))
  843. {
  844. string responseData = reader.ReadToEnd();
  845. Console.WriteLine(responseData);
  846. reader.Close();
  847. JObject jobject = (JObject)JsonConvert.DeserializeObject(responseData);
  848. App.IsLogin = false;
  849. Settings.Default.UserDate.subscribestatus = -1;
  850. Settings.Default.UserDate.subscribepayType = 0;
  851. for (int i = 0; i < App.Current.Windows.Count; i++)
  852. {
  853. MainWindow win = App.Current.Windows[i] as MainWindow;
  854. if (win != null)
  855. {
  856. (win.DataContext as MainWindowViewModel).UserVis = Visibility.Collapsed;
  857. (win.DataContext as MainWindowViewModel).LoginVis = Visibility.Visible;
  858. (win.DataContext as MainWindowViewModel).RegisterVis = Visibility.Collapsed;
  859. (win.DataContext as MainWindowViewModel).UpgradeVis = Visibility.Visible;
  860. }
  861. }
  862. App.mainWindowViewModel.UpgradeVis = Visibility.Visible;
  863. if (response != null)
  864. {
  865. response.Close();
  866. }
  867. if (request != null)
  868. {
  869. request.Abort();
  870. }
  871. return jobject["code"].ToObject<string>().ToLower();
  872. }
  873. }
  874. catch
  875. {
  876. return "300";
  877. }
  878. }
  879. /// <summary>
  880. /// 重置密码
  881. /// </summary>
  882. /// <param name="intemail"></param>
  883. /// <param name="firstpassword"></param>
  884. /// <param name="secondPassword"></param>
  885. /// <param name="intcode"></param>
  886. /// <returns></returns>
  887. public static String Rebirth(string intemail, string firstpassword, string secondPassword, string intcode)
  888. {
  889. HttpWebResponse response = null;
  890. ServicePointManager.DefaultConnectionLimit = 200;
  891. HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(RequestHost + RebirthUrl);
  892. request.Method = "Post";
  893. request.ContentType = "application/json";
  894. //request.Accept = "application/vnd.api+json;version=1";
  895. request.UserAgent = "Apifox/1.0.0 (https://www.apifox.cn)";
  896. request.Timeout = 20000;
  897. request.ServicePoint.Expect100Continue = false;
  898. StringWriter sw = new StringWriter();
  899. using (JsonWriter writer = new JsonTextWriter(sw))
  900. {
  901. writer.WriteStartObject();
  902. writer.WritePropertyName("account");
  903. writer.WriteValue(intemail);
  904. writer.WritePropertyName("appId");
  905. writer.WriteValue(16);
  906. writer.WritePropertyName("firstPassword");
  907. writer.WriteValue(firstpassword);
  908. writer.WritePropertyName("platformType");
  909. writer.WriteValue(0);
  910. writer.WritePropertyName("secondPassword");
  911. writer.WriteValue(secondPassword);
  912. writer.WritePropertyName("verifyCode");
  913. writer.WriteValue(intcode);
  914. writer.WriteEndObject();
  915. }
  916. try
  917. {
  918. string postBody = sw.ToString();
  919. using (StreamWriter writer = new StreamWriter(request.GetRequestStream()))
  920. {
  921. writer.Write(postBody);
  922. writer.Close();
  923. }
  924. response = (HttpWebResponse)request.GetResponse();
  925. using (StreamReader reader = new StreamReader(response.GetResponseStream()))
  926. {
  927. string responseData = reader.ReadToEnd();
  928. Console.WriteLine(responseData);
  929. reader.Close();
  930. JObject jobject = (JObject)JsonConvert.DeserializeObject(responseData);
  931. if (response != null)
  932. {
  933. response.Close();
  934. }
  935. if (request != null)
  936. {
  937. request.Abort();
  938. }
  939. for (int i = 0; i < App.Current.Windows.Count; i++)
  940. {
  941. MainWindow win = App.Current.Windows[i] as MainWindow;
  942. if (win != null)
  943. {
  944. (win.DataContext as MainWindowViewModel).UserVis = Visibility.Collapsed;
  945. (win.DataContext as MainWindowViewModel).LoginVis = Visibility.Visible;
  946. (win.DataContext as MainWindowViewModel).RegisterVis = Visibility.Collapsed;
  947. }
  948. }
  949. return jobject["code"].ToObject<string>().ToLower();
  950. }
  951. }
  952. catch
  953. {
  954. return "300";
  955. }
  956. }
  957. /// <summary>
  958. /// 设备是否被自动登出
  959. /// </summary>
  960. public static String CheckDeviceStatusout()
  961. {
  962. string postBody = $"?appId=16&deviceSign={GetDeviceSerialNumber()}";
  963. HttpWebResponse response = null;
  964. ServicePointManager.DefaultConnectionLimit = 200;
  965. HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(RequestHost + CheckDeviceStatusUrl + postBody);
  966. request.Method = "Post";
  967. request.ContentType = "application/x-www-form-urlencoded";
  968. //request.Accept = "application/vnd.api+json;version=1";
  969. request.UserAgent = "Apifox/1.0.0 (https://www.apifox.cn)";
  970. request.Timeout = 20000;
  971. request.ServicePoint.Expect100Continue = false;
  972. try
  973. {
  974. response = (HttpWebResponse)request.GetResponse();
  975. using (StreamReader reader = new StreamReader(response.GetResponseStream()))
  976. {
  977. string responseData = reader.ReadToEnd();
  978. Console.WriteLine(responseData);
  979. reader.Close();
  980. JObject jobject = (JObject)JsonConvert.DeserializeObject(responseData);
  981. if (response != null)
  982. {
  983. response.Close();
  984. }
  985. if (request != null)
  986. {
  987. request.Abort();
  988. }
  989. return jobject["code"].ToObject<string>().ToLower();
  990. }
  991. }
  992. catch
  993. {
  994. return "300";
  995. }
  996. }
  997. /// <summary>
  998. ///上传设备启动信息到服务端
  999. /// </summary>
  1000. public static void CreateDeviceLog()
  1001. {
  1002. string url = RequestHost + DeviceLogUrl;
  1003. try
  1004. {
  1005. HttpWebResponse response = null;
  1006. ServicePointManager.DefaultConnectionLimit = 200;
  1007. HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(RequestHost + DeviceLogUrl);
  1008. request.Method = "Post";
  1009. request.ContentType = "application/json";
  1010. request.UserAgent = "Apifox/1.0.0 (https://www.apifox.cn)";
  1011. request.Timeout = 20000;
  1012. request.ServicePoint.Expect100Continue = false;
  1013. StringWriter sw = new StringWriter();
  1014. using (JsonWriter writer = new JsonTextWriter(sw))
  1015. {
  1016. writer.WriteStartObject();
  1017. writer.WritePropertyName("appVersion");
  1018. writer.WriteValue(App.Version);
  1019. //产品ID Mac21 Windows 22
  1020. writer.WritePropertyName("productId");
  1021. writer.WriteValue(22);
  1022. writer.WritePropertyName("os");
  1023. writer.WriteValue(GetSystemVersionNumber());
  1024. writer.WritePropertyName("timeZone");
  1025. writer.WriteValue(TimeZoneInfo.Local.DisplayName);
  1026. writer.WritePropertyName("language");
  1027. writer.WriteValue(CultureInfo.CurrentCulture.Name);
  1028. //平台 Mac 0 Windows 1
  1029. writer.WritePropertyName("platform");
  1030. writer.WriteValue(1);
  1031. writer.WritePropertyName("createdAt");
  1032. writer.WriteValue(DateTime.Now.ToFileTime());
  1033. writer.WritePropertyName("appId");
  1034. writer.WriteValue(16);
  1035. writer.WritePropertyName("model");
  1036. writer.WriteValue("Windows");
  1037. writer.WritePropertyName("uniqueSn");
  1038. writer.WriteValue(GetDeviceSerialNumber());
  1039. writer.WritePropertyName("updatedAt");
  1040. writer.WriteValue(DateTime.Now.ToFileTime());
  1041. writer.WriteEndObject();
  1042. }
  1043. string postBody = sw.ToString();
  1044. using (StreamWriter writer = new StreamWriter(request.GetRequestStream()))
  1045. {
  1046. writer.Write(postBody);
  1047. writer.Close();
  1048. }
  1049. response = (HttpWebResponse)request.GetResponse();
  1050. using (StreamReader reader = new StreamReader(response.GetResponseStream()))
  1051. {
  1052. string responseData = reader.ReadToEnd();
  1053. Console.WriteLine(responseData);
  1054. reader.Close();
  1055. JObject jobject = (JObject)JsonConvert.DeserializeObject(responseData);
  1056. if (response != null)
  1057. {
  1058. response.Close();
  1059. }
  1060. if (request != null)
  1061. {
  1062. request.Abort();
  1063. }
  1064. if (jobject["code"].ToObject<string>().ToLower() == "200")
  1065. {
  1066. Console.WriteLine("软件启动信息上传成功");
  1067. }
  1068. }
  1069. }
  1070. catch { }
  1071. }
  1072. }
  1073. }