public static IDictionary <int, decimal> CalcFreight(int regionId, ShoppingCartInfo shoppingCart, out decimal totalFreight) { IDictionary <int, decimal> dictionary = new Dictionary <int, decimal>(); totalFreight = default(decimal); if (shoppingCart != null) { var list = (from i in shoppingCart.LineItems select new { i.SupplierId, i.SupplierName }).Distinct().ToList(); if ((from i in shoppingCart.LineItems where i.SupplierId == 0 select i).Count() <= 0) { list.Add(new { SupplierId = 0, SupplierName = "平台" }); } for (int j = 0; j < list.Count; j++) { var anon = list[j]; decimal num = ShoppingProcessor.CalcSupplierFreight(anon.SupplierId, regionId, shoppingCart); totalFreight += num; dictionary.Add(anon.SupplierId, num); } } return(dictionary); }
public static ShoppingCartInfo GetShoppingCart(string productSkuId, int buyAmount) { int num; int num2; string str2; ProductSaleStatus status; ShoppingCartInfo info = new ShoppingCartInfo(); DataTable productInfoBySku = ShoppingProcessor.GetProductInfoBySku(productSkuId); if ((productInfoBySku == null) || (productInfoBySku.Rows.Count <= 0)) { return(null); } string skuContent = string.Empty; foreach (DataRow row in productInfoBySku.Rows) { if (!((((row["AttributeName"] == DBNull.Value) || string.IsNullOrEmpty((string)row["AttributeName"])) || (row["ValueStr"] == DBNull.Value)) || string.IsNullOrEmpty((string)row["ValueStr"]))) { object obj2 = skuContent; skuContent = string.Concat(new object[] { obj2, row["AttributeName"], ":", row["ValueStr"], "; " }); } } ShoppingCartItemInfo info2 = ShoppingProvider.Instance().GetCartItemInfo(HiContext.Current.User as Member, (int)productInfoBySku.Rows[0]["ProductId"], productSkuId, skuContent, buyAmount, out status, out str2, out num, out num2); if ((((info2 == null) || (status != ProductSaleStatus.OnSale)) || (num <= 0)) || (num < num2)) { return(null); } info.LineItems.Add(productSkuId, info2); if (!HiContext.Current.User.IsAnonymous) { int num3; int num4; string str3; string str4; decimal num5; DiscountValueType type; bool flag; bool flag2; bool flag3; ShoppingProvider.Instance().GetPromotionsWithAmount(info.GetAmount(), out num3, out str3, out num5, out type, out num4, out str4, out flag, out flag2, out flag3); if (!((num3 <= 0) || string.IsNullOrEmpty(str3))) { info.DiscountActivityId = num3; info.DiscountName = str3; info.DiscountValue = num5; info.DiscountValueType = type; } if (!((num4 <= 0) || string.IsNullOrEmpty(str4))) { info.FeeFreeActivityId = num4; info.FeeFreeName = str4; info.EightFree = flag; info.ProcedureFeeFree = flag3; info.OrderOptionFree = flag2; } } return(info); }
public static decimal CalcGiftFreight(int regionId, IList <ShoppingCartGiftInfo> lineGifts) { decimal num = default(decimal); IList <int> list = new List <int>(); foreach (ShoppingCartGiftInfo lineGift in lineGifts) { if (!list.Contains(lineGift.ShippingTemplateId) && lineGift.PromoType == 0) { list.Add(lineGift.ShippingTemplateId); } } for (int i = 0; i < list.Count(); i++) { int num2 = 0; decimal num3 = default(decimal); decimal num4 = default(decimal); int num5 = list[i]; foreach (ShoppingCartGiftInfo lineGift2 in lineGifts) { if (lineGift2.ShippingTemplateId == num5 && lineGift2.PromoType == 0) { num3 += lineGift2.Weight * (decimal)lineGift2.Quantity; num2 += lineGift2.Quantity; num4 += lineGift2.Volume * (decimal)lineGift2.Quantity; } } num += ShoppingProcessor.CalcFreight_ShipppingTemplate(regionId, num5, num2, num3, num4, decimal.Zero); } return(num); }
public static decimal CalcFreight(int regionId, ShoppingCartInfo shoppingCart) { decimal num = default(decimal); if (shoppingCart != null) { var list = (from i in shoppingCart.LineItems select new { i.SupplierId, i.SupplierName }).Distinct().ToList(); if ((from i in shoppingCart.LineItems where i.SupplierId == 0 select i).Count() <= 0) { list.Add(new { SupplierId = 0, SupplierName = "平台" }); } for (int j = 0; j < list.Count; j++) { var anon = list[j]; num += ShoppingProcessor.CalcSupplierFreight(anon.SupplierId, regionId, shoppingCart); } } return(num); }
public static CouponItemInfo GetUserCouponInfo(decimal orderAmount, string claimCode) { if (string.IsNullOrEmpty(claimCode)) { return(null); } CouponItemInfo userCouponInfo = ShoppingProcessor.GetUserCouponInfo(claimCode); if (userCouponInfo != null) { decimal?orderUseLimit = userCouponInfo.OrderUseLimit; int num; if (!(orderUseLimit.GetValueOrDefault() > default(decimal)) || !orderUseLimit.HasValue || !(orderAmount >= userCouponInfo.OrderUseLimit.Value)) { orderUseLimit = userCouponInfo.OrderUseLimit; num = ((orderUseLimit.GetValueOrDefault() == default(decimal) && orderUseLimit.HasValue) ? 1 : 0); } else { num = 1; } if (num != 0) { return(userCouponInfo); } } return(null); }
public static decimal CalcSupplierFreight(int supplierId, int regionId, ShoppingCartInfo shoppingCart) { decimal num = default(decimal); IList <int> list = shoppingCart.ShippingTemplateIdList(supplierId); for (int i = 0; i < list.Count(); i++) { int quantity = 0; decimal weight = default(decimal); decimal volume = default(decimal); decimal amount = default(decimal); int shippingTemplateId = list[i]; shoppingCart.TotalValuationData(shippingTemplateId, out quantity, out weight, out volume, out amount, supplierId); num += ShoppingProcessor.CalcFreight_ShipppingTemplate(regionId, shippingTemplateId, quantity, weight, volume, amount); } return(num); }
public static ShoppingCartInfo GetGroupBuyShoppingCart(string productSkuId, int buyAmount) { int num3; int num4; string str2; ProductSaleStatus status; ShoppingCartInfo info = new ShoppingCartInfo(); DataTable productInfoBySku = ShoppingProcessor.GetProductInfoBySku(productSkuId); if ((productInfoBySku == null) || (productInfoBySku.Rows.Count <= 0)) { return(null); } GroupBuyInfo productGroupBuyInfo = ProductBrowser.GetProductGroupBuyInfo((int)productInfoBySku.Rows[0]["ProductId"]); if (productGroupBuyInfo == null) { return(null); } int orderCount = ProductBrowser.GetOrderCount(productGroupBuyInfo.GroupBuyId); decimal currentPrice = ProductBrowser.GetCurrentPrice(productGroupBuyInfo.GroupBuyId, orderCount); string skuContent = string.Empty; foreach (DataRow row in productInfoBySku.Rows) { if (!((((row["AttributeName"] == DBNull.Value) || string.IsNullOrEmpty((string)row["AttributeName"])) || (row["ValueStr"] == DBNull.Value)) || string.IsNullOrEmpty((string)row["ValueStr"]))) { object obj2 = skuContent; skuContent = string.Concat(new object[] { obj2, row["AttributeName"], ":", row["ValueStr"], "; " }); } } ShoppingProvider provider = ShoppingProvider.Instance(); Member user = HiContext.Current.User as Member; ShoppingCartItemInfo info3 = provider.GetCartItemInfo(user, (int)productInfoBySku.Rows[0]["ProductId"], productSkuId, skuContent, buyAmount, out status, out str2, out num3, out num4); if ((((info3 == null) || (status != ProductSaleStatus.OnSale)) || (num3 <= 0)) || (num3 < num4)) { return(null); } ShoppingCartItemInfo info4 = new ShoppingCartItemInfo(info3.SkuId, info3.ProductId, info3.SKU, info3.Name, currentPrice, info3.SkuContent, buyAmount, info3.Weight, 0, string.Empty, 0, 0, string.Empty, null, info3.CategoryId, info3.ThumbnailUrl40, info3.ThumbnailUrl60, info3.ThumbnailUrl100); info.LineItems.Add(productSkuId, info4); return(info); }
public static CouponInfo UseCoupon(decimal orderAmount, string claimCode) { CouponInfo result; if (string.IsNullOrEmpty(claimCode)) { result = null; } else { CouponInfo coupon = ShoppingProcessor.GetCoupon(claimCode); if (coupon != null && ((coupon.Amount.HasValue && coupon.Amount > 0m && orderAmount >= coupon.Amount.Value) || ((!coupon.Amount.HasValue || coupon.Amount == 0m) && orderAmount > coupon.DiscountValue))) { result = coupon; } else { result = null; } } return(result); }
public static DataTable UseCoupon(decimal orderAmount) { return(ShoppingProcessor.GetCoupon(orderAmount)); }
public static decimal CalcFreight_ShipppingTemplate(int regionId, int shippingTemplateId, int quantity = 1, decimal weight = default(decimal), decimal volume = default(decimal), decimal amount = default(decimal)) { decimal result = default(decimal); decimal num = default(decimal); decimal num2 = default(decimal); decimal num3 = default(decimal); decimal num4 = default(decimal); ShippingTemplateInfo shippingTemplateInfo = (ShippingTemplateInfo)HiCache.Get($"DataCache-ShippingModeInfoCacheKey-{shippingTemplateId}"); if (shippingTemplateInfo == null) { shippingTemplateInfo = new ShippingModeDao().GetShippingTemplate(shippingTemplateId, true); HiCache.Insert($"DataCache-ShippingModeInfoCacheKey-{shippingTemplateId}", shippingTemplateInfo, 1800); } if (shippingTemplateInfo != null) { if (shippingTemplateInfo.IsFreeShipping) { return(decimal.Zero); } num = shippingTemplateInfo.DefaultNumber; num2 = (shippingTemplateInfo.AddNumber.HasValue ? shippingTemplateInfo.AddNumber.Value : decimal.Zero); num3 = shippingTemplateInfo.Price; num4 = (shippingTemplateInfo.AddPrice.HasValue ? shippingTemplateInfo.AddPrice.Value : decimal.Zero); if (regionId > 0) { string fullPath = RegionHelper.GetFullPath(regionId, true); if (!string.IsNullOrEmpty(fullPath)) { string[] array = fullPath.Split(','); int num5 = 0; int num6 = 0; if (array.Length >= 2) { num5 = array[0].ToInt(0); num6 = array[1].ToInt(0); regionId = ((array.Length >= 3) ? array[2].ToInt(0) : 0); ShippingTemplateGroupMode shippingTemplateParam_RegionId = ShoppingProcessor.GetShippingTemplateParam_RegionId(shippingTemplateInfo, num5, num6, regionId); ShippingTemplateFreeGroupMode shippingTemplateFreeParam_RegionId = ShoppingProcessor.GetShippingTemplateFreeParam_RegionId(shippingTemplateInfo, num5, num6, regionId); if (shippingTemplateFreeParam_RegionId != null) { int conditionType = shippingTemplateFreeParam_RegionId.ConditionType; ConditionType conditionType2 = ConditionType.Number; if (conditionType == conditionType2.GetHashCode()) { if (quantity >= shippingTemplateFreeParam_RegionId.ConditionNumber.ToInt(0)) { return(decimal.Zero); } } else { int conditionType3 = shippingTemplateFreeParam_RegionId.ConditionType; conditionType2 = ConditionType.Amount; if (conditionType3 == conditionType2.GetHashCode()) { if (amount >= shippingTemplateFreeParam_RegionId.ConditionNumber.ToDecimal(0)) { return(decimal.Zero); } } else { int conditionType4 = shippingTemplateFreeParam_RegionId.ConditionType; conditionType2 = ConditionType.NumberAndAmount; if (conditionType4 == conditionType2.GetHashCode() && quantity >= shippingTemplateFreeParam_RegionId.ConditionNumber.Split('$')[0].ToInt(0) && amount >= shippingTemplateFreeParam_RegionId.ConditionNumber.Split('$')[1].ToDecimal(0)) { return(decimal.Zero); } } } } if (shippingTemplateParam_RegionId != null) { num = shippingTemplateParam_RegionId.DefaultNumber; num2 = shippingTemplateParam_RegionId.AddNumber; num3 = shippingTemplateParam_RegionId.DefaultPrice; num4 = shippingTemplateParam_RegionId.AddPrice; } } } } if (shippingTemplateInfo.ValuationMethod == ValuationMethods.Number) { result = ShoppingProcessor.CalcFreight(quantity, num3, num4, num, num2); } else if (shippingTemplateInfo.ValuationMethod == ValuationMethods.Volume) { result = ShoppingProcessor.CalcFreight(volume, num3, num4, num, num2); } else if (shippingTemplateInfo.ValuationMethod == ValuationMethods.Weight) { result = ShoppingProcessor.CalcFreight(weight, num3, num4, num, num2); } } return(result); }
public static decimal CalcProductFreight(int regionId, int shippingTemplateId, decimal volume, decimal weight, int quantity = 1, decimal amount = default(decimal)) { decimal num = default(decimal); return(ShoppingProcessor.CalcFreight_ShipppingTemplate(regionId, shippingTemplateId, quantity, weight * (decimal)quantity, volume * (decimal)quantity, amount * (decimal)quantity)); }
public static bool CreatOrder(List <OrderInfo> orderInfos) { if (orderInfos.Count <= 0) { return(false); } bool result = false; Database database = DatabaseFactory.CreateDatabase(); using (DbConnection dbConnection = database.CreateConnection()) { dbConnection.Open(); DbTransaction dbTransaction = dbConnection.BeginTransaction(); try { foreach (OrderInfo orderInfo in orderInfos) { if (orderInfo == null) { dbTransaction.Rollback(); return(false); } ShoppingProcessor.MoveOrderItemImages(orderInfo); OrderDao orderDao = new OrderDao(); if (orderInfo.CountDownBuyId > 0) { orderInfo.OrderType = OrderType.CountDown; if (orderDao.ExistCountDownOverbBought(orderInfo, dbTransaction)) { dbTransaction.Rollback(); return(false); } if (!orderDao.UpdateCountDownBuyNum(orderInfo, dbTransaction)) { dbTransaction.Rollback(); return(false); } } if (orderInfo.FightGroupActivityId > 0) { orderInfo.OrderType = OrderType.FightGroup; if (!ShoppingProcessor.ManageFightGroupOrder(orderInfo, dbTransaction)) { dbTransaction.Rollback(); return(false); } } if (orderInfo.PreSaleId > 0) { orderInfo.OrderType = OrderType.PreSale; } if (orderInfo.GroupBuyId > 0) { orderInfo.OrderType = OrderType.GroupOrder; } if (!orderDao.CreatOrder(orderInfo, dbTransaction)) { dbTransaction.Rollback(); return(false); } if (orderInfo.LineItems.Count > 0 && orderInfo.ParentOrderId != "-1" && !new LineItemDao().AddOrderLineItems(orderInfo.OrderId, orderInfo.LineItems.Values, dbTransaction)) { dbTransaction.Rollback(); return(false); } if (orderInfo.Gifts.Count > 0) { OrderGiftDao orderGiftDao = new OrderGiftDao(); if (!orderGiftDao.AddOrderGift(orderInfo.OrderId, orderInfo.Gifts, dbTransaction)) { dbTransaction.Rollback(); return(false); } } if (orderInfo.InputItems != null && orderInfo.InputItems.Count > 0 && !new OrderInputItemDao().AddItems(orderInfo.OrderId, orderInfo.InputItems, dbTransaction)) { dbTransaction.Rollback(); return(false); } if (orderInfo.ParentOrderId == "0" || orderInfo.ParentOrderId == "-1") { if (!string.IsNullOrEmpty(orderInfo.CouponCode) && !new CouponDao().AddCouponUseRecord(orderInfo, dbTransaction)) { dbTransaction.Rollback(); return(false); } if (orderInfo.DeductionPoints.HasValue && orderInfo.DeductionPoints > 0 && !ShoppingProcessor.CutNeedPoint(orderInfo.DeductionPoints.Value, orderInfo.OrderId, PointTradeType.ShoppingDeduction, orderInfo.UserId)) { dbTransaction.Rollback(); return(false); } } } dbTransaction.Commit(); result = true; } catch (Exception ex) { result = false; Globals.WriteExceptionLog(ex, null, "OrderCreate"); dbTransaction.Rollback(); } finally { dbConnection.Close(); } } return(result); }
public static bool CreatOrder(OrderInfo orderInfo) { if (orderInfo == null) { return(false); } bool result = false; Database database = DatabaseFactory.CreateDatabase(); using (DbConnection dbConnection = database.CreateConnection()) { dbConnection.Open(); DbTransaction dbTransaction = dbConnection.BeginTransaction(); try { OrderDao orderDao = new OrderDao(); if (orderInfo.CountDownBuyId > 0) { orderInfo.OrderType = OrderType.CountDown; if (orderDao.ExistCountDownOverbBought(orderInfo, dbTransaction)) { dbTransaction.Rollback(); return(false); } if (!orderDao.UpdateCountDownBuyNum(orderInfo, dbTransaction)) { dbTransaction.Rollback(); return(false); } } if (orderInfo.FightGroupActivityId > 0) { orderInfo.OrderType = OrderType.FightGroup; if (!ShoppingProcessor.ManageFightGroupOrder(orderInfo, dbTransaction)) { dbTransaction.Rollback(); return(false); } } if (orderInfo.PreSaleId > 0) { orderInfo.OrderType = OrderType.PreSale; } if (orderInfo.GroupBuyId > 0) { orderInfo.OrderType = OrderType.GroupOrder; } if (!orderDao.CreatOrder(orderInfo, dbTransaction)) { dbTransaction.Rollback(); return(false); } if (orderInfo.LineItems.Count > 0 && !new LineItemDao().AddOrderLineItems(orderInfo.OrderId, orderInfo.LineItems.Values, dbTransaction)) { dbTransaction.Rollback(); return(false); } if (orderInfo.Gifts.Count > 0) { OrderGiftDao orderGiftDao = new OrderGiftDao(); if (!orderGiftDao.AddOrderGift(orderInfo.OrderId, orderInfo.Gifts, dbTransaction)) { dbTransaction.Rollback(); return(false); } } if (!string.IsNullOrEmpty(orderInfo.CouponCode) && !new CouponDao().AddCouponUseRecord(orderInfo, dbTransaction)) { dbTransaction.Rollback(); return(false); } if (orderInfo.DeductionPoints.HasValue && orderInfo.DeductionPoints > 0 && !ShoppingProcessor.CutNeedPoint(orderInfo.DeductionPoints.Value, orderInfo.OrderId, PointTradeType.ShoppingDeduction, orderInfo.UserId)) { dbTransaction.Rollback(); return(false); } dbTransaction.Commit(); result = true; } catch { dbTransaction.Rollback(); throw; } finally { dbConnection.Close(); } } return(result); }