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