gxc
2020-01-02 00ab3ddb140ba8bb88b5cf572b004a85e1da85e9
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlShardLogic.cs
@@ -572,41 +572,45 @@
            //先初始化房间
            foreach (string fileName in listFile)
            {
                if (fileName.StartsWith("Room_") == true)
                try
                {
                    //房间文件
                    var byteData = this.GetShardFileContent(fileName);
                    if (byteData != null)
                    if (fileName.StartsWith("Room_") == true)
                    {
                        string valueData = System.Text.Encoding.UTF8.GetString(byteData);
                        var roomTemp = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.Room>(valueData);
                        memberShardInfo.dicShardRoom[fileName] = roomTemp;
                        //房间文件
                        var byteData = this.GetShardFileContent(fileName);
                        if (byteData != null)
                        {
                            string valueData = System.Text.Encoding.UTF8.GetString(byteData);
                            var roomTemp = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.Room>(valueData);
                            memberShardInfo.dicShardRoom[fileName] = roomTemp;
                        }
                    }
                }
                else if (fileName == DirNameResourse.ShardFloorFile)
                {
                    //楼层文件
                    var byteData = this.GetShardFileContent(fileName);
                    if (byteData != null)
                    else if (fileName == DirNameResourse.ShardFloorFile)
                    {
                        string valueData = System.Text.Encoding.UTF8.GetString(byteData);
                        memberShardInfo.dicShardFloor = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, string>>(valueData);
                        //楼层文件
                        var byteData = this.GetShardFileContent(fileName);
                        if (byteData != null)
                        {
                            string valueData = System.Text.Encoding.UTF8.GetString(byteData);
                            memberShardInfo.dicShardFloor = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, string>>(valueData);
                        }
                    }
                }
                else if (fileName.StartsWith("Device_") == true)
                {
                    string[] Arry = fileName.Split(new string[] { "_" }, StringSplitOptions.RemoveEmptyEntries);
                    string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(Arry[2], Convert.ToInt32(Arry[3]));
                    this.dicShardDeviceFile[mainKeys] = fileName;
                    else if (fileName.StartsWith("Device_") == true)
                    {
                        string[] Arry = fileName.Split(new string[] { "_" }, StringSplitOptions.RemoveEmptyEntries);
                        string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(Arry[2], Convert.ToInt32(Arry[3]));
                        this.dicShardDeviceFile[mainKeys] = fileName;
                    //设备文件
                    listDeviceFile.Add(fileName);
                        //设备文件
                        listDeviceFile.Add(fileName);
                    }
                    else if (fileName.StartsWith("Scene_") == true)
                    {
                        //场景文件
                        listSceneFile.Add(fileName);
                    }
                }
                else if (fileName.StartsWith("Scene_") == true)
                {
                    //场景文件
                    listSceneFile.Add(fileName);
                }
                catch (Exception ex) { HdlLogLogic.Current.WriteLog(ex); }
            }
            //设置房间里面设备的UI对象(因为这个东西是反序列化出来的,设备UI对象是不序列化对象)
@@ -827,13 +831,12 @@
                //克隆一个对象
                roomTemp = nowRoom.CloneRoomClass();
                memberShardInfo.TempRoom = roomTemp;
                //新分享的房间,如果图片是自定义的,则上传图片
                if (roomTemp.BackgroundImageType != 0)
                //新分享的房间,如果图片是自定义的,并且这个图片是存在的,则上传图片
                if (roomTemp.BackgroundImageType != 0 && Common.Global.IsExistsByHomeId(roomTemp.BackgroundImage) == true)
                {
                    //自定义的图片,它存在于本地,但是它是全路径
                    string[] Arry = roomTemp.BackgroundImage.Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
                    listFile.Add(Arry[Arry.Length - 1]);
                    this.AddShardFile(Arry[Arry.Length - 1]);
                    listFile.Add(roomTemp.BackgroundImage);
                    this.AddShardFile(roomTemp.BackgroundImage);
                }
            }
            else
@@ -845,15 +848,13 @@
                    if (roomTemp.BackgroundImageType != 0)
                    {
                        //删除自定义图片
                        string[] Arry = roomTemp.BackgroundImage.Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
                        listDelPic.Add(Arry[Arry.Length - 1]);
                        listDelPic.Add(roomTemp.BackgroundImage);
                    }
                    if (nowRoom.BackgroundImageType != 0)
                    if (nowRoom.BackgroundImageType != 0 && Common.Global.IsExistsByHomeId(nowRoom.BackgroundImage) == true)
                    {
                        //自定义的图片,它存在于本地,但是它是全路径
                        string[] Arry = nowRoom.BackgroundImage.Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
                        listFile.Add(Arry[Arry.Length - 1]);
                        this.AddShardFile(Arry[Arry.Length - 1]);
                        listFile.Add(nowRoom.BackgroundImage);
                        this.AddShardFile(nowRoom.BackgroundImage);
                    }
                    //变更图片设置
                    roomTemp.BackgroundImageType = nowRoom.BackgroundImageType;
