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/MemberListForm.cs |  471 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 471 insertions(+), 0 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Member/MemberListForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Member/MemberListForm.cs
new file mode 100755
index 0000000..d5b2cbd
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Member/MemberListForm.cs
@@ -0,0 +1,471 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+
+namespace Shared.Phone.UserCenter.Member
+{
+    /// <summary>
+    /// 鎴愬憳绠$悊鈽�
+    /// </summary>
+    public class MemberListForm : EditorCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 鍒楄〃鎺т欢
+        /// </summary>
+        private VerticalListControl listView = null;
+        /// <summary>
+        /// 鎴愬憳澶村儚鎺т欢
+        /// </summary>
+        private Dictionary<string, ImageView> dicIconControl = new Dictionary<string, ImageView>();
+        /// <summary>
+        /// 鎴愬憳鐨勮处鍙�(鑾峰彇澶村儚鐢�)
+        /// </summary>
+        private Dictionary<string, string> dicMemberAccount = new Dictionary<string, string>();
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+        /// </summary>
+        public void ShowForm()
+        {
+            //璁剧疆鏍囬淇℃伅
+            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.MenberManagement));
+
+            var titleIcon = new MostRightIconControl(69, 69);
+            titleIcon.UnSelectedImagePath = "Item/Add.png";
+            topFrameLayout.AddChidren(titleIcon);
+            titleIcon.InitControl();
+            titleIcon.ButtonClickEvent += (sender, e) =>
+            {
+                var menuContr = new TopRightMenuControl(2, 2);
+                //鎵弿浜岀淮鐮�
+                string msg1 = Language.StringByID(R.MyInternationalizationString.uScanQRcode);
+                menuContr.AddRowMenu(msg1, "Item/ScanQRcodeIcon.png", "Item/ScanQRcodeIconSelected.png", () =>
+                {
+                    QRCode.ScanQRcode((qrCode) =>
+                    {
+                        if (string.IsNullOrEmpty(qrCode) == true)
+                        {
+                            return;
+                        }
+                        //鎼滅储ID
+                        this.SearchMemberInfo(qrCode);
+                    }, 
+                    Language.StringByID(R.MyInternationalizationString.uCancel),
+                    Language.StringByID(R.MyInternationalizationString.uFlashlamp),
+                    msg1);
+                });
+                //杈撳叆璐﹀彿
+                string msg2 = Language.StringByID(R.MyInternationalizationString.uInputAccount);
+                menuContr.AddRowMenu(msg2, "Item/InputAccountIcon.png", "Item/InputAccountIconSelected.png", () =>
+                {
+                    var form = new AddMemberByIdForm();
+                    form.AddForm();
+                });
+            };
+
+            //鍒濆鍖栦腑閮ㄦ帶浠�
+            this.InitMiddleFrame();
+        }
+
+
+        /// <summary>
+        /// 鍒濆鍖栦腑閮ㄦ帶浠�
+        /// </summary>
+        private void InitMiddleFrame()
+        {
+            //娓呯┖bodyFrame
+            this.ClearBodyFrame();
+
+            //鍒濆鍖栫敤鎴峰浘鏍�
+            this.InitUserIconControl();
+
+            //鍒濆鍖栧垪琛ㄦ帶浠�
+            this.InitMemberListControl();
+        }
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖栫敤鎴峰浘鏍嘷____________________
+
+        /// <summary>
+        /// 鍒濆鍖栫敤鎴峰浘鏍�
+        /// </summary>
+        private void InitUserIconControl()
+        {
+            var frameBack = new FrameLayout();
+            frameBack.BackgroundColor = UserCenterColor.Current.White;
+            frameBack.Height = Application.GetRealHeight(438);
+            bodyFrameLayout.AddChidren(frameBack);
+
+            //鐢ㄦ埛鍥炬爣
+            var btnUserIcon = new ImageView();
+            btnUserIcon.Height = this.GetPictrueRealSize(207);
+            btnUserIcon.Width = this.GetPictrueRealSize(207);
+            btnUserIcon.Radius = (uint)this.GetPictrueRealSize(207) / 2;
+            btnUserIcon.ImagePath = UserCenterResourse.UserInfo.UserIconFile;
+            btnUserIcon.Y = Application.GetRealHeight(46);
+            btnUserIcon.Gravity = Gravity.CenterHorizontal;
+            frameBack.AddChidren(btnUserIcon);
+
+            //鏄电О
+            var btnName = new NormalViewControl(frameBack.Width, Application.GetRealHeight(60), false);
+            btnName.TextAlignment = TextAlignment.Center;
+            btnName.Y = btnUserIcon.Bottom + Application.GetRealHeight(20);
+            btnName.TextSize = 16;
+            btnName.Text = UserCenterResourse.UserInfo.UserName; ;
+            frameBack.AddChidren(btnName);
+
+            //韬唤
+            var btnAuthority = new NormalViewControl(frameBack.Width, Application.GetRealHeight(55), false);
+            btnAuthority.TextAlignment = TextAlignment.Center;
+            btnAuthority.Y = btnName.Bottom + Application.GetRealHeight(10);
+            btnAuthority.TextSize = 12;
+            btnAuthority.TextColor = UserCenterColor.Current.TextGrayColor1;
+            btnAuthority.Text = UserCenterResourse.UserInfo.AuthorityText;
+            frameBack.AddChidren(btnAuthority);
+        }
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖栨垚鍛樺垪琛╛____________________
+
+        /// <summary>
+        /// 鍒濆鍖栨垚鍛樺垪琛�
+        /// </summary>
+        private void InitMemberListControl()
+        {
+            //鏍囬:鎴愬憳鍒楄〃
+            var btnMenberTile = new NormalViewControl(800, 60, true);
+            btnMenberTile.X = ControlCommonResourse.XXLeft;
+            btnMenberTile.Y = Application.GetRealHeight(480);
+            btnMenberTile.TextColor = UserCenterColor.Current.TextColor1;
+            btnMenberTile.TextID = R.MyInternationalizationString.MenberList;
+            btnMenberTile.TextSize = 15;
+            bodyFrameLayout.AddChidren(btnMenberTile);
+
+            var frameBack = new FrameLayout();
+            frameBack.Y = btnMenberTile.Bottom + Application.GetRealHeight(23);
+            frameBack.Height = Application.GetRealHeight(11);
+            frameBack.BackgroundColor = UserCenterColor.Current.White;
+            bodyFrameLayout.AddChidren(frameBack);
+
+            //娣诲姞鍙互鍚戜笅婊氬姩鐨勬帶浠�
+            listView = new VerticalListControl(12);
+            listView.Height = bodyFrameLayout.Height - frameBack.Bottom;
+            listView.BackgroundColor = UserCenterColor.Current.White;
+            listView.Y = frameBack.Bottom;
+            bodyFrameLayout.AddChidren(listView);
+
+            HdlThreadLogic.Current.RunThread(() =>
+            {
+                //鎬讳箣鍏堟竻绌哄叡浜枃浠跺す鍑嗘病閿�
+                HdlShardLogic.Current.ClearShardDirectory();
+                //鍒濆鍖栨垚鍛樺垪琛�
+                this.InitMemberList();
+            });
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栨垚鍛樺垪琛�
+        /// </summary>
+        private async void InitMemberList()
+        {
+            //寮�鍚繘搴︽潯
+            this.ShowProgressBar();
+
+            var pra = new MemberListInfoPra();
+            string result = await UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeUsers/GetSubAccountByDistributedMark", false, pra);
+            if (result == null)
+            {
+                //鍏抽棴杩涘害鏉�
+                this.CloseProgressBar(ShowReLoadMode.YES);
+                return;
+            }
+            if (this.Parent == null)
+            {
+                //鍏抽棴杩涘害鏉�
+                this.CloseProgressBar();
+                return;
+            }
+
+            List<MemberInfoRes> listInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<List<MemberInfoRes>>(result);
+            if (listInfo == null)
+            {
+                //鍏抽棴杩涘害鏉�
+                this.CloseProgressBar(ShowReLoadMode.YES);
+                return;
+            }
+            //鍏抽棴杩涘害鏉�
+            this.CloseProgressBar();
+
+            //鍏堟竻绌烘垚鍛樺垪琛ㄤ俊鎭�
+            UserCenterResourse.ListMemberInfo.Clear();
+
+            List<string> listCheck = new List<string>();
+            foreach (MemberInfoRes infoRes in listInfo)
+            {
+                if (listCheck.Contains(infoRes.DistributedMark) == true
+                    || infoRes.Account == UserCenterResourse.UserInfo.Phone
+                    || infoRes.Account == UserCenterResourse.UserInfo.Email)
+                {
+                    //濡傛灉鏄畠鑷繁鐨勮瘽锛屼笉鏄剧ず
+                    continue;
+                }
+                if (UserCenterResourse.UserInfo.AuthorityNo != 1 && infoRes.AccountType != 0)
+                {
+                    //涓嶈兘澶熻幏鍙栨潈闄愮瓑绾ф瘮浠栭珮鐨�(涓讳汉鑷繁鍙互鏃犺杩欎釜鍒ゆ柇)
+                    continue;
+                }
+
+                listCheck.Add(infoRes.DistributedMark);
+                //娣诲姞鎴愬憳淇℃伅鐨勭紦瀛�
+                UserCenterResourse.ListMemberInfo.Add(infoRes);
+            }
+            listInfo.Clear();
+            //淇濆瓨鎴愬憳淇℃伅鐨勭紦瀛樺埌鏈湴鏂囦欢
+            UserCenterLogic.SaveLocalMemberListInfo();
+            if (UserCenterResourse.ListMemberInfo.Count == 0)
+            {
+                return;
+            }
+            HdlThreadLogic.Current.RunMain(() =>
+            {
+                //娣诲姞鎴愬憳鍒楄〃
+                this.AddMemberListRowByData();
+            });
+        }
+
+        /// <summary>
+        /// 娣诲姞鎴愬憳鍒楄〃
+        /// </summary>
+        private void AddMemberListRowByData()
+        {
+            if (this.Parent == null)
+            {
+                return;
+            }
+            var listNewInfo = UserCenterResourse.ListMemberInfo;
+
+            int count = listNewInfo.Count - 1;
+            for (int i = 0; i < listNewInfo.Count; i++)
+            {
+                //娣诲姞鎴愬憳琛�
+                this.AddRowLayout(listNewInfo[i], i != count);
+            }
+            //璋冩暣鍒楄〃鎺т欢鐨勯珮搴�
+            listView.AdjustRealHeight(Application.GetRealHeight(23));
+            //鑾峰彇鎴愬憳澶村儚
+            this.GetMemberIcon();
+        }
+
+        #endregion
+
+        #region 鈻� 娣诲姞鎴愬憳琛宊________________________
+
+        /// <summary>
+        /// 娣诲姞鎴愬憳琛�
+        /// </summary>
+        /// <param name="info">Info.</param>
+        ///  <param name="addLine">addLine</param>
+        private void AddRowLayout(MemberInfoRes info, bool addLine)
+        {
+            var rowlayout = new FrameRowControl(listView.rowSpace / 2);
+            rowlayout.Height = Application.GetRealHeight(138);
+            rowlayout.MainKeys = info.Account;
+            listView.AddChidren(rowlayout);
+
+            //鎴愬憳澶村儚鍥炬爣
+            string iconPath = System.IO.Path.Combine(UserCenterResourse.AccountOption.UserPictruePath, info.DistributedMark + ".png");
+            var btnIcon = new ImageView();
+            btnIcon.X = ControlCommonResourse.XXLeft;
+            btnIcon.Gravity = Gravity.CenterVertical;
+            btnIcon.Height = this.GetPictrueRealSize(115);
+            btnIcon.Width = this.GetPictrueRealSize(115);
+            btnIcon.Radius = (uint)this.GetPictrueRealSize(115) / 2;
+            if (System.IO.File.Exists(iconPath) == true)
+            {
+                btnIcon.ImagePath = iconPath;
+            }
+            else
+            {
+                btnIcon.ImagePath = "Center/Admin.png";
+                this.dicIconControl[info.DistributedMark] = btnIcon;
+                this.dicMemberAccount[info.DistributedMark] = info.Account;
+            }
+            rowlayout.AddChidren(btnIcon);
+
+            //鎴愬憳鏄电О
+            string memberName = string.IsNullOrEmpty(info.UserName) == true ? info.Account : info.UserName;
+            var btnName = rowlayout.AddLeftCaption(memberName, 600, true);
+            btnName.X = ControlCommonResourse.XXLeft + btnIcon.Height + Application.GetRealWidth(35);
+            btnName.TextSize = 15;
+            rowlayout.AddChidren(btnName);
+
+            if (addLine == true)
+            {
+                //搴曠嚎
+                rowlayout.AddBottomLine();
+            }
+            //鍙冲浘鏍�
+            rowlayout.AddRightArrow();
+            rowlayout.ButtonClickEvent += (sender, e) =>
+            {
+                var form = new MemberManagementForm();
+                form.AddForm(info);
+            };
+        }
+
+        /// <summary>
+        /// 娣诲姞鎴愬憳琛�(澶栭儴璋冪敤)
+        /// </summary>
+        /// <param name="info"></param>
+        public void AddRowLayoutByOtherForm(MemberInfoRes info)
+        {
+            var myRow = listView.GetChildren(listView.ChildrenCount - 1);
+            if (myRow != null)
+            {
+                //鏈�鍚庝竴琛屽姞搴曠嚎
+                ((FrameRowControl)myRow).AddBottomLine();
+            }
+            this.AddRowLayout(info, false);
+            //璋冩暣鍒楄〃鎺т欢鐨勯珮搴�
+            listView.AdjustRealHeight(Application.GetRealHeight(23));
+        }
+
+        #endregion
+
+        #region 鈻� 鑾峰彇鎴愬憳澶村儚_______________________
+
+        /// <summary>
+        /// 鑾峰彇鎴愬憳澶村儚
+        /// </summary>
+        private void GetMemberIcon()
+        {
+            if (dicIconControl.Count == 0)
+            {
+                return;
+            }
+            HdlThreadLogic.Current.RunThread(async () =>
+            {
+                var pra = new AccountInfoPra();
+                foreach (var keys in dicMemberAccount.Keys)
+                {
+                    if (this.Parent == null)
+                    {
+                        return;
+                    }
+                    pra.Account = dicMemberAccount[keys];
+                    var result = await UserCenterLogic.GetByteResponseDataByRequestHttps("ZigbeeUsers/GetSubAccountInfo", false, pra, new List<string>() { "NotSetAgain" });
+                    if (result == null)
+                    {
+                        continue;
+                    }
+                    var revertObj = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.ResponseEntity.ResponsePack>(System.Text.Encoding.UTF8.GetString(result));
+                    if (revertObj == null || revertObj.ResponseData == null)
+                    {
+                        continue;
+                    }
+                    var infoResult = Newtonsoft.Json.JsonConvert.DeserializeObject<AccountInfoResult>(revertObj.ResponseData.ToString());
+                    if (infoResult.HeadImage != null)
+                    {
+                        //鍐欏叆澶村儚鍐呭
+                        string iconPath = System.IO.Path.Combine(UserCenterResourse.AccountOption.UserPictruePath, keys + ".png");
+                        Shared.IO.FileUtils.WriteFileByBytes(iconPath, infoResult.HeadImage);
+                        HdlThreadLogic.Current.RunMain(() =>
+                        {
+                            dicIconControl[keys].ImageBytes = Shared.IO.FileUtils.ReadFile(iconPath);
+                        });
+                    }
+                }
+            });
+        }
+
+        #endregion
+
+        #region 鈻� 鍒犻櫎鎸囧畾琛宊________________________
+
+        /// <summary>
+        /// 鍒犻櫎鎸囧畾琛�(澶栭儴璋冪敤)
+        /// </summary>
+        /// <param name="accountId"></param>
+        public void DeleteRowByAccount(string accountId)
+        {
+            for (int i = 0; ; i++)
+            {
+                var row = (FrameRowControl)listView.GetChildren(i);
+                if (row == null)
+                {
+                    break;
+                }
+                if (row.MainKeys == accountId)
+                {
+                    row.RemoveFromParent();
+                    //璋冩暣鍒楄〃鎺т欢鐨勯珮搴�
+                    listView.AdjustRealHeight(Application.GetRealHeight(23));
+
+                    break;
+                }
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 鎼滅储ID_____________________________
+
+        /// <summary>
+        /// 鎼滅储鎸囧畾ID鐨勪俊鎭�
+        /// </summary>
+        /// <param name="accountId">鎴愬憳ID</param>
+        /// <param name="txtMsg">淇℃伅鎺т欢</param>
+        private async void SearchMemberInfo(string accountId)
+        {
+            var pra = new AccountInfoPra();
+            pra.Account = accountId;
+            string result = await UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeUsers/GetSubAccountInfo", false, pra, new List<string>() { "AccountNoExists" });
+            if (result == null)
+            {
+                //寮傚父
+                return;
+            }
+            if (result == string.Empty)
+            {
+                //鎴愬憳涓嶅瓨鍦�
+                var form = new MemberNotEsixtForm();
+                form.AddForm();
+                return;
+            }
+
+            var infoResult = Newtonsoft.Json.JsonConvert.DeserializeObject<AccountInfoResult>(result);
+            infoResult.Account = accountId;
+
+            Application.RunOnMainThread(() =>
+            {
+                var form = new AddMemberInfoForm();
+                form.AddForm(infoResult);
+            });
+        }
+
+        #endregion
+
+        #region 鈻� 鐣岄潰閲嶆柊婵�娲讳簨浠禵__________________
+
+        /// <summary>
+        /// 鑷韩鐨勪笂灞傜晫闈㈠叧闂悗,瀹冭嚜韬浜庢渶涓婂眰鏃�,瑙﹀彂鐨勪簨浠�
+        /// </summary>
+        public override int FormActionAgainEvent()
+        {
+            //娓呯┖鍏变韩鏂囦欢澶�
+            HdlShardLogic.Current.ClearShardDirectory();
+
+            return 1;
+        }
+
+        #endregion
+    }
+}

--
Gitblit v1.8.0