Beispiel #1
0
        /// <summary>
        /// 搜索匹配的配送地区
        /// </summary>
        /// <param name="shippingID"></param>
        /// <param name="regionID"></param>
        /// <returns></returns>
        public static ShippingRegionInfo SearchShippingRegion(int shippingId, string regionId)
        {
            List <ShippingRegionInfo> shippingRegionList = ShippingRegionBLL.ReadList(shippingId);
            ShippingRegionInfo        shippingRegion     = new ShippingRegionInfo();

            if (!string.IsNullOrEmpty(regionId))
            {
                while (regionId.Length >= 1)
                {
                    foreach (ShippingRegionInfo temp in shippingRegionList)
                    {
                        if (("|" + temp.RegionId + "|").IndexOf("|" + regionId + "|") > -1)
                        {
                            shippingRegion = temp;
                            break;
                        }
                    }
                    if (shippingRegion.Id > 0)
                    {
                        break;
                    }
                    else
                    {
                        regionId = regionId.Substring(0, regionId.Length - 1);
                        regionId = regionId.Substring(0, regionId.LastIndexOf('|') + 1);
                    }
                }
            }
            return(shippingRegion);
        }
Beispiel #2
0
        /// <summary>
        ///  买1件商品,根据配送方式,配送地址,读取邮费价格【按单个商品独立计算运费】
        /// </summary>
        /// <param name="shipping"></param>
        /// <param name="shippingRegion"></param>
        /// <param name="product"></param>
        /// <returns></returns>
        public static decimal ReadShippingMoney(int shippingId, string regionId, ProductInfo product)
        {
            decimal            shippingMoney  = 0;
            ShippingInfo       shipping       = ShippingBLL.Read(shippingId);
            ShippingRegionInfo shippingRegion = ShippingRegionBLL.SearchShippingRegion(shippingId, regionId);

            switch (shipping.ShippingType)
            {
            case (int)ShippingType.Fixed:
                shippingMoney = shippingRegion.FixedMoeny;
                break;

            case (int)ShippingType.Weight:
                decimal cartProductWeight = 1 * product.Weight;
                if (cartProductWeight <= shipping.FirstWeight)
                {
                    shippingMoney = shippingRegion.FirstMoney;
                }
                else
                {
                    shippingMoney = shippingRegion.FirstMoney + Math.Ceiling((cartProductWeight - shipping.FirstWeight) / shipping.AgainWeight) * shippingRegion.AgainMoney;
                }
                break;

            case (int)ShippingType.ProductCount:
                int cartProductCount = 1;
                shippingMoney = shippingRegion.OneMoeny + (cartProductCount - 1) * shippingRegion.AnotherMoeny;
                break;

            default:
                break;
            }

            return(shippingMoney);
        }
Beispiel #3
0
        /// <summary>
        /// 计算订单的邮费
        /// </summary>
        /// <param name="order"></param>
        /// <returns></returns>
        public static decimal ReadOrderShippingMoney(OrderInfo order)
        {
            decimal            shippingMoney  = order.ShippingMoney;
            ShippingInfo       shipping       = ShippingBLL.Read(order.ShippingId);
            ShippingRegionInfo shippingRegion = ShippingRegionBLL.SearchShippingRegion(order.ShippingId, order.RegionId);

            switch (shipping.ShippingType)
            {
            case (int)ShippingType.Fixed:
                shippingMoney = shippingRegion.FixedMoeny;
                break;

            case (int)ShippingType.Weight:
                decimal orderProductWeight = 0;
                foreach (OrderDetailInfo orderDetail in OrderDetailBLL.ReadList(order.Id))
                {
                    orderProductWeight += orderDetail.ProductWeight * orderDetail.BuyCount;
                }
                if (orderProductWeight <= shipping.FirstWeight)
                {
                    shippingMoney = shippingRegion.FirstMoney;
                }
                else
                {
                    shippingMoney = shippingRegion.FirstMoney + Math.Ceiling((orderProductWeight - shipping.FirstWeight) / shipping.AgainWeight) * shippingRegion.AgainMoney;
                }
                break;

            case (int)ShippingType.ProductCount:
                int orderProductCount = 0;
                foreach (OrderDetailInfo orderDetail in OrderDetailBLL.ReadList(order.Id))
                {
                    if (orderDetail.ParentId == 0)
                    {
                        orderProductCount += orderDetail.BuyCount;
                    }
                }
                shippingMoney = shippingRegion.OneMoeny + (orderProductCount - 1) * shippingRegion.AnotherMoeny;
                break;

            default:
                break;
            }
            return(shippingMoney);
        }