using System;
|
using System.Collections.Generic;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace Shared.Phone.UserCenter.OtherParty
|
{
|
/// <summary>
|
/// 第三方账号的菜单界面
|
/// </summary>
|
public class OtherPartyAccountMenuForm : EditorCommonForm
|
{
|
#region ■ 变量声明___________________________
|
|
/// <summary>
|
/// 绑定的方式
|
/// </summary>
|
private Dictionary<string, OtherPartyResult> dicBindData = null;
|
|
#endregion
|
|
#region ■ 初始化_____________________________
|
|
/// <summary>
|
/// 画面显示(底层会固定调用此方法,借以完成画面创建)
|
/// </summary>
|
public void ShowForm()
|
{
|
//设置头部信息
|
base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uOtherPartyAccount));
|
|
//初始化中部数据
|
this.InitMiddleData();
|
}
|
|
/// <summary>
|
/// 初始化中部数据
|
/// </summary>
|
private void InitMiddleData()
|
{
|
//清空bodyFrame
|
this.ClearBodyFrame();
|
|
HdlThreadLogic.Current.RunThread(() =>
|
{
|
//打开进度条
|
this.ShowProgressBar();
|
//获取绑定数据
|
var result = this.GetBingData();
|
if (result == false)
|
{
|
//关闭进度条
|
this.CloseProgressBar(ShowReLoadMode.YES);
|
return;
|
}
|
//关闭进度条
|
this.CloseProgressBar();
|
|
HdlThreadLogic.Current.RunMain(() =>
|
{
|
//初始化中部信息
|
this.InitMiddleFrame();
|
});
|
});
|
}
|
|
/// <summary>
|
/// 初始化中部信息
|
/// </summary>
|
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"].UserName;
|
}
|
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.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.BindEvent);
|
//向右图标
|
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.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 解除绑定
|
//rowQQ.AddMostRightView(bindTipText, 400);
|
//rowQQ.ButtonClickEvent += (sender, e) =>
|
//{
|
// if (dicBindData.ContainsKey("QQ") == true)
|
// {
|
// }
|
// else
|
// {
|
// }
|
//};
|
//调整真实高度
|
listView.AdjustRealHeight(Application.GetRealHeight(23));
|
}
|
|
#endregion
|
|
#region ■ 获取绑定数据_______________________
|
|
/// <summary>
|
/// 获取绑定数据
|
/// </summary>
|
/// <returns></returns>
|
private bool GetBingData()
|
{
|
this.dicBindData = new Dictionary<string, OtherPartyResult>();
|
|
var result = UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeUsers/GetUserAuthItem", false, "");
|
if (string.IsNullOrEmpty(result) == true)
|
{
|
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>
|
/// 激活微信App
|
/// </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 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 = 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 = UserCenterLogic.GetResultStatuByRequestHttps("ZigbeeUsers/InsertOrUpdateAuthUser", false, pra, listNotShow);
|
if (result == false)
|
{
|
return;
|
}
|
|
//再执行绑定
|
var pra2 = new { AccountGuid = Common.Config.Instance.Guid, OpenID = openID };
|
result = 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 ■ 解除绑定___________________________
|
|
/// <summary>
|
/// 解除绑定
|
/// </summary>
|
/// <param name="infoData"></param>
|
private void UnBindOtherParty(OtherPartyResult infoData)
|
{
|
var pra = new { DistributedMark = infoData.Id };
|
var result = 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
|
}
|
}
|