From 48ba446936b51fffafa7c3600c0dadc6ac0e8c20 Mon Sep 17 00:00:00 2001
From: 陈嘉乐 <cjl@hdlchina.com.cn>
Date: 星期五, 10 七月 2020 10:52:13 +0800
Subject: [PATCH] 2020-07-10-01

---
 ZigbeeApp/Shared/Phone/UserCenter/OtherParty/OtherPartyAccountMenuForm.cs |  301 +++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 261 insertions(+), 40 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/OtherParty/OtherPartyAccountMenuForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/OtherParty/OtherPartyAccountMenuForm.cs
index e6fc37c..7ccbfb4 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/OtherParty/OtherPartyAccountMenuForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/OtherParty/OtherPartyAccountMenuForm.cs
@@ -1,6 +1,7 @@
 锘縰sing System;
 using System.Collections.Generic;
 using System.Text;
+using System.Threading.Tasks;
 
 namespace Shared.Phone.UserCenter.OtherParty
 {
@@ -10,6 +11,11 @@
     public class OtherPartyAccountMenuForm : EditorCommonForm
     {
         #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 缁戝畾鐨勬柟寮�
+        /// </summary>
+        private Dictionary<string, OtherPartyResult> dicBindData = null;
 
         #endregion
 
@@ -23,8 +29,39 @@
             //璁剧疆澶撮儴淇℃伅
             base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uOtherPartyAccount));
 
-            //鍒濆鍖栦腑閮ㄤ俊鎭�
-            this.InitMiddleFrame();
+            //鍒濆鍖栦腑閮ㄦ暟鎹�
+            this.InitMiddleData();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栦腑閮ㄦ暟鎹�
+        /// </summary>
+        private void InitMiddleData()
+        {
+            //娓呯┖bodyFrame
+            this.ClearBodyFrame();
+
+            HdlThreadLogic.Current.RunThread(async () =>
+            {
+                //鎵撳紑杩涘害鏉�
+                this.ShowProgressBar();
+                //鑾峰彇缁戝畾鏁版嵁
+                var result = await this.GetBingData();
+                if (result == false)
+                {
+                    //鍏抽棴杩涘害鏉�
+                    this.CloseProgressBar(ShowReLoadMode.YES);
+                    return;
+                }
+                //鍏抽棴杩涘害鏉�
+                this.CloseProgressBar();
+
+                HdlThreadLogic.Current.RunMain(() =>
+                {
+                    //鍒濆鍖栦腑閮ㄤ俊鎭�
+                    this.InitMiddleFrame();
+                });
+            });
         }
 
         /// <summary>
@@ -32,65 +69,249 @@
         /// </summary>
         private void InitMiddleFrame()
         {
-            //娓呯┖bodyFrame
-            this.ClearBodyFrame();
+            var listView = new VerticalListControl(12);
+            listView.Height = Application.GetRealHeight(317);
+            listView.BackgroundColor = UserCenterColor.Current.White;
+            bodyFrameLayout.AddChidren(listView);
 
-            var frameBack = new FrameListControl(12);
-            frameBack.Height = Application.GetRealHeight(317);
-            frameBack.BackgroundColor = UserCenterColor.Current.White;
-            bodyFrameLayout.AddChidren(frameBack);
-
-            var rowChat = new FrameRowControl(frameBack.rowSpace / 2);
+            //鏈巿鏉�
+            string bindNameText = Language.StringByID(R.MyInternationalizationString.uNotAuthentication);
+            //璇风粦瀹�
+            string bindTipText= Language.StringByID(R.MyInternationalizationString.uPleaseBind);
+            if (dicBindData.ContainsKey("Wechat") == true)
+            {
+                //瑙i櫎缁戝畾
+                bindTipText = Language.StringByID(R.MyInternationalizationString.uUnBinded);
+                bindNameText = dicBindData["Wechat"].UserName;
+            }
+            var rowChat = new FrameRowControl(listView.rowSpace / 2);
             rowChat.Y = Application.GetRealHeight(11);
-            frameBack.AddChidren(rowChat);
+            listView.AddChidren(rowChat);
             //寰俊
             var btnChat = rowChat.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uWebChat), 400, 60);
             btnChat.Y = Application.GetRealHeight(12) + rowChat.chidrenYaxis;
             btnChat.TextSize = 15;
