From 25429f085093d89d543a0b90e30d0d62d1b7dac9 Mon Sep 17 00:00:00 2001
From: hxb <hxb@hdlchina.com.cn>
Date: 星期二, 30 八月 2022 09:37:38 +0800
Subject: [PATCH] 合并了IOS的代码

---
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlCheckLogic.cs |  321 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 321 insertions(+), 0 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlCheckLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlCheckLogic.cs
new file mode 100644
index 0000000..b4fab42
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlCheckLogic.cs
@@ -0,0 +1,321 @@
+锘縰sing Shared.Common;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Text.RegularExpressions;
+
+namespace Shared.Phone.UserCenter
+{
+    public class HdlCheckLogic
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 涓汉涓績鐨勬娴嬮�昏緫
+        /// </summary>
+        private static HdlCheckLogic m_Current = null;
+        /// <summary>
+        /// 涓汉涓績鐨勬娴嬮�昏緫
+        /// </summary>
+        public static HdlCheckLogic Current
+        {
+            get
+            {
+                if (m_Current == null)
+                {
+                    m_Current = new HdlCheckLogic();
+                }
+                return m_Current;
+            }
+        }
+
+        #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 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 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 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 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 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 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);
+            }
+        }
+
+        /// <summary>
+        /// 妫�娴嬪瓧绗︿覆鏄惁鏄函鏁板瓧
+        /// </summary>
+        /// <param name="i_text"></param>
+        /// <returns></returns>
+        public bool CheckIsNumber(string i_text)
+        {
+            foreach (var c in i_text)
+            {
+                if (char.IsNumber(c) == false)
+                {
+                    return false;
+                }
+            }
+            return true;
+        }
+
+        #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 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 string CheckCommonErrorCode(int errorCode)
+        {
+            if (errorCode == 1)
+            {
+                //缃戝叧鏃犳硶瑙f瀽鍛戒护鏁版嵁
+                return Language.StringByID(R.MyInternationalizationString.uGatewayCannotResolveCommand);
+            }
+            else if (errorCode == 2)
+            {
+                //鍗忚皟鍣ㄦ鍦ㄥ崌绾ф垨澶囦唤鎴栨仮澶嶆暟鎹腑
+                return Language.StringByID(R.MyInternationalizationString.uCoordinatorIsUpOrBackupOrRecovering);
+            }
+            else if (errorCode == 3)
+            {
+                //鐩爣璁惧涓嶅瓨鍦�
+                return Language.StringByID(R.MyInternationalizationString.uTargetDeviceIsNotExsit);
+            }
+            else if (errorCode == 4)
+            {
+                //鍑虹幇鏈煡閿欒,璇风◢鍚庡啀璇�
+                return Language.StringByID(R.MyInternationalizationString.uUnKnowErrorAndResetAgain);
+            }
+            else if (errorCode == 5)
+            {
+                //鏁版嵁浼犺緭閿欒,璇风◢鍚庡啀璇�
+                return Language.StringByID(R.MyInternationalizationString.uDataTransmissionFailAndResetAgain);
+            }
+            return null;
+        }
+
+        #endregion
+
+        #region 鈻� 妫�娴嬭处鍙锋槸鍚﹀凡缁忛��鍑篲______________
+
+        /// <summary>
+        /// 妫�娴嬭处鍙锋槸鍚﹀凡缁忛��鍑� true:宸茬粡閫�鍑� false:娌℃湁閫�鍑�
+        /// </summary>
+        /// <returns></returns>
+        public bool IsAccountLoginOut()
+        {
+            return Config.Instance.HomeId == string.Empty;
+        }
+
+        #endregion
+
+        #region 鈻� 浜屾瀹夊叏楠岃瘉_______________________
+
+        /// <summary>
+        /// 鎵ц浜屾瀹夊叏楠岃瘉(涓夌楠岃瘉鐨勬爣棰樹娇鐢ㄩ粯璁ゅ�硷細Touch ID楠岃瘉,瀵嗙爜楠岃瘉,鎵嬪娍楠岃瘉)
+        /// </summary>
+        /// <param name="SuccessAction">濡傛灉璁剧疆鏈夐獙璇佹柟寮�,骞朵笖楠岃瘉鎴愬姛鍚庢墠浼氳皟鐢ㄧ殑鍥炶皟鍑芥暟,涓嶇劧涓嶄細璋冪敤杩欎釜涓滆タ</param>
+        /// <param name="NotSettionAction">濡傛灉瀹屽叏娌℃湁璁剧疆鏈夐獙璇佹柟寮�,鎵嶄細璋冪敤鐨勫洖璋冨嚱鏁�,涓嶇劧涓嶄細璋冪敤杩欎釜涓滆タ(鍙栨秷杈撳叆涓嶄細璋冪敤杩欎釜涓滆タ)</param>
+        public void CheckSecondarySecurity(Action SuccessAction, Action NotSettionAction = null)
+        {
+            CheckSecondarySecurity(
+                Language.StringByID(R.MyInternationalizationString.uTouchIDCheck),
+                Language.StringByID(R.MyInternationalizationString.uPasswordAuthentication),
+                Language.StringByID(R.MyInternationalizationString.uGestureAuthentication),
+                SuccessAction, NotSettionAction);
+        }
+
+        /// <summary>
+        /// 鎵ц浜屾瀹夊叏楠岃瘉
+        /// </summary>
+        /// <param name="i_TouchText">Touch ID楠岃瘉鐨勬樉绀烘枃鏈�</param>
+        /// <param name="i_PasswordText">瀵嗙爜楠岃瘉鐨勬樉绀烘枃鏈�</param>
+        /// <param name="i_GestureText">鎵嬪娍楠岃瘉鐨勬樉绀烘枃鏈�</param>
+        /// <param name="SuccessAction">濡傛灉璁剧疆鏈夐獙璇佹柟寮�,骞朵笖楠岃瘉鎴愬姛鍚庢墠浼氳皟鐢ㄧ殑鍥炶皟鍑芥暟,涓嶇劧涓嶄細璋冪敤杩欎釜涓滆タ</param>
+        /// <param name="NotSettionAction">濡傛灉瀹屽叏娌℃湁璁剧疆鏈夐獙璇佹柟寮�,鎵嶄細璋冪敤鐨勫洖璋冨嚱鏁�,涓嶇劧涓嶄細璋冪敤杩欎釜涓滆タ(鍙栨秷杈撳叆涓嶄細璋冪敤杩欎釜涓滆タ)</param>
+        public void CheckSecondarySecurity(string i_TouchText, string i_PasswordText, string i_GestureText, Action SuccessAction, Action NotSettionAction = null)
+        {
+            //鍏堟妸杩欎釜涓滆タ缃┖
+            TouchIDUtils.Instance.OnHDLTouchIDStateBackEvent = null;
+
+            TouchIDUtils.TouchIDSupperType type = TouchIDUtils.getTouchIDSupperType();
+            if (type == TouchIDUtils.TouchIDSupperType.TouchID && UserCenterResourse.AccountOption.FingerprintAuthentication == true)
+            {
+                //Touch ID楠岃瘉
+                TouchIDUtils.Instance.OnHDLTouchIDStateBackEvent += (sender2, e2) =>
+                {
+                    if (e2 == TouchIDUtils.TouchIDState.Success)
+                    {
+                        //TouchID楠岃瘉鎴愬姛
+                        SuccessAction?.Invoke();
+                        SuccessAction = null;
+                        TouchIDUtils.Instance.OnHDLTouchIDStateBackEvent = null;
+                    }
+                    else if (e2 == TouchIDUtils.TouchIDState.InputPassword)
+                    {
+                        //瀵嗙爜楠岃瘉
+                        if (string.IsNullOrEmpty(UserCenterResourse.AccountOption.PswAuthentication) == false)
+                        {
+                            var form = new PswSecondarySecurityForm();
+                            form.AddForm(i_TouchText, i_PasswordText, i_GestureText, SuccessAction);
+                        }
+                        //鎵嬪娍楠岃瘉
+                        else if (string.IsNullOrEmpty(UserCenterResourse.AccountOption.GestureAuthentication) == false)
+                        {
+                            var form = new PswGestureSecirityForm();
+                            form.AddForm(i_TouchText, i_PasswordText, i_GestureText, SuccessAction);
+                        }
+                        else
+                        {
+                            //娌℃湁璁剧疆瀵嗙爜楠岃瘉
+                            var alert = new ShowMsgControl(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.uPasswordAuthenticationNotSettion));
+                            alert.Show();
+                        }
+                    }
+                };
+                TouchIDUtils.Instance.showTouchIDWithDescribe(null, null);
+                NotSettionAction = null;
+            }
+            else if (string.IsNullOrEmpty(UserCenterResourse.AccountOption.PswAuthentication) == false)
+            {
+                //瀵嗙爜楠岃瘉
+                var form = new PswSecondarySecurityForm();
+                form.AddForm(i_TouchText, i_PasswordText, i_GestureText, SuccessAction);
+                NotSettionAction = null;
+            }
+            else if (string.IsNullOrEmpty(UserCenterResourse.AccountOption.GestureAuthentication) == false)
+            {
+                //鎵嬪娍楠岃瘉
+                var form = new PswGestureSecirityForm();
+                form.AddForm(i_TouchText, i_PasswordText, i_GestureText, SuccessAction);
+                NotSettionAction = null;
+            }
+            else
+            {
+                //瀹屽叏娌℃湁璁剧疆鏈変换浣曢獙璇佹柟寮�
+                SuccessAction = null;
+                NotSettionAction?.Invoke();
+                NotSettionAction = null;
+            }
+        }
+
+        #endregion
+    }
+}

--
Gitblit v1.8.0