private ExecuteResult<SpecialTopicCollectionResponse> Get(PagerRequest pagerRequest, SpecialTopicSortOrder sortOrder, Timestamp timestamp)
        {



            int totalCount;

            var data = _specialTopicRepository.GetPagedList(pagerRequest, out totalCount, sortOrder,
                                                            timestamp);

            var response = new SpecialTopicCollectionResponse(pagerRequest, totalCount)
            {
                SpecialTopics = MappingManager.SpecialTopicInfoResponseMapping(data).ToList()
            };




            var result = new ExecuteResult<SpecialTopicCollectionResponse> { Data = response };

            return result;
        }
예제 #2
0
        private ItemsCollectionResponse Get(float version, PagerRequest pagerRequest, Timestamp timestamp, int userid)
        {
            var pager = new PagerRequest(pagerRequest.PageIndex, pagerRequest.PageSize, pagerRequest.PageSize * 2);

            int total1, total2;
            IEnumerable<ItemsInfoResponse> infolist;

            if (version > 2.09)
            {
                var productList = _productRepository.Get(pager, out total1, ProductSortOrder.CreatedDateDesc, new ProductFilter
                    {
                        Timestamp = timestamp,
                        RecommendUser = userid
                    });

                var promotionList = _promotionRepository.Get(pager, out total2, PromotionSortOrder.CreatedDateDesc, new PromotionFilter
                    {
                        RecommendUser = userid
                    });

                infolist = MappingManager.ItemsInfoResponseMapping(productList, promotionList, null, false);
            }
            else
            {
                var productList = _productRepository.GetPagedList(pager, out total1, ProductSortOrder.CreatedDateDesc,
                                                          timestamp, null, userid, null);

                var promotionList = _promotionRepository.GetPagedList(pager, out total2, PromotionSortOrder.CreatedDateDesc, null, null, null, userid);

                infolist = MappingManager.ItemsInfoResponseMapping(productList, promotionList);
            }

            var data = infolist.OrderByDescending(v => v.CreatedDate).Take(pagerRequest.PageSize).ToList();

            var reponse = new ItemsCollectionResponse(pagerRequest, total1 + total2) { Items = data };

            return reponse;
        }
        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;
        }
        /// <summary>
        /// 刷新接口
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public ExecuteResult<PromotionCollectionResponse> GetPromotionListForRefresh(GetPromotionListForRefresh request)
        {
            var timestamp = new Timestamp { TsType = TimestampType.New, Ts = DateTime.Parse(request.RefreshTs) };

            var response = GetList(request.PagerRequest, timestamp, request.SortOrder, request.CoordinateInfo);

            var result = new ExecuteResult<PromotionCollectionResponse> { Data = response };

            return result;
        }
        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;
        }