From f1c3921b08bb22ac6f5db22d620e01d7e8e5c49f Mon Sep 17 00:00:00 2001
From: WJC <wjc@hdlchina.com.cn>
Date: 星期一, 30 十二月 2019 13:32:33 +0800
Subject: [PATCH] 2019-12-30-1

---
 ZigbeeApp/Shared/Phone/Device/Account/AccountLogin.cs |  244 ++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 223 insertions(+), 21 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/Device/Account/AccountLogin.cs b/ZigbeeApp/Shared/Phone/Device/Account/AccountLogin.cs
index 2f5882d..a79dba4 100755
--- a/ZigbeeApp/Shared/Phone/Device/Account/AccountLogin.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Account/AccountLogin.cs
@@ -1,7 +1,4 @@
 锘縰sing System;
-using System.Collections.Generic;
-using System.Net;
-using System.Text;
 using Shared.Common;
 using Shared.Phone.UserView;
 using Shared.Phone.Device.CommonForm;
@@ -67,6 +64,14 @@
         /// 瀵嗙爜
         /// </summary>
         private string password;
+        /// <summary>
+        /// wechat
+        /// </summary>
+        private Button wechatBtn;
+        /// <summary>
+        /// qq
+        /// </summary>
+        private Button qqBtn;
 
 
         #endregion
@@ -187,7 +192,7 @@
                 Width = Application.GetRealWidth(942),
                 Gravity = Gravity.CenterHorizontal,
                 BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor,
-                Radius = (uint)Application.GetRealHeight(30)
+                Radius = (uint)Application.GetRealHeight(17)
             };
             midFrameLayout.AddChidren(accountPwdFL);
 
@@ -227,7 +232,7 @@
             loginByCodeBtn = new Button()
             {
                 X=Application.GetRealWidth(98),
-                Y = Application.GetRealHeight(1431),
+                Y = Application.GetRealHeight(1466),
                 Width = Application.GetRealWidth(300),
                 Height = Application.GetRealHeight(49),
                 TextID = R.MyInternationalizationString.LoginByCode,
@@ -240,7 +245,7 @@
             registerBtn = new Button()
             {
                 X = Application.GetRealWidth(738),
-                Y = Application.GetRealHeight(1431),
+                Y = Application.GetRealHeight(1466),
                 Width = Application.GetRealWidth(244),
                 Height = Application.GetRealHeight(49),
                 TextID = R.MyInternationalizationString.Register,
@@ -249,6 +254,27 @@
                 TextSize = CommonFormResouce.loginTextSize
             };
             midFrameLayout.AddChidren(registerBtn);
+
+            wechatBtn = new Button
+            {
+                X = Application.GetRealWidth(395),
+                Y = Application.GetRealHeight(1737),
+                Width = Application.GetMinRealAverage(115),
+                Height = Application.GetMinRealAverage(115),
+                UnSelectedImagePath = "Account/Wechat.png",
+                Gravity=Gravity.CenterHorizontal
+            };
+            midFrameLayout.AddChidren(wechatBtn);
+
+            qqBtn = new Button
+            {
+                X = Application.GetRealWidth(567),
+                Y = Application.GetRealHeight(1737),
+                Width = Application.GetMinRealAverage(115),
+                Height = Application.GetMinRealAverage(115),
+                UnSelectedImagePath = "Account/QQ.png"
+            };
+            //midFrameLayout.AddChidren(qqBtn);
 
             #endregion
 
@@ -275,7 +301,10 @@
             registerBtn.MouseUpEventHandler += Register;
             //蹇樿瀵嗙爜
             forgotPasswordBtn.MouseUpEventHandler += ForgetPWD_MouseUpEvent;
-
+            //wechat
+            wechatBtn.MouseUpEventHandler += LoginByWechat;
+            //qq
+            qqBtn.MouseUpEventHandler += LoginByQQ;
         }
 
         #endregion
@@ -295,7 +324,7 @@
             }
             else
             {
-                Login(phoneRow.AccountET.Text.Trim(), pwdRow.PasswrodET.Text.Trim());
+                Login(emailRow.AccountET.Text.Trim(), pwdRow.PasswrodET.Text.Trim());
             }
 
         }
@@ -338,27 +367,20 @@
                         {
                             return;
                         }
-                        this.RemoveFromParent();
 
