Пример #1
0
        public IActionResult GetHouseInfo(string cityName, string source = "", int houseCount = 400, int withAnyDays = 3)
        {
            var houses = _dataContent.HouseInfos.Where(h => h.LocationCityName == cityName &&
                                                       h.PubTime > DateTime.Now.Date.AddDays(-withAnyDays));

            if (!string.IsNullOrEmpty(source))
            {
                houses = houses.Where(h => h.Source == source);
            }
            var lstHouseInfo = houses.OrderByDescending(h => h.PubTime).Take(houseCount).ToList();

            var lstRoomInfo = lstHouseInfo.Select(house =>
            {
                var markBGType = string.Empty;
                int housePrice = (int)house.HousePrice;
                if (housePrice > 0)
                {
                    markBGType = LocationMarkBGType.SelectColor(housePrice / 1000);
                }

                return(new HouseInfo
                {
                    Money = house.DisPlayPrice,
                    HouseURL = house.HouseOnlineURL,
                    HouseLocation = house.HouseLocation,
                    HouseTime = house.PubTime.ToString(CultureInfo.CurrentCulture),
                    HousePrice = housePrice,
                    LocationMarkBG = markBGType,
                    DisplaySource = ConstConfigurationName.ConvertToDisPlayName(house.Source)
                });
            });

            return(Json(new { IsSuccess = true, HouseInfos = lstRoomInfo }));
        }
Пример #2
0
        public IActionResult GetHouseInfo(string cityName, string source = "", int houseCount = 500,
                                          int withAnyDays = 7, string keyword = "")
        {
            var houses = houseDapper.SearchHouseInfo(cityName, source, houseCount, withAnyDays, keyword);
            var rooms  = houses.Select(house =>
            {
                var markBGType = string.Empty;
                int housePrice = (int)house.HousePrice;
                if (housePrice > 0)
                {
                    markBGType = LocationMarkBGType.SelectColor(housePrice / 1000);
                }

                return(new HouseInfo
                {
                    Source = house.Source,
                    Money = house.DisPlayPrice,
                    HouseURL = house.HouseOnlineURL,
                    HouseLocation = house.HouseLocation,
                    HouseTime = house.PubTime.ToString(),
                    HouseTitle = house.HouseTitle,
                    HousePrice = housePrice,
                    LocationMarkBG = markBGType,
                    DisplaySource = ConstConfigurationName.ConvertToDisPlayName(house.Source)
                });
            });

            ElasticsearchService.AddHouse(houses.ToList());
            return(Json(new { IsSuccess = true, HouseInfos = rooms }));
        }
Пример #3
0
        public IActionResult GetHouseInfo(string cityName, string source = "", int houseCount = 100,
                                          int withAnyDays = 3, bool showDoubanInvalidData     = true, string keyword = "")
        {
            try
            {
                var lstHouseInfo = new DBHouseInfoDAL().SearchHouseInfo(cityName, source, houseCount, withAnyDays, showDoubanInvalidData, keyword);
                var lstRoomInfo  = lstHouseInfo.Select(house =>
                {
                    var markBGType = string.Empty;
                    int housePrice = (int)house.HousePrice;
                    if (housePrice > 0)
                    {
                        markBGType = LocationMarkBGType.SelectColor(housePrice / 1000);
                    }

                    return(new HouseInfo
                    {
                        Money = house.DisPlayPrice,
                        HouseURL = house.HouseOnlineURL,
                        HouseLocation = house.HouseLocation,
                        HouseTime = house.PubTime.ToString(),
                        HousePrice = housePrice,
                        LocationMarkBG = markBGType,
                        DisplaySource = ConstConfigurationName.ConvertToDisPlayName(house.Source)
                    });
                });
                return(Json(new { IsSuccess = true, HouseInfos = lstRoomInfo }));
            }catch (Exception ex)
            {
                return(Json(new { IsSuccess = false, error = ex.ToString() }));
            }
        }
Пример #4
0
        public IActionResult GetHouseInfo(string cityName, string source = "", int houseCount = 100,
                                          int intervalDay = 7, string keyword = "", bool refresh = false)
        {
            try
            {
                var houseList = CrawlerDataDapper.SearchHouseInfo(cityName, source, houseCount, intervalDay, keyword, refresh);
                var rooms     = houseList.Select(house =>
                {
                    var markBGType = string.Empty;
                    int housePrice = (int)house.HousePrice;
                    if (housePrice > 0)
                    {
                        markBGType = LocationMarkBGType.SelectColor(housePrice / 1000);
                    }

                    return(new HouseInfo
                    {
                        Money = house.DisPlayPrice,
                        HouseURL = house.HouseOnlineURL,
                        HouseLocation = house.HouseLocation,
                        HouseTime = house.PubTime.ToString(),
                        HousePrice = housePrice,
                        LocationMarkBG = markBGType,
                        DisplaySource = ConstConfigurationName.ConvertToDisPlayName(house.Source)
                    });
                });
                return(Json(new { IsSuccess = true, HouseInfos = rooms }));
            }
            catch (Exception ex)
            {
                return(Json(new { IsSuccess = false, error = ex.ToString() }));
            }
        }
