wei
2020-11-27 70f708ee367f1ac5fa4399de035b91bebdd7078f
HDL_ON/DAL/Server/HttpServerRequest.cs
@@ -1,8 +1,9 @@
using System;
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Net;
using System.Text;
using HDL_ON.DAL.Mqtt;
using HDL_ON.Entity;
using Newtonsoft.Json.Linq;
using Shared;
@@ -67,29 +68,29 @@
        }
        public string GetRequestResultMsg(string resultCode)
        {
            string result = "";
            switch (resultCode.ToUpper())
            {
                case "USERNAMEORPWDERROR":
                    result = Language.StringByID(StringId.LoginFailed_AccountOrPasswordError);
                    break;
                case "ACCOUNTNOEXISTS":
                    result = Language.StringByID(StringId.ACCOUNTNOEXISTS);
                    break;
                case "SENDFAIL":
                    result = Language.StringByID(StringId.FailedToSendVerificationCode);
                    break;
                case "EXIST":
                    result = Language.StringByID(StringId.AccountAlreadyUse);
                    break;
                case "Self:Net_Error":
                    result = Language.StringByID(StringId.NetworkAnomaly);
                    break;
            }
            return result;
        }
        //public string GetRequestResultMsg(string resultCode)
        //{
        //    string result = "";
        //    switch (resultCode.ToUpper())
        //    {
        //        case "USERNAMEORPWDERROR":
        //            result = Language.StringByID(StringId.LoginFailed_AccountOrPasswordError);
        //            break;
        //        case "ACCOUNTNOEXISTS":
        //            result = Language.StringByID(StringId.ACCOUNTNOEXISTS);
        //            break;
        //        case "SENDFAIL":
        //            result = Language.StringByID(StringId.FailedToSendVerificationCode);
        //            break;
        //        case "EXIST":
        //            result = Language.StringByID(StringId.AccountAlreadyUse);
        //            break;
        //        case "Self:Net_Error":
        //            result = Language.StringByID(StringId.NetworkAnomaly);
        //            break;
        //    }
        //    return result;
        //}
        #region ■ 通用请求接口_______________________
        /// <summary>
@@ -111,15 +112,16 @@
        {
            var requestJson = HttpUtil.GetSignRequestJson(new RefreshTokenObj()
            {
                refreshToken = MainPage.LoginUser.refreshToken,
                refreshToken = UserInfo.Current.RefreshToken,
            });
            var revertObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_Login, requestJson);
            if (revertObj.Code.ToUpper() == StateCode.SUCCESS)
            {
                var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<UserLoginRes>(revertObj.Data.ToString());
                MainPage.LoginUser.loginTokenString = revertData.headerPrefix + revertData.accessToken;
                MainPage.LoginUser.lastTime = DateTime.Now;
                MainPage.LoginUser.SaveUserInfo();
                UserInfo.Current.LoginTokenString = revertData.headerPrefix + revertData.accessToken;
                UserInfo.Current.RefreshToken = revertData.refreshToken;
                UserInfo.Current.LastTime = DateTime.Now;
                UserInfo.Current.SaveUserInfo();
                return true;
            }
            return false;
@@ -129,13 +131,7 @@
        #region 注册、登录部分
        /// <summary>
        /// 获取请求提交的语言参数
        /// </summary>
        public string GetPostLanguageType()
        {
            return Language.CurrentLanguage == "Chinese" ? LanguageTypeEnum.CHINESE.ToString() : LanguageTypeEnum.ENGLISH.ToString();
        }
        /// <summary>
        /// 通用 发送验证码方法
@@ -150,7 +146,7 @@
            var requestObj = new VerifyCodeSendObj()
            {
                verifyType = (int)verifyType,
                languageType = GetPostLanguageType()
                languageType = Utlis.GetPostLanguageType()
            };
            // 是否是手机 
            if (isPhone)
