wxr
2020-12-18 5ea6aa8ea047d4d7b6137fa86c03109aeb1b67ff
HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberPermissionPageBLL.cs
@@ -1,6 +1,8 @@
using System;
using System.Collections.Generic;
using System.Threading;
using HDL_ON.DAL.Server;
using HDL_ON.Entity;
using Shared;
namespace HDL_ON.UI
@@ -19,12 +21,7 @@
            {
                Action action = () =>
                {
                    var responePack = new HttpServerRequest().DeleteResidenceMemberAccount(memberInfo);
                    if (responePack.Code == StateCode.SUCCESS)
                    {
                        this.RemoveFromParent();
                        backAction();
                    }
                    RemoveTheMember();
                };
                new PublicAssmebly().TipOptionMsg(StringId.Tip, StringId.ConfirmToRemoveTheMember, action);
            };
@@ -45,16 +42,16 @@
                    var responePack = new HttpServerRequest().GetShareDataByMemberAccount(memberInfo.childAccountId);
                    if (responePack.Code == StateCode.SUCCESS)
                    {
                        if(responePack.Data != null)
                        if (responePack.Data != null)
                        {
                            var responeObj = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ShareData>>(responePack.Data.ToString());
                            memberInfo.CurResidenceShareDate = responeObj;
                            memberInfo.CurResidenceShareData = responeObj;
                        }
                        else
                        {
                            memberInfo.CurResidenceShareDate = new List<ShareData>();
                            memberInfo.CurResidenceShareData = new List<ShareData>();
                        }
                        Application.RunOnMainThread(() =>
                        {
                            ShowRoomListView();
@@ -62,7 +59,7 @@
                    }
                    else
                    {
                        memberInfo.CurResidenceShareDate = new List<ShareData>();
                        memberInfo.CurResidenceShareData = new List<ShareData>();
                        IMessageCommon.Current.ShowErrorInfoAlter(responePack.Code);
                    }
                }
@@ -85,5 +82,203 @@
            { IsBackground = true }.Start();
        }
        /// <summary>
        /// 删除子账号
        /// </summary>
        void RemoveTheMember()
        {
            var waitPage = new Loading();
            bodyView.AddChidren(waitPage);
            waitPage.Start(Language.StringByID(StringId.PleaseWait));
            new System.Threading.Thread(() =>
            {
                try
                {
                    var responePack = new HttpServerRequest().DeleteResidenceMemberAccount(memberInfo);
                    if (responePack.Code == StateCode.SUCCESS)
                    {
                        Application.RunOnMainThread(() =>
                        {
                            this.RemoveFromParent();
                            backAction();
                        });
                    }
                    else
                    {
                        IMessageCommon.Current.ShowErrorInfoAlter(responePack.Code);
                    }
                }
                catch (Exception ex)
                {
                }
                finally
                {
                    Application.RunOnMainThread(() =>
                    {
                        if (waitPage != null)
                        {
                            waitPage.RemoveFromParent();
                            waitPage = null;
                        }
                    });
                }
            })
            { IsBackground = true }.Start();
        }
        /// <summary>
        /// 一键删除当前房间所有分享
        /// </summary>
        /// <param name="funs_Del">需要一键删除的分享数据</param>
        /// <param name="roomFunctionList">当前房间所有功能列表</param>
        /// <param name="roomId">如果房间ID为空,则代表管理无分配区域的功能,不需要删除房间分享</param>
        /// <param name="btnFunctionCount">个数统计数量</param>
        /// <param name="roomView">背景View</param>
        void DeleteRoomAllShare(List<ShareData> funs_Del, List<Function> roomFunctionList, string roomId, Button btnFunctionCount, RowLayout roomView)
        {
            //需要删除的分享为0
            if (funs_Del == null || funs_Del.Count == 0)
            {
                //关闭右滑菜单
                roomView.HideMenu();
                Utlis.ShowTip(Language.StringByID(StringId.NoShare));
                return;
            }
            var waitPage = new Loading();
            bodyView.AddChidren(waitPage);
            waitPage.Start(Language.StringByID(StringId.PleaseWait));
            new Thread(() =>
            {
                try
                {
                    bool result = false;
                    //如果房间ID为空,则代表管理无分配区域的功能,不需要删除房间分享
                    if (!string.IsNullOrEmpty(roomId))
                    {
                        //删除房间分享
                        var success = DeleteShareRoom(roomId);
                        if (success)
                        {
                            Utlis.WriteLine("删除房间分享成功");
                        }
                        else
                        {
                            Utlis.WriteLine("删除房间分享失败");
                        }
                    }
                    //2.批量删除分享
                    var deleteShareObj = new DeleteShareObj()
                    {
                        shareDatas = funs_Del,
                        homeId = DB_ResidenceData.Instance.CurrentRegion.RegionID,
                    };
                    result = LoadMethod_DelSharedData(deleteShareObj);
                    if (!result)
                    {
                        Application.RunOnMainThread(() =>
                        {
                            new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.delFail), true);
                        });
                    }
                    else
                    {
                        //删除分享成功
                        //4.1管理最终的分享列表
                        var funs_final = new List<ShareData>();
                        funs_final.AddRange(memberInfo.CurResidenceShareData);
                        //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);
                            }
                        }
                        Application.RunOnMainThread(() =>
                        {
                            new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.SavedSuccessfully), true);
                            //清空
                            funs_Del.Clear();
                            memberInfo.CurResidenceShareData = funs_final;
                            btnFunctionCount.Text = 0 + "/" + roomFunctionList.Count.ToString();
                            //关闭右滑菜单
                            roomView.HideMenu();
                        });
                    }
                }
                catch { }
                finally
                {
                    Application.RunOnMainThread(() =>
                    {
                        if (waitPage != null)
                        {
                            waitPage.RemoveFromParent();
                            waitPage = null;
                        }
                    });
                }
            })
            { IsBackground = true }.Start();
        }
        /// <summary>
        /// 删除房间分享
        /// </summary>
        /// <returns></returns>
        bool DeleteShareRoom(string roomId)
        {
            var roomList = new List<ShareData>();
            roomList.Add(new ShareData()
            {
                shareType = ShareType.ROOM.ToString(),
                shareTypeId = roomId
            });
            var deleteShareObj = new DeleteShareObj()
            {
                shareDatas = roomList,
                homeId = DB_ResidenceData.Instance.CurrentRegion.RegionID,
            };
            var responePack = new HttpServerRequest().DeleteShareData(deleteShareObj);
            if (responePack.Code != StateCode.SUCCESS)
            {
                return false;
            }
            else
            {
                return true;
            }
        }
        /// <summary>
        /// 删除共享数据点击事件
        /// </summary>
        /// <param name="function"></param>
        bool LoadMethod_DelSharedData(DeleteShareObj sd)
        {
            var responePack = new HttpServerRequest().DeleteShareData(sd);
            if (responePack.Code != StateCode.SUCCESS)
            {
                return false;
            }
            else
            {
                return true;
            }
        }
    }
}