@@ -891,12 +892,11 @@
            //场景
            foreach (var secene in listScene)
            {
                if (secene.IconPathType != 0)
                if (secene.IconPathType != 0 && Common.Global.IsExistsByHomeId(secene.IconPath) == true)
                {
                    //自定义的图片,它存在于本地,但是它是全路径
                    string[] Arry = secene.IconPath.Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
                    listFile.Add(Arry[Arry.Length - 1]);
                    this.AddShardFile(Arry[Arry.Length - 1]);
                    //自定义的图片,它存在于本地
                    listFile.Add(secene.IconPath);
                    this.AddShardFile(secene.IconPath);
                }
                listFile.Add(secene.FileName);
@@ -1025,7 +1025,7 @@
                    if (memberShardInfo.dicAllShardKeys.ContainsKey(fileName) == false)
                    {
                        var result = await UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeDataShare/AddShareData", false, info);
                        if (string.IsNullOrEmpty(result) == true)
                        if (result == null)
                        {
                            return false;
                        }
@@ -1073,24 +1073,19 @@
            nvc.Add("HouseDistributedMark", Common.Config.Instance.Home.Id);
            nvc.Add("SubAccountDistributedMark", memberShardInfo.SubAccountDistributedMark);
            nvc.Add("ShareDataBytes", Convert.ToBase64String(this.GetShardFileContent(fileName)));
            nvc.Add("IsOtherAccountCtrl", Common.Config.Instance.isAdministrator.ToString());
            //追加共享
            if (memberShardInfo.dicAllShardKeys.ContainsKey(fileName) == false)
            {
                var result = this.UpLoadBigBackupFileToDB("ZigbeeDataShare/AddShareData", fullName, nvc);
                if (string.IsNullOrEmpty(result) == true)
                {
                    return null;
                }
                //这里有点特殊,接口是直接返回主键回来的,而不是Jsoin
                var result = this.DoUpLoadBigBackupFileToDB("ZigbeeDataShare/AddShareData", fullName, nvc);
                return result;
            }
            else
            {
                nvc.Add("DistributedMark", memberShardInfo.dicAllShardKeys[fileName]);
                var result = this.UpLoadBigBackupFileToDB("ZigbeeDataShare/EditShareData", fullName, nvc);
                if (result != "1")
                var result = this.DoUpLoadBigBackupFileToDB("ZigbeeDataShare/EditShareData", fullName, nvc);
                if (result == null)
                {
                    return null;
                }
@@ -1099,26 +1094,17 @@
        }
        /// <summary>
        /// 上传大文件
        /// 执行上传大文件
        /// </summary>
        /// <param name="RequestName">请求接口</param>
        /// <param name="fullFileName">文件名字(含路径)</param>
        /// <param name="nvc"></param>
        /// <returns></returns>
        private string UpLoadBigBackupFileToDB(string RequestName, string fullFileName, NameValueCollection nvc)
        private string DoUpLoadBigBackupFileToDB(string RequestName, string fullFileName, NameValueCollection nvc)
        {
            string paramName = "file";
            string contentType = "application/octet-stream";
            string requestUrl = $"{CommonPage.RequestHttpsHost}/{RequestName}";
            //启用管理员权限
            //if (Config.Instance.isAdministrator == true)
            //{
            //    requestUrl = $"{Config.Instance.AdminRequestBaseUrl}/{RequestName}";
            //}
            //else
            //{
            //    requestUrl = $"{CommonPage.RequestHttpsHost}/{RequestName}";
            //}
            string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
            byte[] boundarybytes = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");
@@ -1128,6 +1114,8 @@
            wr.Method = "POST";
            wr.KeepAlive = true;
            wr.Credentials = System.Net.CredentialCache.DefaultCredentials;
            wr.Headers.Add(HttpRequestHeader.Authorization, Config.Instance.Token);
            var rs = wr.GetRequestStream();
@@ -1167,23 +1155,24 @@
                StreamReader reader2 = new StreamReader(stream2);
                string result = reader2.ReadToEnd();
                if (RequestName == "ZigbeeDataShare/AddShareData")
                {
                    return result;
                }
                var data = Newtonsoft.Json.JsonConvert.DeserializeObject<Shared.Common.ResponseEntity.ResponsePack>(result);
                bool flage = UserCenterLogic.CheckNotEorrorMsg(data, requestUrl);
                if (flage == true)
                {
                    return "1";
                    //编辑的时候,这个东西会是null
                    return data.ResponseData == null ? "1" : data.ResponseData.ToString();
                }
                return "0";
                //Log出力
                IMessageCommon.Current.GetMsgByRequestName(RequestName, data, nvc);
                return null;
            }
            catch
            {
                return "-1";
                return null;
            }
            finally
            {