@@ -248,30 +244,18 @@
            return HttpUtil.RequestHttpsPost(NewAPI.API_POST_Member_ForgetPwd, requestJson);
        }
        ///// <summary>
        ///// 获取登录验证码
        ///// </summary>
        //public ResponsePack GetLoginVerCode(string account)
        //{
        //    string jsonString = "{" +
        //                        "\"Account\":" + "\"" + account + "\"" + "," +
        //                        "\"AreaCode\":" + "86" +
        //                        "}";
        //    return RequestHttps($"{severAddress}/ZigbeeUsers/LoginSendVerCode", jsonString, false);
        //}
        /// <summary>
        /// 验证验证码
        /// </summary>
        /// <param name="account"></param>
        /// <param name="code"></param>
        /// <param name="verifyType">验证类型</param>
        /// <param name="account">验证账号</param>
        /// <param name="code">验证码</param>
        /// <param name="isPhone">是否手机</param>
        /// <param name="verifySuccessFail">验证通过后,验证码是否失效</param>
        /// <returns></returns>
        public ResponsePackNew ValidatorCode(VerifyType verifyType, string account, string code, bool isPhone)
        public ResponsePackNew ValidatorCode(VerifyType verifyType, string account, string code, bool isPhone, bool verifySuccessFail = true)
        {
            var requestObj = new VerifyCodeCheckObj() { verifyCode = code, verifyType = (int)verifyType };
            var requestObj = new VerifyCodeCheckObj() { verifyCode = code, verifyType = (int)verifyType, verifySuccessFail = verifySuccessFail };
            if (isPhone)
            {
                //手机
@@ -286,22 +270,6 @@
            return HttpUtil.RequestHttpsPost(NewAPI.API_POST_Verification_Check, requestJson);
        }
        /// <summary>
        /// 重设密码
        /// </summary>
        /// <returns></returns>
        public ResponsePack ResetPassword(string account, string password, string rePassword, int countryIndex)
        {
            string jsonString = "{" +
                                "\"Account\":" + "\"" + account + "\"" + "," +
                                "\"Password\":" + "\"" + password + "\"" + "," +
                                "\"AgainPassword\":" + "\"" + rePassword + "\"" + "," +
                                "\"AreaCode\":" + countryIndex +
                                "}";
            return RequestHttps($"{severAddress}/ZigbeeUsers/ResetPassword", jsonString, false);
        }
        #endregion
        #region 个人信息部分
@@ -309,46 +277,53 @@
        /// 获取用户信息
        /// </summary>
        /// <returns></returns>
        public void GetUserInfo()
        public void GetUserInfo(bool bGetHeadImage = true)
        {
            var requestJson = HttpUtil.GetSignRequestJson(new NullObj());
            var resultObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_Member_GetMemberInfo, requestJson);
            if (resultObj.Code == StateCode.SUCCESS)
            {
                var info = Newtonsoft.Json.JsonConvert.DeserializeObject<MemberInfoRes>(resultObj.Data.ToString());
                MainPage.LoginUser.userEmailInfo = info.memberEmail;
                MainPage.LoginUser.userMobileInfo = info.memberPhone;
                MainPage.LoginUser.userName = info.memberName;
                var headImageBytes = DownHeadImage();
                if (headImageBytes != null)
                UserInfo.Current.userEmailInfo = info.memberEmail;
                UserInfo.Current.userMobileInfo = info.memberPhone;
                UserInfo.Current.userName = info.memberName;
                if (!string.IsNullOrEmpty(info.memberPhonePrefix))
                {
                    MainPage.LoginUser.headImagePageBytes = headImageBytes;
                    FileStream fs = null;
                    try
                    UserInfo.Current.areaCode = info.memberPhonePrefix;
                }
                //是否需要获取头像
                if (bGetHeadImage)
                {
                    var headImageBytes = DownHeadImage();
                    if (headImageBytes != null && headImageBytes.Length > 0)
                    {
                        MainPage.LoginUser.headImagePageBytes = headImageBytes;
                        var filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/", "headImage.png");
                        fs = new FileStream(filePath, FileMode.Create, FileAccess.Write);
                        fs.Write(headImageBytes, 0, headImageBytes.Length);
                        fs.Flush();
                        MainPage.LoginUser.headImagePagePath = filePath;
                    }
                    catch (Exception ex)
                    {
                        MainPage.Log($"download headImage error : {ex.Message}");
                    }
                    finally
                    {
                        if (fs != null)
                        UserInfo.Current.headImagePageBytes = headImageBytes;
                        FileStream fs = null;
                        try
                        {
                            fs.Close();
                            UserInfo.Current.headImagePageBytes = headImageBytes;
                            var filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/", "headImage.png");
                            fs = new FileStream(filePath, FileMode.Create, FileAccess.Write);
                            fs.Write(headImageBytes, 0, headImageBytes.Length);
                            fs.Flush();
                            UserInfo.Current.headImagePagePath = filePath;
                        }
                    }
                        catch (Exception ex)
                        {
                            MainPage.Log($"download headImage error : {ex.Message}");
                        }
                        finally
                        {
                            if (fs != null)
                            {
                                fs.Close();
                            }
                        }
                    }
                }
                MainPage.LoginUser.SaveUserInfo();
                UserInfo.Current.SaveUserInfo();
                MainPage.Log("获取用户信息成功。");
            }
@@ -361,8 +336,8 @@
            //{
            //    var dataStr = JObject.FromObject(revertObj.ResponseData);
            //    //"DistributedMark": "96439601-fd26-4768-8440-1d9dfa32c109",  < !--帐号Id-- >
            //    MainPage.LoginUser.userEmailInfo = dataStr.GetValue("Email").ToString();
            //    MainPage.LoginUser.userMobileInfo = dataStr.GetValue("Phone").ToString();
            //     UserInfo.Current.userEmailInfo = dataStr.GetValue("Email").ToString();
            //     UserInfo.Current.userMobileInfo = dataStr.GetValue("Phone").ToString();
            //    FileStream fs = null;
            //    try
            //    {
@@ -371,12 +346,12 @@
            //        {
            //            var jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(headImageString);
            //            var headImageBytes = Newtonsoft.Json.JsonConvert.DeserializeObject<byte[]>(jsonString);
            //            MainPage.LoginUser.headImagePageBytes = headImageBytes;
            //             UserInfo.Current.headImagePageBytes = headImageBytes;
            //            var filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/", "headImage.png");
            //            fs = new FileStream(filePath, FileMode.Create, FileAccess.Write);
            //            fs.Write(headImageBytes, 0, headImageBytes.Length);
            //            fs.Flush();
            //            MainPage.LoginUser.headImagePagePath = filePath;
            //             UserInfo.Current.headImagePagePath = filePath;
            //        }
            //    }
            //    catch (Exception ex)
