JLChen
2020-12-16 d724f7f21c5cc8c5dd5aa0cf7345a62a662eb2bf
HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFunctionPermissionPageBLL.cs
@@ -24,127 +24,7 @@
            {
                if (titleId == StringId.PermissionToUse)//从个人中心进入单独分享
                {
                    new Thread(() =>
                    {
                        try
                        {
                            bool result = false;
                            Action act = () => { };
                            Application.RunOnMainThread(() =>
                            {
                                act = new PublicAssmebly().TipLoadingMsgDialog(Language.StringByID(StringId.SavingPleaseWait));
                            });
                            //1.管理房间分享
                            if (funs_New != null && funs_New.Count > 0)
                            {
                                //分享设备大于0
                                var success = ShareRoom();
                                if (success)
                                {
                                    Utlis.WriteLine("添加房间分享成功");
                                }
                                else
                                {
                                    Utlis.WriteLine("添加房间分享失败");
                                }
                            }
                            else
                            {
                                var success = DeleteShareRoom();
                                if (success)
                                {
                                    Utlis.WriteLine("删除房间分享成功");
                                }
                                else
                                {
                                    Utlis.WriteLine("删除房间分享失败");
                                }
                            }
                            //2.批量删除分享
                            var deleteShareObj = new DeleteShareObj()
                            {
                                shareDatas = funs_Del,
                                homeId = DB_ResidenceData.residenceData.residecenInfo.RegionID,
                            };
                            LoadMethod_DelSharedData(deleteShareObj);
                            //3.批量上传
                            var funs_NeedAdd = new List<ShareData>();
                            foreach (var f in funs_New)
                            {
                                var sd = funs.Find((obj) => obj.shareTypeId == f.shareTypeId);
                                //如果该功能已经分享,不用分享
                                if (null == sd)
                                {
                                    funs_NeedAdd.Add(f);
                                }
                            }
                            List<string> childAccountIds = new List<string>();
                            childAccountIds.Add(memberInfo.childAccountId);
                            var addShareObj = new AddShareObj()
                            {
                                shareDatas = funs_NeedAdd,
                                childAccountIds = childAccountIds,
                                homeId = DB_ResidenceData.residenceData.residecenInfo.RegionID,
                            };
                            result = LoadMethod_AddShareData(addShareObj);
                            if (!result)
                            {
                                Application.RunOnMainThread(() =>
                                {
                                    new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.FunctionSharingFailed), true);
                                });
                            }
                            Application.RunOnMainThread(() =>
                            {
                                act();
                            });
                            if (result)
                            {
                                //4.1管理最终的分享列表
                                var funs_final = new List<ShareData>();
                                funs_final.AddRange(funs);
                                //4.2移除删除的
                                foreach (var share_d in funs_Del)
                                {
                                    var sd = funs_final.Find((obj) => obj.shareTypeId == share_d.shareTypeId);
                                    //如果该功能已经分享,不用分享
                                    if (null != sd)
                                    {
                                        funs_final.Remove(share_d);
                                    }
                                }
                                //4.3添加新增的
                                funs_final.AddRange(funs_NeedAdd);
                                Application.RunOnMainThread(() =>
                                {
                                    new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.FunctionSharingSucceeded), true);
                                    memberInfo.CurResidenceShareDate = funs_final;
                                });
                                Thread.Sleep(1600);
                                Application.RunOnMainThread(() =>
                                {
                                //MainPage.BasePageView.RemoveAt(MainPage.BasePageView.ChildrenCount - 1);
                                MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
                                    refreshFunctionCount?.Invoke(funs_New.Count.ToString());
                                });
                            }
                        }
                        catch { }
                        finally
                        {
                        }
                    })
                    { IsBackground = true }.Start();
                    UploadShareDeviceList();
                }
                else
                {
@@ -156,6 +36,133 @@
                    //MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                }
            };
        }
        /// <summary>
        /// 管理设备分享
        /// 2020-12-08 1.增加分享设备的时候,判断当前房间分享设备总数,从而决定是否需要增加或者移除房间分享
        /// </summary>
        void UploadShareDeviceList()
        {
            new Thread(() =>
            {
                try
                {
                    bool result = false;
                    Action act = () => { };
                    Application.RunOnMainThread(() =>
                    {
                        act = new PublicAssmebly().TipLoadingMsgDialog(Language.StringByID(StringId.SavingPleaseWait));
                    });
                    //1.管理最终属于房间的分享
                    if (funs_New != null && funs_New.Count > 0)
                    {
                        //最终属于房间的分享大于0
                        var success = ShareRoom();
                        if (success)
                        {
                            Utlis.WriteLine("添加房间分享成功");
                        }
                        else
                        {
                            Utlis.WriteLine("添加房间分享失败");
                        }
                    }
                    else
                    {
                        var success = DeleteShareRoom();
                        if (success)
                        {
                            Utlis.WriteLine("删除房间分享成功");
                        }
                        else
                        {
                            Utlis.WriteLine("删除房间分享失败");
                        }
                    }
                    //2.批量删除分享
                    var deleteShareObj = new DeleteShareObj()
                    {
                        shareDatas = funs_Del,
                        homeId = DB_ResidenceData.Instance.CurrentRegion.RegionID,
                    };
                    LoadMethod_DelSharedData(deleteShareObj);
                    //3.批量上传
                    var funs_NeedAdd = new List<ShareData>();
                    foreach (var f in funs_New)
                    {
                        var sd = funs.Find((obj) => obj.shareTypeId == f.shareTypeId);
                        //如果该功能已经分享,不用分享
                        if (null == sd)
                        {
                            funs_NeedAdd.Add(f);
                        }
                    }
                    //3.1 提交请求
                    List<string> childAccountIds = new List<string>();
                    childAccountIds.Add(memberInfo.childAccountId);
                    var addShareObj = new AddShareObj()
                    {
                        shareDatas = funs_NeedAdd,
                        childAccountIds = childAccountIds,
                        homeId = DB_ResidenceData.Instance.CurrentRegion.RegionID,
                    };
                    result = LoadMethod_AddShareData(addShareObj);
                    if (!result)
                    {
                        Application.RunOnMainThread(() =>
                        {
                            new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.FunctionSharingFailed), true);
                        });
                    }
                    Application.RunOnMainThread(() =>
                    {
                        act();
                    });
                    if (result)
                    {
                        //4.1管理最终的分享列表
                        var funs_final = new List<ShareData>();
                        funs_final.AddRange(funs);
                        //4.2移除删除的
                        foreach (var share_d in funs_Del)
                        {
                            var sd = funs_final.Find((obj) => obj.shareTypeId == share_d.shareTypeId);
                            //如果该功能已经分享,不用分享
                            if (null != sd)
                            {
                                funs_final.Remove(share_d);
                            }
                        }
                        //4.3添加新增的
                        funs_final.AddRange(funs_NeedAdd);
                        Application.RunOnMainThread(() =>
                        {
                            new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.FunctionSharingSucceeded), true);
                            memberInfo.CurResidenceShareDate = funs_final;
                        });
                        Thread.Sleep(1600);
                        Application.RunOnMainThread(() =>
                        {
                            //MainPage.BasePageView.RemoveAt(MainPage.BasePageView.ChildrenCount - 1);
                            MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
                            refreshFunctionCount?.Invoke(funs_New.Count.ToString());
                        });
                    }
                }
                catch { }
                finally
                {
                }
            })
            { IsBackground = true }.Start();
        }
        /// <summary>
