Ejemplo n.º 1
0
        public Stream GroupLocation(string GroupID)
        {
            if (string.IsNullOrEmpty(GroupID))
            {
                return(ResponseHelper.Failure("队伍ID不能为空!"));
            }

            try
            {
                var visitors = EFHelper.GetAll <Visitor>().ToList();
                var groups   = EFHelper.GetAll <Group>().ToList();
                var locators = EFHelper.GetAll <Locator>().ToList();
                var team     = from g in groups
                               where g.GroupID == GroupID && g.InviteeState == 1
                               join v in visitors on g.VisitorID equals v.VisitorID
                               join l in locators on v.VisitorID equals l.VisitorID
                               where l.LocatorState == 1
                               select new { v.VisitorID, v.Name, l.LocatorID };

                if (team.Count() == 0)
                {
                    return(ResponseHelper.Failure("该队伍没有定位信息!"));
                }

                var localsense = new LocalSense();
                localsense.Run();
                Thread.Sleep(500);
                new Thread(() => { localsense.Stop(); }).Start();

                var location = new List <Location>();
                foreach (var t in team)
                {
                    location.Add(localsense.locations.Where(q => q.ID == t.LocatorID).OrderByDescending(q => q.Timestamp).FirstOrDefault());
                }

                var query = from t in team
                            join l in location on t.LocatorID equals l.ID
                            orderby t.VisitorID
                            select new { t.VisitorID, t.Name, l.X, l.Y };

                if (query.Count() == 0)
                {
                    return(ResponseHelper.Failure("没有查询到位置信息!"));
                }
                else
                {
                    return(ResponseHelper.Success(query.ToList()));
                }
            }
            catch (Exception ex)
            {
                while (ex.InnerException != null)
                {
                    ex = ex.InnerException;
                }
                return(ResponseHelper.Failure(ex.Message));
            }
        }
Ejemplo n.º 2
0
        public Stream GetLocation(string VisitorID)
        {
            if (string.IsNullOrEmpty(VisitorID))
            {
                return(ResponseHelper.Failure("游客ID不能为空!"));
            }

            try
            {
                var locators = EFHelper.GetAll <Locator>().Where(t => t.VisitorID == VisitorID && t.LocatorState == 1);
                if (locators.Count() == 0)
                {
                    return(ResponseHelper.Failure("该游客没有定位信息!"));
                }

                var localsense = new LocalSense();
                localsense.Run();
                Thread.Sleep(100);
                new Thread(() => { localsense.Stop(); }).Start();

                var locator = locators.Single();
                var query   = localsense.locations
                              .Where(t => t.ID == locator.LocatorID)
                              .OrderByDescending(t => t.Timestamp)
                              .Select(t => new { t.X, t.Y }).First();

                if (query == null)
                {
                    return(ResponseHelper.Failure("没有查询到位置信息!"));
                }
                else
                {
                    return(ResponseHelper.Success(new List <dynamic> {
                        query
                    }));
                }
            }
            catch (Exception ex)
            {
                while (ex.InnerException != null)
                {
                    ex = ex.InnerException;
                }
                return(ResponseHelper.Failure(ex.Message));
            }
        }