Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
 public static DataTable UseCoupon(decimal orderAmount)
 {
     return(ShoppingProcessor.GetCoupon(orderAmount));
 }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
        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));
        }
Exemplo n.º 12
0
        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);
        }
Exemplo n.º 13
0
        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);
        }