Ejemplo n.º 1
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());
            }
        }
Ejemplo n.º 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());
        }
Ejemplo n.º 3
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());
        }
Ejemplo n.º 4
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));
 }
Ejemplo n.º 5
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());
        }
Ejemplo n.º 6
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));
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 过滤 今天开始的活动
        /// </summary>
        /// <param name="dataStatus">数据状态</param>
        /// <param name="rangeInfo">时间范围</param>
        /// <param name="timestamp">时间戳</param>
        /// <param name="recommendUser"></param>
        /// <returns></returns>
        private static Expression <Func <PromotionEntity, bool> > Filter2(DataStatus?dataStatus, DateTimeRangeInfo rangeInfo, Timestamp timestamp, int?recommendUser)
        {
            /*查询逻辑
             * 1.今天开始的活动
             * 2.以前开始,今天还自进行的活动
             * 3.即将开始的活动,时间升序 24小时内的
             *
             * logic 例 size40
             */

            //2
            var filter = Filter(dataStatus, rangeInfo, timestamp, recommendUser);
            var start  = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);

            filter = filter.And(v => v.StartDate < start);

            return(filter);
        }
Ejemplo n.º 8
0
 /// <summary>
 /// 过滤
 /// </summary>
 /// <param name="dataStatus">数据状态</param>
 /// <param name="rangeInfo">时间范围</param>
 /// <param name="timestamp">时间戳</param>
 /// <param name="recommendUser"></param>
 /// <param name="tagids"></param>
 /// <returns></returns>
 private static Expression <Func <PromotionEntity, bool> > Filter(DataStatus?dataStatus, DateTimeRangeInfo rangeInfo, Timestamp timestamp, int?recommendUser, List <int> tagids, PromotionFilterMode?filterMode = null, List <int> ids = null, bool?hasProduct = null)
 {
     return(Filter(
                new PromotionFilter
     {
         DataStatus = dataStatus,
         DateTimeRangeInfo = rangeInfo,
         Timestamp = timestamp,
         RecommendUser = recommendUser,
         FilterMode = filterMode,
         HasProduct = hasProduct,
         Ids = ids,
         TagIds = tagids
     }
                ));
 }
