/// <summary> /// 从IDataReader创建PartProductInfo /// </summary> public static PartProductInfo BuildPartProductFromReader(IDataReader reader) { PartProductInfo partProductInfo = new PartProductInfo(); partProductInfo.Pid = TypeHelper.ObjectToInt(reader["pid"]); partProductInfo.PSN = reader["psn"].ToString(); partProductInfo.CateId = TypeHelper.ObjectToInt(reader["cateid"]); partProductInfo.BrandId = TypeHelper.ObjectToInt(reader["brandid"]); partProductInfo.StoreId = TypeHelper.ObjectToInt(reader["storeid"]); partProductInfo.StoreCid = TypeHelper.ObjectToInt(reader["storecid"]); partProductInfo.StoreSTid = TypeHelper.ObjectToInt(reader["storestid"]); partProductInfo.SKUGid = TypeHelper.ObjectToInt(reader["skugid"]); partProductInfo.Name = reader["name"].ToString(); partProductInfo.ShopPrice = TypeHelper.ObjectToDecimal(reader["shopprice"]); partProductInfo.MarketPrice = TypeHelper.ObjectToDecimal(reader["marketprice"]); partProductInfo.CostPrice = TypeHelper.ObjectToDecimal(reader["costprice"]); partProductInfo.State = TypeHelper.ObjectToInt(reader["state"]); partProductInfo.IsBest = TypeHelper.ObjectToInt(reader["isbest"]); partProductInfo.IsHot = TypeHelper.ObjectToInt(reader["ishot"]); partProductInfo.IsNew = TypeHelper.ObjectToInt(reader["isnew"]); partProductInfo.DisplayOrder = TypeHelper.ObjectToInt(reader["displayorder"]); partProductInfo.Weight = TypeHelper.ObjectToInt(reader["weight"]); partProductInfo.ShowImg = reader["showimg"].ToString(); partProductInfo.SaleCount = TypeHelper.ObjectToInt(reader["salecount"]); partProductInfo.VisitCount = TypeHelper.ObjectToInt(reader["visitcount"]); partProductInfo.ReviewCount = TypeHelper.ObjectToInt(reader["reviewcount"]); partProductInfo.Star1 = TypeHelper.ObjectToInt(reader["star1"]); partProductInfo.Star2 = TypeHelper.ObjectToInt(reader["star2"]); partProductInfo.Star3 = TypeHelper.ObjectToInt(reader["star3"]); partProductInfo.Star4 = TypeHelper.ObjectToInt(reader["star4"]); partProductInfo.Star5 = TypeHelper.ObjectToInt(reader["star5"]); partProductInfo.AddTime = TypeHelper.ObjectToDateTime(reader["addtime"]); return partProductInfo; }
/// <summary> /// 创建OrderProductInfo /// </summary> public static OrderProductInfo BuildOrderProduct(PartProductInfo partProuctInfo) { OrderProductInfo orderProductInfo = new OrderProductInfo(); orderProductInfo.Pid = partProuctInfo.Pid; orderProductInfo.PSN = partProuctInfo.PSN; orderProductInfo.CateId = partProuctInfo.CateId; orderProductInfo.BrandId = partProuctInfo.BrandId; orderProductInfo.StoreId = partProuctInfo.StoreId; orderProductInfo.StoreCid = partProuctInfo.StoreCid; orderProductInfo.StoreSTid = partProuctInfo.StoreSTid; orderProductInfo.Name = partProuctInfo.Name; orderProductInfo.DiscountPrice = partProuctInfo.ShopPrice; orderProductInfo.ShopPrice = partProuctInfo.ShopPrice; orderProductInfo.MarketPrice = partProuctInfo.MarketPrice; orderProductInfo.CostPrice = partProuctInfo.CostPrice; orderProductInfo.Weight = partProuctInfo.Weight; orderProductInfo.ShowImg = partProuctInfo.ShowImg; return orderProductInfo; }
/// <summary> /// 添加满赠到购物车中 /// </summary> /// <param name="orderProductList">订单商品列表</param> /// <param name="partProductInfo">购买商品</param> /// <param name="fullSendPromotionInfo">满赠促销活动</param> /// <param name="sid">用户sessionId</param> /// <param name="uid">用户id</param> /// <param name="buyTime">购买时间</param> public static void AddFullSendToCart(ref List<OrderProductInfo> orderProductList, PartProductInfo partProductInfo, FullSendPromotionInfo fullSendPromotionInfo, string sid, int uid, DateTime buyTime) { OrderProductInfo orderProductInfo = BuildOrderProduct(partProductInfo); InitOrderProduct(orderProductInfo, 0, sid, uid, buyTime); SetFullSendOrderProduct(orderProductInfo, fullSendPromotionInfo); AddOrderProductList(new List<OrderProductInfo>() { orderProductInfo }); orderProductList.Add(orderProductInfo); }
/// <summary> /// 将商品添加到购物车 /// </summary> /// <param name="orderProductList">订单商品列表</param> /// <param name="buyCount">购买数量</param> /// <param name="partProductInfo">购买商品</param> /// <param name="sid">用户sessionId</param> /// <param name="uid">用户id</param> /// <param name="buyTime">购买时间</param> public static void AddProductToCart(ref List<OrderProductInfo> orderProductList, int buyCount, PartProductInfo partProductInfo, string sid, int uid, DateTime buyTime) { if (orderProductList.Count == 0) { AddNewProductToCart(ref orderProductList, buyCount, partProductInfo, sid, uid, buyTime); } else { OrderProductInfo orderProductInfo = GetCommonOrderProductByPid(partProductInfo.Pid, orderProductList); if (orderProductInfo == null)//此商品作为普通商品不存在于购物车中时 AddNewProductToCart(ref orderProductList, buyCount, partProductInfo, sid, uid, buyTime); else//此商品作为普通商品存在于购物车中时 AddExistProductToCart(ref orderProductList, buyCount, orderProductInfo, buyTime); } }
/// <summary> /// 添加新商品到购物车 /// </summary> /// <param name="orderProductList">订单商品列表</param> /// <param name="buyCount">购买数量</param> /// <param name="partProductInfo">购买商品</param> /// <param name="sid">用户sessionId</param> /// <param name="uid">用户id</param> /// <param name="buyTime">购买时间</param> public static void AddNewProductToCart(ref List<OrderProductInfo> orderProductList, int buyCount, PartProductInfo partProductInfo, string sid, int uid, DateTime buyTime) { //需要添加的商品列表 List<OrderProductInfo> addOrderProductList = new List<OrderProductInfo>(); //初始化订单商品 OrderProductInfo mainOrderProductInfo = BuildOrderProduct(partProductInfo); InitOrderProduct(mainOrderProductInfo, buyCount, sid, uid, buyTime); //获得买送促销活动 BuySendPromotionInfo buySendPromotionInfo = Promotions.GetBuySendPromotion(buyCount, partProductInfo.StoreId, partProductInfo.Pid, buyTime); //当买送促销活动存在时设置订单商品信息 if (buySendPromotionInfo != null) SetBuySendPromotionOfOrderProduct(mainOrderProductInfo, buyCount, buySendPromotionInfo); //获得单品促销活动 SinglePromotionInfo singlePromotionInfo = Promotions.GetSinglePromotionByPidAndTime(partProductInfo.Pid, buyTime); //当单品促销活动存在时则设置订单商品信息 if (singlePromotionInfo != null) SetSinglePromotionOfOrderProduct(mainOrderProductInfo, singlePromotionInfo); //获得满赠促销活动 FullSendPromotionInfo fullSendPromotionInfo = Promotions.GetFullSendPromotionByStoreIdAndPidAndTime(partProductInfo.StoreId, partProductInfo.Pid, buyTime); if (fullSendPromotionInfo != null) SetFullSendPromotionOfOrderProduct(mainOrderProductInfo, fullSendPromotionInfo); //获得满减促销活动 FullCutPromotionInfo fullCutPromotionInfo = Promotions.GetFullCutPromotionByStoreIdAndPidAndTime(partProductInfo.StoreId, partProductInfo.Pid, buyTime); if (fullCutPromotionInfo != null) SetFullCutPromotionOfOrderProduct(mainOrderProductInfo, fullCutPromotionInfo); //将商品添加到"需要添加的商品列表"中 addOrderProductList.Add(mainOrderProductInfo); //获得赠品列表 GiftPromotionInfo giftPromotionInfo = Promotions.GetGiftPromotionByPidAndTime(partProductInfo.Pid, buyTime); if (giftPromotionInfo != null) { List<ExtGiftInfo> extGiftList = Promotions.GetExtGiftList(giftPromotionInfo.PmId); if (extGiftList.Count > 0) { mainOrderProductInfo.ExtCode3 = giftPromotionInfo.PmId; foreach (ExtGiftInfo extGiftInfo in extGiftList) { OrderProductInfo giftOrderProduct = BuildOrderProduct(extGiftInfo); InitOrderProduct(giftOrderProduct, 0, sid, uid, buyTime); SetGiftOrderProduct(giftOrderProduct, 1, mainOrderProductInfo.RealCount, extGiftInfo.Number, giftPromotionInfo.PmId); //将赠品添加到"需要添加的商品列表"中 addOrderProductList.Add(giftOrderProduct); } } } //将需要添加的商品持久化 AddOrderProductList(addOrderProductList); orderProductList.AddRange(addOrderProductList); }
/// <summary> /// 搜索店铺商品 /// </summary> /// <param name="pageSize">每页数</param> /// <param name="pageNumber">当前页数</param> /// <param name="keyword">关键词</param> /// <param name="storeId">店铺id</param> /// <param name="storeCid">店铺分类id</param> /// <param name="startPrice">开始价格</param> /// <param name="endPrice">结束价格</param> /// <param name="sortColumn">排序列</param> /// <param name="sortDirection">排序方向</param> /// <returns></returns> public List<PartProductInfo> SearchStoreProducts(int pageSize, int pageNumber, string keyword, int storeId, int storeCid, int startPrice, int endPrice, int sortColumn, int sortDirection) { StringBuilder commandText = new StringBuilder(); if (pageNumber == 1) { commandText.AppendFormat("SELECT TOP {1} [p].[pid],[p].[psn],[p].[cateid],[p].[brandid],[p].[storeid],[p].[storecid],[p].[storestid],[p].[skugid],[p].[name],[p].[shopprice],[p].[marketprice],[p].[costprice],[p].[state],[p].[isbest],[p].[ishot],[p].[isnew],[p].[displayorder],[p].[weight],[p].[showimg],[p].[salecount],[p].[visitcount],[p].[reviewcount],[p].[star1],[p].[star2],[p].[star3],[p].[star4],[p].[star5],[p].[addtime] FROM [{0}products] AS [p]", RDBSHelper.RDBSTablePre, pageSize); commandText.AppendFormat(" LEFT JOIN [{0}productkeywords] AS [pk] ON [p].[pid]=[pk].[pid]", RDBSHelper.RDBSTablePre); commandText.AppendFormat(" WHERE [p].[storeid]={0}", storeId); if (storeCid > 0) commandText.AppendFormat(" AND [p].[storecid]={0}", storeCid); if (startPrice > 0) commandText.AppendFormat(" AND [p].[shopprice]>={0}", startPrice); if (endPrice > 0) commandText.AppendFormat(" AND [p].[shopprice]<={0}", endPrice); commandText.Append(" AND [p].[state]=0"); commandText.AppendFormat(" AND [pk].[keyword]='{0}'", keyword); commandText.Append(" ORDER BY "); switch (sortColumn) { case 0: commandText.Append("[pk].[relevancy]"); break; case 1: commandText.Append("[p].[salecount]"); break; case 2: commandText.Append("[p].[shopprice]"); break; case 3: commandText.Append("[p].[reviewcount]"); break; case 4: commandText.Append("[p].[addtime]"); break; case 5: commandText.Append("[p].[visitcount]"); break; default: commandText.Append("[pk].[relevancy]"); break; } switch (sortDirection) { case 0: commandText.Append(" DESC"); break; case 1: commandText.Append(" ASC"); break; default: commandText.Append(" DESC"); break; } } else { commandText.Append("SELECT [pid],[psn],[cateid],[brandid],[storeid],[storecid],[storestid],[skugid],[name],[shopprice],[marketprice],[costprice],[state],[isbest],[ishot],[isnew],[displayorder],[weight],[showimg],[salecount],[visitcount],[reviewcount],[star1],[star2],[star3],[star4],[star5],[addtime] FROM"); commandText.Append(" (SELECT ROW_NUMBER() OVER (ORDER BY "); switch (sortColumn) { case 0: commandText.Append("[pk].[relevancy]"); break; case 1: commandText.Append("[p].[salecount]"); break; case 2: commandText.Append("[p].[shopprice]"); break; case 3: commandText.Append("[p].[reviewcount]"); break; case 4: commandText.Append("[p].[addtime]"); break; case 5: commandText.Append("[p].[visitcount]"); break; default: commandText.Append("[pk].[relevancy]"); break; } switch (sortDirection) { case 0: commandText.Append(" DESC"); break; case 1: commandText.Append(" ASC"); break; default: commandText.Append(" DESC"); break; } commandText.AppendFormat(") AS [rowid],[p].[pid],[p].[psn],[p].[cateid],[p].[brandid],[p].[storeid],[p].[storecid],[p].[storestid],[p].[skugid],[p].[name],[p].[shopprice],[p].[marketprice],[p].[costprice],[p].[state],[p].[isbest],[p].[ishot],[p].[isnew],[p].[displayorder],[p].[weight],[p].[showimg],[p].[salecount],[p].[visitcount],[p].[reviewcount],[p].[star1],[p].[star2],[p].[star3],[p].[star4],[p].[star5],[p].[addtime] FROM [{0}products] AS [p]", RDBSHelper.RDBSTablePre); commandText.AppendFormat(" LEFT JOIN [{0}productkeywords] AS [pk] ON [p].[pid]=[pk].[pid]", RDBSHelper.RDBSTablePre); commandText.AppendFormat(" WHERE [p].[storeid]={0}", storeId); if (storeCid > 0) commandText.AppendFormat(" AND [p].[storecid]={0}", storeCid); if (startPrice > 0) commandText.AppendFormat(" AND [p].[shopprice]>={0}", startPrice); if (endPrice > 0) commandText.AppendFormat(" AND [p].[shopprice]<={0}", endPrice); commandText.Append(" AND [p].[state]=0"); commandText.AppendFormat(" AND [pk].[keyword]='{0}'", keyword); commandText.Append(") AS [temp]"); commandText.AppendFormat(" WHERE [rowid] BETWEEN {0} AND {1}", pageSize * (pageNumber - 1) + 1, pageSize * pageNumber); } List<PartProductInfo> partProductList = new List<PartProductInfo>(); IDataReader reader = RDBSHelper.ExecuteReader(CommandType.Text, commandText.ToString()); while (reader.Read()) { PartProductInfo partProductInfo = new PartProductInfo(); partProductInfo.Pid = TypeHelper.ObjectToInt(reader["pid"]); partProductInfo.PSN = reader["psn"].ToString(); partProductInfo.CateId = TypeHelper.ObjectToInt(reader["cateid"]); partProductInfo.BrandId = TypeHelper.ObjectToInt(reader["brandid"]); partProductInfo.StoreId = TypeHelper.ObjectToInt(reader["storeid"]); partProductInfo.StoreCid = TypeHelper.ObjectToInt(reader["storecid"]); partProductInfo.StoreSTid = TypeHelper.ObjectToInt(reader["storestid"]); partProductInfo.SKUGid = TypeHelper.ObjectToInt(reader["skugid"]); partProductInfo.Name = reader["name"].ToString(); partProductInfo.ShopPrice = TypeHelper.ObjectToDecimal(reader["shopprice"]); partProductInfo.MarketPrice = TypeHelper.ObjectToDecimal(reader["marketprice"]); partProductInfo.CostPrice = TypeHelper.ObjectToDecimal(reader["costprice"]); partProductInfo.State = TypeHelper.ObjectToInt(reader["state"]); partProductInfo.IsBest = TypeHelper.ObjectToInt(reader["isbest"]); partProductInfo.IsHot = TypeHelper.ObjectToInt(reader["ishot"]); partProductInfo.IsNew = TypeHelper.ObjectToInt(reader["isnew"]); partProductInfo.DisplayOrder = TypeHelper.ObjectToInt(reader["displayorder"]); partProductInfo.Weight = TypeHelper.ObjectToInt(reader["weight"]); partProductInfo.ShowImg = reader["showimg"].ToString(); partProductInfo.SaleCount = TypeHelper.ObjectToInt(reader["salecount"]); partProductInfo.VisitCount = TypeHelper.ObjectToInt(reader["visitcount"]); partProductInfo.ReviewCount = TypeHelper.ObjectToInt(reader["reviewcount"]); partProductInfo.Star1 = TypeHelper.ObjectToInt(reader["star1"]); partProductInfo.Star2 = TypeHelper.ObjectToInt(reader["star2"]); partProductInfo.Star3 = TypeHelper.ObjectToInt(reader["star3"]); partProductInfo.Star4 = TypeHelper.ObjectToInt(reader["star4"]); partProductInfo.Star5 = TypeHelper.ObjectToInt(reader["star5"]); partProductInfo.AddTime = TypeHelper.ObjectToDateTime(reader["addtime"]); partProductList.Add(partProductInfo); } reader.Close(); return partProductList; }