From e90209beae6a4e822cecb18e6889f8bda23f630e Mon Sep 17 00:00:00 2001 From: 黄学彪 <hxb@hdlchina.com.cn> Date: 星期一, 14 十二月 2020 11:16:06 +0800 Subject: [PATCH] 合并了晾衣架(非新云端) --- ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayLogic.cs | 488 ++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 360 insertions(+), 128 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/Common/Logic/HdlGatewayLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayLogic.cs similarity index 82% rename from ZigbeeApp/Shared/Phone/Common/Logic/HdlGatewayLogic.cs rename to ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayLogic.cs index 1429709..4513675 100644 --- a/ZigbeeApp/Shared/Phone/Common/Logic/HdlGatewayLogic.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayLogic.cs @@ -5,7 +5,7 @@ using System.Threading.Tasks; using ZigBee.Device; -namespace Shared.Phone +namespace Shared.Phone.UserCenter { /// <summary> /// 缃戝叧涓氬姟鐨勯�昏緫绫� @@ -79,25 +79,25 @@ /// </summary> public void RefreshAppOldSelectGatewayId() { - HdlGatewayResourse.AppOldSelectGatewayId = string.Empty; + GatewayResourse.AppOldSelectGatewayId = string.Empty; //浠庢枃浠朵腑鑾峰彇涓婁竴娆¢�夋嫨鐨勭綉鍏砳d - byte[] data = HdlFileLogic.Current.ReadFileByteContent(HdlFileNameResourse.AppOldSelectGatewayFile); + byte[] data = HdlFileLogic.Current.ReadFileByteContent(DirNameResourse.AppOldSelectGatewayFile); if (data != null) { string strvalue = System.Text.Encoding.UTF8.GetString(data); - HdlGatewayResourse.AppOldSelectGatewayId = JsonConvert.DeserializeObject<string>(strvalue); + GatewayResourse.AppOldSelectGatewayId = JsonConvert.DeserializeObject<string>(strvalue); } //濡傛灉鏈湴娌℃湁杩欎釜缃戝叧鐨勮瘽 - if (this.IsGatewayExist(HdlGatewayResourse.AppOldSelectGatewayId) == false) + if (this.IsGatewayExist(GatewayResourse.AppOldSelectGatewayId) == false) { - HdlGatewayResourse.AppOldSelectGatewayId = string.Empty; + GatewayResourse.AppOldSelectGatewayId = string.Empty; lock (dicGateway) { //闅忎究閫変竴涓綉鍏� foreach (string wayId in this.dicGateway.Keys) { - HdlGatewayResourse.AppOldSelectGatewayId = wayId; + GatewayResourse.AppOldSelectGatewayId = wayId; break; } } @@ -111,14 +111,14 @@ public void SynchronizeDbGateway() { //浠庝簯绔幏鍙栫綉鍒楄〃ID - Dictionary<string, GatewayResult> result = this.GetGateWayListFromDataBase(); + Dictionary<string, GatewayResult> result = HdlGatewayLogic.Current.GetGateWayListFromDataBase(); if (result == null) { return; } List<string> listBackupGwId = new List<string>(); - var fileData = HdlFileLogic.Current.ReadFileByteContent(HdlFileNameResourse.BackupGatewayIdFile); + var fileData = HdlFileLogic.Current.ReadFileByteContent(DirNameResourse.BackupGatewayIdFile); if (fileData != null) { //鏂板锛氳櫧鐒舵鐜囦綆锛屼絾鏄‘瀹炲彂鐢熶簡銆傚鏋滄湁缃戠粶鏃讹紝App閲嶆柊缁戝畾璁板綍鐨勭綉鍏冲け璐ョ殑璇� @@ -138,13 +138,13 @@ foreach (var gatewayId in listDelete) { //鍒犻櫎鏈湴杩欎釜缃戝叧鎵�鏈夌殑璁惧 - List<CommonDevice> list = HdlDeviceCommonLogic.Current.GetDeviceByGatewayID(gatewayId); + List<CommonDevice> list = Common.LocalDevice.Current.GetDeviceByGatewayID(gatewayId); foreach (var device in list) { //鍒犻櫎涓�鑸澶� - HdlDeviceCommonLogic.Current.DeleteMemmoryDevice(device, true); + Common.LocalDevice.Current.DeleteMemmoryDevice(device, true); //鍒犻櫎Ota璁惧 - HdlDeviceCommonLogic.Current.DeleteMemmoryOtaDevice(device.DeviceAddr); + Common.LocalDevice.Current.DeleteMemmoryOtaDevice(device.DeviceAddr); } //鍒犻櫎缃戝叧鏂囦欢 this.DeleteGatewayFile(gatewayId); @@ -204,7 +204,7 @@ public bool AddNewGateway(ZbGateway zbGateway, ShowErrorMode mode, WriteLogMode logMode = WriteLogMode.NO) { //璁剧疆缃戝叧鐨勭粡绾害 - bool falge = this.SetGatewaySite(zbGateway.GwId, Common.Config.Instance.Home.Longitude, Common.Config.Instance.Home.Latitude, ShowErrorMode.NO); + bool falge = this.SetGatewaySite(zbGateway, Common.Config.Instance.Home.Longitude, Common.Config.Instance.Home.Latitude, ShowErrorMode.NO); if (falge == false) { if (logMode == WriteLogMode.YES) @@ -310,7 +310,7 @@ //璁剧疆浣忓畢ID鍒扮綉鍏� if (result.HomeId != Common.Config.Instance.HomeId) { - bool flage2 = this.SetHomeIdToGateway(zbGateway, Common.Config.Instance.HomeId, mode); + bool flage2 = this.SetHomeIdToGateway(zbGateway.GwId, Common.Config.Instance.HomeId, mode); if (flage2 == false) { if (mode == ShowErrorMode.YES) @@ -328,7 +328,7 @@ } //鏇存柊浜戠鏁版嵁搴� - int flage1 = this.SetGatewayIdToDataBase(zbGateway.GwId); + int flage1 = this.SetGatewayIdToDataBase(zbGateway); //寮傚父涔熶笉楦熷畠,0鏄壒娈婂惈涔� if (flage1 == 0) { @@ -370,22 +370,30 @@ /// <summary> /// 璁剧疆浣忓畢ID鍒扮綉鍏�(澶辫触鏃�,涓嶅脊鍑轰换浣曢敊璇俊鎭�,缃戝叧鏂綉闄ゅ) /// </summary> - /// <param name="zbGateway"></param> + /// <param name="i_gwId"></param> /// <param name="HomeId"></param> /// <returns></returns> - public bool SetHomeIdToGateway(ZbGateway zbGateway, string HomeId, ShowErrorMode mode) + public bool SetHomeIdToGateway(string i_gwId, string HomeId, ShowErrorMode mode) { //璐﹀彿ID string accountId = string.Empty; if (HomeId != string.Empty) { - accountId = Config.Instance.Guid; + if (UserCenterResourse.UserInfo.AuthorityNo == 1) + { + //涓昏处鍙� + accountId = Config.Instance.Guid; + } + else + { + accountId = Config.Instance.Home.MainUserDistributedMark; + } } var jObject = new Newtonsoft.Json.Linq.JObject { { "Cluster_ID", 0 }, { "Command", 82 } }; var data = new Newtonsoft.Json.Linq.JObject { { "HomeId", HomeId }, { "AccountId", accountId } }; jObject.Add("Data", data); //浣忓畢ID鐨勮缃�,鍥哄畾浣跨敤灞�鍩熺綉,涓嶅瓨鍦ㄨ繙绋嬬殑璇存硶 - var result = this.SendJobjectDataToGateway(zbGateway.GwId, "GwSetHomeId", jObject.ToString(), "GwSetHomeId_Respon", 5, true); + var result = this.SendJobjectDataToGateway(i_gwId, "GwSetHomeId", jObject.ToString(), "GwSetHomeId_Respon", 5, true); if (result.ErrorMsgDiv == -1) { if (mode == ShowErrorMode.YES) @@ -401,6 +409,32 @@ return false; } return true; + } + + /// <summary> + /// 鏇存柊缃戝叧ID鍒颁簯绔暟鎹簱(1:姝e父 -1:寮傚父 0:褰撳墠鐨勭綉鍏崇粦瀹氬湪浜嗗綋鍓嶈处鍙蜂笅鐨勪笉鍚屼綇瀹呴噷闈�) + /// </summary> + /// <param name="zbGateway">缃戝叧瀵硅薄</param> + /// <returns></returns> + private int SetGatewayIdToDataBase(ZbGateway zbGateway) + { + //璋冪敤鎺ュ彛锛岀粦瀹氱綉鍏�(鍗充娇澶辫触锛屼篃杩斿洖true寰�涓嬭蛋) + var bindGateway = new BindGatewayPra(); + bindGateway.BindGateways.Add(zbGateway.GwId); + //鑾峰彇鎺у埗涓讳汉璐﹀彿鐨凾oken + bindGateway.LoginAccessToken = UserCenterLogic.GetConnectMainToken(); + + var result = UserCenterLogic.GetResultCodeByRequestHttps("App/BindGatewayToHome", true, bindGateway, new List<string> { "NotCheck" }, false); + if (result == "Error") + { + return -1; + } + if (result == "BindGatewaysExists") + { + return 0; + } + + return result == "Success" ? 1 : -1; } /// <summary> @@ -446,14 +480,14 @@ return -1; } //璁剧疆缃戝叧鐨勭粡绾害 - bool falge = this.SetGatewaySite(zbGateway.GwId, Common.Config.Instance.Home.Longitude, Common.Config.Instance.Home.Latitude, ShowErrorMode.YES); + bool falge = this.SetGatewaySite(zbGateway, Common.Config.Instance.Home.Longitude, Common.Config.Instance.Home.Latitude, ShowErrorMode.YES); if (falge == false) { return -1; } //璁剧疆浣忓畢ID鍒扮綉鍏� - bool flage2 = this.SetHomeIdToGateway(zbGateway, Common.Config.Instance.HomeId, ShowErrorMode.YES); + bool flage2 = this.SetHomeIdToGateway(zbGateway.GwId, Common.Config.Instance.HomeId, ShowErrorMode.YES); if (flage2 == false) { //鍚戠綉鍏宠缃綇瀹匢D澶辫触 @@ -463,7 +497,7 @@ } //鏇存柊浜戠鏁版嵁搴� - int flage1 = this.SetGatewayIdToDataBase(zbGateway.GwId); + int flage1 = this.SetGatewayIdToDataBase(zbGateway); //寮傚父涔熶笉楦熷畠,0鏄壒娈婂惈涔� if (flage1 == 0) { @@ -472,7 +506,7 @@ if (flage1 == -1) { //澶囦唤澶辫触鐨勭綉鍏矷D - this.BackupGatewayIdOnNotNetwork(zbGateway); + HdlGatewayLogic.Current.BackupGatewayIdOnNotNetwork(zbGateway); } if (btnMsg == null) @@ -587,7 +621,7 @@ //缃戝叧鍚嶇О淇敼澶辫触 string msg = Language.StringByID(R.MyInternationalizationString.uGatewayReNameFail); //缃戝叧鍥炲瓒呮椂 - msg = HdlCommonLogic.Current.CombineGatewayTimeOutMsg(msg, null, "鍥炲瓒呮椂"); + msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, null, "鍥炲瓒呮椂"); this.ShowTipMsg(msg); return false; } @@ -683,7 +717,7 @@ } //鑾峰彇鍏ㄩ儴璁惧 - int result = HdlDeviceCommonLogic.Current.SetDeviceToMemmoryByGateway(realWay.GwId, false); + int result = LocalDevice.Current.SetDeviceToMemmoryByGateway(realWay.GwId, false); //鍏抽棴杩涘害鏉� ProgressBar.Close(); if (result == -1) @@ -699,8 +733,8 @@ /// <param name="gatewayId"></param> public void SaveGatewayIdToLocation(string gatewayId) { - HdlGatewayResourse.AppOldSelectGatewayId = gatewayId; - HdlFileLogic.Current.SaveFileContent(HdlFileNameResourse.AppOldSelectGatewayFile, HdlGatewayResourse.AppOldSelectGatewayId); + GatewayResourse.AppOldSelectGatewayId = gatewayId; + HdlFileLogic.Current.SaveFileContent(DirNameResourse.AppOldSelectGatewayFile, GatewayResourse.AppOldSelectGatewayId); } #endregion @@ -718,7 +752,7 @@ //娓呯┖缃戝叧鐨勪綇瀹匢D 缃戝叧瑙g粦澶辫触 涓嶇悊瀹�,鍥犱负缃戝叧鍙互鎸夋寜閿己鍒舵悳绱㈠緱鍒� if (realWay != null) { - this.SetHomeIdToGateway(realWay, string.Empty, ShowErrorMode.NO); + this.SetHomeIdToGateway(realWay.GwId, string.Empty, ShowErrorMode.NO); } //鍒犻櫎浜戠鐨勭綉鍏� @@ -761,18 +795,18 @@ HdlAutoBackupLogic.DeleteFile(file); //鍒犻櫎璁惧鏂囦欢 - List<CommonDevice> list = HdlDeviceCommonLogic.Current.GetDeviceByGatewayID(zbGatewayID); + List<CommonDevice> list = Common.LocalDevice.Current.GetDeviceByGatewayID(zbGatewayID); foreach (var device in list) { //鍒犻櫎璁惧鏂囦欢 - HdlDeviceCommonLogic.Current.DeleteMemmoryDevice(device, true); + Common.LocalDevice.Current.DeleteMemmoryDevice(device, true); //鍒犻櫎Ota璁惧 - HdlDeviceCommonLogic.Current.DeleteMemmoryOtaDevice(device.DeviceAddr); + Common.LocalDevice.Current.DeleteMemmoryOtaDevice(device.DeviceAddr); } //濡傛灉鏄富缃戝叧 if (this.IsMainGateway(zbGatewayID) == 1) { - var listAllRoom = HdlRoomLogic.Current.GetAllListRooms(); + var listAllRoom = UserCenter.HdlRoomLogic.Current.GetAllListRooms(); foreach (var room in listAllRoom) { //鍒犻櫎鍦烘櫙鏂囦欢 @@ -1089,7 +1123,7 @@ { //鑾峰彇鍗忚皟鍣ㄤ俊閬撳け璐� string msg = Language.StringByID(R.MyInternationalizationString.uGetGatewayChannelIdFail); - msg = HdlCommonLogic.Current.CombineGatewayTimeOutMsg(msg, null, "鍥炲瓒呮椂"); + msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, null, "鍥炲瓒呮椂"); this.ShowTipMsg(msg); } @@ -1141,7 +1175,7 @@ { //鑾峰彇鍗忚皟鍣∕ac澶辫触 string msg = Language.StringByID(R.MyInternationalizationString.uGetGatewayCoordinatorMacFail); - msg = HdlCommonLogic.Current.CombineGatewayTimeOutMsg(msg, null, "鍥炲瓒呮椂"); + msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, null, "鍥炲瓒呮椂"); this.ShowTipMsg(msg); } @@ -1193,7 +1227,7 @@ { //鑾峰彇鍗忚皟鍣≒anID澶辫触 string msg = Language.StringByID(R.MyInternationalizationString.uGetGatewayPanIDFail); - msg = HdlCommonLogic.Current.CombineGatewayTimeOutMsg(msg, null, "鍥炲瓒呮椂"); + msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, null, "鍥炲瓒呮椂"); this.ShowTipMsg(msg); } @@ -1247,7 +1281,7 @@ { //鑾峰彇缃戝叧鑷姩澶囦唤璁剧疆澶辫触 string msg = Language.StringByID(R.MyInternationalizationString.uGetGatewayAutoBackupStatuFail); - msg = HdlCommonLogic.Current.CombineGatewayTimeOutMsg(msg, null, "鍥炲瓒呮椂"); + msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, null, "鍥炲瓒呮椂"); this.ShowTipMsg(msg); } @@ -1298,7 +1332,7 @@ { //璁剧疆缃戝叧鑷姩澶囦唤澶辫触 string msg = Language.StringByID(R.MyInternationalizationString.uSetGatewayAutoBackupStatuFail); - msg = HdlCommonLogic.Current.CombineGatewayTimeOutMsg(msg, null, "鍥炲瓒呮椂"); + msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, null, "鍥炲瓒呮椂"); this.ShowTipMsg(msg); return false; } @@ -1332,7 +1366,7 @@ return name; } - var nameContent = HdlDeviceCommonLogic.Current.GetDeviceModelIdNameInfo(localWay.LinuxImageType.ToString()); + var nameContent = LocalDevice.Current.GetDeviceModelIdNameInfo(localWay.LinuxImageType.ToString()); if (nameContent != null) { return nameContent.A澶囨敞鍚嶅瓧; @@ -1372,7 +1406,7 @@ //濡傛灉杩欎釜缃戝叧娌℃湁淇℃伅锛屽垯浠庢柊鑾峰彇 if (zbGateway.LinuxImageType != -1) { - var nameContent = HdlDeviceCommonLogic.Current.GetDeviceModelIdNameInfo(zbGateway.LinuxImageType.ToString()); + var nameContent = LocalDevice.Current.GetDeviceModelIdNameInfo(zbGateway.LinuxImageType.ToString()); if (nameContent != null) { button.Text = nameContent.A瀹樻柟鍚嶅瓧; @@ -1391,7 +1425,7 @@ HdlThreadLogic.Current.RunMain(() => { - var nameContent = HdlDeviceCommonLogic.Current.GetDeviceModelIdNameInfo(zbGateway.LinuxImageType.ToString()); + var nameContent = LocalDevice.Current.GetDeviceModelIdNameInfo(zbGateway.LinuxImageType.ToString()); if (nameContent != null) { button.Text = nameContent.A瀹樻柟鍚嶅瓧; @@ -1403,7 +1437,7 @@ } else { - var nameContent = HdlDeviceCommonLogic.Current.GetDeviceModelIdNameInfo(zbGateway.LinuxImageType.ToString()); + var nameContent = LocalDevice.Current.GetDeviceModelIdNameInfo(zbGateway.LinuxImageType.ToString()); if (nameContent != null) { button.Text = nameContent.A瀹樻柟鍚嶅瓧; @@ -1435,7 +1469,7 @@ //鑾峰彇缃戝叧淇℃伅澶辫触 string msg = Language.StringByID(R.MyInternationalizationString.uGetGatewayInfoFail); //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg - msg = HdlCommonLogic.Current.CombineGatewayTimeOutMsg(msg, null, "鍥炲瓒呮椂"); + msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, null, "鍥炲瓒呮椂"); this.ShowErrorMsg(msg); } return null; @@ -1463,6 +1497,8 @@ /// <param name="saveFile">鏄惁淇濆瓨鏂囦欢</param> private void SetGatewayDataToLocalMemmory(ZbGateway localWay, ZbGatewayData.GetGwData data, bool saveFile = true) { + if (data == null) { return; } + localWay.GwId = data.GwId; localWay.GwName = data.GwName; localWay.GwSerialNum = data.GWSN; @@ -1553,7 +1589,7 @@ } //娣诲姞缃戝叧鐨勫崌绾у浐浠�(鎴愪笉鎴愬姛閮芥棤鎵�璋�) - var flage = HdlFirmwareUpdateLogic.Current.AddFirmwareVersionInfo(FirmwareLevelType.Linux, + var flage = HdlFirmwareUpdateLogic.AddFirmwareVersionInfo(FirmwareLevelType.Linux, localWay.LinuxHardVersion.ToString(), localWay.LinuxImageType.ToString()); @@ -1561,19 +1597,19 @@ if (flage == 1) { //娌$綉鐨勬椂鍊欎笉鍐嶅鐞� - HdlFirmwareUpdateLogic.Current.AddFirmwareVersionInfo(FirmwareLevelType.A鍗忚皟鍣�, + HdlFirmwareUpdateLogic.AddFirmwareVersionInfo(FirmwareLevelType.A鍗忚皟鍣�, localWay.CoordinatorHardVersion.ToString(), localWay.CoordinatorImageId.ToString()); } //缃戝叧鐨勭増鏈� - var gatewayFirmware = HdlFirmwareUpdateLogic.Current.GetFirmwareMostVersionInfo(FirmwareLevelType.Linux, + var gatewayFirmware = HdlFirmwareUpdateLogic.GetFirmwareMostVersionInfo(FirmwareLevelType.Linux, localWay.LinuxHardVersion.ToString(), localWay.LinuxImageType.ToString(), localWay.LinuxFirmwareVersion); //鍗忚皟鍣ㄧ増鏈� - var coordinatorFirmware = HdlFirmwareUpdateLogic.Current.GetFirmwareMostVersionInfo(FirmwareLevelType.A鍗忚皟鍣�, + var coordinatorFirmware = HdlFirmwareUpdateLogic.GetFirmwareMostVersionInfo(FirmwareLevelType.A鍗忚皟鍣�, localWay.CoordinatorHardVersion.ToString(), localWay.CoordinatorImageId.ToString(), localWay.CoordinatorFirmwareVersion); @@ -1583,7 +1619,7 @@ list.Add(coordinatorFirmware); //杩欎釜缃戝叧闇�瑕佹湁铏氭嫙椹卞姩杩欎釜涓滆タ鎵嶈 - if (localWay.LinuxImageType != 6) + if (this.CheckGatewayHadDriveCode(localWay) == true) { //铏氭嫙椹卞姩鍙� foreach (var data in localWay.DriveCodeList) @@ -1591,13 +1627,13 @@ //娣诲姞铏氭嫙椹卞姩鐨勫崌绾у浐浠�(鎴愪笉鎴愬姛閮芥棤鎵�璋�) 蹇呴』鑳藉鑱旂綉鎵嶈 if (flage == 1) { - HdlFirmwareUpdateLogic.Current.AddFirmwareVersionInfo(FirmwareLevelType.A铏氭嫙椹卞姩, + HdlFirmwareUpdateLogic.AddFirmwareVersionInfo(FirmwareLevelType.A铏氭嫙椹卞姩, data.DriveHwVersion.ToString(), data.DriveImageType.ToString()); } //铏氭嫙椹卞姩 - var virtualFirmware = HdlFirmwareUpdateLogic.Current.GetFirmwareMostVersionInfo(FirmwareLevelType.A铏氭嫙椹卞姩, + var virtualFirmware = HdlFirmwareUpdateLogic.GetFirmwareMostVersionInfo(FirmwareLevelType.A铏氭嫙椹卞姩, data.DriveHwVersion.ToString(), data.DriveImageType.ToString(), data.DriveFwVersion); @@ -1683,7 +1719,7 @@ #region 鈻� 璁剧疆缃戝叧鍥剧墖_______________________ /// <summary> - /// 璁剧疆鐪熷疄缃戝叧鐨勫浘鐗� + /// 璁剧疆鐪熷疄缃戝叧鐨勫浘鐗�(宸插簾寮�) /// </summary> /// <param name="button"></param> /// <param name="zbGateway"></param> @@ -1732,7 +1768,7 @@ { if (zbGateway.LinuxImageType != -1) { - button.UnSelectedImagePath = "Gateway/GatewayIcon" + zbGateway.LinuxImageType + ".png"; + this.SetgatewayIcon(button, "Gateway/GatewayIcon" + zbGateway.LinuxImageType + ".png"); } else { @@ -1746,7 +1782,7 @@ this.SetGatewayDataToLocalMemmory(zbGateway, result, false); HdlThreadLogic.Current.RunMain(() => { - button.UnSelectedImagePath = "Gateway/GatewayIcon" + result.LinuxImageType + ".png"; + this.SetgatewayIcon(button, "Gateway/GatewayIcon" + result.LinuxImageType + ".png"); }); } }); @@ -1754,8 +1790,24 @@ } else { - button.UnSelectedImagePath = "Gateway/GatewayIcon" + localWay.LinuxImageType + ".png"; + this.SetgatewayIcon(button, "Gateway/GatewayIcon" + localWay.LinuxImageType + ".png"); } + } + + /// <summary> + /// 璁剧疆缃戝叧鍥炬爣 + /// </summary> + /// <param name="button"></param> + /// <param name="i_IconName"></param> + public void SetgatewayIcon(Button button, string i_IconName) + { + //杩欎釜鍥剧墖鏈湴鏄惁瀛樺湪锛� + if (string.IsNullOrEmpty(IO.FileUtils.GetImageFilePath(i_IconName)) == true) + { + //鍒欎娇鐢ㄥ叡閫氬浘鐗� + i_IconName = "Gateway/GatewayIcon.png"; + } + button.UnSelectedImagePath = i_IconName; } #endregion @@ -1815,18 +1867,90 @@ #endregion + #region 鈻� 浠庝簯绔幏鍙栧叏閮ㄧ綉鍏冲垪琛↖D___________ + + /// <summary> + /// 浠庝簯绔幏鍙栧叏閮ㄧ綉鍏冲垪琛↖D + /// </summary> + /// <returns>浠庝簯绔幏鍙栧叏閮ㄧ綉鍏冲垪琛↖D</returns> + public Dictionary<string, GatewayResult> GetGateWayListFromDataBase() + { + Dictionary<string, GatewayResult> dicDbGateway = null; + if (UserCenterResourse.UserInfo.AuthorityNo == 3) + { + //鎴愬憳 + return dicDbGateway; + } + + bool canBreak = false; + HdlThreadLogic.Current.RunThread(() => + { + List<string> list = new List<string>() { "NotCheck" }; + + //璁剧疆璁块棶鎺ュ彛鐨勫弬鏁� + var pra = new GetGatewayPra(); + pra.ReqDto.PageSetting.Page = 1; + pra.ReqDto.PageSetting.PageSize = 999; + //鑾峰彇鎺у埗涓讳汉璐﹀彿鐨凾oken + pra.ReqDto.LoginAccessToken = UserCenterLogic.GetConnectMainToken(); + + var result = UserCenterLogic.GetResponseDataByRequestHttps("App/GetSingleHomeGatewayPagger", true, pra, list, false); + if (string.IsNullOrEmpty(result) == true) + { + canBreak = true; + return; + } + var infoResult = Newtonsoft.Json.JsonConvert.DeserializeObject<GetGatewayResult>(result); + + Dictionary<string, GatewayResult> dic = new Dictionary<string, GatewayResult>(); + foreach (var data in infoResult.PageData) + { + dic[data.GatewayUniqueId] = data; + } + dicDbGateway = dic; + canBreak = true; + }); + + int count = 0; + while (canBreak == false) + { + System.Threading.Thread.Sleep(200); + count++; + if (count == 25) + { + //濡傛灉5绉掕繕涓嶈兘鑾峰彇寰楀埌鏁版嵁锛屽垯涓柇姝ゆ鎿嶄綔 + break; + } + } + + return dicDbGateway; + } + + #endregion + #region 鈻� 璁剧疆缃戝叧缁忕含搴____________________ /// <summary> /// 璁剧疆缃戝叧缁忕含搴� /// </summary> - /// <param name="gatewayId">缃戝叧Id</param> + /// <param name="gateway">缃戝叧瀵硅薄</param> /// <param name="Longitude">缁忓害</param> /// <param name="Latitude">缁村害</param> /// <param name="mode">鏄剧ず閿欒</param> /// <returns></returns> - public bool SetGatewaySite(string gatewayId, double Longitude, double Latitude, ShowErrorMode mode) + public bool SetGatewaySite(ZbGateway gateway, double Longitude, double Latitude, ShowErrorMode mode) { + ZbGateway realWay = null; + if (this.GetRealGateway(ref realWay, gateway) == false) + { + if (mode == ShowErrorMode.YES) + { + //閿欒:缃戝叧瀵硅薄涓㈠け + string msg = Language.StringByID(R.MyInternationalizationString.uErrorGatewayLostMsg); + this.ShowTipMsg(msg); + } + return false; + } if (((decimal)Longitude) == 0 && ((decimal)Latitude) == 0) { //娌℃湁閰嶇疆杩囩粡绾害 @@ -1834,14 +1958,16 @@ } int result = -1; - HdlGatewayReceiveLogic.Current.AddGatewayReceiveEvent(gatewayId, (topic, message) => + Action<string, string> action = (topic, message) => { - if (topic == gatewayId + "/" + "Logic/SetSite_Respon") + var gatewayID = topic.Split('/')[0]; + if (topic == gatewayID + "/" + "Logic/SetSite_Respon") { var jobject = Newtonsoft.Json.Linq.JObject.Parse(message); result = Convert.ToInt32(jobject["Data"]["Result"].ToString()); } - }); + }; + realWay.Actions += action; //涓や綅灏忔暟 Longitude = Math.Round(Longitude, 2); Latitude = Math.Round(Latitude, 2); @@ -1852,9 +1978,15 @@ var jObject = new Newtonsoft.Json.Linq.JObject { { "Cluster_ID", 0 }, { "Command", 2013 } }; var data = new Newtonsoft.Json.Linq.JObject { { "Longitude", intLongitude }, { "Latitude", intLatitude } }; jObject.Add("Data", data); - - //濡傛灉杩欎釜缃戝叧杩樻病鏈夌粦瀹氱殑璇濓紝鍒欏己鍒朵娇鐢ㄦ湰鍦拌繛鎺� - this.SendJobjectData(gatewayId, "Logic/SetSite", jObject.ToString(), this.IsGatewayExist(gatewayId) == false); + if (this.IsGatewayExist(gateway) == true) + { + realWay.Send("Logic/SetSite", jObject.ToString()); + } + else + { + //濡傛灉杩欎釜缃戝叧杩樻病鏈夌粦瀹氱殑璇濓紝鍒欏己鍒朵娇鐢ㄦ湰鍦拌繛鎺� + realWay.SendLocation("Logic/SetSite", System.Text.Encoding.UTF8.GetBytes(jObject.ToString())); + } int TimeOut = 0; while (result == -1 && TimeOut < 30) @@ -1863,8 +1995,7 @@ TimeOut++; } - //绉婚櫎鐩戝惉浜嬩欢 - HdlGatewayReceiveLogic.Current.RemoveGatewayReceiveEvent(); + realWay.Actions -= action; if (result != 0) { if (mode == ShowErrorMode.YES) @@ -1873,13 +2004,38 @@ string msg = Language.StringByID(R.MyInternationalizationString.uSetGatewaySiteFail); if (result == -1) { - msg = HdlCommonLogic.Current.CombineGatewayTimeOutMsg(msg, null, "鍥炲瓒呮椂"); + msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, null, "鍥炲瓒呮椂"); } this.ShowTipMsg(msg); } return false; } + return true; + } + + #endregion + + #region 鈻� 瑙g粦浜戠缃戝叧_______________________ + + /// <summary> + /// 瑙g粦浜戠缁戝畾鐨勭綉鍏� + /// </summary> + /// <param name="strWayId"></param> + public bool DeleteDataBaseGateway(string strWayId) + { + var Pra = new DeleteGatewayPra(); + Pra.BindGateways.Add(strWayId); + //鑾峰彇鎺у埗涓讳汉璐﹀彿鐨凾oken + Pra.LoginAccessToken = UserCenterLogic.GetConnectMainToken(); + + List<string> listNotShowError = new List<string>() { "NoExist", "NoBind", "NoRecord", "NotCheck" }; + + bool result = UserCenterLogic.GetResultStatuByRequestHttps("App/ReleaseGatewayToHome", true, Pra, listNotShowError, false); + if (result == false) + { + return false; + } return true; } @@ -1899,51 +2055,59 @@ listBackupGwId.Add(strId); //澶囦唤 - HdlFileLogic.Current.SaveFileContent(HdlFileNameResourse.BackupGatewayIdFile, listBackupGwId); + HdlFileLogic.Current.SaveFileContent(DirNameResourse.BackupGatewayIdFile, listBackupGwId); } } /// <summary> /// 閲嶆柊鍙戦�佸懡浠ゅ幓缁戝畾鏂綉鎯呭喌涓嬪浠界殑缃戝叧 /// </summary> - public void ResetComandToBindBackupGateway() + public bool ResetComandToBindBackupGateway() { - var fileData = HdlFileLogic.Current.ReadFileByteContent(HdlFileNameResourse.BackupGatewayIdFile); + var fileData = HdlFileLogic.Current.ReadFileByteContent(DirNameResourse.BackupGatewayIdFile); if (fileData == null) { - return; + return true; } - this.listBackupGwId = JsonConvert.DeserializeObject<List<string>>(System.Text.Encoding.UTF8.GetString(fileData)); + this.listBackupGwId = Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>>(System.Text.Encoding.UTF8.GetString(fileData)); var listTempId = new List<string>(); listTempId.AddRange(this.listBackupGwId); + //璋冪敤鎺ュ彛锛岀粦瀹氱綉鍏� + var bindGateway = new BindGatewayPra(); + //鑾峰彇鎺у埗涓讳汉璐﹀彿鐨凾oken + bindGateway.LoginAccessToken = UserCenterLogic.GetConnectMainToken(); + foreach (var gwId in listTempId) { - if (this.IsGatewayExist(gwId) == true) + bindGateway.BindGateways.Clear(); + bindGateway.BindGateways.Add(gwId); + var result = UserCenterLogic.GetResultCodeByRequestHttps("App/BindGatewayToHome", true, bindGateway, new List<string> { "NotCheck" }, false); + if (result == "Success") { - //璋冪敤鎺ュ彛锛岀粦瀹氱綉鍏�(鍗充娇澶辫触锛屼篃杩斿洖true寰�涓嬭蛋) - var result = this.SetGatewayIdToDataBase(gwId); - if (result != 1) - { - break; - } + this.listBackupGwId.Remove(gwId); } - this.listBackupGwId.Remove(gwId); + if (result == "Error") + { + break; + } } if (this.listBackupGwId.Count == 0) { //濡傛灉娌℃湁浜嗗唴瀹�,鍒欏垹闄ゆ枃浠� - string file = HdlFileNameResourse.BackupGatewayIdFile; + string file = DirNameResourse.BackupGatewayIdFile; if (System.IO.File.Exists(file) == true) { System.IO.File.Delete(file); } + return true; } else { //澶囦唤 - HdlFileLogic.Current.SaveFileContent(HdlFileNameResourse.BackupGatewayIdFile, listBackupGwId); + HdlFileLogic.Current.SaveFileContent(DirNameResourse.BackupGatewayIdFile, listBackupGwId); + return false; } } @@ -1978,7 +2142,7 @@ if (topic == errorTopic) { var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString()); - reResult.ErrorMsg = HdlCheckLogic.Current.CheckGatewayErrorCode(temp.Error); + reResult.ErrorMsg = HdlCheckLogic.Current.CheckCommonErrorCode(temp.Error); } //濡傛灉鏄寚瀹氱殑涓婚 if (topic == checkTopic) @@ -2046,6 +2210,98 @@ //寮哄埗浣跨敤鏈湴杩炴帴 realWay.SendLocation(topic, System.Text.Encoding.UTF8.GetBytes(sendData)); } + } + + #endregion + + #region 鈻� 鏇存崲缃戝叧___________________________ + + /// <summary> + /// 鎵ц鏇存崲缃戝叧(閲岄潰鏄瓙绾跨▼鎵ц) + /// </summary> + /// <param name="i_realGateway">鏂扮綉鍏�</param> + /// <param name="i_targetGwId">琚浛鎹㈢殑鐩爣缃戝叧</param> + /// <param name="i_info">澶囦唤鏁版嵁</param> + /// <param name="finishEvent">-1:寮傚父澶辫触 0:娌℃湁澶囦唤鏁版嵁 1:鎴愬姛</param> + public void DoReplaceGateway(ZbGateway i_realGateway, string i_targetGwId, BackupListNameInfo i_info, Action<int> finishEvent) + { + HdlThreadLogic.Current.RunThread(() => + { + //姝e湪鑾峰彇閰嶇疆鏁版嵁 + ProgressFormBar.Current.Start(); + ProgressFormBar.Current.SetMsg(Language.StringByID(R.MyInternationalizationString.uGettingConfigurationData)); + + System.Threading.Thread.Sleep(1000); + + //棣栧厛鐨勬洿鏂颁簯绔� + + //鐒跺悗鍙戞暟鎹粰缃戝叧,璁╃綉鍏冲幓涓嬭浇鏁版嵁 + var result = HdlGatewayBackupLogic.Current.RecoverGateway(i_realGateway, i_info.Id, i_info.IsAutoBack, false); + if (result == false) + { + finishEvent?.Invoke(-1); + return; + } + //姝e湪鍙樻洿鏈湴閰嶇疆 + ProgressFormBar.Current.SetMsg(Language.StringByID(R.MyInternationalizationString.uChangingLocalConfiguration)); + ProgressFormBar.Current.ResetProgressBar(); + + System.Threading.Thread.Sleep(1500); + + //鏍煎紡鍖栨棫缃戝叧 + string strComand = "{\"Cluster_ID\":0,\"Command\":160,\"Data\": {\"DelAllInfo\": 1}}"; + this.SendJobjectData(i_targetGwId, "Formate", strComand, true); + + //鍒犻櫎鎺夎鏇挎崲鐨勭綉鍏� + this.DeleteGatewayFile(i_targetGwId); + ProgressFormBar.Current.SetValue(1); + + System.Threading.Thread.Sleep(500); + ProgressFormBar.Current.Close(); + + finishEvent?.Invoke(1); + }); + } + + /// <summary> + /// 鍦ㄧ綉鍏虫浛鎹箣鍓�,鑾峰彇缃戝叧鐨勪竴涓浠芥暟鎹� + /// </summary> + /// <param name="i_gwId">缃戝叧ID</param> + /// <param name="statu">-1:寮傚父澶辫触 0:娌℃湁澶囦唤鏁版嵁 1:鎴愬姛</param> + /// <returns></returns> + private BackupListNameInfo GetBackupInfoBeforeReplace(string i_gwId, ref int statu) + { + //鑾峰彇鑷姩澶囦唤鐨勬暟鎹� + var pageData = HdlBackupLogic.Current.GetBackupListNameFromDB(3, i_gwId); + if (pageData == null) + { + statu = -1; + return null; + } + //濡傛灉鑾峰彇涓嶅埌鑷姩澶囦唤,鍒欏幓鑾峰彇鎵嬪姩澶囦唤 + if (pageData.Count == 0) + { + //浠庝簯绔幏鍙栨暟鎹� + pageData = HdlBackupLogic.Current.GetBackupListNameFromDB(2, i_gwId); + if (pageData == null) + { + statu = -1; + return null; + } + } + else + { + //鑷姩澶囦唤 + pageData[0].IsAutoBack = 1; + } + if (pageData.Count == 0) + { + //娌℃湁澶囦唤 + statu = 0; + return null; + } + statu = 1; + return pageData[0]; } #endregion @@ -2242,9 +2498,13 @@ { try { - var listForm = HdlFormLogic.Current.GetAllOpenForm(); - for (int i = 0; i < listForm.Count; i++) + for (int i = 0; i < UserCenterResourse.listActionFormId.Count; i++) { + string formId = UserCenterResourse.listActionFormId[i]; + if (UserCenterResourse.DicActionForm.ContainsKey(formId) == false) + { + continue; + } //缃戝叧鍦ㄧ嚎鎺ㄩ�� var zbway = this.GetLocalGateway(gwId); if (zbway != null) @@ -2254,7 +2514,7 @@ { zbway.OnlineTime = DateTime.Now; } - listForm[i]?.GatewayOnlinePush(zbway, online, hadGwOnline); + UserCenterResourse.DicActionForm[formId]?.GatewayOnlinePush(zbway, online, hadGwOnline); } } } @@ -2272,69 +2532,41 @@ #endregion - #region 鈻� 璋冪敤浜戠鎺ュ彛鐨勬柟娉昣________________ + #region 鈻� 涓�鑸柟娉昣__________________________ /// <summary> - /// 鏇存柊缃戝叧ID鍒颁簯绔暟鎹簱(1:姝e父 -1:寮傚父 0:褰撳墠鐨勭綉鍏崇粦瀹氬湪浜嗗綋鍓嶈处鍙蜂笅鐨勪笉鍚屼綇瀹呴噷闈�) + /// 鏄惁鏄痬ini缃戝叧 /// </summary> - /// <param name="i_gatewayIds">缃戝叧ID</param> + /// <param name="i_zbGateway">缃戝叧瀵硅薄</param> /// <returns></returns> - private int SetGatewayIdToDataBase(string i_gatewayId) + public bool IsMiniGateway(ZbGateway i_zbGateway) { - //璋冪敤鎺ュ彛锛岀粦瀹氱綉鍏�(鍗充娇澶辫触锛屼篃杩斿洖true寰�涓嬭蛋) - var pra = new { homeId = Config.Instance.Home.Id, mac = i_gatewayId, gatewayType = "ZIGBEEGATEWAY" }; - var result = HdlHttpLogic.Current.RequestResponseFromZigbeeHttps("home-wisdom/gateway/bindGateway", RestSharp.Method.POST, pra, null, null, CheckMode.A璐﹀彿鏉冮檺); - if (result == null || result.Code != HttpMessageEnum.A鎴愬姛) + if (i_zbGateway == null) { return false; } + + if (i_zbGateway.LinuxImageType == 11 || i_zbGateway.LinuxImageType == 13) { - return -1; + //杩欎釜缃戝叧鏄痬ini缃戝叧 + return true; } - return 1; + return false; } /// <summary> - /// 浠庝簯绔幏鍙栧叏閮ㄧ綉鍏冲垪琛↖D + /// 鍒ゆ柇缃戝叧鏄惁鎷ユ湁铏氭嫙椹卞姩 /// </summary> + /// <param name="i_zbGateway">缃戝叧瀵硅薄</param> /// <returns></returns> - public Dictionary<string, GatewayResult> GetGateWayListFromDataBase() + public bool CheckGatewayHadDriveCode(ZbGateway i_zbGateway) { - //杩欎釜鎺ュ彛鐗规畩,涓嶉渶瑕佹娴嬫潈闄� - var pra = new { homeId = Config.Instance.Home.Id }; - var result = HdlHttpLogic.Current.RequestResponseFromZigbeeHttps("home-wisdom/gateway/getGatewayList", RestSharp.Method.POST, pra); - if (result == null || result.Code != HttpMessageEnum.A鎴愬姛) - { - return null; - } - var listData = JsonConvert.DeserializeObject<List<GatewayResult>>(result.Data.ToString()); + if (i_zbGateway == null) { return false; } - var dicDbGateway = new Dictionary<string, GatewayResult>(); - foreach (var data in listData) + if (i_zbGateway.LinuxImageType != 6 && i_zbGateway.LinuxImageType != 12) { - if (data.GatewayType == "ZIGBEEGATEWAY") - { - dicDbGateway[data.Mac] = data; - } - } - return dicDbGateway; - } - - /// <summary> - /// 瑙g粦浜戠缁戝畾鐨勭綉鍏� - /// </summary> - /// <param name="strWayId"></param> - public bool DeleteDataBaseGateway(string strWayId) - { - var pra = new { homeId = Config.Instance.Home.Id, mac = strWayId }; - var result = HdlHttpLogic.Current.RequestResponseFromZigbeeHttps("home-wisdom/gateway/untieGateway", RestSharp.Method.POST, pra, null, null, CheckMode.A璐﹀彿鏉冮檺); - if (result == null || result.Code != HttpMessageEnum.A鎴愬姛) - { + //杩欎釜缃戝叧娌℃湁铏氭嫙椹卞姩 return false; } - return true; + return false; } - - #endregion - - #region 鈻� 涓�鑸柟娉昣__________________________ /// <summary> /// 鏄剧ず閿欒淇℃伅绐楀彛 -- Gitblit v1.8.0