public IEnumerable <Recommendation> RecommendQuery(RecommendQuery query) { var account = AccountContext.Accounts.FirstOrDefault(s => s.Id == query.AccountId); if (account == null) { return(null); } IQueryable <Account> accountsQuery = AccountContext.Accounts;//.FromSql(""); accountsQuery = AddQueryItems(accountsQuery, query); accountsQuery = accountsQuery.Where(s => s.Sex != account.Sex); var now = SecondEpochConverter.ConvertTo(DateTime.UtcNow); var recommendation = accountsQuery.Select(a => new { Account = a, Premium = ((a.PremiumStart ?? long.MaxValue) <= now && ((a.PremiumFinish ?? 0) >= now)) ? 1000000000 : 0, Status = GetStatusCount(a.Status), Interests = InterestsComp(a.Interests, account.Interests), AgeDif = Math.Abs((account.Birth - a.Birth).TotalSeconds) }) .Where(r => r.Interests > 0) .OrderByDescending(r => r.Premium) .ThenByDescending(r => r.Status) .ThenByDescending(r => r.Interests) .ThenBy(r => r.AgeDif) .ThenBy(r => r.Account.Id) .Select(r => new Recommendation(r.Account)) .Take(query.Limit); return(recommendation); }
/// <summary> /// 分页获取推荐人统计列表 /// </summary> /// <param name="recommendQuery"></param> /// <returns></returns> public PageInfo <RecommendDataModel> GetRecommendList(RecommendQuery recommendQuery) { string querysql = @"SELECT MIN(b.id) AS ID, MIN(b.Name) AS Name, MIN(b.PhoneNo) AS PhoneNo, MIN (b.address) AS [Address], MIN(b.InsertTime) AS InsertTime, MIN(b.RecommendPhone) AS RecommendPhone, sum(o.OrderCount) AS OrderCount, MIN(b.Status) AS Stauts, ROW_NUMBER() OVER (order by b.Id ) AS RowNum INTO #Temp FROM dbo.business b(nolock) join dbo.[order] o (nolock) on b.Id=o.businessId where 1=1 {0} {1} {2} group by b.Id SELECT COUNT(ID) AS TotalCount FROM #Temp SELECT * FROM #Temp WHERE RowNum BETWEEN @Top AND @Last DROP TABLE #Temp"; string starPar = ""; string endPar = ""; string remPar = ""; if (!string.IsNullOrWhiteSpace(recommendQuery.StartDate)) { starPar = string.Format("AND o.PubDate>='{0}'", recommendQuery.StartDate); } if (!string.IsNullOrWhiteSpace(recommendQuery.EndDate)) { endPar = string.Format(" AND o.PubDate<='{0}' ", recommendQuery.EndDate); } if (!string.IsNullOrWhiteSpace(recommendQuery.RecommendPhone)) { remPar = string.Format(" AND B.RecommendPhone='{0}' ", recommendQuery.RecommendPhone.Trim()); } var dbParameters = DbHelper.CreateDbParameters(); var top = SystemConst.PageSize * (recommendQuery.PageIndex - 1) + 1; var last = top + SystemConst.PageSize - 1; dbParameters.Add("@Top", DbType.Int32).Value = top; dbParameters.Add("@Last", DbType.Int32).Value = last; DataSet ds = DbHelper.ExecuteDataset(SuperMan_Read, string.Format(querysql, starPar, endPar, remPar), dbParameters); if (ds.HasData()) { //无数据 return(new PageInfo <RecommendDataModel>(0, 1, new List <RecommendDataModel>(), 0, 15)); } var count = Convert.ToInt32(ds.Tables[0].Rows[0]["TotalCount"]); int pagecount = Convert.ToInt32(Math.Ceiling(count * 1.0 / SystemConst.PageSize)); var list = MapRows <RecommendDataModel>(ds.Tables[1]); PageInfo <RecommendDataModel> result = new PageInfo <RecommendDataModel>(count, recommendQuery.PageIndex, list, pagecount, SystemConst.PageSize); return(result); }
/// <summary> /// Post推荐统计分页列表 /// </summary> /// <param name="recommendQuery"></param> /// <returns></returns> public ActionResult PostRecommendStatistical(RecommendQuery recommendQuery) { //var criteria=new StatisticsProvider statisticsProvider = new StatisticsProvider(); var pagelist = statisticsProvider.GetRecommendList(recommendQuery); return(PartialView("PostRecommendStatistical", pagelist)); //return View(); }
/// <summary> /// 推荐统计页面 /// </summary> /// <returns></returns> public ActionResult RecommendStatistical() { RecommendQuery recommendQuery = new RecommendQuery(); recommendQuery.PageIndex = 1; StatisticsProvider statisticsProvider = new StatisticsProvider(); var pagelist = statisticsProvider.GetRecommendList(recommendQuery); return(View(pagelist)); }
public static bool TryParse(IQueryCollection query, ref RecommendQuery recommendQuery) { if (recommendQuery == null) { recommendQuery = new RecommendQuery(); } else { recommendQuery.Reset(); } foreach (KeyValuePair <string, StringValues> kvp in query) { if (!Parameters.TryGetValue(kvp.Key, out Parser <RecommendQuery> parser) || !parser(recommendQuery, kvp.Value)) { return(false); } } return(true); }
/// <summary> /// 获取推荐统计分页列表 /// </summary> /// <param name="recommendQuery"></param> /// <returns></returns> public PageInfo <RecommendDataModel> GetRecommendList(RecommendQuery recommendQuery) { if (string.IsNullOrWhiteSpace(recommendQuery.EndDate)) { recommendQuery.EndDate = ""; } if (string.IsNullOrWhiteSpace(recommendQuery.StartDate)) { recommendQuery.StartDate = ""; } if (string.IsNullOrWhiteSpace(recommendQuery.RecommendPhone)) { recommendQuery.RecommendPhone = ""; } if (recommendQuery.PageIndex < 1) { recommendQuery.PageIndex = 1; } return(statisticsDao.GetRecommendList(recommendQuery));; }