コード例 #1
0
 public List <PromotionEntity> GetPagedList(PagerRequest pagerRequest, out int totalCount,
                                            PromotionSortOrder sortOrder,
                                            DateTimeRangeInfo dateTimeRangeInfo, CoordinateInfo coordinateInfo,
                                            Timestamp timestamp, int?recommendUser)
 {
     return(GetPagedList(pagerRequest, out totalCount, sortOrder, dateTimeRangeInfo, coordinateInfo, timestamp,
                         recommendUser, PromotionFilterMode.Default));
 }
コード例 #2
0
        public List <PromotionEntity> GetPagedList(PagerRequest pagerRequest, out int totalCount, PromotionSortOrder sortOrder,
                                                   DateTimeRangeInfo dateTimeRangeInfo, CoordinateInfo coordinateInfo, Timestamp timestamp, int?recommendUser, PromotionFilterMode filterMode)
        {
            if (filterMode == PromotionFilterMode.New)
            {
                return(GetPagedListByNew(pagerRequest, out totalCount, sortOrder, dateTimeRangeInfo, coordinateInfo,
                                         timestamp, recommendUser));
            }

            if (filterMode == PromotionFilterMode.BeginStart)
            {
                return(GetPagedListByBeStart(null, pagerRequest, out totalCount, sortOrder, dateTimeRangeInfo, coordinateInfo,
                                             timestamp, recommendUser));
            }


            if (coordinateInfo != null)
            {
                //存储
                return(GetPagedList(pagerRequest.PageIndex, pagerRequest.PageSize, out totalCount, (int)sortOrder,
                                    coordinateInfo.Longitude, coordinateInfo.Latitude, timestamp));
            }

            return
                (base.Get(Filter(DataStatus.Normal, dateTimeRangeInfo, timestamp, recommendUser), out totalCount, pagerRequest.PageIndex,
                          pagerRequest.PageSize, OrderBy(sortOrder)).ToList());
        }
コード例 #3
0
        public List <PromotionEntity> GetPagedListForSearch(PagerRequest pagerRequest, out int totalCount, PromotionSortOrder sortOrder,
                                                            DateTimeRangeInfo dateTimeRangeInfo, CoordinateInfo coordinateInfo, Timestamp timestamp,
                                                            int?recommendUser, PromotionFilterMode?filterMode, string promotionName, List <int> tagids,
                                                            int?brandId)
        {
            var filter = Filter(DataStatus.Normal, null, timestamp, recommendUser, tagids);

            if (!String.IsNullOrWhiteSpace(promotionName))
            {
                filter = filter.And(v => v.Name.StartsWith(promotionName));
            }

            return(base.Get(filter, out totalCount, pagerRequest.PageIndex,
                            pagerRequest.PageSize, OrderBy(sortOrder)).ToList());
        }
コード例 #4
0
        public IQueryable <PromotionEntity> Get(PagerRequest pagerRequest, out int totalCount, PromotionSortOrder sortOrder, PromotionFilter filter)
        {
            var linq = Get(filter);

            totalCount = linq.Count();

            var skipCount = (pagerRequest.PageIndex - 1) * pagerRequest.PageSize;

            linq = OrderBy(linq, sortOrder);

            linq = skipCount == 0 ? linq.Take(pagerRequest.PageSize) : linq.Skip(skipCount).Take(pagerRequest.PageSize);



            return(linq);
        }
コード例 #5
0
        /// <summary>
        /// 排序
        /// </summary>
        /// <param name="sort"></param>
        /// <returns></returns>
        private static Func <IQueryable <PromotionEntity>, IOrderedQueryable <PromotionEntity> > OrderBy(PromotionSortOrder sort)
        {
            Func <IQueryable <PromotionEntity>, IOrderedQueryable <PromotionEntity> > orderBy = null;

            switch (sort)
            {
            case PromotionSortOrder.CreatedDateDesc:
                orderBy = v => v.OrderByDescending(s => s.CreatedDate);
                break;

            case PromotionSortOrder.Near:
                break;

            case PromotionSortOrder.Hot:    //最热
                orderBy = v => v.OrderByDescending(s => s.IsTop).ThenByDescending(s => s.LikeCount);
                break;

            //最新
            case PromotionSortOrder.New:
                orderBy = v => v.OrderByDescending(s => s.IsTop).ThenByDescending(s => s.StartDate);
                break;

            case PromotionSortOrder.StartAsc:
                orderBy = v => v.OrderByDescending(s => s.IsTop).ThenBy(s => s.StartDate);
                break;

            case PromotionSortOrder.StartDesc:
            case PromotionSortOrder.Default:
            default:
                orderBy = v => v.OrderByDescending(s => s.IsTop).ThenByDescending(s => s.StartDate);
                break;
            }

            return(orderBy);
        }