@@ -392,13 +367,13 @@
            //    }
            //    // "GesturePwd": null,  < !--手势密码-- >
            //    // "StringPwd": null , < !--字符串密码-- >
            //    MainPage.LoginUser.userName = dataStr.GetValue("UserName").ToString();
            //     UserInfo.Current.userName = dataStr.GetValue("UserName").ToString();
            //    Application.RunOnMainThread(() =>
            //    {
            //    });
            //    MainPage.LoginUser.SaveUserInfo();
            //     UserInfo.Current.SaveUserInfo();
            //    MainPage.Log("获取用户信息成功。");
            //}
@@ -419,10 +394,11 @@
        /// <returns></returns>
        public ResponsePackNew EditUserName(string userName)
        {
           var requestJson = HttpUtil.GetSignRequestJson(new UpdateMemberNameRes() {
               memberName = userName
           });
           return HttpUtil.RequestHttpsPost(NewAPI.API_POST_Member_UpdateMemberInfo, requestJson);
            var requestJson = HttpUtil.GetSignRequestJson(new UpdateMemberNameRes()
            {
                memberName = userName
            });
            return HttpUtil.RequestHttpsPost(NewAPI.API_POST_Member_UpdateMemberInfo, requestJson);
        }
        /// <summary>
@@ -449,7 +425,7 @@
        /// <returns></returns>
        public string BindAccount(string account, string code = "", bool isPhone = false)
        {
            var requestObj = new BindWithAccountObj() { verifyCode = code};
            var requestObj = new BindWithAccountObj() { verifyCode = code };
            if (isPhone)
            {
                //手机
@@ -458,11 +434,24 @@
            else
            {
                //邮箱
                requestObj.memberMail = account;
                requestObj.memberEmail = account;
            }
            var requestJson = HttpUtil.GetSignRequestJson(requestObj);
            return HttpUtil.RequestHttpsPost(NewAPI.API_POST_Member_UpdateMemberInfo, requestJson).Code;
            return HttpUtil.RequestHttpsPost(NewAPI.API_POST_Member_BindWithAccount, requestJson).Code;
        }
        /// <summary>
        /// 解绑手机或者邮箱
        /// </summary>
        /// <param name="isPhone"></param>
        /// <returns></returns>
        public string UnBindAccount(bool isPhone)
        {
            var requestObj = new UnBindAccountObj() { unBindLabel = isPhone ? "PHONE" : "EMAIL" };
            var requestJson = HttpUtil.GetSignRequestJson(requestObj);
            return HttpUtil.RequestHttpsPost(NewAPI.API_POST_Member_UnbindWithAccount, requestJson).Code;
        }
        #endregion
        #region 住宅部分
@@ -473,17 +462,18 @@
        {
            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(new GetHomeListObj() { homeType = homeType.ToString() });
            var resultObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_Gethomepager, requestJson);
            if(resultObj.Code == StateCode.SUCCESS)
            if (resultObj.Code == StateCode.SUCCESS)
            {
                var homeList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<RegionInfoResNew>>(resultObj.Data.ToString());
                if (homeList == null || homeList.Count == 0) {
                if (homeList == null || homeList.Count == 0)
                {
                }
                else
                {
                    MainPage.LoginUser.regionList = new List<RegionInfoRes>();
                    UserInfo.Current.regionList = new List<RegionInfoRes>();
                    foreach (var mHome in homeList)
                    {
                        var home = new RegionInfoRes()
@@ -507,25 +497,26 @@
                        {
                            continue;
                        }
                        MainPage.LoginUser.regionList.Add(home);
                        if (string.IsNullOrEmpty(DB_ResidenceData.residenceData.CurReginID))
                        {
                            DB_ResidenceData.residenceData.CurReginID = MainPage.LoginUser.regionList[0].RegionID;
                        }
                        UserInfo.Current.regionList.Add(home);
                    }
                    if (string.IsNullOrEmpty(DB_ResidenceData.residenceData.CurReginID))
                    {
                        DB_ResidenceData.residenceData.CurReginID = UserInfo.Current.regionList[0].RegionID;
                    }
                    DB_ResidenceData.residenceData.SaveResidenceData();
                    MainPage.LoginUser.SaveUserInfo();
                    UserInfo.Current.SaveUserInfo();
                }
            }
            return resultObj.Code;
            //string jsonString = "{" +
            //string jsonString = "{" +
            //                    "\"RequestVersion\":" + "\"" + MainPage.VersionString + "\"" + "," +
            //                    "\"RequestSource\":" + "\"" + "2" + "\"" + "," +
            //                    "\"HomeType\":" + "\"" + "1" + "\"" + "," +
            //                    "\"LoginAccessToken\":" + "\"" + MainPage.LoginUser.loginTokenString + "\"" +
            //                    "\"LoginAccessToken\":" + "\"" +  UserInfo.Current.loginTokenString + "\"" +
            //                    "}";
            //var responsePack = RequestHttps($"{severAddress}/App/GetHomePager", jsonString, false);
@@ -564,7 +555,7 @@
            //        //    }
            //        //  ]
            //        //}}
            //        MainPage.LoginUser.regionList = new List<RegionInfoRes>();
            //         UserInfo.Current.regionList = new List<RegionInfoRes>();
            //        foreach (var jsonData in dataStr.GetValue("PageData"))
            //        {
            //            var homeJsonStr = JObject.FromObject(jsonData);
@@ -581,39 +572,83 @@
            //            {
            //                continue;
            //            }
            //            MainPage.LoginUser.regionList.Add(home);
            //             UserInfo.Current.regionList.Add(home);
            //            if (string.IsNullOrEmpty(DB_ResidenceData.residenceData.CurReginID))
            //            {
            //                DB_ResidenceData.residenceData.CurReginID = MainPage.LoginUser.regionList[0].RegionID;
            //                DB_ResidenceData.residenceData.CurReginID =  UserInfo.Current.regionList[0].RegionID;
            //            }
            //        }
            //        DB_ResidenceData.residenceData.SaveResidenceData();
            //        MainPage.LoginUser.SaveUserInfo();
            //         UserInfo.Current.SaveUserInfo();
            //    }
            //}
            //return responsePack.StateCode;
        }
        /// <summary>
        /// 编辑住宅信息
        /// </summary>
        /// <param name="editId">0 修改住宅名字、1 修改住宅地址</param>
        /// <param name="editName"></param>
        /// <returns></returns>
        public ResponsePack EditResidenceInfo()
        public ResponsePackNew EditResidenceInfo(int editId, string editName)
        {
            //创建字典
            Dictionary<string, object> d = new Dictionary<string, object>();
            //添加元素
            d.Add("RequestVersion", MainPage.VersionString);
            d.Add("RequestSource", "2");
            d.Add("LoginAccessToken", MainPage.LoginUser.loginTokenString);
            d.Add("HomeId", DB_ResidenceData.residenceData.residecenInfo.RegionID);
            d.Add("HomeType", 1);
            d.Add("Name", DB_ResidenceData.residenceData.residecenInfo.Name);
            d.Add("Address", DB_ResidenceData.residenceData.residecenInfo.Address);
            //添加完成以后把字典类中数据格式化为json字符串
            //将对象转为json字符串
            var requestObj = new AddOrUpdateHomeObj()
            {
                homeId = DB_ResidenceData.residenceData.residecenInfo.RegionID,
            };
            string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
            return RequestHttps($"{severAddress}/App/EditHome", jsonString, false);
            if (editId == 0)
            {
                requestObj.homeName = editName;
            }
            else if (editId == 1)
            {
                requestObj.Address = editName;
            }
            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(requestObj);
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Home_UpdateHome, requestJson);
        }
        /// <summary>
        /// 获取刷新当前住宅网关接口
        /// </summary>
        public void GetHomeGatewayList()
        {
            if (string.IsNullOrEmpty(DB_ResidenceData.residenceData.residecenInfo.RegionID)) return;
            var nowhomeId = DB_ResidenceData.residenceData.residecenInfo.RegionID;
            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(new HomeIdObj() { homeId = nowhomeId });
            var revertObj = HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_GetGatewayList, requestJson);
            if (revertObj.Code == StateCode.SUCCESS)
            {
                var mHomeGatewayRes = Newtonsoft.Json.JsonConvert.DeserializeObject<List<HomeGatewayInfo>>(revertObj.Data.ToString());
                if (nowhomeId == DB_ResidenceData.residenceData.residecenInfo.RegionID)
                {
                    if (mHomeGatewayRes != null)
                    {
                        if (mHomeGatewayRes.Count > 0)
                        {
                            DB_ResidenceData.residenceData.residenceGatewayMAC = mHomeGatewayRes[0].mac;
                        }
                        else
                        {
                            DB_ResidenceData.residenceData.residenceGatewayMAC = "";
                        }
                        DB_ResidenceData.residenceData.SaveResidenceData();
                    }
                    if (mHomeGatewayRes != null)
                    {
                        //Utlis.WriteLine ("获得当前住宅网关个数:" + mHomeGatewayRes.content.Count);
                    }
                }
            }
            else
            {
                //提示错误
            }
        }
        /// <summary>
