/// <summary> /// 重写 Main页面 商品类别列表页面 数据 /// </summary> /// <param name="page"></param> /// <param name="size"></param> /// <param name="moduleID"></param> /// <returns></returns> public IEnumerable<CommodityDiscountInfoCNb> CommodityInfoQueryByPage(int page, int size, string moduleID, string strSearch) { //Init int iIndex = (page - 1) * size; //Result List<CommodityDiscountInfoCNa> result = new List<CommodityDiscountInfoCNa>(); //Query IEnumerable<CommodityDiscountInfoCNa> list = new CommodityDiscountInfoDAL().CommodityInfoQueryByPage(page, size, moduleID, strSearch); //需要进行筛选 DateTime now = DateTime.Now; //1.需要排除掉折扣 - 时间筛选 IEnumerable<string> excludeID = list.Where(x => x.RealStartTime != null && ((DateTime.Compare(Convert.ToDateTime(x.RealStartTime), now) < 0 && DateTime.Compare(Convert.ToDateTime(x.RealEndTime), now) < 0) || DateTime.Compare(Convert.ToDateTime(x.RealStartTime), now) > 0)). Select(x => x.DiscountID). Distinct(); //2.相同时间段筛选 foreach (var item in list.GroupBy(x => x.ID)) { CommodityDiscountInfoCNa cItem = new CommodityDiscountInfoCNa(); if (item.Count().Equals(1) && item.ElementAt(0).RealStartTime == null) { //没有折扣 //4.没有折扣的也要注意 cItem = item.ElementAt(0); cItem.DiscountPrice = cItem.Price; cItem.HasDiscount = false; } else { //有折扣 //3.最后保留一个数据 cItem = item.Where(x => !excludeID.Contains(x.DiscountID)).OrderByDescending(x => x.RealDiscountOpeDate).FirstOrDefault(); if (cItem == null) { CommodityDiscountInfoCNa itemInfo = item.ElementAt(0); itemInfo.DiscountCount = 0; itemInfo.DiscountFlag = 0; itemInfo.DiscountID = string.Empty; itemInfo.DiscountOpeDate = null; itemInfo.DiscountPost = 0; itemInfo.DiscountPrice = 0; itemInfo.DiscountValue = 0; itemInfo.RealDiscountOpeDate = null; itemInfo.RealStartTime = null; itemInfo.RealEndTime = null; itemInfo.StartTime = null; itemInfo.EndTime = null; cItem = itemInfo; cItem.DiscountPrice = cItem.Price; cItem.HasDiscount = false; } else { cItem.HasDiscount = true; } } result.Add(cItem); } //Convert IEnumerable<CommodityDiscountInfoCNb> resultNa = result.Select(x => { return new CommodityDiscountInfoCNb() { ID = x.ID, MID = x.MID, StoreID = x.StoreID, Title = x.Title, Price = x.Price, Intro = x.Intro, Remark = x.Remark, Photo = x.Photo, Flag = x.Flag, DiscountFlag = x.DiscountFlag, PostType = x.PostType, PostPrice = x.PostPrice, iOrder = x.iOrder, OpeDate = x.OpeDate == null ? string.Empty : x.OpeDate.ToString(), State = x.State, Stock = x.Stock, DiscountValue = x.DiscountValue, DiscountPrice = x.DiscountPrice, DiscountCount = x.DiscountCount, StartTime = x.StartTime == null ? string.Empty : x.StartTime.ToString(), EndTime = x.EndTime == null ? string.Empty : x.EndTime.ToString(), DiscountPost = x.DiscountPost, IsEndCommodity = x.IsEndCommodity, DiscountOpeDate = x.DiscountOpeDate == null ? string.Empty : x.DiscountOpeDate.ToString(), HasDiscount = x.HasDiscount }; }); return resultNa.Skip(iIndex).Take(size); }
/// <summary> /// 商品关联折扣信息数据查询:商品详情页面用 /// </summary> /// <param name="commodityID"></param> /// <returns></returns> public CommodityDiscountInfoCNb CommodityInfoQueryOnce(string commodityID) { //Query IEnumerable<CommodityDiscountInfoCNa> list = new CommodityDiscountInfoDAL().CommodityInfoQueryOnce(" COMM.ID = @ID", new { ID = commodityID }); //开始折扣筛选 DateTime now = DateTime.Now; //1.需要排除掉折扣 - 时间筛选 IEnumerable<string> excludeID = list.Where(x => x.RealStartTime != null && ((DateTime.Compare(Convert.ToDateTime(x.RealStartTime), now) < 0 && DateTime.Compare(Convert.ToDateTime(x.RealEndTime), now) < 0) || DateTime.Compare(Convert.ToDateTime(x.RealStartTime), now) > 0)). Select(x => x.DiscountID). Distinct(); //第一阶段结果集 CommodityDiscountInfoCNa cItem = new CommodityDiscountInfoCNa(); if (list.Count().Equals(1) && list.ElementAt(0).RealStartTime == null) { //没有折扣 //4.没有折扣的也要注意 cItem = list.ElementAt(0); cItem.DiscountPrice = cItem.Price; cItem.HasDiscount = false; } else { //有折扣 //3.最后保留一个数据 cItem = list.Where(x => !excludeID.Contains(x.DiscountID)).OrderByDescending(x => x.RealDiscountOpeDate).FirstOrDefault(); if (cItem == null) { CommodityDiscountInfoCNa itemInfo = list.ElementAt(0); itemInfo.DiscountCount = 0; itemInfo.DiscountFlag = 0; itemInfo.DiscountID = string.Empty; itemInfo.DiscountOpeDate = null; itemInfo.DiscountPost = 0; itemInfo.DiscountPrice = 0; itemInfo.DiscountValue = 0; itemInfo.RealDiscountOpeDate = null; itemInfo.RealStartTime = null; itemInfo.RealEndTime = null; itemInfo.StartTime = null; itemInfo.EndTime = null; cItem = itemInfo; cItem.DiscountPrice = cItem.Price; cItem.HasDiscount = false; } else { cItem.HasDiscount = true; } } //第二阶段结果集 CommodityDiscountInfoCNb result = new CommodityDiscountInfoCNb() { ID = cItem.ID, MID = cItem.MID, StoreID = cItem.StoreID, Title = cItem.Title, Price = cItem.Price, Intro = cItem.Intro, Remark = cItem.Remark, Photo = cItem.Photo, Flag = cItem.Flag, DiscountFlag = cItem.DiscountFlag, PostType = cItem.PostType, PostPrice = cItem.PostPrice, iOrder = cItem.iOrder, OpeDate = cItem.OpeDate == null ? string.Empty : cItem.OpeDate.ToString(), State = cItem.State, Stock = cItem.Stock, DiscountValue = cItem.DiscountValue, DiscountPrice = cItem.DiscountPrice, DiscountCount = cItem.DiscountCount, StartTime = cItem.StartTime == null ? string.Empty : cItem.StartTime.ToString(), EndTime = cItem.EndTime == null ? string.Empty : cItem.EndTime.ToString(), DiscountPost = cItem.DiscountPost, IsEndCommodity = cItem.IsEndCommodity, DiscountOpeDate = cItem.DiscountOpeDate == null ? string.Empty : cItem.DiscountOpeDate.ToString(), HasDiscount = cItem.HasDiscount }; return result; }