/// <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()); } }
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()); }
/// <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()); }
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)); }
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()); }
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)); }
/// <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); }
/// <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 } )); }
/// <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); }