@@ -623,20 +658,22 @@
        public ResponsePackNew GetResidenceMemberAccount()
        {
            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(new HomeIdObj() { homeId = DB_ResidenceData.residenceData.residecenInfo.RegionID });
            return HttpUtil.RequestHttpsPost(NewAPI.API_POST_Child_FindAll, requestJson, null, DB_ResidenceData.residenceData.residecenInfo.regionUrl);
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Child_FindAll, requestJson);
        }
        /// <summary>
        /// 删除住宅下的成员账号
        /// </summary>
        /// <returns></returns>
        public ResponsePack DeleteResidenceMemberAccount(string memberAccount)
        public ResponsePackNew DeleteResidenceMemberAccount(ResidenceMemberInfo subaccount)
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("SubAccount", memberAccount);
            d.Add("HouseDistributedMark", DB_ResidenceData.residenceData.residecenInfo.RegionID);
            string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
            return RequestHttps($"{severAddress}/ZigbeeUsers/DeletedSubAccount", jsonString, true);
            var requestObj = new ChildDeleteObj()
            {
                childAccountId = subaccount.childAccountId,
                homeId = subaccount.homeId
            };
            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(requestObj);
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Child_Delete, requestJson);
        }
        /// <summary>
@@ -645,13 +682,16 @@
        /// <param name="nickName"></param>
        /// <param name="subAccountGuid"></param>
        /// <returns></returns>
        public ResponsePack EditSubAccountNickName(string nickName, string subAccountGuid)
        public ResponsePackNew EditSubAccountNickName(string nickName, string childAccountId)
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("SubAccountGuid", subAccountGuid);
            d.Add("NickName", nickName);
            string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
            return RequestHttps($"{severAddress}/ZigbeeUsers/EditSubAccountNickName", jsonString, true);
            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(new UpdateChildNickNameObj()
            {
                homeId = DB_ResidenceData.residenceData.residecenInfo.RegionID,
                childAccountId = childAccountId,
                nickName = nickName,
            });
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Child_Update, requestJson);
        }
        /// <summary>
        /// 修改子账号创建场景权限
