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)); } }
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)); } }