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