-            rowChat.AddChidren(btnChat, ChidrenBindMode.BindEventOnly);
-            //鏈巿鏉�
-            var btnTip1 = rowChat.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uNotAuthentication), 400, 49);
+            rowChat.AddChidren(btnChat, ChidrenBindMode.BindEvent);
+            //鏈巿鏉�  OR  鍚嶅瓧
+            var btnTip1 = rowChat.AddLeftCaption(bindNameText == null ? string.Empty : bindNameText, 400, 50);
             btnTip1.Y = Application.GetRealHeight(72) + rowChat.chidrenYaxis;
             btnTip1.TextSize = 12;
             btnTip1.TextColor = UserCenterColor.Current.TextGrayColor1;
-            rowChat.AddChidren(btnTip1, ChidrenBindMode.BindEventOnly);
+            rowChat.AddChidren(btnTip1, ChidrenBindMode.BindEvent);
             //鍚戝彸鍥炬爣
             rowChat.AddRightArrow();
             //搴曠嚎
-            rowChat.AddBottomLine();
-            //璇风粦瀹�
-            rowChat.AddMostRightView(Language.StringByID(R.MyInternationalizationString.uPleaseBind), 400);
+            //rowChat.AddBottomLine();
+            //璇风粦瀹�  OR  瑙i櫎缁戝畾
+            rowChat.AddMostRightView(bindTipText, 400);
             rowChat.ButtonClickEvent += (sender, e) =>
             {
-
+                if (dicBindData.ContainsKey("Wechat") == true)
+                {
+                    //纭畾瑕佽В闄ょ粦瀹氬井淇★紵
+                    string msg = Language.StringByID(R.MyInternationalizationString.uComfirmUnBindedMsg);
+                    msg = msg.Replace("{0}", Language.StringByID(R.MyInternationalizationString.uWebChat));
+                    this.ShowMassage(ShowMsgType.Confirm, msg, () =>
+                    {
+                        //瑙i櫎缁戝畾
+                        this.UnBindOtherParty(dicBindData["Wechat"]);
+                    });
+                }
+                else
+                {
+                    //婵�娲诲井淇pp
+                    this.ActionWechatApp();
+                }
             };
 