@@ -659,70 +699,105 @@
        /// <param name="nickName"></param>
        /// <param name="subAccountGuid"></param>
        /// <returns></returns>
        public ResponsePack ChangeCreateSceneState(string homeGuid, string subAccountGuid)
        public ResponsePackNew ChangeCreateSceneState(bool isAllow, string childAccountId)
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("SubAccountGuid", subAccountGuid);
            d.Add("HomeGuid", homeGuid);
            string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
            return RequestHttps($"{severAddress}/ZigbeeUsers/ChangeCreateSceneState", jsonString, true);
            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(new UpdateChildAllowCreateSceneObj()
            {
                homeId = DB_ResidenceData.residenceData.residecenInfo.RegionID,
                childAccountId = childAccountId,
                isAllowCreateScene = isAllow,
            });
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Child_Update, requestJson);
        }
        /// <summary>
        /// 获取住宅下子账号的共享数据列表
        /// </summary>
        /// <returns></returns>
        public ResponsePack GetShareDataByMemberAccount(string memberId)
        public ResponsePackNew GetShareDataByMemberAccount(string childAccountId)
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("DistributedMark", memberId);
            d.Add("HouseDistributedMark", DB_ResidenceData.residenceData.residecenInfo.RegionID);
            string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
            return RequestHttps($"{severAddress}/ZigbeeDataShare/GetShareDataBySubAccount", jsonString, true);
            //Dictionary<string, object> d = new Dictionary<string, object>();
            //d.Add("DistributedMark", memberId);
            //d.Add("HouseDistributedMark", DB_ResidenceData.residenceData.residecenInfo.RegionID);
            //string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
            //return RequestHttps($"{severAddress}/ZigbeeDataShare/GetShareDataBySubAccount", jsonString, true);
            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(new HomeShareFindAll()
            {
                homeId = DB_ResidenceData.residenceData.residecenInfo.RegionID,
                childAccountId = childAccountId
            });
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Home_Share_FindAll, requestJson);
        }
        /// <summary>
        /// 获取住宅下子账号的共享数据
        /// 下载单个分享文件
        /// </summary>
        /// <returns></returns>
        public ResponsePack GetShareData(string memberId, string hId)
        public byte[] GetShareData(ShareData shareData)
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("DistributedMark", memberId);
            d.Add("HouseDistributedMark", hId);
            string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
            return RequestHttps($"{severAddress}/ZigbeeDataShare/GetOneShareData", jsonString, true);
            //Dictionary<string, object> d = new Dictionary<string, object>();
            //d.Add("DistributedMark", memberId);
            //d.Add("HouseDistributedMark", hId);
            //string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
            //return RequestHttps($"{severAddress}/ZigbeeDataShare/GetOneShareData", jsonString, true);
            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(new ShareFileDownObj()
            {
                homeId = shareData.homeId,
                homeShareId = shareData.id
            });
            var replaceToken = "";
            if (DB_ResidenceData.residenceData.residecenInfo.IsOthreShare)
            {
                replaceToken = DB_ResidenceData.residenceData.MasterToken;
            }
            return HttpUtil.RequestHttpsDownload(NewAPI.API_POST_Home_Share_DownOne, requestJson, null, DB_ResidenceData.residenceData.residecenInfo.regionUrl, replaceToken);
        }
        /// <summary>
        /// 增加共享数据列表
        /// </summary>
        /// <returns></returns>
        public ResponsePack AddShareData(ShareData shareData)
        public ResponsePackNew AddShareData(ShareData shareData)
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("ShareName", shareData.ShareName);
            d.Add("HouseDistributedMark", shareData.HouseDistributedMark);
            d.Add("ShareDataBytes", shareData.ShareDataBytes);
            d.Add("SubAccountDistributedMark", shareData.SubAccountDistributedMark);
            string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
            return RequestHttps($"{severAddress}/ZigbeeDataShare/AddShareData", jsonString, true);
            //Dictionary<string, object> d = new Dictionary<string, object>();
            //d.Add("ShareName", shareData.ShareName);
            //d.Add("HouseDistributedMark", shareData.HouseDistributedMark);
            //d.Add("ShareDataBytes", shareData.ShareDataBytes);
            //d.Add("SubAccountDistributedMark", shareData.SubAccountDistributedMark);
            //string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
            //return RequestHttps($"{severAddress}/ZigbeeDataShare/AddShareData", jsonString, true);
            var queryDic = new Dictionary<string, object>();
            queryDic.Add("homeId", DB_ResidenceData.residenceData.residecenInfo.RegionID);
            queryDic.Add("childAccountId", shareData.childAccountId);
            queryDic.Add("fileName", shareData.fileName);
            var replaceToken = "";
            if (DB_ResidenceData.residenceData.residecenInfo.IsOthreShare)
            {
                replaceToken = DB_ResidenceData.residenceData.MasterToken;
            }
            return HttpUtil.RequestHttpsUpload(RestSharp.Method.POST, NewAPI.API_POST_Home_Share_Add, shareData.ShareDataBytes, queryDic, null, DB_ResidenceData.residenceData.residecenInfo.regionUrl, replaceToken);
        }
        /// <summary>
        /// 增加共享数据
        /// </summary>
        /// <returns></returns>
        public ResponsePack EditShareData(ShareData shareData)
        public ResponsePackNew EditShareData(ShareData shareData)
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("DistributedMark", shareData.DistributedMark);
            d.Add("ShareName", shareData.ShareName);
            d.Add("HouseDistributedMark", shareData.HouseDistributedMark);
            d.Add("ShareDataBytes", shareData.ShareDataBytes);
            d.Add("SubAccountDistributedMark", shareData.SubAccountDistributedMark);
            string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
            return RequestHttps($"{severAddress}/ZigbeeDataShare/EditShareData", jsonString, true);
            return AddShareData(shareData);
            //Dictionary<string, object> d = new Dictionary<string, object>();
            //d.Add("DistributedMark", shareData.DistributedMark);
            //d.Add("ShareName", shareData.ShareName);
            //d.Add("HouseDistributedMark", shareData.HouseDistributedMark);
            //d.Add("ShareDataBytes", shareData.ShareDataBytes);
            //d.Add("SubAccountDistributedMark", shareData.SubAccountDistributedMark);
            //string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
            //return RequestHttps($"{severAddress}/ZigbeeDataShare/EditShareData", jsonString, true);
        }
        /// <summary>