コード例 #6
0
 public IQueryable <PromotionEntity> Get(PagerRequest pagerRequest, out int totalCount, PromotionSortOrder sortOrder, Timestamp timestamp, PromotionFilterMode?filterMode, DataStatus?dataStatus, bool?hasBanner)
 {
     return(Get(pagerRequest, out totalCount, sortOrder, new PromotionFilter
     {
         DataStatus = dataStatus,
         FilterMode = filterMode,
         HasBanner = hasBanner,
         Timestamp = timestamp
     }));
 }
コード例 #7
0
        public List <PromotionEntity> GetPagedList(PagerRequest pagerRequest, out int totalCount, PromotionSortOrder sortOrder,
                                                   DateTimeRangeInfo dateTimeRangeInfo, CoordinateInfo coordinateInfo, Timestamp timestamp,
                                                   int?recommendUser, PromotionFilterMode filterMode, int?specialSkipCount)
        {
            if (specialSkipCount == null || specialSkipCount.Value == 0 || filterMode != PromotionFilterMode.BeginStart)
            {
                return(GetPagedList(pagerRequest, out totalCount, sortOrder, dateTimeRangeInfo, coordinateInfo,
                                    timestamp, recommendUser, filterMode));
            }

            var skipCount = specialSkipCount.Value;

            return(GetPagedListByBeStart(skipCount,
                                         pagerRequest, out totalCount, sortOrder, dateTimeRangeInfo, coordinateInfo,
                                         timestamp, recommendUser));
        }
コード例 #8
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="skipCount"></param>
        /// <param name="pagerRequest"></param>
        /// <param name="totalCount"></param>
        /// <param name="sortOrder"></param>
        /// <param name="dateTimeRangeInfo"></param>
        /// <param name="coordinateInfo"></param>
        /// <param name="timestamp"></param>
        /// <param name="recommendUser"></param>
        /// <returns></returns>
        private List <PromotionEntity> GetPagedListByBeStart(int?skipCount, PagerRequest pagerRequest, out int totalCount, PromotionSortOrder sortOrder,
                                                             DateTimeRangeInfo dateTimeRangeInfo, CoordinateInfo coordinateInfo, Timestamp timestamp, int?recommendUser)
        {
            /*查询逻辑
             * 1.今天开始的活动
             * 2.以前开始,今天还自进行的活动
             * 3.即将开始的活动,时间升序 24小时内的
             *
             * logic 例 size40
             */
            var f3 = Filter3(DataStatus.Normal, new DateTimeRangeInfo()
            {
                EndDateTime = DateTime.Now
            }, timestamp, recommendUser);


            if (skipCount == null)
            {
                return
                    (base.Get(f3, out totalCount, pagerRequest.PageIndex, pagerRequest.PageSize,
                              OrderBy(PromotionSortOrder.StartAsc)).ToList());
            }
            else
            {
                return
                    (base.Get(f3, out totalCount, pagerRequest.PageIndex, pagerRequest.PageSize,
                              OrderBy(PromotionSortOrder.StartAsc), skipCount.Value).ToList());
            }
        }
コード例 #9
0
        private static IOrderedQueryable <PromotionEntity> OrderBy(IQueryable <PromotionEntity> e, PromotionSortOrder sort)
        {
            var order = OrderBy(sort);

            return(order(e));
        }