-            var rowQQ = new FrameRowControl(frameBack.rowSpace / 2);
-            frameBack.AddChidren(rowQQ);
-            //寰俊
-            var btnQQ = rowQQ.AddLeftCaption("QQ", 400, 60);
-            btnQQ.Y = Application.GetRealHeight(12) + rowQQ.chidrenYaxis;
-            btnQQ.TextSize = 15;
-            rowQQ.AddChidren(btnQQ, ChidrenBindMode.BindEventOnly);
-            //鏈巿鏉�
-            var btnTip2 = rowQQ.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uNotAuthentication), 400, 49);
-            btnTip2.Y = Application.GetRealHeight(72) + rowQQ.chidrenYaxis;
-            btnTip2.TextSize = 12;
-            btnTip2.TextColor = UserCenterColor.Current.TextGrayColor1;
-            rowQQ.AddChidren(btnTip2, ChidrenBindMode.BindEventOnly);
-            //鍚戝彸鍥炬爣
-            rowQQ.AddRightArrow();
-            //璇风粦瀹�
-            rowQQ.AddMostRightView(Language.StringByID(R.MyInternationalizationString.uPleaseBind), 400);
-            rowQQ.ButtonClickEvent += (sender, e) =>
-            {
 
-            };
+            ////鏈巿鏉�
+            //bindNameText = Language.StringByID(R.MyInternationalizationString.uNotAuthentication);
+            ////璇风粦瀹�
+            //bindTipText = Language.StringByID(R.MyInternationalizationString.uPleaseBind);
+            //if (dicBindData.ContainsKey("QQ") == true)
+            //{
+            //    //瑙i櫎缁戝畾
+            //    bindTipText = Language.StringByID(R.MyInternationalizationString.uUnBinded);
+            //    bindNameText = "QQ";
+            //}
+            //var rowQQ = new FrameRowControl(listView.rowSpace / 2);
+            //listView.AddChidren(rowQQ);
+            ////寰俊
+            //var btnQQ = rowQQ.AddLeftCaption("QQ", 400, 60);
+            //btnQQ.Y = Application.GetRealHeight(12) + rowQQ.chidrenYaxis;
+            //btnQQ.TextSize = 15;
+            //rowQQ.AddChidren(btnQQ, ChidrenBindMode.BindEvent);
+            ////鏈巿鏉�  OR  鍚嶅瓧
+            //var btnTip2 = rowQQ.AddLeftCaption(bindNameText, 400, 49);
+            //btnTip2.Y = Application.GetRealHeight(72) + rowQQ.chidrenYaxis;
+            //btnTip2.TextSize = 12;
+            //btnTip2.TextColor = UserCenterColor.Current.TextGrayColor1;
+            //rowQQ.AddChidren(btnTip2, ChidrenBindMode.BindEvent);
+            ////鍚戝彸鍥炬爣
+            //rowQQ.AddRightArrow();
+            ////璇风粦瀹�  OR  瑙i櫎缁戝畾
+            //rowQQ.AddMostRightView(bindTipText, 400);
+            //rowQQ.ButtonClickEvent += (sender, e) =>
+            //{
+            //    if (dicBindData.ContainsKey("QQ") == true)
+            //    {
+            //    }
+            //    else
+            //    {
+            //    }
+            //};
+            //璋冩暣鐪熷疄楂樺害
+            listView.AdjustRealHeight(Application.GetRealHeight(23));
         }
 
         #endregion
 
