ZigbeeApp/.vs/GateWay/xs/UserPrefs.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ZigbeeApp/.vs/GateWay/xs/sqlite3/storage.ide | 补丁 | 查看 | 原始文档 | blame | 历史 | |
ZigbeeApp/Shared/Phone/Device/Logic/DeviceStateCondition.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/AddCondition.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/LockIfon.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ZigbeeApp/Shared/Phone/Device/Logic/MemberList.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ZigbeeApp/Shared/Phone/Device/Logic/Send.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ZigbeeApp/Shared/Phone/Device/Logic/TemplateDeviceCondition.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
ZigbeeApp/.vs/GateWay/xs/UserPrefs.xml
@@ -2,14 +2,13 @@ <MonoDevelop.Ide.ItemProperties.GateWay.Droid PreferredExecutionTarget="Android.SelectDevice" /> <MonoDevelop.Ide.ItemProperties.GateWay.Ios automaticSigning="False" PreferredExecutionTarget="MonoDevelop.IPhone.IPhoneDeviceTarget.913cb77b0eef11c9119c61a02bc00fec01bf67d6" /> <MonoDevelop.Ide.ItemProperties.ShardLib PreferredExecutionTarget="Android.M7BBB18B19152766" /> <MonoDevelop.Ide.Workbench ActiveDocument="Shared/Phone/UserCenter/CommonBase/Logic/UserCenterLogic.cs"> <MonoDevelop.Ide.Workbench ActiveDocument="Shared/Phone/Device/Logic/TemplateDeviceCondition.cs"> <Files> <File FileName="Shared/Phone/Device/Logic/DoorLockLogic/LockLogicList.cs" Line="1" Column="1" /> <File FileName="Shared/Phone/Device/Logic/MemberList.cs" Line="1" Column="1" /> <File FileName="Shared/Phone/Device/Logic/Send.cs" Line="920" Column="1" /> <File FileName="Shared/Phone/Device/Logic/DeviceStateCondition.cs" Line="1377" Column="90" /> <File FileName="Shared/Phone/UserCenter/CommonBase/Logic/UserCenterLogic.cs" Line="230" Column="32" /> <File FileName="Shared/Common/CommonPage.cs" Line="271" Column="59" /> <File FileName="Shared/Phone/Device/Logic/DeviceStateCondition.cs" Line="1381" Column="27" /> <File FileName="Shared/Phone/Device/Logic/MemberList.cs" Line="313" Column="107" /> <File FileName="Shared/Phone/Device/Logic/DoorLockLogic/AddCondition.cs" Line="215" Column="83" /> <File FileName="Shared/Phone/Device/Logic/DoorLockLogic/LockIfon.cs" Line="16" Column="73" /> <File FileName="Shared/Phone/Device/Logic/TemplateDeviceCondition.cs" Line="1379" Column="83" /> </Files> <Pads> <Pad Id="ProjectPad"> @@ -22,18 +21,21 @@ <Node name="Common" expanded="True" /> <Node name="Phone" expanded="True"> <Node name="Device" expanded="True"> <Node name="Category" expanded="True" /> <Node name="Logic" expanded="True"> <Node name="DoorLockLogic" expanded="True" /> <Node name="TemplateDeviceCondition.cs" selected="True" /> </Node> </Node> <Node name="UserCenter" expanded="True"> <Node name="CommonBase" expanded="True"> <Node name="Logic" expanded="True"> <Node name="UserCenterLogic.cs" selected="True" /> </Node> <Node name="Common" expanded="True" /> </Node> <Node name="DoorLock" expanded="True" /> </Node> <Node name="ZigBee" expanded="True"> <Node name="Device" expanded="True" /> </Node> </Node> </Node> </Node> ZigbeeApp/.vs/GateWay/xs/sqlite3/storage.ideBinary files differ
ZigbeeApp/Shared/Phone/Device/Logic/DeviceStateCondition.cs
@@ -1371,8 +1371,7 @@ case DeviceType.DoorLock: { #region ------ var doorlockifonlist = Send.ReadDoorLockIfon(common.DeviceAddr); //var list = Send.ReadDoorLockIfon(common.DeviceAddr); var doorlockifonlist = await Send.UserListIfon(common.DeviceAddr); var pra = new UserCenter.MemberListInfoPra(); string result = await UserCenter.UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeUsers/GetSubAccountByDistributedMark", false, pra); var listInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<List<UserCenter.MemberInfoRes>>(result); @@ -1386,9 +1385,20 @@ ///查找成员以及成员门锁触发源(1按键/3卡/15指纹) if (doorlockifonlist[j].CloudAccountId == membershipifon.SubAccountDistributedMark) { membership.UserIdMode.Add(doorlockifonlist[j].UserIdMode); membership.MembershipName = membershipifon.UserName; var lockMode = new Send.LockMode(); lockMode.UserId = doorlockifonlist[j].DoorLockLocalUserId; lockMode.OpenMode = doorlockifonlist[j].OpenLockMode; membership.UserIdMode.Add(lockMode); membership.MembershipId = membershipifon.SubAccountDistributedMark; if (string.IsNullOrEmpty(membershipifon.UserName)) { membership.MembershipName = membershipifon.Account; } else { membership.MembershipName = membershipifon.UserName; } } @@ -1396,7 +1406,7 @@ if (membership.UserIdMode.Count != 0) { ///过滤掉重复数据; var str = Send.UserList.Find((c) => { return c.MembershipId == membership.MembershipId; }); var str = Send.UserList.Find((c) => { return c.MembershipId == membershipifon.SubAccountDistributedMark; }); if (str == null) { Send.UserList.Add(membership); @@ -1413,7 +1423,6 @@ memberList.Show(common); } break; case DeviceType.TemperatureSensor: { string current = Language.StringByID(MyInternationalizationString.current); @@ -1451,12 +1460,12 @@ { dictionary(deviceConditionsInfo, "AttriButeData1", horizontalSeekBarVol.Progress.ToString()); Btntemperaturevalue.Text = current+">" + horizontalSeekBarVol.Progress.ToString() + "℃"; Btntemperaturevalue.Text = current + ">" + horizontalSeekBarVol.Progress.ToString() + "℃"; } else { Btntemperaturevalue.Text = current+"<" + horizontalSeekBarVol.Progress.ToString() + "%"; Btntemperaturevalue.Text = current + "<" + horizontalSeekBarVol.Progress.ToString() + "%"; dictionary(deviceConditionsInfo, "AttriButeData1", horizontalSeekBarVol.Progress.ToString());//温度值 } }; @@ -1470,12 +1479,12 @@ dictionary(deviceConditionsInfo, "Range", "0");//0大于AttriButeData1时触发动作 dictionary(deviceConditionsInfo, "AttriButeData1", "0"); dictionary(deviceConditionsInfo, "AttriButeData2", "0"); Btntemperaturevalue.Text = current+">0℃"; Btntemperaturevalue.Text = current + ">0℃"; } else { Btntemperaturevalue.Text = current+"<0%"; Btntemperaturevalue.Text = current + "<0%"; dictionary(deviceConditionsInfo, "Cluster_ID", "1029"); dictionary(deviceConditionsInfo, "AttriButeId", "0"); dictionary(deviceConditionsInfo, "Range", "2");//2小于AttriButeData1时触发动作 @@ -1489,12 +1498,12 @@ if (temperatureSensor.SensorDiv == 1) { Btntemperaturevalue.Text = current+">" + devices["AttriButeData1"] + "℃"; Btntemperaturevalue.Text = current + ">" + devices["AttriButeData1"] + "℃"; } else { Btntemperaturevalue.Text = current+"<" + devices["AttriButeData1"] + "%"; Btntemperaturevalue.Text = current + "<" + devices["AttriButeData1"] + "%"; } } ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/AddCondition.cs
@@ -14,7 +14,7 @@ Button selectedIcon = new Button(); public int conditionsIndex = -1; public void Show() public async void Show() { #region 最上面的布局代码 var topRowLayout = new RowLayout @@ -34,8 +34,8 @@ Width = Application.GetRealWidth(400), Height = Application.GetRealHeight(69), Y = Application.GetRealHeight(92), //TextID = MyInternationalizationString.selection, Text = "选择用户", TextID = MyInternationalizationString.userlist, //Text = "选择用户", }; topRowLayout.AddChidren(titleName); @@ -76,26 +76,82 @@ }; this.AddChidren(middle); var userlist = new List<ZigBee.Device.DoorLock.LocaDoorLockObj>(); userlist.Clear(); var userlist = new List<Send.MembershipIfon>(); ///判断APP登录进来用户身份(主人,管理员,成员) var doorlockifonlist = await Send.UserListIfon(LockIfon.DoorLock.DeviceAddr); if (UserCenter.UserCenterResourse.UserInfo.AuthorityNo == 3) { var list = LockIfon.GetUserIfon(LockIfon.UserMemberInfoRes.SubAccountDistributedMark); foreach (var o in list) Send.MembershipIfon membershipIfon = new Send.MembershipIfon(); foreach (var o in doorlockifonlist) { if (userlist.Count != 0) if (o.CloudAccountId == LockIfon.UserMemberInfoRes.SubAccountDistributedMark) { continue; Send.LockMode lockMode = new Send.LockMode(); lockMode.OpenMode = o.OpenLockMode; lockMode.UserId = o.DoorLockLocalUserId; membershipIfon.UserIdMode.Add(lockMode); membershipIfon.MembershipId = LockIfon.UserMemberInfoRes.SubAccountDistributedMark; if (string.IsNullOrEmpty(LockIfon.UserMemberInfoRes.UserName)) { membershipIfon.MembershipName = LockIfon.UserMemberInfoRes.Account; } else { membershipIfon.MembershipName = LockIfon.UserMemberInfoRes.UserName; } } userlist.Add(o); } userlist.Add(membershipIfon); } else { userlist = LockIfon.GetUserList(); var pra = new UserCenter.MemberListInfoPra(); string result = await UserCenter.UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeUsers/GetSubAccountByDistributedMark", false, pra); var listInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<List<UserCenter.MemberInfoRes>>(result); for (int i = 0; i < listInfo.Count; i++) { var membership = new Send.MembershipIfon(); var membershipifon = listInfo[i]; for (int j = 0; j < doorlockifonlist.Count; j++) { ///查找成员以及成员门锁触发源(1按键/3卡/15指纹) if (doorlockifonlist[j].CloudAccountId == membershipifon.SubAccountDistributedMark) { Send.LockMode lockMode = new Send.LockMode(); lockMode.OpenMode = doorlockifonlist[j].OpenLockMode; lockMode.UserId = doorlockifonlist[j].DoorLockLocalUserId; membership.UserIdMode.Add(lockMode); membership.MembershipId = membershipifon.SubAccountDistributedMark; if (string.IsNullOrEmpty(membershipifon.UserName)) { membership.MembershipName = membershipifon.Account; } else { membership.MembershipName = membershipifon.UserName; } } } if (membership.UserIdMode.Count != 0) { ///过滤掉重复数据; var str = userlist.Find((c) => { return c.MembershipId == membershipifon.SubAccountDistributedMark; }); if (str == null) { userlist.Add(membership); } } } } for (int i = 0; i < userlist.Count; i++) { var user = userlist[i]; @@ -118,12 +174,12 @@ var usernameBtn = new Button { Text = user.UserName, Text = user.MembershipName, TextAlignment = TextAlignment.CenterLeft, TextColor = ZigbeeColor.Current.LogicTextBlackColor, Width = Application.GetRealWidth(600), Height = Application.GetRealHeight(130), Tag = userlist[i].ConnectedAccount Tag = userlist[i], }; userRow.AddChidren(usernameBtn); @@ -140,8 +196,7 @@ EventHandler<MouseEventArgs> userclick = (sender, e) => { var uesrifonlist = LockIfon.GetUserIfon(usernameBtn.Tag.ToString()); SelectedUserID(uesrifonlist, usernameBtn.Text); SelectedUserID(user.UserIdMode, usernameBtn.Text); }; usernameBtn.MouseUpEventHandler += userclick; btntimeback.MouseUpEventHandler += userclick; @@ -155,9 +210,9 @@ /// <summary> /// 选择某个用户 /// </summary> /// <param name="uesrifonlist">触发源列表</param> /// <param name="membershipIfon">触发源列表</param> /// <param name="userName">用户名字</param> void SelectedUserID(List<ZigBee.Device.DoorLock.LocaDoorLockObj> uesrifonlist,string userName) { void SelectedUserID(List<Send.LockMode> membershipIfon, string userName) { var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor }; this.AddChidren(flMain); @@ -236,13 +291,13 @@ #endregion string SelectedLockStatus = ""; lockcolorfra1.Y = Application.GetRealHeight(1920 - 140 - (160 * uesrifonlist.Count) - 20 - 50); lockcolorfra1.Height = Application.GetRealHeight(140 + (160 * uesrifonlist.Count) + 20 + 50); lockcolorfra1.Y = Application.GetRealHeight(1920 - 140 - (160 * membershipIfon.Count) - 20 - 50); lockcolorfra1.Height = Application.GetRealHeight(140 + (160 * membershipIfon.Count) + 20 + 50); ///定义两个变量记录选中状态; int attriButeId = 0, attriButeData2 = 0; for (int j = 0; j < uesrifonlist.Count; j++) string attriButeId ="", attriButeData2 =""; for (int j = 0; j < membershipIfon.Count; j++) { var userid = uesrifonlist[j]; var userIdmode = membershipIfon[j]; var doorlockfra = new FrameLayout { Height = Application.GetRealHeight(160), @@ -268,19 +323,19 @@ }; doorlockRow.AddChidren(doorlockBtn); //(0按键/3卡/15指纹) switch (userid.UnlockType) switch (userIdmode.OpenMode.ToString()) { case 0: case "0": { doorlockBtn.Text = Language.StringByID(MyInternationalizationString.lockpassword); } break; case 3: case "3": { doorlockBtn.Text = Language.StringByID(MyInternationalizationString.ic); } break; case 15: case "15": { doorlockBtn.Text = Language.StringByID(MyInternationalizationString.fingerprint); } @@ -300,7 +355,7 @@ }; doorlockRow.AddChidren(doorlockSelected); if ((uesrifonlist.Count - 1) == j) if ((membershipIfon.Count - 1) == j) { doorlockRow.LineColor = ZigbeeColor.Current.LogicBackgroundColor; } @@ -311,8 +366,8 @@ selectedIcon = doorlockSelected; doorlockSelected.Visible = true; //doorlockBtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor; attriButeId = userid.UnlockType; attriButeData2 = userid.UserID; attriButeId = userIdmode.OpenMode.ToString(); attriButeData2 = userIdmode.UserId; }; doorlockRow.MouseUpEventHandler += doorlockclick; doorlockBtn.MouseUpEventHandler += doorlockclick; @@ -322,7 +377,7 @@ if (conditionsIndex != -1) { var s = Common.Logic.CurrentLogic.Conditions[conditionsIndex]; if (s["AttriButeId"] == userid.UnlockType.ToString() && s["AttriButeData2"] == userid.UserID.ToString()) if (s["AttriButeId"] == userIdmode.OpenMode.ToString() && s["AttriButeData2"] == userIdmode.UserId) { selectedIcon.Visible = false; selectedIcon = doorlockSelected; @@ -339,8 +394,8 @@ lockConditionsInfo.Add("MacAddr", LockIfon.DoorLock.DeviceAddr); lockConditionsInfo.Add("Epoint", LockIfon.DoorLock.DeviceEpoint.ToString()); lockConditionsInfo.Add("Cluster_ID", "64529"); lockConditionsInfo.Add("AttriButeId", attriButeId.ToString()); lockConditionsInfo.Add("AttriButeData2", attriButeData2.ToString()); lockConditionsInfo.Add("AttriButeId", attriButeId); lockConditionsInfo.Add("AttriButeData2", attriButeData2); lockConditionsInfo.Add("AttriButeData1", "2"); lockConditionsInfo.Add("Range", "0"); if (SelectedLockStatus != "") @@ -373,5 +428,82 @@ lockLogicCommunalPage.Show(() => { }); }; } /* public async List<Send.MembershipIfon> readuserlist(){ var userlist = new List<Send.MembershipIfon>(); ///判断APP登录进来用户身份(主人,管理员,成员) var doorlockifonlist = await Send.UserListIfon(LockIfon.DoorLock.DeviceAddr); if (UserCenter.UserCenterResourse.UserInfo.AuthorityNo == 3) { Send.MembershipIfon membershipIfon = new Send.MembershipIfon(); //var list = LockIfon.GetUserIfon(LockIfon.UserMemberInfoRes.SubAccountDistributedMark); foreach (var o in doorlockifonlist) { if (o.CloudAccountId == LockIfon.UserMemberInfoRes.SubAccountDistributedMark) { membershipIfon.MembershipId = LockIfon.UserMemberInfoRes.SubAccountDistributedMark; membershipIfon.UserIdMode.Add(o.OpenLockMode.ToString()); if (string.IsNullOrEmpty(LockIfon.UserMemberInfoRes.UserName)) { membershipIfon.MembershipName = LockIfon.UserMemberInfoRes.Account; } else { membershipIfon.MembershipName = LockIfon.UserMemberInfoRes.UserName; } } } userlist.Add(membershipIfon); } else { var pra = new UserCenter.MemberListInfoPra(); string result = await UserCenter.UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeUsers/GetSubAccountByDistributedMark", false, pra); var listInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<List<UserCenter.MemberInfoRes>>(result); for (int i = 0; i < listInfo.Count; i++) { var membership = new Send.MembershipIfon(); var membershipifon = listInfo[i]; for (int j = 0; j < doorlockifonlist.Count; j++) { ///查找成员以及成员门锁触发源(1按键/3卡/15指纹) if (doorlockifonlist[j].CloudAccountId == membershipifon.SubAccountDistributedMark) { membership.UserIdMode.Add(doorlockifonlist[j].UserIdMode); membership.MembershipId = membershipifon.SubAccountDistributedMark; if (string.IsNullOrEmpty(membershipifon.UserName)) { membership.MembershipName = membershipifon.Account; } else { membership.MembershipName = membershipifon.UserName; } } } if (membership.UserIdMode.Count != 0) { ///过滤掉重复数据; var str = userlist.Find((c) => { return c.MembershipId == membership.MembershipId; }); if (str == null) { userlist.Add(membership); } } } } return userlist; } */ } } ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/LockIfon.cs
@@ -9,55 +9,11 @@ /// <summary> /// 当前门锁 /// </summary> public static ZigBee.Device.DoorLock DoorLock=null; public static ZigBee.Device.DoorLock DoorLock = null; /// <summary> /// 当前成员的信息 /// 当前用户的信息 /// </summary> public static UserCenter.MemberInfoRes UserMemberInfoRes = null; /// <summary> /// 获取门锁所有的成员 /// </summary> /// <returns></returns> public static List<ZigBee.Device.DoorLock.LocaDoorLockObj> GetUserList() { var locaDoorLockObjlist = new List<ZigBee.Device.DoorLock.LocaDoorLockObj>(); locaDoorLockObjlist.Clear(); foreach (var dictionary in DoorLock.localDoorLockUserList) { if (string.IsNullOrEmpty(dictionary.Value.ConnectedAccount)) { //不知道传过来ConnectedAccount为什么为空,防止抛异常; continue; } var @null = locaDoorLockObjlist.Find((o) => { return o.ConnectedAccount == dictionary.Value.ConnectedAccount; }); if (@null == null) { locaDoorLockObjlist.Add(dictionary.Value); } } return locaDoorLockObjlist; } /// <summary> /// 获取门锁某个成员的信息 /// </summary> /// <returns></returns> public static List<ZigBee.Device.DoorLock.LocaDoorLockObj> GetUserIfon(string SubAccountDistributedMark) { var locaDoorLockObjlist = new List<ZigBee.Device.DoorLock.LocaDoorLockObj>(); locaDoorLockObjlist.Clear(); foreach (var dictionary in DoorLock.localDoorLockUserList) { if (string.IsNullOrEmpty(dictionary.Value.ConnectedAccount)) { //不知道传过来ConnectedAccount为什么为空,防止抛异常; continue; } if (dictionary.Value.ConnectedAccount ==SubAccountDistributedMark) { locaDoorLockObjlist.Add(dictionary.Value); } } return locaDoorLockObjlist; } } } ZigbeeApp/Shared/Phone/Device/Logic/MemberList.cs
@@ -211,7 +211,7 @@ lockcolorfra1.Height = Application.GetRealHeight(140 + (160 * user.UserIdMode.Count) + 20 + 50); for (int i = 0; i < user.UserIdMode.Count; i++) { var userid = user.UserIdMode[i]; var userifon = user.UserIdMode[i]; var doorlockfra = new FrameLayout { Height = Application.GetRealHeight(160), @@ -237,8 +237,7 @@ }; doorlockRow.AddChidren(doorlockBtn); //(1按键/3卡/15指纹) string[] s = userid.Split('_'); switch (s[1]) switch (userifon.OpenMode.ToString()) { case "0": { @@ -286,8 +285,8 @@ { deviceConditionsInfo.Remove("AttriButeData2"); } deviceConditionsInfo.Add("AttriButeId", s[1]); deviceConditionsInfo.Add("AttriButeData2", s[0]); deviceConditionsInfo.Add("AttriButeId", userifon.OpenMode.ToString()); deviceConditionsInfo.Add("AttriButeData2", userifon.UserId); if (userdictionary.ContainsKey("Account")) { @@ -303,7 +302,7 @@ } userdictionary.Add("Account", Btntitle.Text+doorlockBtn.Text); userdictionary.Add("Type", "1"); userdictionary.Add("UserId", s[0]); userdictionary.Add("UserId", userifon.UserId); }; doorlockRow.MouseUpEventHandler += doorlockclick; doorlockBtn.MouseUpEventHandler += doorlockclick; @@ -311,7 +310,7 @@ doorlockfra.MouseUpEventHandler += doorlockclick; if (edit) { if (editdeviceConditionsInfo["AttriButeData2"] == s[1]) if (editdeviceConditionsInfo["AttriButeData2"] == userifon.OpenMode.ToString()) { selectedIcon.Visible = false; selectedIcon = doorlockSelected; ZigbeeApp/Shared/Phone/Device/Logic/Send.cs
@@ -609,7 +609,7 @@ logic.IsEnable = int.Parse(Logicifon["IsEnable"].ToString()); logic.LogicName = Logicifon["LogicName"].ToString(); logic.LogicType = int.Parse(Logicifon["LogicType"].ToString()); logic.Relationship = int.Parse(Logicifon["Relationship"].ToString()); logic.Relationship = int.Parse(Logicifon["Relationship"].ToString()); logic.TimeAttribute = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.TimeAttributeObj>(Logicifon["TimeAttribute"].ToString()); logic.Conditions = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(Logicifon["Conditions"].ToString()); logic.Accounts = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(Logicifon["Accounts"].ToString()); @@ -712,12 +712,12 @@ return Common.Room.Lists.FindAll((obj) => obj.FloorId == floorId); } # endregion #endregion #region ----获取门锁 public static List<DoorLock> ReadDoorLockIfon(string doorlockMac) public static List<LogicLock> ReadDoorLockIfon(string doorlockMac) { List<DoorLock> list = new List<DoorLock>(); List<LogicLock> list = new List<LogicLock>(); string url = "https://global.hdlcontrol.com/HangZhouHdlCloudApi/App/GetHomePager";//子账号和主账号可能链接不同 System.Net.WebClient webClient = new System.Net.WebClient(); System.Collections.Specialized.NameValueCollection postValues = new System.Collections.Specialized.NameValueCollection(); @@ -784,9 +784,9 @@ } public static List<DoorLock> ReadToken(Residential residential) public static List<LogicLock> ReadToken(Residential residential) { List<DoorLock> list = new List<DoorLock>(); List<LogicLock> list = new List<LogicLock>(); string url = "https://global.hdlcontrol.com/HangZhouHdlCloudApi/App/GetSharedHomeApiControl"; System.Net.WebClient webClient = new System.Net.WebClient(); System.Collections.Specialized.NameValueCollection postValues = new System.Collections.Specialized.NameValueCollection(); @@ -829,9 +829,9 @@ return list; } public static List<DoorLock> ReadDoorLock(Residential lockifon) public static List<LogicLock> ReadDoorLock(Residential lockifon) { List<DoorLock> list = new List<DoorLock>(); List<LogicLock> list = new List<LogicLock>(); System.Net.WebClient webClient = new System.Net.WebClient(); System.Collections.Specialized.NameValueCollection postValues = new System.Collections.Specialized.NameValueCollection(); postValues.Add("RequestVersion", CommonPage.RequestVersion); @@ -856,7 +856,7 @@ for (int i = 0; i < datalist.Count; i++) { var data = JObject.Parse(datalist[i].ToString()); DoorLock doorLock = new DoorLock(); LogicLock doorLock = new LogicLock(); doorLock.DoorLockLocalUserId = data["DoorLockLocalUserId"].ToString(); doorLock.OpenLockMode = int.Parse(data["OpenLockMode"].ToString()); doorLock.CloudAccountId = data["CloudAccountId"].ToString(); @@ -864,13 +864,13 @@ } } catch(Exception e) catch (Exception e) { var s = e.Message; } }); var datetime = DateTime.Now; var datetime = DateTime.Now; while ((DateTime.Now - datetime).TotalMilliseconds < 3 * 1000) { if (list.Count != 0) @@ -881,54 +881,17 @@ return list; } public class Residential #region ---第2种 public static async System.Threading.Tasks.Task<List<LogicLock>> UserListIfon(string doorlockMac) { public string Id = string.Empty; public bool IsOthreShare; public string MainUserDistributedMark = string.Empty; public string Url = string.Empty; public string Token = string.Empty; public bool IsOtherAccountCtrl; public string doorlockmac; } public class DoorLock { public string DoorLockLocalUserId = string.Empty; public int OpenLockMode; public string CloudAccountId = string.Empty; /// <summary> /// 身份+触发源(0按键/3卡/15指纹) /// </summary> public string UserIdMode { get { return DoorLockLocalUserId + "_" + OpenLockMode.ToString(); } } } public class MembershipIfon { public string MembershipId = string.Empty; public List<string> UserIdMode = new List<string>(); public string MembershipName = string.Empty; } public static List<MembershipIfon> UserList = new List<MembershipIfon>(); #endregion /* public async System.Threading.Tasks.Task<List<>> a() { string url = "https://global.hdlcontrol.com/HangZhouHdlCloudApi/App/GetHomePager"; System.Collections.Specialized.NameValueCollection postValues = new System.Collections.Specialized.NameValueCollection(); postValues.Add("RequestVersion", CommonPage.RequestVersion); postValues.Add("ReqDto.LoginAccessToken", Config.Instance.Token); var str = await WebClientAsync(postValues, url); var jObject = JObject.Parse(str); List<LogicLock> list = new List<LogicLock>(); var s = await ReadUserList(doorlockMac); var jObject = JObject.Parse(s); if (jObject == null || jObject["StateCode"].ToString() != "Success") { return null; @@ -938,63 +901,19 @@ for (int i = 0; i < datalist.Count; i++) { var data = JObject.Parse(datalist[i].ToString()); if (Config.Instance.HomeId == data["Id"].ToString()) { Residential residential = new Residential(); if (Convert.ToBoolean(data["IsOthreShare"].ToString())) { //分享者ID residential.Id = data["Id"].ToString(); //是否是分享账号[true(是分享);false;(不是分享)]; residential.IsOthreShare = Convert.ToBoolean(data["IsOthreShare"].ToString()); //分享者住宅ID residential.MainUserDistributedMark = data["MainUserDistributedMark"].ToString(); residential.IsOtherAccountCtrl = true; //residential.doorlockmac = doorlockMac; //list = ReadToken(residential); } else { residential.Url = "https://global.hdlcontrol.com/HangZhouHdlCloudApi/DoorLock/GetDoorLockPager"; residential.Token = Config.Instance.Token; residential.Id = Config.Instance.HomeId; residential.IsOtherAccountCtrl = false; //residential.doorlockmac = doorlockMac; //list = ReadDoorLock(residential); } } LogicLock doorLock = new LogicLock(); doorLock.DoorLockLocalUserId = data["DoorLockLocalUserId"].ToString(); doorLock.OpenLockMode = int.Parse(data["OpenLockMode"].ToString()); doorLock.CloudAccountId = data["CloudAccountId"].ToString(); list.Add(doorLock); } return list; } public async System.Threading.Tasks.Task<string> aa(int value, string url, Residential residential = null) public static async System.Threading.Tasks.Task<string> ReadUserList(string doorlockMac) { NameValueCollection postValues = new NameValueCollection(); if (value == 1) { } else if (value == 2) { postValues.Add("RequestVersion", CommonPage.RequestVersion); postValues.Add("LoginAccessToken", Config.Instance.Token); postValues.Add("MainAccountId", residential.MainUserDistributedMark); postValues.Add("SharedHid", residential.Id); } else { postValues.Add("RequestVersion", CommonPage.RequestVersion); postValues.Add("ReqDto.LoginAccessToken", Config.Instance.Token); } return await WebClientAsync(postValues, url); } public async System.Threading.Tasks.Task<string> aaa(NameValueCollection postValues, string url) { var str = await aa(0, "https://global.hdlcontrol.com/HangZhouHdlCloudApi/App/GetHomePager"); string s = null; var str = await WebClientAsync(0, "https://global.hdlcontrol.com/HangZhouHdlCloudApi/App/GetHomePager"); var jObject = JObject.Parse(str); if (jObject == null || jObject["StateCode"].ToString() != "Success") { @@ -1017,10 +936,9 @@ //分享者住宅ID residential.MainUserDistributedMark = data["MainUserDistributedMark"].ToString(); residential.IsOtherAccountCtrl = true; //residential.doorlockmac = doorlockMac; //list = ReadToken(residential); var str = await WebClientAsync(residential, postValues, url); residential.doorlockmac = doorlockMac; residential.Url = "https://global.hdlcontrol.com/HangZhouHdlCloudApi/App/GetSharedHomeApiControl"; s = await ReadUserDoorLock(residential); } else { @@ -1028,13 +946,34 @@ residential.Token = Config.Instance.Token; residential.Id = Config.Instance.HomeId; residential.IsOtherAccountCtrl = false; //residential.doorlockmac = doorlockMac; var str = await WebClientAsync(postValues, url); residential.doorlockmac = doorlockMac; s = await WebClientAsync(2, residential.Url, residential); } } } } return s; } public static async System.Threading.Tasks.Task<string> ReadUserDoorLock(Residential residential) { var s = await WebClientAsync(1, residential.Url, residential); var jObject = JObject.Parse(s); if (jObject == null || jObject["StateCode"].ToString() != "Success") { return null; } var RequestBaseUrl = jObject["ResponseData"]["RequestBaseUrl"].ToString(); var RequestToken = jObject["ResponseData"]["RequestToken"].ToString(); Residential lockifon = new Residential(); lockifon.Url = RequestBaseUrl + "/DoorLock/GetDoorLockPager"; lockifon.Token = RequestToken; lockifon.Id = Config.Instance.HomeId; lockifon.IsOtherAccountCtrl = true; lockifon.doorlockmac = residential.doorlockmac; return await WebClientAsync(2, lockifon.Url, lockifon); } /// <summary> @@ -1043,13 +982,107 @@ /// <param name="postValues">post参数</param> /// <param name="url"></param> /// <returns></returns> public async System.Threading.Tasks.Task<string> WebClientAsync(NameValueCollection postValues, string url) public static async System.Threading.Tasks.Task<string> WebClientAsync(int value, string url, Residential residential = null) { NameValueCollection postValues = new NameValueCollection(); if (value == 0) { postValues.Add("RequestVersion", CommonPage.RequestVersion); postValues.Add("ReqDto.LoginAccessToken", Config.Instance.Token); } else if (value == 1) { postValues.Add("RequestVersion", CommonPage.RequestVersion); postValues.Add("LoginAccessToken", Config.Instance.Token); postValues.Add("MainAccountId", residential.MainUserDistributedMark); postValues.Add("SharedHid", residential.Id); } else if (value == 2) { postValues.Add("RequestVersion", CommonPage.RequestVersion); postValues.Add("LoginAccessToken", residential.Token); postValues.Add("HomeId", residential.Id); postValues.Add("DoorLockId", residential.doorlockmac);//门锁Mac postValues.Add("IsOtherAccountCtrl", residential.IsOtherAccountCtrl.ToString()); } System.Net.WebClient webClient = new System.Net.WebClient(); byte[] responseArray = webClient.UploadValues(url, postValues); return System.Text.Encoding.UTF8.GetString(responseArray); } */ #endregion public class Residential { /// <summary> /// 住宅ID /// </summary> public string Id = string.Empty; /// <summary> /// 当前住宅是不是其他主帐号分享过来的 /// </summary> public bool IsOthreShare; /// <summary> /// 当前住宅是不是其他主帐号分享过来的主帐号的分布式Id /// </summary> public string MainUserDistributedMark = string.Empty; public string Url = string.Empty; public string Token = string.Empty; public bool IsOtherAccountCtrl; /// <summary> /// 当前门锁mac /// </summary> public string doorlockmac; } public class LogicLock { /// <summary> /// 触发源ID /// </summary> public string DoorLockLocalUserId = string.Empty; /// <summary> /// 触发源模式(0:密码;3:卡;15:指纹;) /// </summary> public int OpenLockMode; /// <summary> /// 识别用户身份 /// </summary> public string CloudAccountId = string.Empty; } public class MembershipIfon { /// <summary> /// 识别用户身份 /// </summary> public string MembershipId = string.Empty; /// <summary> /// 触发源ID+模式(0:密码;3:卡;15:指纹;) /// </summary> public List<LockMode> UserIdMode = new List<LockMode>(); /// <summary> /// 用户昵称 /// </summary> public string MembershipName = string.Empty; } public class LockMode { /// <summary> /// 触发源ID /// </summary> public string UserId = string.Empty; /// <summary> /// 触发源模式(0:密码;3:卡;15:指纹;) /// </summary> public int OpenMode; } public static List<MembershipIfon> UserList = new List<MembershipIfon>(); #endregion } } ZigbeeApp/Shared/Phone/Device/Logic/TemplateDeviceCondition.cs
@@ -1361,8 +1361,7 @@ case DeviceType.DoorLock: { #region ------ var doorlockifonlist = Send.ReadDoorLockIfon("ccccccfffe300347"); //var list = Send.ReadDoorLockIfon(common.DeviceAddr); var doorlockifonlist = await Send.UserListIfon(common.DeviceAddr); var pra = new UserCenter.MemberListInfoPra(); string result = await UserCenter.UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeUsers/GetSubAccountByDistributedMark", false, pra); var listInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<List<UserCenter.MemberInfoRes>>(result); @@ -1376,9 +1375,20 @@ ///查找成员以及成员门锁触发源(1按键/3卡/15指纹) if (doorlockifonlist[j].CloudAccountId == membershipifon.SubAccountDistributedMark) { membership.UserIdMode.Add(doorlockifonlist[j].UserIdMode); membership.MembershipName = membershipifon.UserName; var lockMode = new Send.LockMode(); lockMode.UserId = doorlockifonlist[j].DoorLockLocalUserId; lockMode.OpenMode = doorlockifonlist[j].OpenLockMode; membership.UserIdMode.Add(lockMode); membership.MembershipId = membershipifon.SubAccountDistributedMark; if (string.IsNullOrEmpty(membershipifon.UserName)) { membership.MembershipName = membershipifon.Account; } else { membership.MembershipName = membershipifon.UserName; } } @@ -1386,7 +1396,7 @@ if (membership.UserIdMode.Count != 0) { ///过滤掉重复数据; var str = Send.UserList.Find((c) => { return c.MembershipId == membership.MembershipId; }); var str = Send.UserList.Find((c) => { return c.MembershipId == membershipifon.SubAccountDistributedMark; }); if (str == null) { Send.UserList.Add(membership);