From c1de48884fa145a16a0f8bcee93274dcfaa0ff82 Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期四, 07 五月 2020 10:40:28 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev-tzy' into dev-2020xm

---
 ZigbeeApp/Shared/Phone/UserCenter/Member/MemberManagementForm.cs |  474 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 474 insertions(+), 0 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Member/MemberManagementForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Member/MemberManagementForm.cs
new file mode 100755
index 0000000..658ee39
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Member/MemberManagementForm.cs
@@ -0,0 +1,474 @@
+锘縰sing System;
+using System.Collections.Generic;
+
+namespace Shared.Phone.UserCenter.Member
+{
+    /// <summary>
+    /// 鎴愬憳淇℃伅绠$悊
+    /// </summary>
+    public class MemberManagementForm : EditorCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 鎴愬憳鐨勪俊鎭�
+        /// </summary>
+        private MemberInfoRes memberInfo = null;
+        /// <summary>
+        /// 绠$悊鍛樻潈闄愬浘鏍囨帶浠�
+        /// </summary>
+        private MostRightIconControl btnTopIcon = null;
+        /// <summary>
+        /// 鏉冮檺鐨勭炕璇戝悕鎺т欢
+        /// </summary>
+        private NormalViewControl btnAuthority = null;
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+        /// </summary>
+        /// <param name="info">鎴愬憳淇℃伅</param>
+        public void ShowForm(MemberInfoRes info)
+        {
+            this.memberInfo = info;
+
+            //璁剧疆鏍囬淇℃伅
+            string title = string.IsNullOrEmpty(info.UserName) == true ? info.Account : info.UserName;
+            base.SetTitleText(title);
+
+            //鍒濆鍖栧彸涓婅鐨勫浘鏍�
+            this.InitTopRightIcon();
+
+            //鍒濆鍖栦腑閮ㄦ帶浠�
+            this.InitMiddleFrame();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栧彸涓婅鐨勫浘鏍�
+        /// </summary>
+        private void InitTopRightIcon()
+        {
+            if (UserCenterResourse.UserInfo.AuthorityNo != 1)
+            {
+                return;
+            }
+            //绠$悊鍛樻潈闄愬浘鏍�
+            btnTopIcon = new MostRightIconControl(69, 69);
+            if (memberInfo.AccountType == 1)
+            {
+                btnTopIcon.UnSelectedImagePath = "Item/HadAuthority.png";
+            }
+            else
+            {
+                btnTopIcon.UnSelectedImagePath = "Item/NotAuthority.png";
+            }
+            topFrameLayout.AddChidren(btnTopIcon);
+            btnTopIcon.InitControl();
+            btnTopIcon.ButtonClickEvent += (sender, e) =>
+            {
+                //纭畾鍙栨秷銆寋0}銆嶇鐞嗗憳鏉冮檺锛�
+                string msg = Language.StringByID(R.MyInternationalizationString.uDownSubAccountLevel);
+                if (memberInfo.AccountType != 1)
+                {
+                    //纭畾鎺堟潈銆寋0}銆嶆垚涓虹鐞嗗憳?
+                    msg = Language.StringByID(R.MyInternationalizationString.uUpSubAccountLevel);
+                }
+                msg = msg.Replace("{0}", string.IsNullOrEmpty(memberInfo.UserName) == true ? memberInfo.Account : memberInfo.UserName);
+
+                this.ShowMassage(ShowMsgType.Confirm, msg, () =>
+                 {
+                     //浜屾瀹夊叏楠岃瘉,濡傛灉娌℃湁璁剧疆鏈�,鐩存帴璺宠繃楠岃瘉
+                     HdlCheckLogic.Current.CheckSecondarySecurity(
+                         () => { this.UpOrDownSubAccountLevel(); },
+                         () => { this.UpOrDownSubAccountLevel(); });
+                 });
+            };
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栦腑閮ㄦ帶浠�
+        /// </summary>
+        private void InitMiddleFrame()
+        {
+            //娓呯┖bodyFrame
+            this.ClearBodyFrame();
+
+            //鍒濆鍖栫敤鎴峰浘鏍�
+            this.InitMenberIconControl();
+
+            //鍒濆鍖栦俊鎭垪琛�
+            this.InitInfoList();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栫敤鎴峰浘鏍�
+        /// </summary>
+        private void InitMenberIconControl()
+        {
+            var frame = new FrameLayout();
+            frame.Height = Application.GetRealHeight(372);
+            frame.BackgroundColor = UserCenterColor.Current.White;
+            bodyFrameLayout.AddChidren(frame);
+
+            //鐢ㄦ埛鍥炬爣
+            string iconPath = System.IO.Path.Combine(UserCenterResourse.AccountOption.UserPictruePath, memberInfo.DistributedMark + ".png");
+            var btnUserIcon = new ImageView();
+            btnUserIcon.Height = this.GetPictrueRealSize(207);
+            btnUserIcon.Width = this.GetPictrueRealSize(207);
+            btnUserIcon.Radius = (uint)this.GetPictrueRealSize(207) / 2;
+            if (System.IO.File.Exists(iconPath) == true)
+            {
+                btnUserIcon.ImageBytes = Shared.IO.FileUtils.ReadFile(iconPath);
+            }
+            else
+            {
+                btnUserIcon.ImagePath = "Center/Admin.png";
+            }
+            btnUserIcon.Y = Application.GetRealHeight(45);
+            btnUserIcon.Gravity = Gravity.CenterHorizontal;
+            frame.AddChidren(btnUserIcon);
+            //鑾峰彇鎴愬憳澶村儚
+            this.GetMemberIcon(btnUserIcon);
+
+            //鏉冮檺
+            btnAuthority = new NormalViewControl(800, 50, true);
+            btnAuthority.TextAlignment = TextAlignment.Center;
+            btnAuthority.TextSize = 12;
+            btnAuthority.Y = btnUserIcon.Bottom + Application.GetRealHeight(23);
+            btnAuthority.Gravity = Gravity.CenterHorizontal;
+            btnAuthority.TextColor = UserCenterColor.Current.TextGrayColor1;
+            btnAuthority.TextID = R.MyInternationalizationString.uMember;
+            if (memberInfo.AccountType == 1)
+            {
+                //鎷ユ湁绠$悊鍛樻潈闄�
+                btnAuthority.TextID = R.MyInternationalizationString.uMemberHadActionAuthority;
+            }
+            frame.AddChidren(btnAuthority);
+        }
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖栦俊鎭垪琛╛____________________
+
+        /// <summary>
+        /// 鍒濆鍖栦俊鎭垪琛�
+        /// </summary>
+        private void InitInfoList()
+        {
+            //鏍囬:鎴愬憳鏉冮檺
+            var btnMenberTile = new NormalViewControl(800, 60, true);
+            btnMenberTile.X = ControlCommonResourse.XXLeft;
+            btnMenberTile.Y = Application.GetRealHeight(418);
+            btnMenberTile.TextColor = UserCenterColor.Current.TextColor2;
+            btnMenberTile.TextID = R.MyInternationalizationString.MenberAuthority;
+            btnMenberTile.TextSize = 15;
+            bodyFrameLayout.AddChidren(btnMenberTile);
+
+            var frame = new FrameListControl();
+            frame.Height = Application.GetRealHeight(311);
+            frame.BackgroundColor = UserCenterColor.Current.White;
+            frame.Y = Application.GetRealHeight(501);
+            bodyFrameLayout.AddChidren(frame);
+
+            //濉炰竴涓┖鐧界殑杩涘幓鍗犵┖闂�
+            var rowTemp = new FrameRowControl();
+            rowTemp.UseClickStatu = false;
+            rowTemp.Height = Application.GetRealHeight(23) - frame.rowSpace;
+            frame.AddChidren(rowTemp);
+
+            //娣诲姞杩滅▼鎿嶄綔琛�
+            var rowRemote = new FrameRowControl(frame.rowSpace / 2);
+            rowRemote.UseClickStatu = false;
+            frame.AddChidren(rowRemote);
+            this.AddRemoteRow(rowRemote);
+
+            //娣诲姞宸插叡浜唴瀹硅
+            var rowShard = new FrameRowControl(frame.rowSpace / 2);
+            frame.AddChidren(rowShard);
+            this.AddShardContentRow(rowShard);
+
+            //涓�鏃︾Щ闄よ瀹跺涵鎴愬憳锛屼粬/濂瑰皢鏃犳硶浣跨敤璇ョ綉鍏充笅鎵�缁戝畾鐨勮澶�
+            var btnNote1 = new NormalViewControl(613, 100, true);
+            btnNote1.X = Application.GetRealWidth(248);
+            btnNote1.Y = Application.GetRealHeight(1327);
+            btnNote1.TextSize = 12;
+            btnNote1.TextID = R.MyInternationalizationString.RemoveMenberAndDonotUserBindGatewayDevice;
+            btnNote1.IsMoreLines = true;
+            btnNote1.TextColor = UserCenterColor.Current.TextGrayColor1;
+            btnNote1.TextAlignment = TextAlignment.Center;
+            bodyFrameLayout.AddChidren(btnNote1);
+
+            var btnIcon = new IconViewControl(58);
+            btnIcon.X = Application.GetRealWidth(167);
+            btnIcon.Y = btnNote1.Y;
+            btnIcon.UnSelectedImagePath = "Item/Tips.png";
+            bodyFrameLayout.AddChidren(btnIcon);
+
+            //娣诲姞绉婚櫎鎸夐挳
+            var btnDelete = new BottomClickButton();
+            btnDelete.TextID = R.MyInternationalizationString.RemoveBotton;
+            btnDelete.BackgroundColor = 0xfff75858;
+            bodyFrameLayout.AddChidren(btnDelete);
+            btnDelete.ButtonClickEvent += (sender, e) =>
+            {
+                //纭畾瑕佺Щ闄よ瀹跺涵鎴愬憳鍚楋紵
+                string msg = Language.StringByID(R.MyInternationalizationString.uConfirmRemoveMember);
+                this.ShowMassage(ShowMsgType.Confirm, msg, () =>
+                {
+                    //鍒犻櫎瀛愯处鍙�
+                    this.DeleteSubAccount();
+                });
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 杩滅▼鎿嶄綔琛宊________________________
+
+        /// <summary>
+        /// 娣诲姞杩滅▼鎿嶄綔琛�
+        /// </summary>
+        /// <param name="row">Row.</param>
+        private void AddRemoteRow(FrameRowControl row)
+        {
+            //鍥炬爣
+            var btnIcon = row.AddLeftIcon(81);
+            btnIcon.UnSelectedImagePath = "Item/Remote.png";
+
+            //鏂囧瓧:杩滅▼鎿嶄綔
+            var btnName = row.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.RemoteManipulation), 500);
+            btnName.TextID = R.MyInternationalizationString.RemoteManipulation;
+            btnName.TextSize = 15;
+
+            //寮�鍏�
+            var btnSwitch = row.AddMostRightSwitchIcon();
+            if (this.memberInfo.IsAllowRemoteCtrl == true)
+            {
+                btnSwitch.IsSelected = true;
+            }
+            btnSwitch.ButtonClickEvent += (sender, e) =>
+            {
+                HdlThreadLogic.Current.RunThread(async () =>
+                {
+                    var pra = new
+                    {
+                        HouseDistributedMark = Common.Config.Instance.Home.Id,
+                        DistributedMark = this.memberInfo.DistributedMark,
+                        IsAllowRemoteCtrl = !btnSwitch.IsSelected
+                    };
+                    //鎵撳紑杩涘害鏉�
+                    this.ShowProgressBar();
+                    var result = await UserCenterLogic.GetResultStatuByRequestHttps("ZigbeeUsers/ChangeSubAccountIsAllowRemoteCtrl", false, pra);
+                    //鍏抽棴杩涘害鏉�
+                    this.CloseProgressBar();
+
+                    if (result == false)
+                    {
+                        return;
+                    }
+                    this.memberInfo.IsAllowRemoteCtrl = !btnSwitch.IsSelected;
+
+                    Application.RunOnMainThread(() =>
+                    {
+                        btnSwitch.IsSelected = !btnSwitch.IsSelected;
+                    });
+                });
+      
+            };
+            //搴曠嚎
+            row.AddBottomLine();
+        }
+
+        #endregion
+
+        #region 鈻� 宸插叡浜唴瀹硅_______________________
+
+        /// <summary>
+        /// 娣诲姞宸插叡浜唴瀹硅
+        /// </summary>
+        /// <param name="row">Row.</param>
+        private void AddShardContentRow(FrameRowControl row)
+        {
+            //鍥炬爣
+            var btnIcon = row.AddLeftIcon(81);
+            btnIcon.UnSelectedImagePath = "Item/ShardMenu.png";
+
+            //鍏变韩
+            var btnName = row.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uShared2), 500);
+            btnName.TextID = R.MyInternationalizationString.uShared2;
+            btnName.TextSize = 15;
+
+            //鍙冲浘鏍�
+            row.AddRightArrow();
+
+            var memberShardInfo = new MemberShardInfoData();
+            row.ButtonClickEvent += (sender, e) =>
+            {
+                var form = new SharedContent.LookSharedListRoomForm();
+                form.AddForm(memberInfo, memberShardInfo);
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 鍗囩骇鎴栬�呴檷绾у瓙璐﹀彿_________________
+
+        /// <summary>
+        /// 鍗囩骇鎴栬�呴檷绾у瓙璐﹀彿
+        /// </summary>
+        public async void UpOrDownSubAccountLevel()
+        {
+            //寮�鍚繘搴︽潯
+            this.ShowProgressBar();
+
+            var pra = new UpOrDownLevelPra();
+            pra.DistributedMark = memberInfo.DistributedMark;
+
+            bool result = await UserCenterLogic.GetResultStatuByRequestHttps("ZigbeeUsers/UpSubAccount", false, pra);
+            if (result == false)
+            {
+                this.CloseProgressBar();
+                return;
+            }
+            this.CloseProgressBar();
+
+            //鍙樻洿鏉冮檺
+            memberInfo.AccountType = memberInfo.AccountType == 1 ? 0 : 1;
+
+            Application.RunOnMainThread(() =>
+            {
+                if (this.Parent == null)
+                {
+                    return;
+                }
+                //鍙樻洿鏉冮檺鍥炬爣
+                if (memberInfo.AccountType == 1)
+                {
+                    btnTopIcon.UnSelectedImagePath = "Item/HadAuthority.png";
+                }
+                else
+                {
+                    btnTopIcon.UnSelectedImagePath = "Item/NotAuthority.png";
+                }
+                //鍙樻洿鏉冮檺鏂囧瓧
+                btnAuthority.TextID = memberInfo.AccountType == 1 ? R.MyInternationalizationString.uMemberHadActionAuthority : R.MyInternationalizationString.uMember;
+
+                //鎵撳紑鏄剧ず鎴愬姛鐨勭敾闈�
+                var form = new SubAccountLevelUpSuccessForm();
+                form.AddForm(memberInfo);
+            });
+        }
+
+        #endregion
+
+        #region 鈻� 鍒犻櫎瀛愯处鍙穇________________________
+
+        /// <summary>
+        /// 鍒犻櫎瀛愯处鍙�
+        /// </summary>
+        private async void DeleteSubAccount()
+        {
+            //寮�鍚繘搴︽潯
+            this.ShowProgressBar();
+
+            var pra = new DeleteSubAccountPra();
+            pra.SubAccount = memberInfo.SubAccountDistributedMark;
+
+            bool result = await UserCenterLogic.GetResultStatuByRequestHttps("ZigbeeUsers/DeletedSubAccount", false, pra);
+            //鍏抽棴杩涘害鏉�
+            this.CloseProgressBar();
+
+            if (result == false)
+            {
+                return;
+            }
+
+            //绉婚櫎缂撳瓨
+            UserCenterResourse.ListMemberInfo.RemoveAll((obj) =>
+            {
+                if (obj.SubAccountDistributedMark == memberInfo.SubAccountDistributedMark)
+                {
+                    return true;
+                }
+                return false;
+            });
+            UserCenterLogic.SaveLocalMemberListInfo();
+
+            //浠庢垚鍛樹竴瑙堢敾闈㈢Щ闄�
+            this.LoadFormMethodByName("MemberListForm", "DeleteRowByAccount", memberInfo.Account);
+            //鑷韩鍏抽棴
+            this.CloseForm();
+        }
+
+        #endregion
+
+        #region 鈻� 鑾峰彇鎴愬憳澶村儚_______________________
+
+        /// <summary>
+        /// 鑾峰彇鎴愬憳澶村儚
+        /// </summary>
+        private void GetMemberIcon(ImageView btnUserIcon)
+        {
+            HdlThreadLogic.Current.RunThread(async () =>
+            {
+                var pra = new AccountInfoPra();
+                pra.Account = memberInfo.Account;
+                var result = await UserCenterLogic.GetByteResponseDataByRequestHttps("ZigbeeUsers/GetSubAccountInfo", false, pra, new List<string>() { "NotSetAgain" });
+                if (result == null)
+                {
+                    return;
+                }
+                var revertObj = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.ResponseEntity.ResponsePack>(System.Text.Encoding.UTF8.GetString(result));
+                if (revertObj == null || revertObj.ResponseData == null)
+                {
+                    return;
+                }
+                var infoResult = Newtonsoft.Json.JsonConvert.DeserializeObject<AccountInfoResult>(revertObj.ResponseData.ToString());
+                if (infoResult.HeadImage != null)
+                {
+                    //鍐欏叆澶村儚鍐呭
+                    string iconPath = System.IO.Path.Combine(UserCenterResourse.AccountOption.UserPictruePath, memberInfo.DistributedMark + ".png");
+                    Shared.IO.FileUtils.WriteFileByBytes(iconPath, infoResult.HeadImage);
+                    HdlThreadLogic.Current.RunMain(() =>
+                    {
+                        btnUserIcon.ImageBytes = Shared.IO.FileUtils.ReadFile(iconPath);
+                    });
+                }
+            });
+        }
+
+        #endregion
+
+        #region 鈻� 缁撴瀯浣揰____________________________
+
+        /// <summary>
+        /// 鍗囩骇鎴栬�呴檷绾у瓙璐﹀彿鐨勫惎鍔ㄥ弬鏁�
+        /// </summary>
+        private class UpOrDownLevelPra : IfacePraCommon
+        {
+            /// <summary>
+            /// 閫氳繃銆婁綇瀹呯殑Guid鏌ヨ浣忓畢涓嬮潰鐨勫瓙璐﹀彿銆嬫帴鍙f椂锛岃繑鍥炵殑DistributedMark瀛楁
+            /// </summary>
+            public string DistributedMark = string.Empty;
+        }
+
+        /// <summary>
+        /// 鍒犻櫎瀛愯处鍙风殑鍚姩鍙傛暟
+        /// </summary>
+        private class DeleteSubAccountPra : IfacePraCommon
+        {
+            /// <summary>
+            /// 閫氳繃銆婁綇瀹呯殑Guid鏌ヨ浣忓畢涓嬮潰鐨勫瓙璐﹀彿銆嬫帴鍙f椂锛岃繑鍥炵殑DistributedMark瀛楁
+            /// </summary>
+            public string SubAccount = string.Empty;
+            /// <summary>
+            /// HouseDistributedMark
+            /// </summary>
+            public string HouseDistributedMark = Common.Config.Instance.HomeId;
+        }
+        #endregion
+    }
+}

--
Gitblit v1.8.0