Ejemplo n.º 9
0
 /// <summary>
 /// 过滤
 /// </summary>
 /// <param name="dataStatus">数据状态</param>
 /// <param name="rangeInfo">时间范围</param>
 /// <param name="timestamp">时间戳</param>
 /// <param name="recommendUser"></param>
 /// <returns></returns>
 private static Expression <Func <PromotionEntity, bool> > Filter(DataStatus?dataStatus, DateTimeRangeInfo rangeInfo, Timestamp timestamp, int?recommendUser)
 {
     return(Filter(dataStatus, rangeInfo, timestamp, recommendUser, null));
 }
        protected override GetOrderDeliveryTimeRangeRD ProcessRequest(APIRequest <GetOrderDeliveryTimeRangeRP> pRequest)
        {
            GetOrderDeliveryTimeRangeRD rd = new GetOrderDeliveryTimeRangeRD();
            //定义变量,取当前时间
            var now = DateTime.Now;
            //当前小时
            var startPoint = now.Hour;

            //如果当前分钟大于0。则从下一小时开始取
            if (now.Minute > 0)
            {
                startPoint = startPoint + 1;
            }
            //开始时间
            DateTime begin = DateTime.Now;

            //结束时间
            DateTime end = DateTime.Now;

            //当前小时在0-9,不在工作时间范围的,统一从11点开始
            if (startPoint <= 9)
            {                                  //早上9点之前
                begin = now.Date.AddHours(11); //开始时间从11点开始
            }
            //当前小时在19点到凌晨24点的时间,开始时间统一从第二天早上11点开始
            else if (startPoint >= 19)
            {
                begin = now.Date.AddDays(1).AddHours(11);//晚上19:00之后的,开始时间都从第二天的11点开始
            }
            else
            {
                begin = now.Date.AddHours(startPoint + 2); //除此之外的时间段,开始时间统一在2小小时之后。
            }

            end = begin.Date.AddDays(3).AddHours(21);   //结束时间为起始时间的3天之后的晚上9点
            //获取时间分段
            List <DateInfo> list = new List <DateInfo>();
            var             dt1  = new DateInfo();   //第一天

            dt1.Date = begin.ToString("yyyy-MM-dd"); //第一天的日期部分
            list.Add(dt1);

            List <DateTimeRangeInfo> range1 = new List <DateTimeRangeInfo>();
            var day1Begin = begin;                        //第一天的开始时间
            var day1End   = begin.Date.AddHours(21);      //第一天的结束时间

            while (day1Begin < day1End)                   //当开始时间小于结束时间的时候
            {
                var beginSection = day1Begin;             //开始时间等于第一天的开始时间
                var endSection   = day1Begin.AddHours(2); //结束时间等于开始时间+2小时
                if (endSection.Hour <= 21)                //当结束时间小于当天晚上21点的时候
                {                                         //时间段的结束时间不超过晚9点的,则2小时一划分
                    DateTimeRangeInfo r1 = new DateTimeRangeInfo();
                    r1.BeginTime = beginSection.ToString("HH:mm");
                    r1.EndTime   = endSection.ToString("HH:mm");
                    r1.Desc      = string.Format("{0} - {1}", r1.BeginTime, r1.EndTime);
                    range1.Add(r1);
                }
                else
                {//否则结束时间就为晚9点
                    DateTimeRangeInfo r1 = new DateTimeRangeInfo();
                    r1.BeginTime = beginSection.ToString("HH:mm");
                    r1.EndTime   = beginSection.Date.AddHours(21).ToString("HH:mm");
                    r1.Desc      = string.Format("{0} - {1}", r1.BeginTime, r1.EndTime);
                    range1.Add(r1);
                }
                //设置下一个时间分段的起始时间
                day1Begin = day1Begin.AddHours(2);
            }
            dt1.Ranges = range1.ToArray();

            //第二天
            var dt2 = new DateInfo();

            //日期天加一天。其余小时部分都从早上9点到晚上9点
            dt2.Date = begin.Date.AddDays(1).ToString("yyyy-MM-dd");
            list.Add(dt2);

            dt2.Ranges = new DateTimeRangeInfo[] {
                new DateTimeRangeInfo()
                {
                    BeginTime = "9:00", EndTime = "11:00", Desc = "9:00 - 11:00"
                }
                , new DateTimeRangeInfo()
                {
                    BeginTime = "11:00", EndTime = "13:00", Desc = "11:00 - 13:00"
                }
                , new DateTimeRangeInfo()
                {
                    BeginTime = "13:00", EndTime = "15:00", Desc = "13:00 - 15:00"
                }
                , new DateTimeRangeInfo()
                {
                    BeginTime = "15:00", EndTime = "17:00", Desc = "15:00 - 17:00"
                }
                , new DateTimeRangeInfo()
                {
                    BeginTime = "17:00", EndTime = "19:00", Desc = "17:00 - 19:00"
                }
                , new DateTimeRangeInfo()
                {
                    BeginTime = "19:00", EndTime = "21:00", Desc = "19:00 - 21:00"
                }
            };

            //第三天

            var dt3 = new DateInfo();

            //日期天加二天。其余小时部分都从早上9点到晚上9点
            dt3.Date = begin.Date.AddDays(2).ToString("yyyy-MM-dd");
            list.Add(dt3);

            dt3.Ranges = new DateTimeRangeInfo[] {
                new DateTimeRangeInfo()
                {
                    BeginTime = "9:00", EndTime = "11:00", Desc = "9:00 - 11:00"
                }
                , new DateTimeRangeInfo()
                {
                    BeginTime = "11:00", EndTime = "13:00", Desc = "11:00 - 13:00"
                }
                , new DateTimeRangeInfo()
                {
                    BeginTime = "13:00", EndTime = "15:00", Desc = "13:00 - 15:00"
                }
                , new DateTimeRangeInfo()
                {
                    BeginTime = "15:00", EndTime = "17:00", Desc = "15:00 - 17:00"
                }
                , new DateTimeRangeInfo()
                {
                    BeginTime = "17:00", EndTime = "19:00", Desc = "17:00 - 19:00"
                }
                , new DateTimeRangeInfo()
                {
                    BeginTime = "19:00", EndTime = "21:00", Desc = "19:00 - 21:00"
                }
            };
            //
            rd.DateRange = list.ToArray();
            return(rd);
        }