From 528c105b3aea0e6e00477365f16f57c1e3d7eb1c Mon Sep 17 00:00:00 2001 From: WJC <wjc@hdlchina.com.cn> Date: 星期四, 24 十月 2019 15:31:28 +0800 Subject: [PATCH] 2019-10-24-3 --- ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/UserCenterLogic.cs | 370 +++++++++++++++++++++++----------------------------- 1 files changed, 161 insertions(+), 209 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/UserCenterLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/UserCenterLogic.cs index b6ea067..a6b048b 100755 --- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/UserCenterLogic.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/UserCenterLogic.cs @@ -47,7 +47,7 @@ } var revertObj = JsonConvert.DeserializeObject<ResponsePack>(Encoding.UTF8.GetString(byteData)); //妫�娴嬫槸鍚﹀瓨鍦ㄩ敊璇俊鎭� - return CheckNotEorrorMsg(revertObj, RequestName, listNotShowError); + return CheckNotEorrorMsg(revertObj, RequestName, listNotShowError, obj); } /// <summary> @@ -114,7 +114,7 @@ } var revertObj = JsonConvert.DeserializeObject<ResponsePack>(Encoding.UTF8.GetString(byteData)); //妫�娴嬮敊璇� - bool notError = CheckNotEorrorMsg(revertObj, RequestName, listNotShowError); + bool notError = CheckNotEorrorMsg(revertObj, RequestName, listNotShowError, obj); if (notError == false) { return null; @@ -165,7 +165,7 @@ var data = JsonConvert.DeserializeObject<ResponsePack>(data2); if (data != null && string.IsNullOrEmpty(data.StateCode) == false) { - bool notError = CheckNotEorrorMsg(data, RequestName, listNotShowError); + bool notError = CheckNotEorrorMsg(data, RequestName, listNotShowError, obj); if (notError == false) { return null; @@ -256,7 +256,8 @@ /// <param name="revertObj">浠庢帴鍙f帴鏀跺埌鐨勬暟鎹�</param> /// <param name="RequestName">璇锋眰鎺ュ彛</param> /// <param name="listNotShowError">涓嶉渶瑕佹樉绀洪敊璇殑閿欒绫诲埆(鎺ュ彛杩斿洖鐨勯敊璇被鍒�)</param> - public static bool CheckNotEorrorMsg(ResponsePack revertObj, string RequestName, List<string> listNotShowError = null) + /// <param name="pra">璇锋眰鐨勫弬鏁�</param> + public static bool CheckNotEorrorMsg(ResponsePack revertObj, string RequestName, List<string> listNotShowError = null, object pra = null) { if (revertObj == null) { @@ -279,19 +280,22 @@ } Application.RunOnMainThread(() => { - if (UserCenterLogic.IsAccountLoginOut() == true) + if (HdlCheckLogic.Current.IsAccountLoginOut() == true) { //濡傛灉鐢ㄦ埛宸茬粡閫�鍑轰簡鐧婚檰,鍒欎笉澶勭悊 return; } - string msg = IMessageCommon.Current.GetMsgByRequestName(RequestName, revertObj.StateCode); - var control = new ShowMsgControl(ShowMsgType.Tip, msg); - control.Show(); - - //鏃犳晥鐧诲綍Token - if (revertObj.StateCode == "NoLogin") + string msg = IMessageCommon.Current.GetMsgByRequestName(RequestName, revertObj.StateCode, pra); + if (msg != null) { - UserCenterLogic.ReLoginAgain(Config.Instance.Account, false); + var control = new ShowMsgControl(ShowMsgType.Tip, msg); + control.Show(); + + //鏃犳晥鐧诲綍Token + if (revertObj.StateCode == "NoLogin") + { + UserCenterLogic.ReLoginAgain(Config.Instance.Account, false); + } } }); @@ -395,8 +399,26 @@ UserCenterResourse.NowActionFormID = UserCenterResourse.listActionFormId[index]; if (UserCenterResourse.DicActionForm.ContainsKey(UserCenterResourse.NowActionFormID) == true) { - //瑙﹀彂鐣岄潰鍐嶆婵�娲荤殑浜嬩欢 - UserCenterResourse.DicActionForm[UserCenterResourse.NowActionFormID]?.FormActionAgainEvent(); + try + { + var Myform = UserCenterResourse.DicActionForm[UserCenterResourse.NowActionFormID]; + //瑙﹀彂鐣岄潰鍐嶆婵�娲荤殑浜嬩欢 + int value = Myform.FormActionAgainEvent(); + if (value == 1) + { + //Log鍑哄姏 + HdlLogLogic.Current.WriteLog(1, Myform.FormID + " 琚縺娲�"); + } + } + catch (Exception ex) + { + //鍑虹幇鏈煡閿欒,鏁版嵁涓㈠け + var alert = new ShowMsgControl(ShowMsgType.Error, Language.StringByID(R.MyInternationalizationString.uUnknownErrorAndDataLost)); + alert.Show(); + + //Log鍑哄姏 + HdlLogLogic.Current.WriteLog(ex); + } } } else if (actionForm != null && actionForm is UserView.UserPage) @@ -408,8 +430,26 @@ UserCenterResourse.NowActionFormID = UserCenterResourse.listActionFormId[index]; if (UserCenterResourse.DicActionForm.ContainsKey(UserCenterResourse.NowActionFormID) == true) { - //瑙﹀彂鐣岄潰鍐嶆婵�娲荤殑浜嬩欢 - UserCenterResourse.DicActionForm[UserCenterResourse.NowActionFormID]?.FormActionAgainEvent(); + try + { + var Myform = UserCenterResourse.DicActionForm[UserCenterResourse.NowActionFormID]; + //瑙﹀彂鐣岄潰鍐嶆婵�娲荤殑浜嬩欢 + int value = Myform.FormActionAgainEvent(); + if (value == 1) + { + //Log鍑哄姏 + HdlLogLogic.Current.WriteLog(1, Myform.FormID + " 琚縺娲�"); + } + } + catch (Exception ex) + { + //鍑虹幇鏈煡閿欒,鏁版嵁涓㈠け + var alert = new ShowMsgControl(ShowMsgType.Error, Language.StringByID(R.MyInternationalizationString.uUnknownErrorAndDataLost)); + alert.Show(); + + //Log鍑哄姏 + HdlLogLogic.Current.WriteLog(ex); + } } } } @@ -547,98 +587,6 @@ #endregion - #region 鈻� 鍚勭姝g‘妫�娴媉______________________ - - /// <summary> - /// 鍒ゆ柇鏄惁鍖呭惈澶у啓瀛楁瘝 - /// </summary> - /// <returns><c>true</c>, if contain upper was checked, <c>false</c> otherwise.</returns> - /// <param name="value">Value.</param> - public static bool CheckContainUpper(string value) - { - Regex reg = new Regex("[A-Z]+"); - return reg.IsMatch(value); - } - - /// <summary> - /// 鍒ゆ柇鏄惁鍖呭惈灏忓啓瀛楁瘝 - /// </summary> - /// <returns><c>true</c>, if contain lower was checked, <c>false</c> otherwise.</returns> - /// <param name="value">Value.</param> - public static bool CheckContainLower(string value) - { - Regex reg = new Regex("[a-z]+"); - return reg.IsMatch(value); - } - - /// <summary> - /// 鍒ゆ柇鏄惁鍖呭惈鏁板瓧 - /// </summary> - /// <returns><c>true</c>, if contain lower was checked, <c>false</c> otherwise.</returns> - /// <param name="value">Value.</param> - public static bool CheckContainNum(string value) - { - Regex reg = new Regex("[0-9]+"); - return reg.IsMatch(value); - } - - /// <summary> - /// 鍒ゆ柇鏄惁鍖呭惈绗﹀彿 - /// </summary> - /// <returns><c>true</c>, if contain lower was checked, <c>false</c> otherwise.</returns> - /// <param name="value">Value.</param> - public static bool CheckContainSymbol(string value) - { - Regex reg = new Regex("([^a-z0-9A-Z])+"); - return reg.IsMatch(value); - } - - /// <summary> - /// 妫�娴嬮偖绠辨槸鍚﹀悎娉� - /// </summary> - /// <param name="email"></param> - /// <returns></returns> - public static bool CheckEmail(string email) - { - Regex reg = new Regex(CommonPage.EmailRegexStr); - return reg.IsMatch(email); - } - - /// <summary> - /// 妫�娴嬫墜鏈哄彿鏄惁鍚堟硶 - /// </summary> - /// <param name="phoneNumber">鎵嬫満鍙�</param> - /// <param name="areaCode">鍦板尯浠g爜</param> - /// <returns></returns> - public static bool CheckPhoneNumber(string phoneNumber, string areaCode) - { - //鏍¢獙澶栧浗鎵嬫満鍙� - if (areaCode != "86") - { - Regex reg = new Regex(CommonPage.PhoneForForeignRegexStr); - return reg.IsMatch(phoneNumber); - } - - //鏍¢獙鍥藉唴鎵嬫満鍙� - if (phoneNumber.Length > 11) - { - return false; - } - else if (phoneNumber.Length == 11) - { - Regex reg = new Regex(CommonPage.PhoneRegexStr); - return reg.IsMatch(phoneNumber); - } - else - { - //姝e垯琛ㄨ揪寮忓垽鏂槸鍚︽暟瀛� - Regex reg = new Regex("^[0-9]*$"); - return reg.IsMatch(phoneNumber); - } - } - - #endregion - #region 鈻� 閲嶆柊鐧诲綍___________________________ /// <summary> @@ -655,10 +603,10 @@ FirmwareUpdateResourse.dicDeviceUpdateList.Clear(); FirmwareUpdateResourse.dicGatewayUpdateList.Clear(); - new System.Threading.Thread(async () => + HdlThreadLogic.Current.RunThread(async () => { - //鍦ˋPP鐨勭紦瀛樿繕娌℃湁鍔犺浇鍜岃鍙栧畬鎴愪箣鍓嶏紝鏈�濂藉埆璁╁畠涓嬬嚎 - while (UserCenterResourse.AppLoadMenmoryFinish == false) + //妫�娴婣PP鏄惁鑳藉閫�鍑� + while (UserCenterResourse.AppCanSignout == false) { await Task.Delay(500); } @@ -681,7 +629,7 @@ //閫氱煡浜戠锛屽凡缁忛��鍑虹櫥闄� var result = await CommonPage.Instance.RequestHttpsZigbeeBytesResultAsync("ZigbeeUsers/SignOut", null, "GET"); } - Application.RunOnMainThread(() => + HdlThreadLogic.Current.RunMain(() => { //鍏抽棴鎵�鏈夋墦寮�浜嗙殑鐣岄潰 CloseAllOpenForm(); @@ -691,8 +639,7 @@ Shared.Common.CommonPage.Instance.AddChidren(formLogin); formLogin.Show(account); }); - }) - { IsBackground = true }.Start(); + }); } /// <summary> @@ -737,15 +684,6 @@ /// <returns></returns> public static int GetControlChidrenYaxis(int fatherCtrHeight, int ctrHeight, UViewAlignment alignment, int Space = 0) { - if (Space == 0) - { - //鑾峰彇琛屾帶浠剁殑闂磋窛 - if (fatherCtrHeight == ControlCommonResourse.ListViewRowHeight) - { - Space = ControlCommonResourse.ListViewRowSpace; - } - } - if (Space < 0) { //涓嶈绠楅棿璺濆�� @@ -841,79 +779,6 @@ #endregion - #region 鈻� 妫�娴嬬綉鍏冲叡閫氶敊璇姸鎬佺爜_____________ - - /// <summary> - /// <para>妫�娴嬬綉鍏宠繑鍥炵殑鍏遍�氶敊璇姸鎬佺爜(杩斿洖null鍒欎唬琛ㄦ病鏈夐敊璇�),鏀寔鐘舵�佺爜涓�</para> - /// <para>1锛氱綉鍏虫棤娉曡В鏋愬懡浠ゆ暟鎹��</para> - /// <para>2锛氬崗璋冨櫒姝e湪鍗囩骇鎴栧浠�/鎭㈠鏁版嵁</para> - /// <para>3锛氭搷浣滆澶�/缁�/鍦烘櫙涓嶅瓨鍦�</para> - /// <para>4锛氬叾浠栭敊璇�</para> - /// <para>5锛氭暟鎹紶杈撻敊璇紙鍦ㄦ煇娆″鎴风鍚戠綉鍏冲彂閫佹暟鎹殑杩囩▼涓紝缃戝叧鍦ㄥ悎鐞嗘椂闂磋寖鍥村唴鎺ユ敹瀹㈡埛绔暟鎹笉瀹屾暣瀵艰嚧璇ラ敊璇彂鐢熴�傚瀹㈡埛绔悜缃戝叧涓�娆″彂閫�100涓瓧鑺傜殑鏁版嵁锛屼絾缃戝叧绛夊緟鎺ユ敹浜嗕竴绉掑彧鎺ユ敹浜�80涓瓧鑺傘�傚彂鐢熻閿欒锛岀綉鍏冲皢涓诲姩鍏抽棴瀹㈡埛绔繛鎺ワ級</para> - /// </summary> - /// <param name="resultData">缃戝叧杩斿洖鐨剅esultData,閲岄潰鏈夈�恊rrorResponData銆戣繖涓笢瑗跨殑閭g瀵硅薄</param> - /// <returns></returns> - public static string CheckCommonErrorCode(object resultData) - { - if (resultData == null) - { - return null; - } - Type myType = resultData.GetType(); - object errorObj = myType.InvokeMember("errorResponData", System.Reflection.BindingFlags.GetField, null, resultData, null); - if (errorObj == null) - { - return null; - } - Type type = errorObj.GetType(); - var code = type.InvokeMember("Error", System.Reflection.BindingFlags.GetField, null, errorObj, null); - int errorCode = Convert.ToInt32(code); - - return CheckCommonErrorCode(errorCode); - } - - /// <summary> - /// <para>妫�娴嬬綉鍏宠繑鍥炵殑鍏遍�氶敊璇姸鎬佺爜(杩斿洖null鍒欎唬琛ㄦ病鏈夐敊璇�),鏀寔鐘舵�佺爜涓�</para> - /// <para>1锛氱綉鍏虫棤娉曡В鏋愬懡浠ゆ暟鎹��</para> - /// <para>2锛氬崗璋冨櫒姝e湪鍗囩骇鎴栧浠�/鎭㈠鏁版嵁</para> - /// <para>3锛氭搷浣滆澶�/缁�/鍦烘櫙涓嶅瓨鍦�</para> - /// <para>4锛氬叾浠栭敊璇�</para> - /// <para>5锛氭暟鎹紶杈撻敊璇紙鍦ㄦ煇娆″鎴风鍚戠綉鍏冲彂閫佹暟鎹殑杩囩▼涓紝缃戝叧鍦ㄥ悎鐞嗘椂闂磋寖鍥村唴鎺ユ敹瀹㈡埛绔暟鎹笉瀹屾暣瀵艰嚧璇ラ敊璇彂鐢熴�傚瀹㈡埛绔悜缃戝叧涓�娆″彂閫�100涓瓧鑺傜殑鏁版嵁锛屼絾缃戝叧绛夊緟鎺ユ敹浜嗕竴绉掑彧鎺ユ敹浜�80涓瓧鑺傘�傚彂鐢熻閿欒锛岀綉鍏冲皢涓诲姩鍏抽棴瀹㈡埛绔繛鎺ワ級</para> - /// </summary> - /// <param name="errorCode">閿欒浠g爜</param> - /// <returns></returns> - public static string CheckCommonErrorCode(int errorCode) - { - if (errorCode == 1) - { - //缃戝叧鏃犳硶瑙f瀽鍛戒护鏁版嵁 - return Language.StringByID(R.MyInternationalizationString.uGatewayCannotResolveCommand); - } - else if (errorCode == 2) - { - //鍗忚皟鍣ㄦ鍦ㄥ崌绾ф垨澶囦唤鎴栨仮澶嶆暟鎹腑 - string msg = Language.StringByID(R.MyInternationalizationString.uCoordinatorIsUpOrBackupOrRecovering); - } - else if (errorCode == 3) - { - //鐩爣璁惧涓嶅瓨鍦� - string msg = Language.StringByID(R.MyInternationalizationString.uTargetDeviceIsNotExsit); - } - else if (errorCode == 4) - { - //鍑虹幇鏈煡閿欒,璇风◢鍚庡啀璇� - string msg = Language.StringByID(R.MyInternationalizationString.uUnKnowErrorAndResetAgain); - } - else if (errorCode == 5) - { - //鏁版嵁浼犺緭閿欒,璇风◢鍚庡啀璇� - string msg = Language.StringByID(R.MyInternationalizationString.uDataTransmissionFailAndResetAgain); - } - return null; - } - - #endregion - #region 鈻� 鍒锋柊涓汉涓績鐨勫唴瀛樺強绾跨▼___________ /// <summary> @@ -922,7 +787,7 @@ public async static Task<bool> InitUserCenterMenmoryAndThread() { //APP缂撳瓨鍔犺浇寮�濮� - UserCenterResourse.AppLoadMenmoryFinish = false; + UserCenterResourse.AppCanSignout = false; //寮哄埗鎸囧畾涓嶅叧闂繘搴︽潯 ProgressBar.SetCloseBarFlag(true); @@ -934,6 +799,10 @@ //鍙樻洿鏍圭洰褰曡矾寰� UserCenterResourse.LocalRootPath = System.IO.Path.Combine(Shared.IO.FileUtils.RootPath, Config.Instance.Guid, Config.Instance.Home.Id); UserCenterResourse.UserPictruePath = System.IO.Path.Combine(Shared.IO.FileUtils.RootPath, Config.Instance.Guid, DirNameResourse.UserPictrueDirectory); + + //鍔犺浇璐﹀彿閰嶇疆淇℃伅 + var optionInfo = UserCenterResourse.Option.Load(); + UserCenterResourse.Option = optionInfo; //鍒濆鍖栫櫥闄嗚处鍙风殑淇℃伅 await InitUserAccoutInfo(); @@ -993,7 +862,7 @@ //鎭㈠鍙叧闂繘搴︽潯 ProgressBar.SetCloseBarFlag(false); //APP缂撳瓨鍔犺浇瀹屾垚 - UserCenterResourse.AppLoadMenmoryFinish = true; + UserCenterResourse.AppCanSignout = true; return true; } @@ -1096,12 +965,12 @@ private static UserInformation GetUserInformationFromLocation() { string fileName = CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.UserInfoFile); - if (System.IO.File.Exists(fileName) == false) + var value = LoadFileContent(fileName); + if (value == null) { return new UserInformation(); } - var varByte = Shared.IO.FileUtils.ReadFile(fileName); - var info = Newtonsoft.Json.JsonConvert.DeserializeObject<UserInformation>(System.Text.Encoding.UTF8.GetString(varByte)); + var info = Newtonsoft.Json.JsonConvert.DeserializeObject<UserInformation>(value); return info; } @@ -1110,12 +979,9 @@ /// </summary> private static void SaveUserInformationToLocation() { - var data = Newtonsoft.Json.JsonConvert.SerializeObject(UserCenterResourse.UserInfo); - var byteData = System.Text.Encoding.UTF8.GetBytes(data); - string fullName = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.UserInfoFile); //鍐欏叆鍐呭 - Shared.IO.FileUtils.WriteFileByBytes(fullName, byteData); + SaveFileContent(fullName, UserCenterResourse.UserInfo); //鎼炰竴涓嬩富浜虹殑榛樿澶村儚 string defultFile = IO.FileUtils.GetImageFilePath("Center/Admin.png"); @@ -1284,6 +1150,10 @@ directory = System.IO.Path.Combine(LocalDirectory, DirNameResourse.DownLoadShardDirectory); Global.CreateEmptyDirectory(directory); + //LOG鍑哄姏銆愭枃浠跺す銆� + directory = System.IO.Path.Combine(LocalDirectory, DirNameResourse.LogDirectory); + Global.CreateEmptyDirectory(directory); + //鐢ㄦ埛鍥剧墖鐩綍璺緞銆愭枃浠跺す銆� if (!System.IO.Directory.Exists(UserCenterResourse.UserPictruePath)) { @@ -1350,15 +1220,97 @@ #endregion - #region 鈻� 妫�娴嬭处鍙锋槸鍚﹀凡缁忛��鍑篲______________ + #region 鈻� 鍔犲瘑鍜岃В瀵哶________________________ /// <summary> - /// 妫�娴嬭处鍙锋槸鍚﹀凡缁忛��鍑� true:宸茬粡閫�鍑� false:娌℃湁閫�鍑� + /// 鍔犲瘑瀵嗙爜 /// </summary> + /// <param name="keys"></param> + /// <param name="strPsw"></param> /// <returns></returns> - public static bool IsAccountLoginOut() + public static string EncryptPassword(string keys, string strPsw) { - return Config.Instance.HomeId == string.Empty; + if (strPsw == string.Empty) + { + return strPsw; + } + var des = new System.Security.Cryptography.DESCryptoServiceProvider(); + byte[] inputByteArray = Encoding.Default.GetBytes(strPsw); + des.Key = ASCIIEncoding.ASCII.GetBytes(keys); + des.IV = ASCIIEncoding.ASCII.GetBytes(keys); + var ms = new System.IO.MemoryStream(); + var cs = new System.Security.Cryptography.CryptoStream(ms, des.CreateEncryptor(), System.Security.Cryptography.CryptoStreamMode.Write); + cs.Write(inputByteArray, 0, inputByteArray.Length); + cs.FlushFinalBlock(); + StringBuilder ret = new StringBuilder(); + foreach (byte b in ms.ToArray()) + { + ret.AppendFormat("{0:X2}", b); + } + return ret.ToString(); + } + + /// <summary> + /// 瑙e瘑瀵嗙爜 + /// </summary> + /// <param name="strPsw"></param> + /// <returns></returns> + public static string DecryptPassword(string keys, string strPsw) + { + if (strPsw == string.Empty) + { + return strPsw; + } + var des = new System.Security.Cryptography.DESCryptoServiceProvider(); + + byte[] inputByteArray = new byte[strPsw.Length / 2]; + for (int x = 0; x < strPsw.Length / 2; x++) + { + int i = (Convert.ToInt32(strPsw.Substring(x * 2, 2), 16)); + inputByteArray[x] = (byte)i; + } + + des.Key = ASCIIEncoding.ASCII.GetBytes(keys); + des.IV = ASCIIEncoding.ASCII.GetBytes(keys); + var ms = new System.IO.MemoryStream(); + var cs = new System.Security.Cryptography.CryptoStream(ms, des.CreateDecryptor(), System.Security.Cryptography.CryptoStreamMode.Write); + cs.Write(inputByteArray, 0, inputByteArray.Length); + cs.FlushFinalBlock(); + + StringBuilder ret = new StringBuilder(); + + return System.Text.Encoding.Default.GetString(ms.ToArray()); + } + #endregion + + #region 鈻� 鏂囦欢淇濆瓨鍜岃鍙朹____________________ + + /// <summary> + /// 鏂囦欢淇濆瓨(鏁村ぉ蹇樿,鎵�浠ュ缓涓�涓嚱鏁版潵鐜╃帺) + /// </summary> + /// <param name="fullName">鍏ㄨ矾寰�</param> + /// <param name="obj">闇�瑕佸簭鍒楀寲鐨勪笢瑗�</param> + public static void SaveFileContent(string fullName, object obj) + { + var data = Newtonsoft.Json.JsonConvert.SerializeObject(obj); + var byteData = System.Text.Encoding.UTF8.GetBytes(data); + //鍐欏叆鍐呭 + Shared.IO.FileUtils.WriteFileByBytes(fullName, byteData); + } + + /// <summary> + /// 璇诲彇鏂囦欢(鏂囦欢涓嶅瓨鍦ㄨ繑鍥瀗ull,鏁村ぉ蹇樿,鎵�浠ュ缓涓�涓嚱鏁版潵鐜╃帺) + /// </summary> + /// <param name="fullName">鍏ㄨ矾寰�</param> + /// <returns></returns> + public static string LoadFileContent(string fullName) + { + if (System.IO.File.Exists(fullName) == false) + { + return null; + } + var varByte = Shared.IO.FileUtils.ReadFile(fullName); + return System.Text.Encoding.UTF8.GetString(varByte); } #endregion -- Gitblit v1.8.0