using System; using System.Collections.Generic; using System.Text; using System.Threading.Tasks; namespace Shared.Phone.UserCenter.OtherParty { /// /// 第三方账号的菜单界面 /// public class OtherPartyAccountMenuForm : EditorCommonForm { #region ■ 变量声明___________________________ /// /// 绑定的方式 /// private Dictionary dicBindData = null; #endregion #region ■ 初始化_____________________________ /// /// 画面显示(底层会固定调用此方法,借以完成画面创建) /// public void ShowForm() { //设置头部信息 base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uOtherPartyAccount)); //初始化中部数据 this.InitMiddleData(); } /// /// 初始化中部数据 /// 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(); }); }); } /// /// 初始化中部信息 /// private void InitMiddleFrame() { var listView = new VerticalListControl(12); listView.Height = Application.GetRealHeight(317); listView.BackgroundColor = UserCenterColor.Current.White; bodyFrameLayout.AddChidren(listView); //未授权 string bindNameText = Language.StringByID(R.MyInternationalizationString.uNotAuthentication); //请绑定 string bindTipText= Language.StringByID(R.MyInternationalizationString.uPleaseBind); if (dicBindData.ContainsKey("Wechat") == true) { //解除绑定 bindTipText = Language.StringByID(R.MyInternationalizationString.uUnBinded); bindNameText = dicBindData["Wechat"].Nickname; } var rowChat = new FrameRowControl(listView.rowSpace / 2); rowChat.Y = Application.GetRealHeight(11); 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); //未授权 OR 名字 var btnTip1 = rowChat.AddLeftCaption(bindNameText, 400, 49); btnTip1.Y = Application.GetRealHeight(72) + rowChat.chidrenYaxis; btnTip1.TextSize = 12; btnTip1.TextColor = UserCenterColor.Current.TextGrayColor1; rowChat.AddChidren(btnTip1, ChidrenBindMode.BindEventOnly); //向右图标 rowChat.AddRightArrow(); //底线 //rowChat.AddBottomLine(); //请绑定 OR 解除绑定 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, () => { //解除绑定 this.UnBindOtherParty(dicBindData["Wechat"]); }); } else { //激活微信App this.ActionWechatApp(); } }; ////未授权 //bindNameText = Language.StringByID(R.MyInternationalizationString.uNotAuthentication); ////请绑定 //bindTipText = Language.StringByID(R.MyInternationalizationString.uPleaseBind); //if (dicBindData.ContainsKey("QQ") == true) //{ // //解除绑定 // 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 解除绑定 //rowQQ.AddMostRightView(bindTipText, 400); //rowQQ.ButtonClickEvent += (sender, e) => //{ // if (dicBindData.ContainsKey("QQ") == true) // { // } // else // { // } //}; //调整真实高度 listView.AdjustRealHeight(Application.GetRealHeight(23)); } #endregion #region ■ 获取绑定数据_______________________ /// /// 获取绑定数据 /// /// private async Task GetBingData() { this.dicBindData = new Dictionary(); var result = await UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeUsers/GetUserAuthItem", false, ""); if (result == null) { return false; } var data = Newtonsoft.Json.JsonConvert.DeserializeObject>(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(receipData); myData.Nickname = nickData.nickname; } } return true; } #endregion #region ■ 绑定微信___________________________ /// /// 激活微信App /// 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(authStr); //绑定微信 this.BindWechat(authRes.access_token, authRes.refresh_token, authRes.openid); }; #endif } /// /// 绑定微信 /// /// private async void BindWechat(string accessToken, string refreshToken, string openID) { var pra = new { AccessToken = accessToken, RefreshToken = refreshToken, OpenID = openID }; var listNotShow = new List() { "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 ■ 解除绑定___________________________ /// /// 解除绑定 /// /// 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 ■ 结构体_____________________________ /// /// 获取第三方结果信息 /// private class OtherPartyResult { /// /// 这个是用来删除绑定的 /// public string Id = string.Empty; /// /// OpenID /// public string OpenID = string.Empty; /// /// AccessToken /// public string AccessToken = string.Empty; /// /// RefreshToken /// public string RefreshToken = string.Empty; /// /// Wechat 或者 QQ /// public string Platform = string.Empty; /// /// 昵称(需要自己去获取) /// public string Nickname = string.Empty; } /// /// 昵称信息 /// private class NicknameInfo { /// /// 昵称 /// public string nickname = string.Empty; } #endregion } }