From 16604a593202f2f87adf71abd57d036fe7da3b52 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期一, 18 十一月 2019 10:39:42 +0800
Subject: [PATCH] 同步了全部的代码

---
 ZigbeeApp/Shared/Phone/UserCenter/OtherParty/OtherPartyAccountMenuForm.cs |  308 +++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 270 insertions(+), 38 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/OtherParty/OtherPartyAccountMenuForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/OtherParty/OtherPartyAccountMenuForm.cs
index e6fc37c..12e1f94 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,24 +69,31 @@
         /// </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"].Nickname;
+            }
+            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);
+            //鏈巿鏉�  OR  鍚嶅瓧
+            var btnTip1 = rowChat.AddLeftCaption(bindNameText, 400, 49);
             btnTip1.Y = Application.GetRealHeight(72) + rowChat.chidrenYaxis;
             btnTip1.TextSize = 12;
             btnTip1.TextColor = UserCenterColor.Current.TextGrayColor1;
@@ -57,40 +101,228 @@
             //鍚戝彸鍥炬爣
             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.BindEventOnly);
+            ////鏈巿鏉�  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.BindEventOnly);
+            ////鍚戝彸鍥炬爣
+            //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;
+            }
+
+            //鑾峰彇鐢ㄦ埛鏄电О
+            if (this.dicBindData.ContainsKey("Wechat") == true)
+            {
+                var myData = this.dicBindData["Wechat"];
+                //缁欎釜榛樿鍊�
+                myData.Nickname = "Wechat";
+                var strUrl = "https://api.weixin.qq.com/sns/userinfo?access_token=" + myData.AccessToken;
+                strUrl += "&openid=" + myData.OpenID;
+                var byteData = await Common.CommonPage.Instance.DoRequestZigbeeHttpsInterface(strUrl, null, null, "GET");
+                if (byteData != null)
+                {
+                    var receipData = System.Text.Encoding.UTF8.GetString(byteData);
+                    var nickData = Newtonsoft.Json.JsonConvert.DeserializeObject<NicknameInfo>(receipData);
+                    myData.Nickname = nickData.nickname;
+                }
+            }
+
+            return true;
+        }
+
+        #endregion
+
+        #region 鈻� 缁戝畾寰俊___________________________
+
+        /// <summary>
+        /// 婵�娲诲井淇pp
+        /// </summary>
+        private void ActionWechatApp()
+        {
+#if Android
+            com.hdl.home.Application.WXLogin();
+            com.hdl.home.WXEntryActivity.RespAction = (authStr) =>
+            {
+                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);
+            };
+#endif
+        }
+
+        /// <summary>
+        /// 缁戝畾寰俊
+        /// </summary>
+        /// <param name="infoData"></param>
+        private async void BindWechat(string accessToken, string refreshToken, string openID)
+        {
+            var pra = new { AccessToken = accessToken, RefreshToken = refreshToken, OpenID = openID };
+            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)
+            {
+                //缁戝畾寰俊鎴愬姛!
+                string msg = Language.StringByID(R.MyInternationalizationString.uBindSomethingSuccess);
+                msg = msg.Replace("{0}", Language.StringByID(R.MyInternationalizationString.uWebChat));
+                this.ShowMassage(ShowMsgType.Tip, msg);
+                //閲嶆柊鍒锋柊鐣岄潰
+                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 Nickname = string.Empty;
+        }
+
+        /// <summary>
+        /// 鏄电О淇℃伅
+        /// </summary>
+        private class NicknameInfo
+        {
+            /// <summary>
+            /// 鏄电О
+            /// </summary>
+            public string nickname = string.Empty;
+        }
 
         #endregion
     }

--
Gitblit v1.8.0