ServiceHelper.cs 34 KB

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