private void Awake() { if (current == null) { current = this; } else { Destroy(this); } }//make this a singleton
/*嘉明*/ public List <DoorClick> GetListByJson() { List <DoorClick> doorClickList = new List <DoorClick>(); try { string path = AppDomain.CurrentDomain.BaseDirectory + "Data\\DeviceData\\中山嘉明电厂\\门禁\\门禁事件.json"; StreamReader sr = new StreamReader(path, Encoding.Default); string line; string jsonobj = ""; while ((line = sr.ReadLine()) != null) { jsonobj = jsonobj + line.ToString(); } DoorEvents doorEvents = JsonConvert.DeserializeObject <DoorEvents>(jsonobj); doorClickList = doorEvents.data.list; } catch (Exception ex) { Log.Error("DoorClickService.GetListByJson:" + ex.ToString()); } return(doorClickList); }
private static bool Prefix(DoorVariant __instance, ReferenceHub ply, byte colliderId) { try { InteractingDoorEventArgs ev = new(Player.Get(ply), __instance, false); bool bypassDenied = false; bool allowInteracting = false; if (__instance.ActiveLocks != 0) { DoorLockMode mode = DoorLockUtils.GetMode((DoorLockReason)__instance.ActiveLocks); if ((!mode.HasFlagFast(DoorLockMode.CanClose) || !mode.HasFlagFast(DoorLockMode.CanOpen)) && (!mode.HasFlagFast(DoorLockMode.ScpOverride) || ply.characterClassManager.CurRole.team != 0) && (mode == DoorLockMode.FullLock || (__instance.TargetState && !mode.HasFlagFast(DoorLockMode.CanClose)) || (!__instance.TargetState && !mode.HasFlagFast(DoorLockMode.CanOpen)))) { /* * __instance.LockBypassDenied(ply, colliderId); * return false; */ //>EXILED ev.IsAllowed = false; bypassDenied = true; //<EXILED } } if (!bypassDenied && (allowInteracting = __instance.AllowInteracting(ply, colliderId))) { if (ply.characterClassManager.CurClass == RoleType.Scp079 || __instance.RequiredPermissions.CheckPermissions(ply.inventory.CurInstance, ply)) { /* * __instance.NetworkTargetState = !__instance.TargetState; * __instance._triggerPlayer = ply; */ //>EXILED ev.IsAllowed = true; //<EXILED } else { /* * __instance.PermissionsDenied(ply, colliderId); * DoorEvents.TriggerAction(__instance, DoorAction.AccessDenied, ply); */ //>EXILED ev.IsAllowed = false; //<EXILED } } //>EXILED Handlers.Player.OnInteractingDoor(ev); if (ev.IsAllowed && allowInteracting) { __instance.NetworkTargetState = !__instance.TargetState; __instance._triggerPlayer = ply; } else if (bypassDenied) { __instance.LockBypassDenied(ply, colliderId); } // Don't call the RPC if the door is still moving else if (allowInteracting) { // To avoid breaking their API, call the access denied event // when our event prevents the door from opening __instance.PermissionsDenied(ply, colliderId); DoorEvents.TriggerAction(__instance, DoorAction.AccessDenied, ply); } //<EXILED return(false); } catch (Exception ex) { Log.Error($"{typeof(InteractingDoor).FullName}.{nameof(Prefix)}:\n{ex}"); return(true); } }
private static bool Prefix(DoorVariant __instance, ReferenceHub ply, byte colliderId) { try { if (!NetworkServer.active) { Debug.LogWarning("[Server] function 'System.Void Interactables.Interobjects.DoorUtils.DoorVariant::ServerInteract(ReferenceHub,System.Byte)' called on client"); return(false); } if (__instance.ActiveLocks > 0) { DoorLockMode mode = DoorLockUtils.GetMode((DoorLockReason)__instance.ActiveLocks); if ((!mode.HasFlagFast(DoorLockMode.CanClose) || !mode.HasFlagFast(DoorLockMode.CanOpen)) && (!mode.HasFlagFast(DoorLockMode.ScpOverride) || ply.characterClassManager.CurRole.team != Team.SCP) && (mode == DoorLockMode.FullLock || (__instance.TargetState && !mode.HasFlagFast(DoorLockMode.CanClose)) || (!__instance.TargetState && !mode.HasFlagFast(DoorLockMode.CanOpen)))) { __instance.LockBypassDenied(ply, colliderId); return(false); } } if (__instance.AllowInteracting(ply, colliderId)) { var player = ply.GetPlayer(); var flag = __instance.RequiredPermissions.CheckPermissions(player.VanillaInventory.curItem, ply); var cardaccess = false; var item = player.ItemInHand; if (item != null && item.ItemCategory == ItemCategory.Keycard) { EventHandler.Get.Player.InvokePlayerItemUseEvent(player, item, Api.Events.SynapseEventArguments.ItemInteractState.Finalizing, ref flag); } if (flag) { cardaccess = true; } else if (Server.Get.Configs.SynapseConfiguration.RemoteKeyCard) { foreach (var item2 in player.Inventory.Items.Where(x => x != item && x.ItemCategory == ItemCategory.Keycard)) { var allowcard = __instance.RequiredPermissions.CheckPermissions(item2.ItemType, ply); EventHandler.Get.Player.InvokePlayerItemUseEvent(player, item2, Api.Events.SynapseEventArguments.ItemInteractState.Finalizing, ref allowcard); if (allowcard) { cardaccess = true; break; } } } EventHandler.Get.Map.InvokeDoorInteractEvent(player, __instance.GetDoor(), ref cardaccess); if (ply.characterClassManager.CurClass == RoleType.Scp079 || cardaccess) { __instance.NetworkTargetState = !__instance.TargetState; __instance._triggerPlayer = ply; return(false); } __instance.PermissionsDenied(ply, colliderId); DoorEvents.TriggerAction(__instance, DoorAction.AccessDenied, ply); } return(false); } catch (Exception e) { Logger.Get.Error($"Synapse-Event: DoorInteract failed!!\n{e}"); return(true); } }
public DataDoor GetPageByCondition(DoorSearchArgs args) { //时间要传格林尼治时间 DataDoor data = new DataDoor(); try { DoorSearchArgs arg = args; arg.eventType = "198914"; DateTime now = DateTime.Now; if (args == null) { arg = new DoorSearchArgs(); arg.startTime = now.AddMonths(-1).ToString("yyyy-MM-dd HH:mm:ss"); arg.endTime = now.ToString("yyyy-MM-dd HH:mm:ss"); arg.pageNo = 1; arg.pageSize = 100; arg.doorIndexCodes = null; arg.personIds = null; arg.eventType = "198914"; } else { if (string.IsNullOrEmpty(arg.startTime) || string.IsNullOrEmpty(arg.endTime)) { arg.startTime = now.AddMonths(-1).ToString("yyyy-MM-dd HH:mm:ss"); arg.endTime = now.ToString("yyyy-MM-dd HH:mm:ss"); } if (arg.pageSize == 0) { arg.pageSize = 1000000; } if (arg.pageNo == 0) { arg.pageNo = 1; } if (string.IsNullOrEmpty(arg.eventType)) { arg.eventType = "198914"; } } DateTime startTimeT; DateTime endTimeT; DateTime.TryParse(arg.startTime, out startTimeT); DateTime.TryParse(arg.endTime, out endTimeT); //对接部分:暂时注释 ////DoorEvents doorEvents = getDoorEvents(arg.startTime.ToString("yyyy-MM-ddTHH:mm:sszzz"), arg.endTime.ToString("yyyy-MM-ddTHH:mm:sszzz"), arg.pageNo.ToString(), arg.pageSize.ToString(), arg.eventType, arg.personIds, arg.doorIndexCodes,arg.personName); DoorEvents doorEvents = getDoorEvents(startTimeT.ToString("yyyy-MM-ddTHH:mm:sszzz"), endTimeT.ToString("yyyy-MM-ddTHH:mm:sszzz"), arg.pageNo.ToString(), arg.pageSize.ToString(), arg.eventType, arg.personIds, arg.doorIndexCodes, arg.personName); if (doorEvents != null && doorEvents.data != null) { data = doorEvents.data; } if (data.list == null)//从数据库获取 { //PageInfo<DoorClick> page = db.DoorClicks.GetPageByCondition(arg.startTime, arg.endTime, arg.eventType, arg.personIds, arg.doorIndexCodes,arg.personName, arg.pageNo, arg.pageSize); PageInfo <DoorClick> page = db.DoorClicks.GetPageByCondition(startTimeT, endTimeT, arg.eventType, arg.personIds, arg.doorIndexCodes, arg.personName, arg.pageNo, arg.pageSize); data.total = page.total; data.totalPage = page.totalPage; data.list = page.data; data.pageNo = page.pageIndex; data.pageSize = page.pageSize; } } catch (Exception ex) { Log.Error("DoorClickService.GetListByCondition:" + ex.ToString()); } return(data); }
/// <summary> /// 获取门禁事件列表(海康接口) /// </summary> public DoorEvents getDoorEvents(string startTime, string endTime, string pageNo, string pageSize, string eventType /*必要(事件类型)*/, string[] personIds, string[] doorIndexCodes, string personName) { DoorEvents doorEvents = new DoorEvents(); try { //注意时间转化 DateTime dt = DateTime.Now; Log.Info("当前时间-普通格式:{0}", dt.ToString("yyyy-MM-dd HH:mm:ss")); Log.Info("当前时间-UTC格式:{0}", dt.ToString("yyyy-MM-ddTHH:mm:sszzz")); // "{\"startTime\": \"2020-05-16T13:00:00.000+08:00\",\"endTime\": \"2020-05-18T12:00:00.000+08:00\",\"pageNo\": \"1\",\"pageSize\": \"100\",\"eventType\": \"198914\"}"; string where = ""; if (!string.IsNullOrEmpty(startTime)) { where += "\"startTime\": \"" + startTime + "\","; } if (!string.IsNullOrEmpty(endTime)) { where += "\"endTime\": \"" + endTime + "\","; } if (!string.IsNullOrEmpty(pageNo)) { where += "\"pageNo\": \"" + pageNo + "\","; } if (!string.IsNullOrEmpty(pageSize)) { where += "\"pageSize\": \"" + pageSize + "\","; } if (!string.IsNullOrEmpty(eventType)) { where += "\"eventType\": \"" + eventType + "\","; } if (!string.IsNullOrEmpty(personName)) { personName = personName.Replace("/", "").Replace("<", "").Replace(">", "").Replace("\"", "").Replace("|", ""); where += "\"personName\": \"" + personName + "\","; } //"doorIndexCodes": ["1f276203e5234bdca08f7d99e1097bba","3f9512ec067248dfa0679cf4a1634800"] if (personIds != null && personIds.Length != 0) { string personIdss = ""; foreach (string personId in personIds) { personIdss += "\"" + personId + "\","; } personIdss = personIdss.Substring(0, personIdss.Length - 1); where += "\"personIds\": [" + personIdss + "],"; } where = where.Substring(0, where.Length - 1); string body = "{" + where + "}"; string uri = "/artemis/api/acs/v1/door/events"; Log.Info("DoorClickService.getDoorEvents: url=" + uri); Log.Info("DoorClickService.getDoorEvents: body=" + body); string obj = getString(body, uri); doorEvents = JsonConvert.DeserializeObject <DoorEvents>(obj); } catch (Exception ex) { Log.Error("DevService.getDoorEvents:" + ex.ToString()); } return(doorEvents); }
public void Awake() { current = this; }