@@ -730,26 +805,32 @@
        /// </summary>
        /// <param name="shareData"></param>
        /// <returns></returns>
        public ResponsePack DeleteShareData(ShareData shareData)
        public ResponsePackNew DeleteShareData(ShareData shareData)
        {
            Dictionary<string, string> d = new Dictionary<string, string>();
            d.Add("DistributedMark", shareData.DistributedMark);
            d.Add("HouseDistributedMark", shareData.HouseDistributedMark);
            string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
            return RequestHttps($"{severAddress}/ZigbeeDataShare/DeleteShareData", jsonString, true);
            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(new ShareFileDownObj()
            {
                homeId = shareData.homeId,
                homeShareId = shareData.id
            });
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Home_Share_Delete, requestJson);
            //Dictionary<string, string> d = new Dictionary<string, string>();
            //d.Add("DistributedMark", shareData.DistributedMark);
            //d.Add("HouseDistributedMark", shareData.HouseDistributedMark);
            //string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
            //return RequestHttps($"{severAddress}/ZigbeeDataShare/DeleteShareData", jsonString, true);
        }
        /// <summary>
        /// 删除子账号当前住宅的所有共享数据
        /// </summary>
        /// <returns></returns>
        public ResponsePack DeleteCurrentResidenceSharedData(ShareData shareData)
        {
            Dictionary<string, string> d = new Dictionary<string, string>();
            d.Add("SubAccountDistributedMark", shareData.SubAccountDistributedMark);
            d.Add("HouseDistributedMark", shareData.HouseDistributedMark);
            string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
            return RequestHttps($"{severAddress}/ZigbeeDataShare/DeleteShareData", jsonString, true);
        }
        ///// <summary>
        ///// 删除子账号当前住宅的所有共享数据
        ///// </summary>
        ///// <returns></returns>
        //public ResponsePack DeleteCurrentResidenceSharedData(ShareData shareData)
        //{
        //    Dictionary<string, string> d = new Dictionary<string, string>();
        //    d.Add("SubAccountDistributedMark", shareData.SubAccountDistributedMark);
        //    d.Add("HouseDistributedMark", shareData.HouseDistributedMark);
        //    string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
        //    return RequestHttps($"{severAddress}/ZigbeeDataShare/DeleteShareData", jsonString, true);
        //}
        /// <summary>
        /// 绑定子账号到住宅下
@@ -757,20 +838,17 @@
        /// <param name="subAccount"></param>
        /// <param name="nickName"></param>
        /// <returns></returns>
        public ResponsePack BindResidenceMemberAccount(string subAccount, string nickName)
        public ResponsePackNew BindResidenceMemberAccount(string subAccount, string nickName)
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("SubAccount", subAccount);
            d.Add("HouseDistributedMark", DB_ResidenceData.residenceData.residecenInfo.RegionID);
            d.Add("Nickname", nickName);
            d.Add("IsAllowRemoteCtrl", true);
            //添加子账号
            var requestObj = new ChildAddObj() { homeId = DB_ResidenceData.residenceData.residecenInfo.RegionID, account = subAccount, nickName = nickName };
            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(requestObj);
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Child_Add, requestJson);
            string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
            return RequestHttps($"{severAddress}/ZigbeeUsers/BindSubAccount", jsonString, true);
        }
        /// <summary>
        /// 获取住宅下的成员账号
        /// 获取住宅下的成员账号信息
        /// </summary>
        /// <returns></returns>
        public ResponsePack GetResidenceMemberAccountInfo(string account)