コード例 #10
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="pagerRequest"></param>
        /// <param name="totalCount"></param>
        /// <param name="sortOrder"></param>
        /// <param name="dateTimeRangeInfo"></param>
        /// <param name="coordinateInfo"></param>
        /// <param name="timestamp"></param>
        /// <param name="recommendUser"></param>
        /// <returns></returns>
        private List <PromotionEntity> GetPagedListByNew(PagerRequest pagerRequest, out int totalCount, PromotionSortOrder sortOrder,
                                                         DateTimeRangeInfo dateTimeRangeInfo, CoordinateInfo coordinateInfo, Timestamp timestamp, int?recommendUser)
        {
            /*查询逻辑
             * 1.今天开始的活动
             * 2.以前开始,今天还自进行的活动
             * 3.即将开始的活动,时间升序 24小时内的
             *
             * logic 例 size40
             */

            var r = new DateTimeRangeInfo
            {
                EndDateTime = DateTime.Now
            };

            var f1 = Filter1(DataStatus.Normal, r, timestamp, recommendUser);

            var f2 = Filter2(DataStatus.Normal, r, timestamp, recommendUser);

            var skip = (pagerRequest.PageIndex - 1) * pagerRequest.PageSize;

            var t = base.Get(f1)
                    .Union(
                base.Get(f2));

            totalCount = t.Count();

            if (pagerRequest.PageSize == 1)
            {
                return(t.OrderByDescending(s => s.IsTop).ThenByDescending(v => v.StartDate).Take(pagerRequest.PageSize).ToList());
            }

            return(t.OrderByDescending(s => s.IsTop).ThenByDescending(v => v.StartDate).Skip(skip).Take(pagerRequest.PageSize).ToList());
        }
コード例 #11
0
        private PromotionCollectionResponse GetList(PagerRequest pagerRequest, Timestamp timestamp, PromotionSortOrder sortOrder, CoordinateInfo coordinateInfo)
        {

            int totalCount;
            var entitys = Get(pagerRequest, timestamp, sortOrder, coordinateInfo, out totalCount);

            var response = new PromotionCollectionResponse(pagerRequest, totalCount)
            {
                Promotions = MappingManager.PromotionResponseMapping(entitys, coordinateInfo)
            };


            return response;
        }
コード例 #12
0
        private List<PromotionEntity> Get(PagerRequest pageRequest, Timestamp timestamp, PromotionSortOrder sortOrder, CoordinateInfo coordinateInfo, out int totalCount)
        {
            List<PromotionEntity> entitys;

            switch (sortOrder)
            {
                case PromotionSortOrder.Near:
                    //先找 店铺地理位置,找到并且有促销的店铺
                    //根据店铺筛出商品
                    entitys = _promotionRepository.GetPagedList(pageRequest.PageIndex, pageRequest.PageSize, out totalCount,
                                                           (int)sortOrder, coordinateInfo.Longitude, coordinateInfo.Latitude, timestamp);
                    break;
                case PromotionSortOrder.New:
                    /*查询逻辑
                     * 1.今天开始的活动
                     * 2.以前开始,今天还自进行的活动
                     * 3.即将开始的活动,时间升序 24小时内的
                     * 
                     * logic 例 size40 
                     */

                    //1
                    entitys = _promotionRepository.GetPagedList(pageRequest, out totalCount, PromotionSortOrder.New, new DateTimeRangeInfo
                    {
                        StartDateTime = DateTime.Now,
                        EndDateTime = DateTime.Now

                    }, coordinateInfo, timestamp, null, PromotionFilterMode.New);

                    var t = pageRequest.PageIndex * pageRequest.PageSize;

                    var e2Size = 0;
                    var e2Index = 1;
                    List<PromotionEntity> e2;
                    var e2Count = 0;
                    var c = t - totalCount;
                    int? skipCount = null;
                    if (c <= 0)
                    {
                        e2Index = 1;
                        e2Size = 0;
                    }
                    else if (c > 0 && c < pageRequest.PageSize)
                    {
                        //1
                        e2Index = 1;
                        e2Size = c;
                    }
                    else
                    {
                        e2Index = (int)Math.Ceiling(c / (double)pageRequest.PageSize);
                        e2Size = pageRequest.PageSize;

                        if (e2Index > 1)
                        {
                            skipCount = c - (e2Index - 1) * e2Size + (pageRequest.PageSize * (e2Index - 2));
                        }
                    }

                    var p2 = new PagerRequest(e2Index, e2Size);

                    e2 = _promotionRepository.GetPagedList(p2, out e2Count, PromotionSortOrder.New, new DateTimeRangeInfo
                    {
                        StartDateTime = DateTime.Now,
                        EndDateTime = DateTime.Now
                    }, coordinateInfo, timestamp, null, PromotionFilterMode.BeginStart, skipCount);

                    if (e2.Count != 0 && e2Size != 0)
                    {
                        entitys.AddRange(e2);
                    }

                    //总记录数
                    totalCount = totalCount + e2Count;
                    //entitys = _promotionRepository.GetPagedList(pageRequest.PageIndex, pageRequest.PageSize,
                    //                    out totalCount, (int)request.SortOrder, timestamp);
                    break;
                default:
                    entitys = _promotionRepository.GetPagedList(pageRequest.PageIndex, pageRequest.PageSize,
                                                             out totalCount, (int)sortOrder, timestamp);
                    break;
            }

            return entitys;
        }
