Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        /// <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));
        }
Beispiel #5
0
        /// <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);
        }
Beispiel #6
0
        /// <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;
                }
            }
        }
Beispiel #7
0
        /// <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;
                }
            }
        }