@@ -779,6 +857,316 @@
            d.Add("Account", account);
            string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
            return RequestHttps($"{severAddress}/ZigbeeUsers/GetSubAccountInfo", jsonString, true);
        }
        /// <summary>
        ///  下载子账号用户头像
        /// </summary>
        /// <param name="subaccoun"></param>
        /// <returns></returns>
        public byte[] DownChildHeadImage(ResidenceMemberInfo subaccount)
        {
            var requestObj = new ChildBaseObj()
            {
                childAccountId = subaccount.childAccountId,
                homeId = subaccount.homeId
            };
            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(requestObj);
            var replaceToken = "";
            if (DB_ResidenceData.residenceData.residecenInfo.IsOthreShare)
            {
                replaceToken = DB_ResidenceData.residenceData.MasterToken;
            }
            return HttpUtil.RequestHttpsDownload(NewAPI.API_POST_Child_DownloadHeadImage, requestJson,null);
        }
        #endregion
        /// <summary>
        /// 获取MQTT远程连接信息接口
        /// </summary>
        public MqttInfo GetMqttRemoteInfo(string attachClientId)
        {
            try
            {
                var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(new GetMqttRemoteInfoObj()
                {
                    attachClientId = attachClientId,
                    homeType = HomeTypeEnum.BUSPRO.ToString()
                });
                var revertObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_GetMqttRemoteInfo, requestJson, DB_ResidenceData.residenceData.residecenInfo.regionUrl);
                if (revertObj.Code == StateCode.SUCCESS)
                {
                    return Newtonsoft.Json.JsonConvert.DeserializeObject<MqttInfo>(revertObj.Data.ToString());
                }
                else
                {
                    Utlis.WriteLine("GetMqttRemoteInfo error");
                    return null;
                }
            }
            catch
            {
                return null;
            }
        }
        #region 推送
        /// <summary>
        /// 提交推送需要的关键标识信息
        /// </summary>
        public bool PushSerivceAddPushInfo()
        {
            try
            {
                string deviceType = PhoneDeviceType.Android.ToString();
#if __IOS__
                deviceType = PhoneDeviceType.IOS.ToString();
#endif
                //是否生成模式
                bool isProduce = true;
#if DEBUG
                isProduce = false;
#endif
                if (string.IsNullOrEmpty(OnAppConfig.Instance.PushDeviceToken)) return false;
                var mAddpushinfoObj = new AddpushinfoObj()
                {
                    pushToken = OnAppConfig.Instance.PushDeviceToken,
                    deviceName = OnAppConfig.Instance.PhoneName,
                    deviceType = deviceType,
                    produce = isProduce,
                };
                var mAddpushinfoJson = Newtonsoft.Json.JsonConvert.SerializeObject(mAddpushinfoObj);
                var revertObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_PushSerivce_AddToken, mAddpushinfoJson);
                if (revertObj.Code == StateCode.SUCCESS)
                {
                    if (revertObj.Data != null)
                    {
                        var pushId = revertObj.Data.ToString();
                        if (!string.IsNullOrEmpty(pushId))
                        {
                            OnAppConfig.Instance.PushId = pushId;
                            OnAppConfig.Instance.SaveUserConfig();
                            return true;
                        }
                    }
                    Utlis.WriteLine("AddToken 成功");
                }
                else
                {
                    Utlis.WriteLine("AddToken 失败");
                }
                return false;
            }
            catch
            {
                return false;
            }
        }
        /// <summary>
        /// 查询推送信息列表
        /// </summary>
        /// <returns></returns>
        public ResponsePackNew PushSerivceGetpushmessagelist()
        {
            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(new GetMessageListObj()
            {
                pushId = OnAppConfig.Instance.PushId
            });
            return HttpUtil.RequestHttpsPost(NewAPI.API_POST_PushSerivce_Getpushmessagelist, requestJson);
        }
        /// <summary>
        /// 清空消息记录
        /// </summary>
        /// <returns></returns>
        public bool PushSerivceClearmessagelist()
        {
            if (string.IsNullOrEmpty(OnAppConfig.Instance.PushId)) return false;
            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(new PushIdObj()
            {
                pushId = OnAppConfig.Instance.PushId
            });
            var revertObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_PushSerivce_Clearmessagelist, requestJson);
            if (revertObj.Code == StateCode.SUCCESS)
            {
                return true;
            }
            else
            {
            }
            return false;
        }
        /// <summary>
        /// 退出登录,清空推送标识
        /// </summary>
        /// <returns></returns>
        public bool PushSerivceSignOut()
        {
            if (string.IsNullOrEmpty(OnAppConfig.Instance.PushId)) return false;
            try
            {
                var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(new PushIdObj() {
                    pushId = OnAppConfig.Instance.PushId
                });
                var revertObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_PushSerivce_DeleteToken, requestJson);
                if (revertObj.Code == StateCode.SUCCESS)
                {
                    return true;
                }
                else
                {
                }
                return false;
            }
            catch
            {
                return false;
            }
        }
        /// <summary>
        /// 标记消息全部已读
        /// </summary>
        /// <param name="msgId"></param>
        /// <returns></returns>
        public bool PushSerivceMarkAllMessageRead()
        {
            if (string.IsNullOrEmpty(OnAppConfig.Instance.PushId)) return false;
            try
            {
                var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(new PushIdObj()
                {
                    pushId = OnAppConfig.Instance.PushId
                });
                var revertObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_PushSerivce_ALLMarkread, requestJson);
                if (revertObj.Code == StateCode.SUCCESS)
                {
                    return true;
                }
                else
                {
                }
                return false;
            }
            catch
            {
                return false;
            }
        }
        /// <summary>
        /// 标记指定消息已读
        /// </summary>
        /// <param name="msgId"></param>
        /// <returns></returns>
        public bool PushSerivceMarkMessageRead(string msgId)
        {
            if (string.IsNullOrEmpty(OnAppConfig.Instance.PushId)) return false;
            try
            {
                var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(new PushMsgIdObj()
                {
                    msgId = msgId
                });
                var revertObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_PushSerivce_Markread, requestJson);
                if (revertObj.Code == StateCode.SUCCESS)
                {
                    return true;
                }
                else
                {
                }
                return false;
            }
            catch
            {
                return false;
            }
        }
        /// <summary>
        /// 通过主键id删除一条推送记录
        /// </summary>
        /// <param name="msgId"></param>
        /// <returns></returns>
        public bool PushSerivceDeleteMessage(string msgId)
        {
            if (string.IsNullOrEmpty(OnAppConfig.Instance.PushId)) return false;
            try
            {
                var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(new PushMsgIdObj()
                {
                    msgId = msgId
                });
                var revertObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_PushSerivce_Deletepushinfo, requestJson);
                if (revertObj.Code == StateCode.SUCCESS)
                {
                    return true;
                }
                else
                {
                }
                return false;
            }
            catch
            {
                return false;
            }
        }
        #endregion
        #region 检测更新
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public ResponsePackNew CheckAppVersion()
        {
            var requestObj = new ForceUpdateObj()
            {
                LanguageType = Utlis.GetPostLanguageType()
            };
#if __IOS__
            requestObj.DeviceType = PhoneDeviceType.IOS.ToString();
#endif
            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(requestObj);
            return HttpUtil.RequestHttpsPost(NewAPI.API_POST_CheckAppVersion, requestJson);
        }
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public ResponsePackNew GetAppVersion()
        {
            var requestObj = new ForceUpdateObj()
            {
            };
#if __IOS__
            requestObj.DeviceType = PhoneDeviceType.IOS.ToString();
#endif
            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(requestObj);
            return HttpUtil.RequestHttpsPost(NewAPI.API_POST_GetAppVersion, requestJson);
        }
        #endregion
