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> 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()); }
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 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); }
/// <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); }
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 })); }
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="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()); } }
private static IOrderedQueryable <PromotionEntity> OrderBy(IQueryable <PromotionEntity> e, PromotionSortOrder sort) { var order = OrderBy(sort); return(order(e)); }
/// <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()); }
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; }
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; }
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); }
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); }