@@ -202,7 +209,8 @@
        bool ShareRoom()
        {
            var roomList = new List<ShareData>();
            roomList.Add(new ShareData() {
            roomList.Add(new ShareData()
            {
                shareType = ShareType.ROOM.ToString(),
                shareTypeId = room.roomId
            });
@@ -211,7 +219,7 @@
            var addShareObj = new AddShareObj()
            {
                childAccountIds = childAccountIds,
                homeId = DB_ResidenceData.residenceData.residecenInfo.RegionID,
                homeId = DB_ResidenceData.Instance.CurrentRegion.RegionID,
                shareDatas = roomList
            };
            var responePack = new HttpServerRequest().AddShareData(addShareObj);
@@ -241,7 +249,7 @@
            var deleteShareObj = new DeleteShareObj()
            {
                shareDatas = roomList,
                homeId = DB_ResidenceData.residenceData.residecenInfo.RegionID,
                homeId = DB_ResidenceData.Instance.CurrentRegion.RegionID,
            };
            var responePack = new HttpServerRequest().DeleteShareData(deleteShareObj);
            if (responePack.Code != StateCode.SUCCESS)
@@ -254,22 +262,13 @@
            }
        }
        ///// <summary>
        ///// 更新共享数据
        ///// </summary>
        //bool EditShareData(ShareData sd)
        //{
        //    var responePack = new HttpServerRequest().EditShareData(sd);
        //    if (responePack.Code == StateCode.SUCCESS)
        //    {
        //        return true;
        //    }
        //    else
        //    {
        //        return false;
        //    }
        //}
        /// <summary>
        /// LoadMethod_SharedDataChange
        /// </summary>
        /// <param name="btnChoose"></param>
        /// <param name="btn2"></param>
        /// <param name="btn3"></param>
        /// <param name="function"></param>
        void LoadMethod_SharedDataChange(Button btnChoose, Button btn2, FrameLayout btn3, Function function)
        {
            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
@@ -295,7 +294,7 @@
                        {
                            var newSd = new ShareData();
                            newSd.shareTypeId = function.deviceId;
                            funs_New.Add(newSd);
                        }
                        btnChooseAll.IsSelected = true;
@@ -335,6 +334,7 @@
            btn2.MouseUpEventHandler = eventHandler;
            btn3.MouseUpEventHandler = eventHandler;
        }
        /// <summary>
        /// 全选按钮点击事件
        /// </summary>
@@ -347,7 +347,7 @@
                funs_New = new List<ShareData>();
                if (btnChooseAll.IsSelected)
                {
                    foreach(var f in room.GetRoomFunctions(false))
                    foreach (var f in room.GetRoomFunctions(false))
                    {
                        var ssdd = new ShareData();
                        ssdd.shareTypeId = f.deviceId;
@@ -356,7 +356,7 @@
                }
                else
                {
                    foreach(var f in room.GetRoomFunctions(false))
                    foreach (var f in room.GetRoomFunctions(false))
                    {
                        var sd = funs.Find((obj) => obj.shareTypeId == f.deviceId);
                        if (sd != null)