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.ShareName == f.ShareName); //如果该功能已经分享,更新原有的数据 if (null != sd) { sd.ShareDataBytes = DAL.CommonPage.MyEncodingUTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(f)); result = EditShareData(sd); } else//如果该功能未被分享,则新增分享 { f.SubAccountDistributedMark = member.SubAccountDistributedMark; 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); } }); } }) { IsBackground = true }.Start(); }; } /// /// 新增共享数据点击事件 /// bool LoadMethod_AddShareData(ShareData ssdd) { //增加共享数据目录 ResponsePack responePack = new HttpServerRequest().AddShareData(ssdd); if (responePack.StateCode.ToUpper() != "SUCCESS") { return false; } else { ssdd.DistributedMark = responePack.ResponseData.ToString(); // 更新共享数据 return EditShareData(ssdd); } } /// /// 更新共享数据 /// bool EditShareData(ShareData sd) { ResponsePack responePack = new HttpServerRequest().EditShareData(sd); if (responePack.StateCode.ToUpper() == "SUCCESS") { return true; } else { return false; } } /// /// 获取住宅下子账号的共享数据列表 /// /// void LoadMethod_GetMemberSharedDataList(ResidenceMemberInfo info) { ResponsePack responePack = new HttpServerRequest().GetShareDataByMemberAccount(info.SubAccountDistributedMark); if (responePack.StateCode.ToUpper() == "SUCCESS") { var responeObj = Newtonsoft.Json.JsonConvert.DeserializeObject>(responePack.ResponseData.ToString()); info.CurResidenceShareDate = responeObj; } } /// /// 调用获取住宅子账号信息 /// bool LoadMethod_GetResidenceMemberAccount() { var result = false; ResponsePack responePack = new HttpServerRequest().GetResidenceMemberAccount(); if (responePack.StateCode.ToUpper() == "SUCCESS") { memberList = Newtonsoft.Json.JsonConvert.DeserializeObject>(responePack.ResponseData.ToString()); foreach (var mInfo in memberList) { ResponsePack memberInfoResponePack = new HttpServerRequest().GetResidenceMemberAccountInfo(mInfo.Account); 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.DistributedMark + ".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 { string tipStr = "Sever erorr"; switch (responePack.StateCode) { case "ValidCodeAndPhoneNoEqual": tipStr = Language.StringByID(StringId.VerificationCodeError); break; case "USERNAMEORPWDERROR": tipStr = Language.StringByID(StringId.LoginFailed_AccountOrPasswordError); break; case "ACCOUNTNOEXISTS": tipStr = Language.StringByID(StringId.ACCOUNTNOEXISTS); break; case "NoRecord": tipStr = Language.StringByID(StringId.PlsGetTheVerificationCode); break; case "Self:Net_Error": tipStr = Language.StringByID(StringId.NetworkAnomaly); break; } //账号或者密码错误 Application.RunOnMainThread(() => { waitPage.Hide(); //提示原因 var tip = new Tip() { Text = tipStr, CloseTime = 3, Direction = AMPopTipDirection.None }; tip.Show(bodyView); }); } Application.RunOnMainThread(() => { waitPage?.Hide(); }); return result; } } }