/// <summary> /// 查询商品的折扣 /// </summary> /// <param name="commodityIds"></param> /// <returns></returns> public Dictionary <Guid, decimal> GetIntensity(List <Guid> commodityIds) { DateTime now = DateTime.Now; var promotionDic = (from p in PromotionItems.ObjectSet() join pro in Promotion.ObjectSet() on p.PromotionId equals pro.Id where commodityIds.Contains(p.CommodityId) && pro.EndTime > now && pro.StartTime < now select new { ComId = p.CommodityId, Intensity = pro.Intensity }).ToDictionary(p => p.ComId, p => p.Intensity); return(promotionDic); }
/// <summary> /// 查询所有折扣 /// </summary> /// <param name="sellerID">卖家ID</param> /// <param name="pageSize">每页显示数量</param> /// <param name="pageIndex">当前页</param> /// <returns></returns> public System.Collections.Generic.List <Jinher.AMP.BTP.Deploy.PromotionDTO> GetAllPromotion(System.Guid sellerID, int pageSize, int pageIndex) { var promotionDTO = Promotion.ObjectSet().Where(n => n.AppId == sellerID && n.EndTime > DateTime.Now).OrderByDescending(n => n.SubTime).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); if (promotionDTO.Count == 0) { return(null); } else { return(new Promotion().ToEntityDataList(promotionDTO)); } }
/// <summary> /// 查询某个商品的折扣 /// </summary> /// <param name="commodityId"></param> /// <returns></returns> public Decimal SelectIntensity(Guid commodityId, Guid appid) { DateTime now = DateTime.Now; var promotion = (from data in Promotion.ObjectSet() join data1 in PromotionItems.ObjectSet() on data.Id equals data1.PromotionId where data1.CommodityId == commodityId && data.AppId == appid && data.EndTime >= now && data.StartTime <= now select data).FirstOrDefault(); if (promotion == null) { return((decimal)10); } else { return(promotion.Intensity); } }
/// <summary> /// 数据库中商品活动信息与Redis中保存商品活动信息同步 /// </summary> /// <returns>1:成功 0:失败</returns> public static int CommodityDataAndRedisDataSynchronization() { try { var promotionList = Promotion.ObjectSet().Where(p => p.IsEnable == true && p.IsDel == false && p.StartTime <= DateTime.Now && p.EndTime >= DateTime.Now).Select(p => p.Id); if (promotionList.Any()) { foreach (Guid guid in promotionList) { PromotionRedis(guid); } } } catch (Exception ex) { LogHelper.Error(string.Format("Promotion.CommodityDataAndRedisDataSynchronization异常:Exception={0}", ex)); return(0); } return(1); }
/// <summary> /// 根据促销ID查询促销商品 /// </summary> /// <param name="promotionID">促销ID</param> /// <param name="pageSize">每页显示数量</param> /// <param name="pageIndex">当前页</param> /// <returns></returns> public System.Collections.Generic.IEnumerable <Jinher.AMP.BTP.Deploy.CustomDTO.PromotionItemsVM> GetPromotionItemsByPromotionID(System.Guid promotionID, int pageSize, int pageIndex) { var quary = from n in PromotionItems.ObjectSet() join m in Promotion.ObjectSet() on n.PromotionId equals m.Id join b in Commodity.ObjectSet() on n.CommodityId equals b.Id where (n.PromotionId == promotionID && b.CommodityType == 0) select new PromotionItemsVM { AppId = n.AppId, PromotionId = m.Id, CommodityId = b.Id, CommodityName = b.Name, Price = b.Price, Stock = b.Stock, PicturesPath = b.PicturesPath, TotalCollection = b.TotalCollection, TotalReview = b.TotalReview, Salesvolume = b.Salesvolume, State = b.State, Intensity = m.Intensity, No_Codes = b.No_Code, PromotionSubTime = b.SubTime }; var query1 = quary.OrderByDescending(n => n.PromotionSubTime).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); foreach (var c in query1) { c.CommodityCategorys = from cc in CommodityCategory.ObjectSet() join cate in Category.ObjectSet() on cc.CategoryId equals cate.Id where cc.CommodityId == c.CommodityId && cc.AppId == c.AppId select cate.Name; } return(query1); }