Пример #5
0
        public IActionResult GetHouseInfo(string cityName, string source = "", int houseCount = 400,
                                          int withAnyDays = 3, string keyword = "")
        {
            var houses = new DBHouseInfoDAL().SearchHouseInfo(cityName, source, houseCount, withAnyDays, keyword);

            var lstRoomInfo = houses.Select(house =>
            {
                var markBGType = string.Empty;
                int housePrice = (int)house.HousePrice;
                if (housePrice > 0)
                {
                    markBGType = LocationMarkBGType.SelectColor(housePrice / 1000);
                }

                return(new HouseInfo
                {
                    Money = house.DisPlayPrice,
                    HouseURL = house.HouseOnlineURL,
                    HouseLocation = house.HouseLocation,
                    HouseTime = house.PubTime.ToString(CultureInfo.CurrentCulture),
                    HousePrice = housePrice,
                    LocationMarkBG = markBGType,
                    DisplaySource = ConstConfigurationName.ConvertToDisPlayName(house.Source)
                });
            });

            return(Json(new { IsSuccess = true, HouseInfos = lstRoomInfo }));
        }
Пример #6
0
        public static IEnumerable <BaseHouseInfo> Search(string cityName, string source = "",
                                                         int houseCount = 100, int intervalDay = 7, string keyword = "", bool refresh = false)
        {
            string redisKey = $"{cityName}-{source}-{intervalDay}-{houseCount}-{keyword}";
            var    houses   = new List <BaseHouseInfo>();

            if (!refresh)
            {
                houses = RedisService.ReadSearchCache(redisKey);
                if (houses != null)
                {
                    return(houses);
                }
            }
            using (IDbConnection dbConnection = Connection)
            {
                dbConnection.Open();
                string search_SQL = $"SELECT * from { ConstConfigurationName.GetTableName(source)} where 1=1 " +
                                    $"and LocationCityName = @LocationCityName and  PubTime >= @PubTime";
                if (!string.IsNullOrEmpty(keyword))
                {
                    search_SQL = search_SQL + " and (HouseText like @KeyWord or HouseLocation like @KeyWord or HouseTitle like @KeyWord) ";
                }
                search_SQL = search_SQL + $" order by PubTime desc limit {houseCount} ";
                houses     = dbConnection.Query <BaseHouseInfo>(search_SQL,
                                                                new
                {
                    LocationCityName = cityName,
                    KeyWord          = $"%{keyword}%",
                    PubTime          = DateTime.Now.Date.AddDays(-intervalDay)
                }).ToList();
                RedisService.WriteSearchCache(redisKey, houses);
                return(houses);
            }
        }
Пример #7
0
        public static void BulkInsertHouses(List <BaseHouseInfo> list)
        {
            if (list == null || list.Count == 0)
            {
                return;
            }
            var tableName = ConstConfigurationName.GetTableName(list.FirstOrDefault().Source);

            using (IDbConnection dbConnection = Connection)
            {
                dbConnection.Open();
                IDbTransaction transaction = dbConnection.BeginTransaction();
                var            result      = dbConnection.Execute("INSERT INTO " + tableName + @" (`HouseTitle`, `HouseOnlineURL`, 
                                    `HouseLocation`, `DisPlayPrice`, 
                                    `PubTime`, `HousePrice`, 
                                    `LocationCityName`,
                                    `Source`,
                                    `HouseText`, 
                                    `IsAnalyzed`, 
                                    `Status`,`PicURLs`) 
                                     VALUES (@HouseTitle, @HouseOnlineURL,
                                            @HouseLocation, @DisPlayPrice,
                                            @PubTime, @HousePrice,
                                            @LocationCityName,
                                            @Source,
                                            @HouseText,
                                            @IsAnalyzed,
                                            @Status,@PicURLs)  ON DUPLICATE KEY UPDATE DataChange_LastTime=now();",
                                                                  list, transaction: transaction);
                transaction.Commit();
            }
        }
Пример #8
0
 public static List <Models.HouseDashboard> GetHouseDashboard()
 {
     using (IDbConnection dbConnection = Connection)
     {
         dbConnection.Open();
         var list = new List <Models.HouseDashboard>();
         foreach (var key in ConstConfigurationName.HouseTableNameDic.Keys)
         {
             var tableName  = ConstConfigurationName.GetTableName(key);
             var dashboards = dbConnection.Query <Models.HouseDashboard>(@"SELECT 
                         LocationCityName AS CityName,
                         Source, COUNT(id) AS HouseSum, 
                         MAX(PubTime) AS LastRecordPubTime
                     FROM 
                         " + tableName + $" GROUP BY LocationCityName, Source ORDER BY HouseSum desc;");
             list.AddRange(dashboards);
         }
         return(list.Where(dash => dash.LastRecordPubTime.CompareTo(DateTime.Now.AddDays(-30)) > 0)
                .ToList());
     }
 }
Пример #9
0
 public IActionResult GetUserCollectionHouses(string cityName, string source = "")
 {
     try
     {
         var userID = GetUserID();
         if (userID == 0)
         {
             return(Json(new { IsSuccess = false, error = "用户未登陆,无法查看房源收藏。" }));
         }
         var houseList = UserCollectionDapper.FindUserCollections(userID, cityName, source);
         var rooms     = houseList.Select(house =>
         {
             var markBGType = string.Empty;
             int housePrice = (int)house.HousePrice;
             if (housePrice > 0)
             {
                 markBGType = LocationMarkBGType.SelectColor(housePrice / 1000);
             }
             return(new HouseInfo
             {
                 ID = house.Id,
                 Source = house.Source,
                 Money = house.DisPlayPrice,
                 HouseURL = house.HouseOnlineURL,
                 HouseLocation = house.HouseLocation,
                 HouseTime = house.PubTime.ToString(),
                 HouseTitle = house.HouseTitle,
                 HousePrice = housePrice,
                 LocationMarkBG = markBGType,
                 DisplaySource = ConstConfigurationName.ConvertToDisPlayName(house.Source)
             });
         });
         return(Json(new { IsSuccess = true, HouseInfos = rooms }));
     }
     catch (Exception ex)
     {
         return(Json(new { IsSuccess = false, error = ex.ToString() }));
     }
 }