-                        UserPage.Instance.Fresh();
+                        HomePage.Instance.ShowLoginLoadView();
 
                         new System.Threading.Thread(async () =>
                         {
-                            //鍚姩ZigBee
-                            ZigBee.Common.Application.Init();
                             //瀛樺偍鏁版嵁
                             var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<Shared.Common.ResponseEntity.UserLoginRes>(revertObj.ResponseData.ToString());
                             var revertData = responseDataObj;
                             Config.ReFresh();
                             Config.Instance.Account = revertData.Account;
-                            Config.Instance.MqttKey = revertData.MqttKey;
                             Config.Instance.Password = passwordStr;
                             Config.Instance.MD5PWD = revertData.MD5PWD;
                             Config.Instance.Guid = revertData.Guid;
                             Config.Instance.LoginDateTime = DateTime.Now;
-                            Config.Instance.ConnectZigbeeMqttBrokerPwd = revertData.ConnectZigbeeMqttBrokerPwd;
-                            Config.Instance.ConnectZigbeeMqttClientId = revertData.ConnectZigbeeMqttClientId;
-                            Config.Instance.ZigbeeMqttBrokerLoadSubDomain = revertData.ZigbeeMqttBrokerLoadSubDomain;
                             if (Config.Instance.AccountList.Find((obj) => obj == revertData.Account) == null)
                             {
                                 Config.Instance.AccountList.Add(revertData.Account);
@@ -366,15 +388,18 @@
                             Config.Instance.Save();
 
                             var resultRegID = await Shared.Common.CommonPage.Instance.PushRegID();
-                            var homes = await House.GetHomeLists();
+                            var homes = await House.GetHomeLists();
+                            //鍚姩ZigBee
+                            ZigBee.Common.Application.Init();
                             //鍒锋柊涓汉涓績鐨勫唴瀛樺強绾跨▼
                             await UserCenter.UserCenterLogic.InitUserCenterMenmoryAndThread();
-                            Shared.Common.Room.CanInitAllRoom = true;
                             Shared.Common.Room.InitAllRoom();
                             Application.RunOnMainThread(() =>
                             {
-                                UserPage.Instance.Fresh();
                                 CommonPage.Loading.Hide();
+                                this.RemoveFromParent();
+                                CommonPage.Instance.RemoveViewByTag("Login");
+                                UserPage.Instance.Fresh();
                             });
                         })
                         { IsBackground = true }.Start();
@@ -443,11 +468,188 @@
         /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param>
         private void LoginByCode(object sender,MouseEventArgs mouseEventArgs)
         {
-            this.RemoveFromParent();
+            //this.RemoveFromParent();
             var loginByCodePage = new AccountLoginByCode();
             CommonPage.Instance.AddChidren(loginByCodePage);
             loginByCodePage.Show();
         }
+
+        /// <summary>
+        /// wechat鐧诲綍
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="mouseEventArgs"></param>
+        private void LoginByWechat(object sender, MouseEventArgs mouseEventArgs)
+        {
+#if Android
+            //var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP),
+            //    Language.StringByID(R.MyInternationalizationString.LoginByWechat),
+            //    Language.StringByID(R.MyInternationalizationString.Cancel),
+            //    Language.StringByID(R.MyInternationalizationString.Confrim));
+            //alert.Show();
+            //alert.ResultEventHandler += (send, e) =>
+            //{
+                //if (e)
+                //{
+                    com.hdl.home.Application.WXLogin();
+                    com.hdl.home.WXEntryActivity.RespAction = (authStr) =>
+                    {
+                        if (authStr == null)
+                        {
+
+                        }
+                        else
+                        {
+                            new System.Threading.Thread(async () =>
+                            {
+                                var re = await isBindAuthAsync(authStr);
+                                if (re)
+                                {
+                                    Application.RunOnMainThread(() =>
+                                    {
+                                        //鐩存帴鐧诲綍
+                                        HomePage.Instance.ShowLoginLoadView();
+                                    });
+                                    var resultRegID = await Shared.Common.CommonPage.Instance.PushRegID();
+                                    var homes = await House.GetHomeLists();
+                                    //鍚姩ZigBee
+                                    ZigBee.Common.Application.Init();
+                                    //鍒锋柊涓汉涓績鐨勫唴瀛樺強绾跨▼
+                                    await UserCenter.UserCenterLogic.InitUserCenterMenmoryAndThread();
+                                    Shared.Common.Room.InitAllRoom();
+                                    Application.RunOnMainThread(() =>
+                                    {
+                                        this.RemoveFromParent();
+                                        CommonPage.Instance.RemoveViewByTag("Login");
+                                        UserPage.Instance.Fresh();
+                                    });
+                                }
+                                else
+                                {
+                                    var authRes = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.ResponseEntity.AuthUserRes>(authStr);
+                                    Application.RunOnMainThread(() =>
+                                    {
+                                        var registerPage = new AccountRegister();
+                                        Shared.Common.CommonPage.Instance.AddChidren(registerPage);
+                                        registerPage.OpenID = authRes.openid;
+                                        registerPage.Show();
+                                    });
+                                }
+                            })
+                            { IsBackground = true }.Start();
+                        }
+                    };
+            //}
+            //};
+#endif
+
+#if iOS
+            Home.IOS.AppDelegate.WXLogin();
+            Home.IOS.AppDelegate.RespAction = (authStr) =>
+            {
+                if (authStr == null)
+                {
+
+                }
+                else
+                {
+                    new System.Threading.Thread(async () =>
+                    {
+
+                        var re = await isBindAuthAsync(authStr);
+                        if (re)
+                        {
+                            //鐩存帴鐧诲綍
+                            //this.RemoveFromParent();
+
+                            //UserPage.Instance.Fresh();
+                            var resultRegID = await Shared.Common.CommonPage.Instance.PushRegID();
+                            var homes = await House.GetHomeLists();
+                            //鍚姩ZigBee
+                            ZigBee.Common.Application.Init();
+                            //鍒锋柊涓汉涓績鐨勫唴瀛樺強绾跨▼
+                            await UserCenter.UserCenterLogic.InitUserCenterMenmoryAndThread();
+                            Shared.Common.Room.InitAllRoom();
+                            Application.RunOnMainThread(() =>
+                            {
+                                this.RemoveFromParent();
+                                UserPage.Instance.Fresh();
+                            });
+                        }
+                        else
+                        {
+                            var authRes = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.ResponseEntity.AuthUserRes>(authStr);
+                            Application.RunOnMainThread(() =>
+                            {
+                                var registerPage = new AccountRegister();
+                                Shared.Common.CommonPage.Instance.AddChidren(registerPage);
+                                registerPage.OpenID = authRes.openid;
+                                registerPage.Show();
+                            });
+                        }
+                    })
+                    { IsBackground = true }.Start();
+                }
+            };
+#endif
+
+
+
+        }
+
+        /// <summary>
+        /// qq鐧诲綍
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="mouseEventArgs"></param>
+        private void LoginByQQ(object sender, MouseEventArgs mouseEventArgs)
+        {
+
+        }
+
+        /// <summary>
+        /// 鏄惁宸茬粦瀹�
+        /// </summary>
+        /// <param name="authStr"></param>
+        /// <returns></returns>
+        private async System.Threading.Tasks.Task<bool> isBindAuthAsync(string authStr)
+        {
+            var authRes = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.ResponseEntity.AuthUserRes>(authStr);
+            var auth = new SendDataToServer.AuthUser()
+            {
+                AccessToken = authRes.access_token,
+                RefreshToken = authRes.refresh_token,
+                OpenID = authRes.openid
+            };
+            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(auth);
+            var revertObj = await CommonPage.Instance.RequestHttpsZigbeeAsync("ZigbeeUsers/InsertOrUpdateAuthUser", System.Text.Encoding.UTF8.GetBytes(requestJson));
+            if (revertObj == null)
+            {
+                return false;
+            }
+            var stateCodeStr = revertObj.StateCode.ToUpper();
+            if (stateCodeStr == "SUCCESS")
+            {
+                var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<Shared.Common.ResponseEntity.UserLoginRes>(revertObj.ResponseData.ToString());
+                var revertData = responseDataObj;
+                Config.Instance.Account = revertData.Account;
+                Config.Instance.MD5PWD = revertData.MD5PWD;
+                Config.Instance.Guid = revertData.Guid;
+                Config.Instance.LoginDateTime = DateTime.Now;
+                if (Config.Instance.AccountList.Find((obj) => obj == revertData.Account) == null)
+                {
+                    Config.Instance.AccountList.Add(revertData.Account);
+                }
+                Config.Instance.Save();
+                return true;
+            }
+            else 
+            {
+                return false;
+            }
+        }
+
+      
 
         /// <summary>
         /// phone/email 閫夋嫨
@@ -547,7 +749,7 @@
         private void Pwd_TextChange(object sender,string mouseEventArgs)
         {
             loginErrorBtn.Text = "";
-            if (1 <= pwdRow.PasswrodET.Text.Trim().Length && pwdRow.PasswrodET.Text.Trim().Length <= 16 && phoneRow.AccountET.Text.Trim().Length > 0)
+            if (1 <= pwdRow.PasswrodET.Text.Trim().Length && pwdRow.PasswrodET.Text.Trim().Length <= 16 && (phoneRow.AccountET.Text.Trim().Length > 0 || emailRow.AccountET.Text.Trim().Length>0))
             {
                 loginBtn.Enable = loginBtn.IsSelected = true;
             }

--
Gitblit v1.8.0