public async Task <IActionResult> GetHouses([FromQuery, SwaggerParameter("所在城市,默认上海", Required = true)] string city = "上海", [FromQuery, SwaggerParameter("来源")] string source = "", [FromQuery, SwaggerParameter("页码")] int page = 0, [FromQuery, SwaggerParameter("分页数量")] int pageSize = 20, [FromQuery, SwaggerParameter("房源类型")] int?rentType = null, [FromQuery, SwaggerParameter("最低价")] int fromPrice = 0, [FromQuery, SwaggerParameter("最高价")] int toPrice = 0, [FromQuery, SwaggerParameter("经度")] double?longitude = null, [FromQuery, SwaggerParameter("维度")] double?latitude = null, [FromQuery, SwaggerParameter("距离范围(公里)")] double distance = 5) { var condition = new MongoHouseQuery(); condition.city = city; condition.source = source; condition.page = page; condition.pageSize = pageSize; condition.rentType = rentType; condition.fromPrice = fromPrice; condition.toPrice = toPrice; condition.latitude = latitude; condition.longitude = longitude; condition.distance = distance; return(Ok(new { success = true, data = await _houseMongoMapper.QueryHouses(condition) })); }
/// <summary> /// 查询记录 /// </summary> public virtual async Task <List <MongoHouseEntity> > QueryHouses(MongoHouseQuery houseQuery) { var db = _client.GetDatabase(this._mongoDBName); var collectionName = $"{ConstMongoTables.HouseData}_{houseQuery.city}"; var query = db.GetCollection <MongoHouseEntity>(collectionName).AsQueryable(); if (!string.IsNullOrEmpty(houseQuery.source)) { query = query.Where(h => h.Source == houseQuery.source); } if (houseQuery.rentType.HasValue) { query = query.Where(h => h.RentType == houseQuery.rentType); } if (!string.IsNullOrEmpty(houseQuery.source)) { query = query.Where(h => h.Source == houseQuery.source); } var position = default(PositionModel); if (houseQuery.latitude != null && houseQuery.longitude != null) { position = DistanceHelper.FindNeighPosition(houseQuery.longitude.Value, houseQuery.latitude.Value, houseQuery.distance); query = query.Where(item => item.Latitude.HasValue && item.Longitude.HasValue && item.Longitude.Value >= position.MinLng && item.Longitude.Value <= position.MaxLng && item.Latitude.Value >= position.MinLat && item.Latitude.Value <= position.MaxLat); } // var text = query.ToString(); var results = await query.OrderByDescending(h => h.Timestamp) .Skip(houseQuery.page * houseQuery.pageSize) .Take(houseQuery.pageSize).ToListAsync(); return(results); }
public async Task <IActionResult> SearchHouses([FromBody] MongoHouseQuery search) { return(Ok(new { success = true, data = await _houseMongoMapper.QueryHouses(search) })); }