/// <summary> /// 获取酒店详细信息 /// </summary> /// <param name="input"></param> /// <returns></returns> public InformationDetail GetDetail(GetInformationDetail input) { var result = new InformationDetail(); using (var db = new RTDbContext()) { var information = db.TouristInformations.FirstOrDefault(p => p.Id == input.Id); if (information == null) { throw new RTException("所选数据不存在"); } if (information.Type != TouristInformationType.Hotel && information.Type != TouristInformationType.Winery) { throw new RTException("酒店数据,才有详细信息"); } double distance = 0; string distanceDescription = ""; if (information.Type == TouristInformationType.Hotel || information.Type == TouristInformationType.Winery) { distance = LongitudeAndLatitudeToDistance.GetDistance(input.Longitude, input.Latitude, information.Longitude, information.Latitude); if (distance > 1000) { distanceDescription = string.Format("距我{0}km", (distance / 1000).ToString("f2")); } else { distanceDescription = string.Format("距我{0}m", distance.ToString("f0")); } } //result.Distance = information.Distance; result.Position = information.Position; result.Distance = distance; result.DistanceDescription = distanceDescription; result.Name = information.Name; result.Phone = information.Phone; result.Price = information.Price; var detail = _detail.GetDetail(new GetDetailInput { Classify = (int)information.Type, ProjectId = information.Id }, db); if (detail == null) { return(result); } result.BigImgUrl = detail.ImgUrl; result.Contents = detail.Paragraphs; } return(result); }
/// <summary> /// 获取旅游信息列表 /// </summary> /// <param name="input"></param> /// <returns></returns> public List <InformationForView> GetList(GetInformationListInput input) { var result = new List <InformationForView>(); using (var db = new RTDbContext()) { var list = db.TouristInformations.Where(p => p.Type == input.Type); if (list != null && list.Count() != 0) { foreach (var item in list) { double distance = 0; string distanceDescription = ""; if (item.Type == TouristInformationType.Hotel || item.Type == TouristInformationType.Winery) { distance = LongitudeAndLatitudeToDistance.GetDistance(input.Longitude, input.Latitude, item.Longitude, item.Latitude); if (distance > 1000) { distanceDescription = string.Format("距我{0}km", (distance / 1000).ToString("f2")); } else { distanceDescription = string.Format("距我{0}m", distance.ToString("f0")); } } result.Add(new InformationForView { Id = item.Id, //Distance = item.Distance, SmallImgUrl = item.ImgUrl, Name = item.Name, Phone = item.Phone, Price = item.Price, Distance = distance, DistanceDescription = distanceDescription, Position = item.Position, }); } if (input.Type == TouristInformationType.Hotel) { result = result.OrderBy(p => p.Distance).ToList(); } } } return(result); }
/// <summary> /// 获取地图景点简介信息 /// </summary> public ViewSpotInfoOutput ViewSpotInfo(ViewSpotInfoInput input) { if (input == null) { throw new RTException("输入参数不能为空"); } var result = new ViewSpotInfoOutput(); using (var db = new RTDbContext()) { var viewPort = db.WisdomGuideViewSpots.FirstOrDefault(p => p.Id == input.Id); if (viewPort == null) { throw new RTException("所选数据不存在"); } #region 根据经纬度计算距离 double distance = 0; string distanceDescription = ""; distance = LongitudeAndLatitudeToDistance.GetDistance(input.Longitude, input.Latitude, viewPort.Longitude, viewPort.Latitude); if (distance > 1000) { distanceDescription = string.Format("距我{0}km", (distance / 1000).ToString("f2")); } else { distanceDescription = string.Format("距我{0}m", distance.ToString("f0")); } #endregion result.ViewSpotName = viewPort.ViewSpotName; //result.ViewSpotDescribe = viewPort.ViewSpotDescribe; result.Position = viewPort.Position; result.Phone = viewPort.Phone; result.Distance = distance; result.ImgUrl = viewPort.ImgUrl; result.Longitude = viewPort.Longitude; result.Latitude = viewPort.Latitude; result.DistanceDescription = distanceDescription; var map = db.WisdomGuideMaps.FirstOrDefault(p => p.WisdomGuideId == viewPort.WisdomGuideId); if (map != null) { result.MapImgUrl = map.ImgUrl; } #region 详情 var detail = _detail.GetDetail(new GetDetailInput { ProjectId = viewPort.Id }, db); if (detail == null) { return(result); } result.BigImgUrl = detail.ImgUrl; result.Contents = detail.Paragraphs; #endregion result.HasMoreView = false; var videoList = db.WisdomGuideViewSpotVideos.Where(p => p.WisdomGuideViewSpotId == viewPort.Id).ToList(); if (videoList != null && videoList.Count != 0) { var video = videoList.FirstOrDefault(); result.FirstVoice = new ViewSpotVideoDto(); result.FirstVoice.ImgUrl = video.ImgUrl; result.FirstVoice.VoiceUrl = video.VoiceUrl; result.FirstVoice.VoiceName = video.VoiceName; result.FirstVoice.WisdomGuideViewSpotId = video.WisdomGuideViewSpotId; if (videoList.Count > 1) { result.HasMoreView = true; result.VoiceList = new List <ViewSpotVideoDto>(); videoList.ForEach(item => { result.VoiceList.Add(new ViewSpotVideoDto { ImgUrl = item.ImgUrl, VoiceName = item.VoiceName, VoiceUrl = item.VoiceUrl, WisdomGuideViewSpotId = item.WisdomGuideViewSpotId }); }); } } } return(result); }