@@ -898,32 +1286,33 @@
        #endregion
        #region 备份部分
        /// <summary>
        /// 获取住宅备份列表
        /// </summary>
        public Dictionary<int, string> GetRegionLastBackupId()
        {
            //Dialog dialog = new Dialog();
            //dialog.Show();
        ///// <summary>
        ///// 获取住宅备份列表
        ///// </summary>
        //public Dictionary<int, string> GetRegionLastBackupId()
        //{
        //    //Dialog dialog = new Dialog();
        //    //dialog.Show();
            Dictionary<int, string> backupList = new Dictionary<int, string>();
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("LevelID", DB_ResidenceData.residenceData.residecenInfo.RegionID);// 199200);
            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(d);
            var revertObj = RequestHttps("https://developer.hdlcontrol.com/api/GetUserFolder", requestJson, true);
            if (revertObj == null || revertObj.ResponseData == null)
            {
                return new Dictionary<int, string>();
            }
            var jt = Newtonsoft.Json.JsonConvert.DeserializeObject<List<JObject>>(revertObj.ResponseData.ToString());
            foreach (var j in jt)
            {
                var folderId = (int)j.GetValue("FolderID");
                var folderName = j.GetValue("FolderName").ToString();
                backupList.Add(folderId, folderName);
            }
            return backupList;
        }
        //    Dictionary<int, string> backupList = new Dictionary<int, string>();
        //    Dictionary<string, object> d = new Dictionary<string, object>();
        //    d.Add("LevelID", DB_ResidenceData.residenceData.residecenInfo.RegionID);// 199200);
        //    var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(d);
        //    var revertObj = RequestHttps("https://developer.hdlcontrol.com/api/GetUserFolder", requestJson, true);
        //    if (revertObj == null || revertObj.ResponseData == null)
        //    {
        //        return new Dictionary<int, string>();
        //    }
        //    var jt = Newtonsoft.Json.JsonConvert.DeserializeObject<List<JObject>>(revertObj.ResponseData.ToString());
        //    foreach (var j in jt)
        //    {
        //        var folderId = (int)j.GetValue("FolderID");
        //        var folderName = j.GetValue("FolderName").ToString();
        //        backupList.Add(folderId, folderName);
        //    }
        //    return backupList;
        //}
        /* 2020-09-01 弃用 恢复旧数据功能在bus软件上实现
        /// <summary>
        /// 获取备份文件列表
@@ -1368,5 +1757,7 @@
        */
        #endregion
    }
}