黄学彪
2020-12-17 9f326f4000847e6167d8166fa2f6a66f53cb3734
ZigbeeApp/Shared/Phone/UserCenter/OtherParty/OtherPartyAccountMenuForm.cs
@@ -41,12 +41,12 @@
            //清空bodyFrame
            this.ClearBodyFrame();
            HdlThreadLogic.Current.RunThread(async () =>
            HdlThreadLogic.Current.RunThread(() =>
            {
                //打开进度条
                this.ShowProgressBar();
                //获取绑定数据
                var result = await this.GetBingData();
                var result = this.GetBingData();
                if (result == false)
                {
                    //关闭进度条
@@ -82,7 +82,7 @@
            {
                //解除绑定
                bindTipText = Language.StringByID(R.MyInternationalizationString.uUnBinded);
                bindNameText = dicBindData["Wechat"].Nickname;
                bindNameText = dicBindData["Wechat"].UserName;
            }
            var rowChat = new FrameRowControl(listView.rowSpace / 2);
            rowChat.Y = Application.GetRealHeight(11);
@@ -91,13 +91,13 @@
            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);
            rowChat.AddChidren(btnChat, ChidrenBindMode.BindEvent);
            //未授权  OR  名字
            var btnTip1 = rowChat.AddLeftCaption(bindNameText, 400, 49);
            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.BindEventOnly);
            rowChat.AddChidren(btnTip1, ChidrenBindMode.BindEvent);
            //向右图标
            rowChat.AddRightArrow();
            //底线
@@ -141,13 +141,13 @@
            //var btnQQ = rowQQ.AddLeftCaption("QQ", 400, 60);
            //btnQQ.Y = Application.GetRealHeight(12) + rowQQ.chidrenYaxis;
            //btnQQ.TextSize = 15;
            //rowQQ.AddChidren(btnQQ, ChidrenBindMode.BindEventOnly);
            //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.BindEventOnly);
            //rowQQ.AddChidren(btnTip2, ChidrenBindMode.BindEvent);
            ////向右图标
            //rowQQ.AddRightArrow();
            ////请绑定  OR  解除绑定
@@ -173,37 +173,21 @@
        /// 获取绑定数据
        /// </summary>
        /// <returns></returns>
        private async Task<bool> GetBingData()
        private bool GetBingData()
        {
            this.dicBindData = new Dictionary<string, OtherPartyResult>();
            //☆マーク☆ 绑定微信
            //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;
                }
            }
            //var result = HdlUserCenterLogic.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;
        }
@@ -220,43 +204,61 @@
#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);
                var authRes = Newtonsoft.Json.JsonConvert.DeserializeObject<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)
        private 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 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 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();
            }
            ////先上传微信资料
            //var pra = new { AccessToken = accessToken, RefreshToken = refreshToken, OpenID = openID, UserName = nickData.nickname };
            //var listNotShow = new List<string>() { "UserNoBindAccount" };
            //var result = HdlUserCenterLogic.GetResultStatuByRequestHttps("ZigbeeUsers/InsertOrUpdateAuthUser", false, pra, listNotShow);
            //if (result == false)
            //{
            //    return;
            //}
            ////再执行绑定
            //var pra2 = new { AccountGuid = Common.Config.Instance.Guid, OpenID = openID };
            //result = HdlUserCenterLogic.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
@@ -267,15 +269,16 @@
        /// 解除绑定
        /// </summary>
        /// <param name="infoData"></param>
        private async void UnBindOtherParty(OtherPartyResult infoData)
        private void UnBindOtherParty(OtherPartyResult infoData)
        {
            var pra = new { DistributedMark = infoData.Id };
            var result = await UserCenterLogic.GetResultStatuByRequestHttps("ZigbeeUsers/UnBindUserAuth", false, pra);
            if (result == true)
            {
                //重新刷新界面
                this.InitMiddleData();
            }
            //☆マーク☆ 绑定微信
            //var pra = new { DistributedMark = infoData.Id };
            //var result = HdlUserCenterLogic.GetResultStatuByRequestHttps("ZigbeeUsers/UnBindUserAuth", false, pra);
            //if (result == true)
            //{
            //    //重新刷新界面
            //    this.InitMiddleData();
            //}
        }
        #endregion
@@ -308,20 +311,30 @@
            /// </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;
            public string UserName = string.Empty;
        }
        private class AuthUserRes
        {
            ///<summary>
            /// 第三方token
            /// </summary>
            public string access_token;
            /// <summary>
            /// 刷新token
            /// </summary>
            public string refresh_token;
            /// <summary>
            ///第三方用户唯一标识
            /// </summary>
            public string openid;
            public int expires_in;
            public string scope;
            public string unionid;
        }
        #endregion