using System; using System.Collections.Generic; using System.IO; using System.Threading; using HDL_ON.DAL.Server; using HDL_ON.Entity; using Newtonsoft.Json.Linq; using Shared; namespace HDL_ON.UI { public partial class ChooseShareMemberTargetListPage { /// /// 加载获取住宅子账号信息线程 /// Thread LoadThread_GetResidenceMemberAccount() { var thread = new Thread(() => { try { memberList.Clear(); var loginResult = LoadMethod_GetResidenceMemberAccount(); if (loginResult) { Application.RunOnMainThread(() => { LoadMemberRow(); }); } } catch (Exception ex) { MainPage.Log($"LoadThread_GetResidenceMemberAccount 2 : {ex.Message}"); } finally { Application.RunOnMainThread(() => { if (waitPage != null) { waitPage.RemoveFromParent(); waitPage = null; } }); } }) { IsBackground = true }; return thread; } /// /// 更改分享成员列表 /// EventHandler LoadEvent_ChangeSharedList(Button btnChosse, ResidenceMemberInfo info) { EventHandler eventHandler = (sender, e) => { btnChosse.IsSelected = !btnChosse.IsSelected; if (btnChosse.IsSelected) { if (!memberList.Contains(info)) { memberList.Add(info); } } else { if (memberList.Contains(info)) { memberList.Remove(info); } } }; return eventHandler; } /// /// 分享数据 /// void LoadEvent_SharedData() { btnOption.MouseUpEventHandler = (sender, e) => { new Thread(() => { bool result = false; Action act = () => { }; Application.RunOnMainThread(() => { act = new PublicAssmebly().TipLoadingMsgDialog(Language.StringByID(StringId.SavingPleaseWait)); }); foreach (var member in memberList) { foreach (var f in addFuns) { var sd = member.CurResidenceShareDate.Find((obj) => obj.fileName == f.fileName); //如果该功能已经分享,更新原有的数据 if (null != sd) { sd.ShareDataBytes = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(f)); result = EditShareData(sd); } else//如果该功能未被分享,则新增分享 { f.childAccountId = member.childAccountId; result = LoadMethod_AddShareData(f); } if (!result) { Application.RunOnMainThread(() => { new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.FunctionSharingFailed), true); }); } } } Application.RunOnMainThread(() => { act(); }); if (result) { Application.RunOnMainThread(() => { new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.FunctionSharingSucceeded), true); }); Thread.Sleep(1600); Application.RunOnMainThread(() => { for (int i = 0; i < 3; i++) { //MainPage.BasePageView.RemoveAt(MainPage.BasePageView.ChildrenCount - 1); MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent(); } }); } }) { IsBackground = true }.Start(); }; } /// /// 新增共享数据点击事件 /// bool LoadMethod_AddShareData(ShareData ssdd) { //增加共享数据目录 var responePack = new HttpServerRequest().AddShareData(ssdd); if (responePack.Code.ToUpper() != "SUCCESS") { return false; } else { //ssdd.id = responePack.ResponseData.ToString(); var responeObj = Newtonsoft.Json.JsonConvert.DeserializeObject(responePack.Data.ToString()); ssdd.id = responeObj.id; //2020-11-22 return true; //// 更新共享数据 //return EditShareData(ssdd); } } /// /// 更新共享数据 /// bool EditShareData(ShareData sd) { var responePack = new HttpServerRequest().EditShareData(sd); if (responePack.Code == StateCode.SUCCESS) { return true; } else { return false; } } /// /// 获取住宅下子账号的共享数据列表 /// /// void LoadMethod_GetMemberSharedDataList(ResidenceMemberInfo info) { var responePack = new HttpServerRequest().GetShareDataByMemberAccount(info.childAccountId); if (responePack.Code == StateCode.SUCCESS) { var responeObj = Newtonsoft.Json.JsonConvert.DeserializeObject>(responePack.Data.ToString()); info.CurResidenceShareDate = responeObj; } } /// /// 调用获取住宅子账号信息 /// bool LoadMethod_GetResidenceMemberAccount() { var result = false; var responePack = new HttpServerRequest().GetResidenceMemberAccount(); if (responePack.Code == StateCode.SUCCESS) { memberList = Newtonsoft.Json.JsonConvert.DeserializeObject>(responePack.Data.ToString()); foreach (var mInfo in memberList) { ResponsePack memberInfoResponePack = new HttpServerRequest().GetResidenceMemberAccountInfo(mInfo.childAccountId); var dataStr = JObject.FromObject(memberInfoResponePack.ResponseData); FileStream fs = null; try { var headImageString = dataStr.GetValue("HeadImage").ToString(); var jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(headImageString); var headImageBytes = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonString); var filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/", mInfo.childAccountId + ".png"); fs = new FileStream(filePath, FileMode.Create, FileAccess.Write); fs.Write(headImageBytes, 0, headImageBytes.Length); fs.Flush(); mInfo.headImagePagePath = filePath; } catch (Exception ex) { MainPage.Log($"download headImage error : {ex.Message}"); } finally { if (fs != null) { fs.Close(); } LoadMethod_GetMemberSharedDataList(mInfo); } } result = true; } //失败 else { //提示 IMessageCommon.Current.ShowErrorInfoAlter(responePack.Code); //账号或者密码错误 Application.RunOnMainThread(() => { waitPage.Hide(); }); } Application.RunOnMainThread(() => { waitPage?.Hide(); }); return result; } } }