コード例 #13
0
        private PromotionCollectionResponse GetList(PagerRequest pagerRequest, Timestamp timestamp, PromotionSortOrder sortOrder, CoordinateInfo coordinateInfo)
        {
            int totalCount;
            var entitys = Get(pagerRequest, timestamp, sortOrder, coordinateInfo, out totalCount);

            var response = new PromotionCollectionResponse(pagerRequest, totalCount)
            {
                Promotions = MappingManager.PromotionResponseMapping(entitys, coordinateInfo)
            };


            return(response);
        }
コード例 #14
0
        private List <PromotionEntity> Get(PagerRequest pageRequest, Timestamp timestamp, PromotionSortOrder sortOrder, CoordinateInfo coordinateInfo, out int totalCount)
        {
            List <PromotionEntity> entitys;

            switch (sortOrder)
            {
            case PromotionSortOrder.Near:
                //先找 店铺地理位置,找到并且有促销的店铺
                //根据店铺筛出商品
                entitys = _promotionRepository.GetPagedList(pageRequest.PageIndex, pageRequest.PageSize, out totalCount,
                                                            (int)sortOrder, coordinateInfo.Longitude, coordinateInfo.Latitude, timestamp);
                break;

            case PromotionSortOrder.New:
                /*查询逻辑
                 * 1.今天开始的活动
                 * 2.以前开始,今天还自进行的活动
                 * 3.即将开始的活动,时间升序 24小时内的
                 *
                 * logic 例 size40
                 */

                //1
                entitys = _promotionRepository.GetPagedList(pageRequest, out totalCount, PromotionSortOrder.New, new DateTimeRangeInfo
                {
                    StartDateTime = DateTime.Now,
                    EndDateTime   = DateTime.Now
                }, coordinateInfo, timestamp, null, PromotionFilterMode.New);

                var t = pageRequest.PageIndex * pageRequest.PageSize;

                var e2Size  = 0;
                var e2Index = 1;
                List <PromotionEntity> e2;
                var e2Count   = 0;
                var c         = t - totalCount;
                int?skipCount = null;
                if (c <= 0)
                {
                    e2Index = 1;
                    e2Size  = 0;
                }
                else if (c > 0 && c < pageRequest.PageSize)
                {
                    //1
                    e2Index = 1;
                    e2Size  = c;
                }
                else
                {
                    e2Index = (int)Math.Ceiling(c / (double)pageRequest.PageSize);
                    e2Size  = pageRequest.PageSize;

                    if (e2Index > 1)
                    {
                        skipCount = c - (e2Index - 1) * e2Size + (pageRequest.PageSize * (e2Index - 2));
                    }
                }

                var p2 = new PagerRequest(e2Index, e2Size);

                e2 = _promotionRepository.GetPagedList(p2, out e2Count, PromotionSortOrder.New, new DateTimeRangeInfo
                {
                    StartDateTime = DateTime.Now,
                    EndDateTime   = DateTime.Now
                }, coordinateInfo, timestamp, null, PromotionFilterMode.BeginStart, skipCount);

                if (e2.Count != 0 && e2Size != 0)
                {
                    entitys.AddRange(e2);
                }

                //总记录数
                totalCount = totalCount + e2Count;
                //entitys = _promotionRepository.GetPagedList(pageRequest.PageIndex, pageRequest.PageSize,
                //                    out totalCount, (int)request.SortOrder, timestamp);
                break;

            default:
                entitys = _promotionRepository.GetPagedList(pageRequest.PageIndex, pageRequest.PageSize,
                                                            out totalCount, (int)sortOrder, timestamp);
                break;
            }

            return(entitys);
        }