-        #region 鈻� 涓�鑸柟娉昣__________________________
+        #region 鈻� 鑾峰彇缁戝畾鏁版嵁_______________________
+
+        /// <summary>
+        /// 鑾峰彇缁戝畾鏁版嵁
+        /// </summary>
+        /// <returns></returns>
+        private async Task<bool> GetBingData()
+        {
+            this.dicBindData = new Dictionary<string, OtherPartyResult>();
+
+            var result = await UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeUsers/GetUserAuthItem", false, "");
+            if (result == null)
+            {
+                return false;
+            }
+            var data = Newtonsoft.Json.JsonConvert.DeserializeObject<List<OtherPartyResult>>(result);
+            foreach (var info in data)
+            {
+                this.dicBindData[info.Platform] = info;
+            }
+
+            return true;
+        }
+
+        #endregion
+
+        #region 鈻� 缁戝畾寰俊___________________________
+
+        /// <summary>
+        /// 婵�娲诲井淇pp
+        /// </summary>
+        private void ActionWechatApp()
+        {
+#if Android
+            com.hdl.home.Application.WXLogin();
+            com.hdl.home.WXEntryActivity.RespAction = (authStr) =>
+#endif
+#if iOS
+            Home.IOS.AppDelegate.WXLogin();
+            Home.IOS.AppDelegate.RespAction = (authStr) =>
+#endif
+            {
+                if (string.IsNullOrEmpty(authStr) == true)
+                {
+                    return;
+                }
+                var authRes = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.ResponseEntity.AuthUserRes>(authStr);
+                //缁戝畾寰俊
+                this.BindWechat(authRes.access_token, authRes.refresh_token, authRes.openid);
+            };
+        }
+
+        /// <summary>
+        /// 缁戝畾寰俊
+        /// </summary>
+        /// <param name="infoData"></param>
+        private async void BindWechat(string accessToken, string refreshToken, string openID)
+        {
+            //鑾峰彇寰俊鏄电О
+            var strUrl = "https://api.weixin.qq.com/sns/userinfo?access_token=" + accessToken;
+            strUrl += "&openid=" + openID;
+            var byteData = await Common.CommonPage.Instance.DoRequestZigbeeHttpsInterface(strUrl, null, null, "GET");
+            if (byteData == null)
+            {
+                return;
+            }
+            var receipData = System.Text.Encoding.UTF8.GetString(byteData);
+            var nickData = Newtonsoft.Json.JsonConvert.DeserializeObject<NicknameInfo>(receipData);
+
+            //鍏堜笂浼犲井淇¤祫鏂�
+            var pra = new { AccessToken = accessToken, RefreshToken = refreshToken, OpenID = openID, UserName = nickData.nickname };
+            var listNotShow = new List<string>() { "UserNoBindAccount" };
+            var result = await UserCenterLogic.GetResultStatuByRequestHttps("ZigbeeUsers/InsertOrUpdateAuthUser", false, pra, listNotShow);
+            if (result == false)
+            {
+                return;
+            }
+
+            //鍐嶆墽琛岀粦瀹�
+            var pra2 = new { AccountGuid = Common.Config.Instance.Guid, OpenID = openID };
+            result = await UserCenterLogic.GetResultStatuByRequestHttps("ZigbeeUsers/BindAuthUserToAccount", false, pra2);
+            if (result == true)
+            {
+                //缁戝畾鎴愬姛锛佷笅娆′綘鍙互鐢ㄥ井淇0}璐﹀彿蹇�熺櫥褰曞暒
+                string msg = Language.StringByID(R.MyInternationalizationString.uBindWebchatSuccessMsg);
+                msg = msg.Replace("{0}", "\r\n");
+                this.ShowMassage(ShowMsgType.Normal, msg, null, Language.StringByID(R.MyInternationalizationString.uWell));
+                //閲嶆柊鍒锋柊鐣岄潰
+                this.InitMiddleData();
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 瑙i櫎缁戝畾___________________________
+
+        /// <summary>
+        /// 瑙i櫎缁戝畾
+        /// </summary>
+        /// <param name="infoData"></param>
+        private async void UnBindOtherParty(OtherPartyResult infoData)
+        {
+            var pra = new { DistributedMark = infoData.Id };
+            var result = await UserCenterLogic.GetResultStatuByRequestHttps("ZigbeeUsers/UnBindUserAuth", false, pra);
+            if (result == true)
+            {
+                //閲嶆柊鍒锋柊鐣岄潰
+                this.InitMiddleData();
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 缁撴瀯浣揰____________________________
+
+        /// <summary>
+        /// 鑾峰彇绗笁鏂圭粨鏋滀俊鎭�
+        /// </summary>
+        private class OtherPartyResult
+        {
+            /// <summary>
+            /// 杩欎釜鏄敤鏉ュ垹闄ょ粦瀹氱殑
+            /// </summary>
+            public string Id = string.Empty;
+            /// <summary>
+            /// OpenID
+            /// </summary>
+            public string OpenID = string.Empty;
+            /// <summary>
+            /// AccessToken
+            /// </summary>
+            public string AccessToken = string.Empty;
+            /// <summary>
+            /// RefreshToken
+            /// </summary>
+            public string RefreshToken = string.Empty;
+            /// <summary>
+            /// Wechat  鎴栬�� QQ
+            /// </summary>
+            public string Platform = string.Empty;
+            /// <summary>
+            /// 鏄电О
+            /// </summary>
+            public string UserName = string.Empty;
+        }
 
         #endregion
     }

--
Gitblit v1.8.0