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);
        }
Exemple #3
0
        /// <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();
        }
Exemple #4
0
        /// <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);
        }
Exemple #6
0
 /// <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));;
 }