/// <summary>查询满足条件的记录集,分页、排序</summary> /// <param name="kind">类型</param> /// <param name="start">开始时间</param> /// <param name="end">结束时间</param> /// <param name="key">关键字</param> /// <param name="page">分页排序参数,同时返回满足条件的总记录数</param> /// <returns>实体集</returns> public static IList <DeviceOnline> Search(DeviceKinds kind, DateTime start, DateTime end, String key, PageParameter page) { // 修改DeviceID排序为名称 //param = new PageParameter(param); if (page.Sort.EqualIgnoreCase(__.DeviceID)) { page.Sort = __.Name; } var list = Search(kind, start, end, key, page, false); // 如果结果为0,并且有key,则使用扩展查询,对内网外网地址进行模糊查询 if (list.Count == 0 && !key.IsNullOrEmpty()) { list = Search(kind, start, end, key, page, true); } // 换回来,避免影响生成升序降序 if (page.Sort.EqualIgnoreCase(__.Name)) { page.Sort = __.DeviceID; } return(list); }
private static IList <DeviceOnline> Search(DeviceKinds kind, DateTime start, DateTime end, String key, PageParameter page, Boolean ext) { var exp = new WhereExpression(); if (kind > 0) { exp &= _.Kind == kind; } exp &= _.CreateTime.Between(start, end); if (!key.IsNullOrEmpty()) { if (ext) { exp &= (_.Name.Contains(key) | _.SessionID.Contains(key)); } else { exp &= _.Name.StartsWith(key); } } return(FindAll(exp, page)); }
protected virtual DeviceOnline Check(String mac, String name, DeviceKinds kind) { var olt = GetOnline(mac); if (olt == null) { var ip = Remote?.EndPoint.Address + ""; var dv = Login(mac, name, ip, kind); olt = CreateOnline(mac, dv); } olt.Kind = kind; olt.Total++; olt.SaveAsync(5_000); return(olt); }
/// <summary>高级查询</summary> /// <param name="kind"></param> /// <param name="enable"></param> /// <param name="start"></param> /// <param name="end"></param> /// <param name="key"></param> /// <param name="page"></param> /// <returns></returns> public static IList <Device> Search(DeviceKinds kind, Boolean?enable, DateTime start, DateTime end, String key, PageParameter page) { var exp = new WhereExpression(); if (kind > 0) { exp &= _.Kind == kind; } if (enable != null) { exp &= _.Enable == enable.Value; } //exp &= _.CreateTime.Between(start, end); exp &= _.LastLogin.Between(start, end); if (!key.IsNullOrEmpty()) { exp &= SearchWhereByKeys(key); } return(FindAll(exp, page)); }
/// <summary>登录</summary> /// <param name="code"></param> /// <param name="name"></param> /// <param name="ip"></param> /// <returns></returns> protected virtual Device Login(String code, String name, String ip, DeviceKinds kind) { var dv = Device.GetOrAdd(code); if (!dv.Enable) { throw new Exception($"[{dv.Name}/{dv.Code}]禁止登录"); } if (!name.IsNullOrEmpty()) { // 路由直接覆盖,其它只能在没有时填充 if (kind == DeviceKinds.Route) { dv.Name = name; } else if (dv.Name.IsNullOrEmpty()) { dv.Name = name; } } dv.Kind = kind; dv.Logins++; dv.LastLogin = DateTime.Now; dv.LastLoginIP = ip; dv.SaveAsync(); //Device = dv; // 登录历史 WriteHistory("登录", dv); return(dv); }
/// <summary>获取/设置 字段值</summary> /// <param name="name">字段名</param> /// <returns></returns> public override Object this[String name] { get { switch (name) { case __.ID: return(_ID); case __.Name: return(_Name); case __.Code: return(_Code); case __.Kind: return(_Kind); case __.Enable: return(_Enable); case __.LastHostID: return(_LastHostID); case __.LastRouteID: return(_LastRouteID); case __.LastRSSI: return(_LastRSSI); case __.LastDistance: return(_LastDistance); case __.ParameterA: return(_ParameterA); case __.ParameterN: return(_ParameterN); case __.Logins: return(_Logins); case __.LastLogin: return(_LastLogin); case __.LastLoginIP: return(_LastLoginIP); case __.CreateUserID: return(_CreateUserID); case __.CreateTime: return(_CreateTime); case __.CreateIP: return(_CreateIP); case __.UpdateUserID: return(_UpdateUserID); case __.UpdateTime: return(_UpdateTime); case __.UpdateIP: return(_UpdateIP); case __.Description: return(_Description); default: return(base[name]); } } set { switch (name) { case __.ID: _ID = value.ToInt(); break; case __.Name: _Name = Convert.ToString(value); break; case __.Code: _Code = Convert.ToString(value); break; case __.Kind: _Kind = (DeviceKinds)value.ToInt(); break; case __.Enable: _Enable = value.ToBoolean(); break; case __.LastHostID: _LastHostID = value.ToInt(); break; case __.LastRouteID: _LastRouteID = value.ToInt(); break; case __.LastRSSI: _LastRSSI = value.ToInt(); break; case __.LastDistance: _LastDistance = value.ToDouble(); break; case __.ParameterA: _ParameterA = value.ToInt(); break; case __.ParameterN: _ParameterN = value.ToDouble(); break; case __.Logins: _Logins = value.ToInt(); break; case __.LastLogin: _LastLogin = value.ToDateTime(); break; case __.LastLoginIP: _LastLoginIP = Convert.ToString(value); break; case __.CreateUserID: _CreateUserID = value.ToInt(); break; case __.CreateTime: _CreateTime = value.ToDateTime(); break; case __.CreateIP: _CreateIP = Convert.ToString(value); break; case __.UpdateUserID: _UpdateUserID = value.ToInt(); break; case __.UpdateTime: _UpdateTime = value.ToDateTime(); break; case __.UpdateIP: _UpdateIP = Convert.ToString(value); break; case __.Description: _Description = Convert.ToString(value); break; default: base[name] = value; break; } } }
/// <summary>获取/设置 字段值</summary> /// <param name="name">字段名</param> /// <returns></returns> public override Object this[String name] { get { switch (name) { case __.ID: return(_ID); case __.SessionID: return(_SessionID); case __.DeviceID: return(_DeviceID); case __.Name: return(_Name); case __.HostID: return(_HostID); case __.RouteID: return(_RouteID); case __.Kind: return(_Kind); case __.Total: return(_Total); case __.Rssi: return(_Rssi); case __.Distance: return(_Distance); case __.CreateTime: return(_CreateTime); case __.CreateIP: return(_CreateIP); case __.UpdateTime: return(_UpdateTime); default: return(base[name]); } } set { switch (name) { case __.ID: _ID = value.ToInt(); break; case __.SessionID: _SessionID = Convert.ToString(value); break; case __.DeviceID: _DeviceID = value.ToInt(); break; case __.Name: _Name = Convert.ToString(value); break; case __.HostID: _HostID = value.ToInt(); break; case __.RouteID: _RouteID = value.ToInt(); break; case __.Kind: _Kind = (DeviceKinds)value.ToInt(); break; case __.Total: _Total = value.ToInt(); break; case __.Rssi: _Rssi = value.ToInt(); break; case __.Distance: _Distance = value.ToDouble(); break; case __.CreateTime: _CreateTime = value.ToDateTime(); break; case __.CreateIP: _CreateIP = Convert.ToString(value); break; case __.UpdateTime: _UpdateTime = value.ToDateTime(); break; default: base[name] = value; break; } } }