| | |
| | | using System;
|
| | | using System.Collections.Generic;
|
| | | using System.Text;
|
| | | using System.Threading.Tasks;
|
| | |
|
| | | namespace Shared.Phone.UserCenter.OtherParty
|
| | | {
|
| | |
| | | public class OtherPartyAccountMenuForm : EditorCommonForm
|
| | | {
|
| | | #region ■ 变量声明___________________________
|
| | |
|
| | | /// <summary>
|
| | | /// 绑定的方式
|
| | | /// </summary>
|
| | | private Dictionary<string, OtherPartyResult> dicBindData = null;
|
| | |
|
| | | #endregion
|
| | |
|
| | |
| | | //设置头部信息
|
| | | 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>
|
| | |
| | | /// </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)
|
| | | {
|
| | | //解除绑定
|
| | | 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;
|
| | |
| | | //向右图标
|
| | | rowChat.AddRightArrow();
|
| | | //底线
|
| | | rowChat.AddBottomLine();
|
| | | //请绑定
|
| | | rowChat.AddMostRightView(Language.StringByID(R.MyInternationalizationString.uPleaseBind), 400);
|
| | | //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();
|
| | | }
|
| | | };
|
| | |
|
| | | 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)
|
| | | //{
|
| | | // //解除绑定
|
| | | // 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 ■ 一般方法___________________________
|
| | | #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>
|
| | | /// 激活微信App
|
| | | /// </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 ■ 解除绑定___________________________
|
| | |
|
| | | /// <summary>
|
| | | /// 解除绑定
|
| | | /// </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
|
| | | }
|