/// <summary>
        /// 购物车
        /// </summary>
        /// <returns></returns>
        public ActionResult Index()
        {
            ShoppingCart shoppingCart = ShoppingStorageManager.GetShoppingCartFromCookieOrCreateNew();
            //用于计算会员价:
            LoginUser userInfo = UserMgr.ReadUserInfo();

            shoppingCart.CustomerSysNo = userInfo == null ? 0 : userInfo.UserSysNo;
            if (shoppingCart != null)
            {
                ShoppingStorageManager.SaveShoppingCart(shoppingCart);
            }
            OrderPipelineProcessResult shoppingResult = ShoppingFacade.BuildShoppingCart(shoppingCart);
            ShoppingCart pipelineShoppingCart         = (shoppingResult.ReturnData != null &&
                                                         shoppingResult.ReturnData["ShoppingCart"] != null)
                ? shoppingResult.ReturnData["ShoppingCart"] as ShoppingCart
                : new ShoppingCart();

            shoppingCart.OrderSelectGiftSysNo = pipelineShoppingCart.OrderSelectGiftSysNo;
            shoppingCart.OrderDeleteGiftSysNo = pipelineShoppingCart.OrderDeleteGiftSysNo;
            ShoppingStorageManager.SaveShoppingCart(shoppingCart);

            //将迷你购物车加入Cookie
            ShoppingStorageManager.SaveShoppingCartMini(ShoppingFacade.BuildMiniShoppingCartFromPipeline(shoppingResult));

            return(View(shoppingResult));
        }
Exemple #2
0
        /// <summary>
        /// 加载购物车信息
        /// </summary>
        /// <returns>购物车信息</returns>
        private PartialViewResult LoadShoppingCartData(ShoppingCart shoppingCart, string errorMessage = "")
        {
            //Key添加CustomerSysNo
            LoginUser userInfo = UserManager.ReadUserInfo();

            shoppingCart.CustomerSysNo = userInfo == null ? 0 : userInfo.UserSysNo;
            OrderPipelineProcessResult shoppingResult = ShoppingFacade.BuildShoppingCart(shoppingCart);
            ShoppingCart pipelineShoppingCart         = (shoppingResult.ReturnData != null &&
                                                         shoppingResult.ReturnData["ShoppingCart"] != null)
                ? shoppingResult.ReturnData["ShoppingCart"] as ShoppingCart
                : ShoppingStorageManager.GetShoppingCartFromCreateNew();

            shoppingCart.OrderSelectGiftSysNo = pipelineShoppingCart.OrderSelectGiftSysNo;
            shoppingCart.OrderDeleteGiftSysNo = pipelineShoppingCart.OrderDeleteGiftSysNo;
            ShoppingStorageManager.SaveShoppingCart(shoppingCart);

            if (!string.IsNullOrWhiteSpace(errorMessage))
            {
                //更改失败返回错误信息
                if (shoppingResult.ErrorMessages != null)
                {
                    shoppingResult.ErrorMessages = new List <string>()
                    {
                        errorMessage
                    };
                }
                else
                {
                    shoppingResult.ErrorMessages.Add(errorMessage);
                }
            }

            return(PartialView("_ShoppingCartPanel", shoppingResult));
        }
        /// <summary>
        /// Mini购物车获取商品数量
        /// </summary>
        /// <returns></returns>
        public JsonResult GetMiniShoppingCartCount()
        {
            LoginUser userInfo          = UserMgr.ReadUserInfo();
            int       userSysNo         = userInfo == null ? 0 : userInfo.UserSysNo;
            int       totalProductCount = 0;
            //ShoppingCart shoppingCart = ShoppingStorageManager.GetShoppingCartFromCookieOrCreateNew();
            ShoppingCart shoppingCart = ShoppingStorageManager.GetShoppingCartByCustomer(userSysNo);

            if (shoppingCart == null)
            {
                shoppingCart = new ShoppingCart();
            }

            if (shoppingCart != null && shoppingCart.ShoppingItemGroupList != null)
            {
                foreach (var itemGroup in shoppingCart.ShoppingItemGroupList)
                {
                    foreach (var item in itemGroup.ShoppingItemList)
                    {
                        totalProductCount += itemGroup.Quantity * item.UnitQuantity;
                    }
                }
            }
            //ShoppingStorageManager.SaveShoppingCart(shoppingCart);
            //将迷你购物车加入Cookie
            OrderPipelineProcessResult shoppingResult = ShoppingFacade.BuildShoppingCart(shoppingCart);

            ShoppingStorageManager.SaveShoppingCartMini(ShoppingFacade.BuildMiniShoppingCartFromPipeline(shoppingResult));
            return(new JsonResult()
            {
                Data = totalProductCount
            });
        }
Exemple #4
0
        /// <summary>
        /// 构造购物车
        /// </summary>
        /// <returns></returns>
        public static OrderPipelineProcessResult BuildShoppingCart(ShoppingCart shoppingCart)
        {
            OrderPipelineProcessResult shoppingResult = SOPipelineProcessor.BuildShoppingCart(shoppingCart);

            if (shoppingResult.ReturnData != null && shoppingResult.ReturnData.OrderItemGroupList != null)
            {
                //修正购物车中商品购买数量
                //foreach (var group in shoppingCart.ShoppingItemGroupList)
                //{
                //    OrderItemGroup newShoppingGroup = null;
                //    if (group.PackageType.Equals(0))
                //    {
                //        //单个商品
                //        newShoppingGroup = shoppingResult.ReturnData.OrderItemGroupList.Find(x
                //            => x.PackageType == group.PackageType
                //            && x.PackageNo == group.PackageNo
                //            && x.ProductItemList[0].ProductSysNo == group.ShoppingItemList[0].ProductSysNo);
                //    }
                //    else if (group.PackageType.Equals(1))
                //    {
                //        //套餐
                //        newShoppingGroup = shoppingResult.ReturnData.OrderItemGroupList.Find(x
                //            => x.PackageType == group.PackageType
                //            && x.PackageNo == group.PackageNo);
                //    }
                //    if (newShoppingGroup != null)
                //    {
                //        //最多购买newShoppingGroup.MaxCountPerSO个
                //        if (group.Quantity > newShoppingGroup.MaxCountPerSO)
                //        {
                //            group.Quantity = newShoppingGroup.MaxCountPerSO;
                //            newShoppingGroup.Quantity = newShoppingGroup.MaxCountPerSO;
                //        }
                //        //至少需要购买newShoppingGroup.MinCountPerSO个
                //        if (group.Quantity < newShoppingGroup.MinCountPerSO)
                //        {
                //            group.Quantity = newShoppingGroup.MinCountPerSO;
                //            newShoppingGroup.Quantity = newShoppingGroup.MinCountPerSO;
                //        }
                //    }
                //}
                //排序,套餐排在最前面
                var query = from r in shoppingResult.ReturnData.OrderItemGroupList
                            orderby r.PackageType //descending
                            select r;
                shoppingResult.ReturnData.OrderItemGroupList = query.ToList();
            }
            return(shoppingResult);
        }
        /// <summary>
        /// Mini购物车删除商品
        /// </summary>
        /// <returns></returns>
        public PartialViewResult DelMiniShoppingCartProduct()
        {
            #region Check
            bool checkResult  = true;
            int  packageSysNo = 0;
            int  productSysNo = 0;
            if (!int.TryParse(Request.Params["PackageSysNo"], out packageSysNo))
            {
                checkResult = false;
            }
            else if (!int.TryParse(Request.Params["ProductSysNo"], out productSysNo))
            {
                checkResult = false;
            }
            #endregion

            ShoppingCart shoppingCart = ShoppingStorageManager.GetShoppingCartFromCookieOrCreateNew();
            if (checkResult)
            {
                if (packageSysNo.Equals(0))
                {
                    //删除单个商品
                    shoppingCart = DelProductCalcShoppingCart(shoppingCart, productSysNo);
                }
                else
                {
                    //删除套餐中的商品
                    shoppingCart = DelPackageProductCalcShoppingCart(shoppingCart, packageSysNo, productSysNo);
                }
            }
            OrderPipelineProcessResult pipelineShoppingResult = null;
            ShoppingCartMiniResult     shoppingResult         = ShoppingFacade.BuildMiniShoppingCart(shoppingCart, out pipelineShoppingResult);
            ShoppingCart pipelineShoppingCart = (pipelineShoppingResult.ReturnData != null &&
                                                 pipelineShoppingResult.ReturnData["ShoppingCart"] != null)
                ? pipelineShoppingResult.ReturnData["ShoppingCart"] as ShoppingCart
                : new ShoppingCart();
            shoppingCart.OrderSelectGiftSysNo = pipelineShoppingCart.OrderSelectGiftSysNo;
            shoppingCart.OrderDeleteGiftSysNo = pipelineShoppingCart.OrderDeleteGiftSysNo;
            //Key添加CustomerSysNo
            LoginUser userInfo = UserMgr.ReadUserInfo();
            shoppingCart.CustomerSysNo = userInfo == null ? 0 : userInfo.UserSysNo;
            ShoppingStorageManager.SaveShoppingCart(shoppingCart);
            //将迷你购物车加入Cookie
            ShoppingStorageManager.SaveShoppingCartMini(ShoppingFacade.BuildMiniShoppingCartFromPipeline(pipelineShoppingResult));

            return(PartialView("_ShoppingCartMini", shoppingResult));
        }
Exemple #6
0
        /// <summary>
        /// 从Pipline构造Mini购物车
        /// </summary>
        /// <param name="shoppingCart"></param>
        /// <returns></returns>
        public static ShoppingCartMiniResult BuildMiniShoppingCartFromPipeline(OrderPipelineProcessResult pipelineResult)
        {
            ShoppingCartMiniResult result = new ShoppingCartMiniResult()
            {
                ProductCount = 0,
                TotalAmount  = 0m,
                ItemList     = new List <ShoppingCartMiniItem>()
            };

            if (pipelineResult != null && pipelineResult.ReturnData != null &&
                pipelineResult.ReturnData.OrderItemGroupList != null)
            {
                foreach (var itemGroup in pipelineResult.ReturnData.OrderItemGroupList)
                {
                    foreach (var item in itemGroup.ProductItemList)
                    {
                        result.ProductCount += itemGroup.Quantity * item.UnitQuantity;

                        decimal totalUnitDiscount = 0m;
                        List <OrderItemDiscountInfo> discountList = null;
                        if (pipelineResult.ReturnData.DiscountDetailList != null && pipelineResult.ReturnData.DiscountDetailList.Count > 0)
                        {
                            discountList = pipelineResult.ReturnData.DiscountDetailList.FindAll(m
                                                                                                => m.PackageNo == itemGroup.PackageNo &&
                                                                                                m.ProductSysNo == item.ProductSysNo);
                            totalUnitDiscount = discountList.Sum(m => m.UnitDiscount);
                        }
                        result.TotalAmount += (item.UnitSalePrice - totalUnitDiscount) * (item.UnitQuantity * itemGroup.Quantity);
                        //result.TotalTaxFee += (item.UnitSalePrice - totalUnitDiscount) * (item.UnitQuantity * itemGroup.Quantity);// *decimal.Parse(item["TariffRate"].ToString());

                        result.ItemList.Add(new ShoppingCartMiniItem()
                        {
                            PackageSysNo = itemGroup.PackageNo,
                            ProductSysNo = item.ProductSysNo,
                            ProductTitle = item["ProductTitle"].ToString(),
                            DefaultImage = ECommerce.Facade.Product.ProductFacade.BuildProductImage(Enums.ImageSize.P60, item.DefaultImage),
                            TaxFee       = (item.UnitSalePrice - totalUnitDiscount) * (item.UnitQuantity * itemGroup.Quantity),// * decimal.Parse(item["TariffRate"].ToString()),
                            ProductPrice = item.UnitSalePrice - totalUnitDiscount,
                            Quantity     = item.UnitQuantity * itemGroup.Quantity
                        });
                    }
                }
            }

            return(result);
        }
 private static void SetCheckoutResult(OrderPipelineProcessResult orderProcessResult, CheckOutResult checkoutResult, CheckOutContext context)
 {
     checkoutResult.OrderProcessResult = orderProcessResult;
     checkoutResult.HasSucceed         = orderProcessResult.HasSucceed;
     checkoutResult.ShoppingItemParam  = context.ShoppingItemParam;
     if (orderProcessResult.ErrorMessages != null)
     {
         checkoutResult.ErrorMessages = orderProcessResult.ErrorMessages.SelectMany(msg =>
         {
             if (!String.IsNullOrWhiteSpace(msg))
             {
                 return(msg.Split(new string[] { System.Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries).ToList());
             }
             return(new List <String>(0));
         })
                                        .ToList();
         checkoutResult.ErrorMessages.RemoveAll(x => String.IsNullOrWhiteSpace(x));
     }
     if (orderProcessResult != null && orderProcessResult.ReturnData != null)
     {
         //优惠券使用情况
         checkoutResult.ApplyCouponCode   = orderProcessResult.ReturnData.CouponCode;
         checkoutResult.ApplyCouponName   = orderProcessResult.ReturnData.CouponName;
         checkoutResult.ApplyedCouponDesc = orderProcessResult.ReturnData.CouponErrorDesc;
         //积分使用情况
         checkoutResult.UsePointPay     = orderProcessResult.ReturnData.PointPay;
         checkoutResult.MaxPointPay     = orderProcessResult.ReturnData.MaxPointPay;
         checkoutResult.UsePointPayDesc = orderProcessResult.ReturnData.UsePointPayDesc;
         //礼品卡使用情况
         checkoutResult.ApplyedGiftCardDesc = orderProcessResult.ReturnData.GiftCardErrorDesc;
         checkoutResult.BindingGiftCardList = orderProcessResult.ReturnData.BindingGiftCardList;
         if (orderProcessResult.ReturnData.GiftCardList != null)
         {
             checkoutResult.ApplyedGiftCardList = orderProcessResult.ReturnData.GiftCardList.Select(g =>
             {
                 GiftCardInfo giftCardInfo = (GiftCardInfo)g.Clone();
                 giftCardInfo.Password     = ConfuseGiftCardPassword(g.Password, orderProcessResult.ReturnData.Customer.SysNo);
                 return(giftCardInfo);
             }).ToList();
         }
     }
 }
Exemple #8
0
        //
        // GET: /Shopping/

        public ActionResult Index()
        {
            ShoppingCart shoppingCart = ShoppingStorageManager.GetShoppingCartFromCookieOrCreateNew();
            OrderPipelineProcessResult shoppingResult = ShoppingFacade.BuildShoppingCart(shoppingCart);
            ShoppingCart pipelineShoppingCart         = (shoppingResult.ReturnData != null &&
                                                         shoppingResult.ReturnData["ShoppingCart"] != null)
                ? shoppingResult.ReturnData["ShoppingCart"] as ShoppingCart
                : ShoppingStorageManager.GetShoppingCartFromCreateNew();

            shoppingCart.OrderSelectGiftSysNo = pipelineShoppingCart.OrderSelectGiftSysNo;
            shoppingCart.OrderDeleteGiftSysNo = pipelineShoppingCart.OrderDeleteGiftSysNo;

            //Key添加CustomerSysNo
            LoginUser userInfo = UserManager.ReadUserInfo();

            shoppingCart.CustomerSysNo = userInfo == null ? 0 : userInfo.UserSysNo;
            ShoppingStorageManager.SaveShoppingCart(shoppingCart);

            return(View(shoppingResult));
        }
        /// <summary>
        /// 加载购物车信息
        /// </summary>
        /// <returns>购物车信息</returns>
        private PartialViewResult LoadShoppingCartData(ShoppingCart shoppingCart, string errorMessage = "", string PackageTypeSingleList = "", string PackageTypeGroupList = "")
        {
            foreach (var itemGroup in shoppingCart.ShoppingItemGroupList)
            {
                itemGroup.PackageChecked = false;
                foreach (ShoppingItem ProductItem in itemGroup.ShoppingItemList)
                {
                    ProductItem.ProductChecked = false;
                }
            }
            //checkbox单个商品购买
            if (!string.IsNullOrEmpty(PackageTypeSingleList))
            {
                string[] array = PackageTypeSingleList.Split(',');
                foreach (var item in array)
                {
                    int sysNo = 0;
                    if (int.TryParse(item, out sysNo))
                    {
                        foreach (var itemGroup in shoppingCart.ShoppingItemGroupList)
                        {
                            if (itemGroup.PackageType.Equals(0))
                            {
                                if (!itemGroup.PackageChecked)
                                {
                                    foreach (ShoppingItem ProductItem in itemGroup.ShoppingItemList)
                                    {
                                        if (ProductItem.ProductSysNo == sysNo && !ProductItem.ProductChecked)
                                        {
                                            itemGroup.PackageChecked   = true;
                                            ProductItem.ProductChecked = true;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            //checkbox套餐商品购买
            if (!string.IsNullOrEmpty(PackageTypeGroupList))
            {
                string[] array = PackageTypeGroupList.Split(',');
                foreach (var item in array)
                {
                    int sysNo = 0;
                    if (int.TryParse(item, out sysNo))
                    {
                        foreach (var itemGroup in shoppingCart.ShoppingItemGroupList)
                        {
                            if (itemGroup.PackageType.Equals(1))
                            {
                                if (!itemGroup.PackageChecked)
                                {
                                    if (itemGroup.PackageNo == sysNo)
                                    {
                                        itemGroup.PackageChecked = true;
                                    }
                                }
                            }
                        }
                    }
                }
            }



            //用于计算会员价:
            LoginUser userInfo = UserMgr.ReadUserInfo();

            shoppingCart.CustomerSysNo = userInfo == null ? 0 : userInfo.UserSysNo;
            OrderPipelineProcessResult shoppingResult = ShoppingFacade.BuildShoppingCart(shoppingCart);
            ShoppingCart pipelineShoppingCart         = (shoppingResult.ReturnData != null &&
                                                         shoppingResult.ReturnData["ShoppingCart"] != null)
                ? shoppingResult.ReturnData["ShoppingCart"] as ShoppingCart
                : new ShoppingCart();

            shoppingCart.OrderSelectGiftSysNo = pipelineShoppingCart.OrderSelectGiftSysNo;
            shoppingCart.OrderDeleteGiftSysNo = pipelineShoppingCart.OrderDeleteGiftSysNo;
            ////checkbox单个商品购买
            //if (!string.IsNullOrEmpty(PackageTypeSingleList))
            //{
            //    string[] array = PackageTypeSingleList.Split(',');
            //    foreach (var item in array)
            //    {
            //        int sysNo = 0;
            //        if (int.TryParse(item, out sysNo))
            //        {
            //            foreach (var itemGroup in shoppingResult.ReturnData.OrderItemGroupList)
            //            {
            //                if (itemGroup.PackageType.Equals(0))
            //                {
            //                    foreach (OrderProductItem ProductItem in itemGroup.ProductItemList)
            //                    {
            //                        if (ProductItem.ProductSysNo == sysNo && ProductItem.ProductChecked == false)
            //                        {
            //                            itemGroup.PackageChecked = true;
            //                            ProductItem.ProductChecked = true;
            //                        }
            //                    }
            //                }
            //            }
            //        }
            //    }
            //}
            ////checkbox套餐商品购买
            //if (!string.IsNullOrEmpty(PackageTypeGroupList))
            //{
            //    string[] array = PackageTypeGroupList.Split(',');
            //    foreach (var item in array)
            //    {
            //        int sysNo = 0;
            //        if (int.TryParse(item, out sysNo))
            //        {
            //            foreach (var itemGroup in shoppingResult.ReturnData.OrderItemGroupList)
            //            {
            //                if (itemGroup.PackageType.Equals(1))
            //                {
            //                    if (itemGroup.PackageNo == sysNo && itemGroup.PackageChecked == false)
            //                    {
            //                        itemGroup.PackageChecked = true;
            //                    }
            //                }
            //            }
            //        }
            //    }
            //}



            ShoppingStorageManager.SaveShoppingCart(shoppingCart);
            //将迷你购物车加入Cookie
            ShoppingStorageManager.SaveShoppingCartMini(ShoppingFacade.BuildMiniShoppingCartFromPipeline(shoppingResult));

            if (!string.IsNullOrWhiteSpace(errorMessage))
            {
                //更改失败返回错误信息
                if (shoppingResult.ErrorMessages != null)
                {
                    shoppingResult.ErrorMessages = new List <string>()
                    {
                        errorMessage
                    };
                }
                else
                {
                    shoppingResult.ErrorMessages.Add(errorMessage);
                }
            }

            return(PartialView("_ShoppingCartPanel", shoppingResult));
        }
        private static CartResultModel BuilderOrderResultModel(ShoppingCart shoppingCart, string errorMessage = null, string proSysNos = null, string packSysNos = null)
        {
            if (proSysNos != null || packSysNos != null)
            {
                foreach (var itemGroup in shoppingCart.ShoppingItemGroupList)
                {
                    itemGroup.PackageChecked = false;
                    foreach (ShoppingItem ProductItem in itemGroup.ShoppingItemList)
                    {
                        ProductItem.ProductChecked = false;
                    }
                }
                //checkbox单个商品购买
                if (!string.IsNullOrEmpty(proSysNos))
                {
                    string[] array = proSysNos.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                    foreach (var item in array)
                    {
                        int sysNo = 0;
                        if (int.TryParse(item, out sysNo))
                        {
                            foreach (var itemGroup in shoppingCart.ShoppingItemGroupList)
                            {
                                if (itemGroup.PackageType.Equals(0))
                                {
                                    if (!itemGroup.PackageChecked)
                                    {
                                        foreach (ShoppingItem ProductItem in itemGroup.ShoppingItemList)
                                        {
                                            if (ProductItem.ProductSysNo == sysNo && !ProductItem.ProductChecked)
                                            {
                                                itemGroup.PackageChecked   = true;
                                                ProductItem.ProductChecked = true;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                //checkbox套餐商品购买
                if (!string.IsNullOrEmpty(packSysNos))
                {
                    string[] array = packSysNos.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                    foreach (var item in array)
                    {
                        int sysNo = 0;
                        if (int.TryParse(item, out sysNo))
                        {
                            foreach (var itemGroup in shoppingCart.ShoppingItemGroupList)
                            {
                                if (itemGroup.PackageType.Equals(1))
                                {
                                    if (!itemGroup.PackageChecked)
                                    {
                                        if (itemGroup.PackageNo == sysNo)
                                        {
                                            itemGroup.PackageChecked = true;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            ////ShoppingCart pipelineShoppingCart = shoppingCart;
            //if (shoppingCart.ShoppingItemGroupList.Count == 1)
            //{
            //    foreach (var itemGroup in shoppingCart.ShoppingItemGroupList)
            //    {
            //        foreach (ShoppingItem ProductItem in itemGroup.ShoppingItemList)
            //        {
            //            itemGroup.PackageChecked = true;
            //            ProductItem.ProductChecked = true;
            //        }
            //    }
            //}
            //if (shoppingCart.ShoppingItemGroupList.Count > 1)
            //{
            //    if (shoppingCart.ShoppingItemGroupList.FindAll(m => m.PackageChecked).Count == 0)
            //    {
            //        if (shoppingCart.ShoppingItemGroupList[0].PackageType.Equals(1))
            //        {
            //            shoppingCart.ShoppingItemGroupList[0].PackageChecked = true;
            //        }
            //        if (shoppingCart.ShoppingItemGroupList[0].PackageType.Equals(0))
            //        {
            //            foreach (ShoppingItem ProductItem in shoppingCart.ShoppingItemGroupList[0].ShoppingItemList)
            //            {
            //                shoppingCart.ShoppingItemGroupList[0].PackageChecked = true;
            //                ProductItem.ProductChecked = true;
            //            }
            //        }
            //    }
            //}
            LoginUser userInfo = UserMgr.ReadUserInfo();

            shoppingCart.CustomerSysNo = userInfo == null ? 0 : userInfo.UserSysNo;
            OrderPipelineProcessResult shoppingResult = ShoppingFacade.BuildShoppingCart(shoppingCart);
            ShoppingCart pipelineShoppingCart         = (shoppingResult.ReturnData != null &&
                                                         shoppingResult.ReturnData["ShoppingCart"] != null)
                ? shoppingResult.ReturnData["ShoppingCart"] as ShoppingCart
                : new ShoppingCart();

            shoppingCart.OrderSelectGiftSysNo = pipelineShoppingCart.OrderSelectGiftSysNo;
            shoppingCart.OrderDeleteGiftSysNo = pipelineShoppingCart.OrderDeleteGiftSysNo;

            CartResultModel model = new CartResultModel();

            model.HasSucceed    = shoppingResult.HasSucceed;
            model.ErrorMessages = shoppingResult.ErrorMessages;
            if (!string.IsNullOrEmpty(errorMessage))
            {
                model.ErrorMessages.Add(errorMessage);
            }

            OrderInfo orderInfo = shoppingResult.ReturnData;

            if (orderInfo != null)
            {
                OrderInfoModel orderInfoModel = OrderMapping.MappingOrderInfo(orderInfo, "Cart");
                if (!string.IsNullOrEmpty(orderInfo.WarmTips))
                {
                    model.ErrorMessages.Add(orderInfo.WarmTips);
                }

                model.ReturnData = orderInfoModel;
            }

            ShoppingStorageManager.SaveShoppingCart(shoppingCart);

            return(model);
        }
        private static CheckOutResult PreCheckAndBuild(CheckOutContext context, ShoppingCart shoppingCart, int customerSysNo, int orderSource
                                                       , Func <OrderInfo, OrderPipelineProcessResult> action)
        {
            CheckOutResult result = new CheckOutResult();

            MemberInfo memberInfo = CustomerDA.GetCustomerInfo(customerSysNo);

            CheckOutContext newCheckoutContenxt = new CheckOutContext();

            if (context != null)
            {
                newCheckoutContenxt = context.Clone();
            }

            CustomerInfo customerInfo = new CustomerInfo()
            {
                AccountBalance   = memberInfo.ValidPrepayAmt,
                AccountPoint     = memberInfo.ValidScore,
                CustomerRank     = (int)memberInfo.CustomerRank,
                ID               = memberInfo.CustomerID,
                SysNo            = memberInfo.SysNo,
                Name             = memberInfo.CustomerName,
                IsEmailConfirmed = memberInfo.IsEmailConfirmed,
                IsPhoneValided   = memberInfo.IsPhoneValided,
                CellPhone        = memberInfo.CellPhone,
                SocietyID        = memberInfo.SocietyID
            };

            result.Customer = customerInfo;
            //用户个人实名认证信息
            result.CustomerAuthenticationInfo = CustomerDA.GetCustomerAuthenticationInfo(customerSysNo);

            //用户购物发票信息
            result.CustomerInvoiceInfo = CustomerDA.GetCustomerInvoiceInfo(customerSysNo);
            if (result.CustomerInvoiceInfo == null)
            {
                result.CustomerInvoiceInfo = new Entity.Member.CustomerInvoiceInfo()
                {
                    CustomerSysNo = customerSysNo, InvoiceTitle = customerInfo.Name
                };
            }

            //收货地址
            var custShippingAddressListResult = GetCustomerShippingAddressList(context, customerSysNo);

            result.ShippingAddressList = custShippingAddressListResult.ShippingAddressList;
            result.SelShippingAddress  = custShippingAddressListResult.SelShippingAddress;

            //支付方式&配送方式
            var payAndShipTypeResult = GetPayAndShipTypeList(context, customerSysNo, shoppingCart);

            result.PaymentCategoryList  = payAndShipTypeResult.PaymentCategoryList;
            result.SelPaymentCategoryID = payAndShipTypeResult.SelPaymentCategoryID;
            result.PayTypeList          = payAndShipTypeResult.PayTypeList;
            result.SelPayType           = payAndShipTypeResult.SelPayType;
            result.ShipTypeList         = payAndShipTypeResult.ShipTypeList;
            result.SelShipType          = payAndShipTypeResult.SelShipType;

            //根据CheckOutContext 进一步构造shoppingCartResult.ReturnData对象
            OrderInfo preOrderInfo = SOPipelineProcessor.Convert2OrderInfo(shoppingCart);

            preOrderInfo.Customer               = customerInfo;
            preOrderInfo.PayTypeID              = result.SelPayType.PayTypeID.ToString();
            preOrderInfo.ShipTypeID             = result.SelShipType.ShipTypeSysNo.ToString();
            preOrderInfo.Memo                   = newCheckoutContenxt.OrderMemo;
            preOrderInfo.CouponCode             = newCheckoutContenxt.PromotionCode;
            preOrderInfo.ChannelID              = shoppingCart.ChannelID;
            preOrderInfo.LanguageCode           = shoppingCart.LanguageCode;
            preOrderInfo.OrderSource            = orderSource;
            preOrderInfo.VirualGroupBuyOrderTel = context != null ? context.VirualGroupBuyOrderTel : "";

            preOrderInfo.Contact = new ContactInfo()
            {
                AddressAreaID = result.SelShippingAddress.ReceiveAreaSysNo,
                //AddressAreaID = result.SelShippingAddress.ReceiveAreaCitySysNo,
                AddressTitle  = result.SelShippingAddress.AddressTitle,
                AddressDetail = result.SelShippingAddress.ReceiveAddress,
                MobilePhone   = result.SelShippingAddress.ReceiveCellPhone,
                Phone         = result.SelShippingAddress.ReceivePhone,
                Name          = result.SelShippingAddress.ReceiveName,
                ZipCode       = result.SelShippingAddress.ReceiveZip,
                ID            = result.SelShippingAddress.SysNo,
            };
            //使用余额进行支付,给订单的余额支付金额赋值,在SOPipline中会对订单的余额支付金额重新进行计算
            if (newCheckoutContenxt.IsUsedPrePay > 0)
            {
                preOrderInfo.BalancePayAmount = customerInfo.AccountBalance;
            }
            //积分
            preOrderInfo.PointPay = newCheckoutContenxt.PointPay;
            //礼品卡
            if (newCheckoutContenxt.GiftCardList != null && newCheckoutContenxt.GiftCardList.Count > 0)
            {
                preOrderInfo.GiftCardList = new List <GiftCardInfo>();
                foreach (var giftCardContext in newCheckoutContenxt.GiftCardList)
                {
                    if (!string.IsNullOrWhiteSpace(giftCardContext.Crypto))
                    {
                        giftCardContext.Password = ExtractGiftCardPassword(giftCardContext.Password, customerSysNo);
                    }
                    GiftCardInfo giftCardInfo = new GiftCardInfo()
                    {
                        Code     = giftCardContext.Code,
                        Password = giftCardContext.Password
                    };
                    giftCardInfo["Crypto"] = giftCardContext.Crypto;
                    preOrderInfo.GiftCardList.Add(giftCardInfo);
                }
            }
            //购物发票,1表示要开发票
            if (newCheckoutContenxt.NeedInvoice == 1)
            {
                preOrderInfo.Receipt = new ReceiptInfo()
                {
                    PersonalInvoiceTitle = result.CustomerInvoiceInfo.InvoiceTitle
                };
            }
            //执行真正的action操作
            OrderPipelineProcessResult checkOutResult = action(preOrderInfo);

            SetCheckoutResult(checkOutResult, result, newCheckoutContenxt);

            return(result);
        }
Exemple #12
0
        public JsonResult AjaxSubmitCheckout(CheckOutContext context)
        {
            if (context == null)
            {
                return(Json(BuildAjaxErrorObject("无效的请求")));
            }

            ShoppingCart shoppingCart    = ShoppingStorageManager.GetShoppingCartFromCreateNew();
            ShoppingCart shoppingCartNew = ShoppingStorageManager.GetShoppingCartFromCreateNew();

            //优先从购买商品参数来构建购物车对象
            if (!String.IsNullOrWhiteSpace(context.ShoppingItemParam))
            {
                String[] shoppingItemParams = context.ShoppingItemParam.Split(new char[] { '|' });
                if (shoppingItemParams.Length == 2)
                {
                    shoppingCartNew = ShoppingStorageManager.GetShoppingCartFromParam(shoppingItemParams[0], shoppingItemParams[1]);
                }
            }
            //其次从cookie中来构建购物车对象
            if (ShoppingCartIsEmpty(shoppingCartNew))
            {
                shoppingCart = ShoppingStorageManager.GetShoppingCartFromCookieOrCreateNew();
                ShoppingItemGroup ShoppingItem = new ShoppingItemGroup();
                if (!string.IsNullOrEmpty(context.PackageTypeGroupList))
                {
                    string[] array = context.PackageTypeGroupList.Split(',');
                    foreach (var item in array)
                    {
                        int sysNo = 0;
                        if (int.TryParse(item, out sysNo))
                        {
                            ShoppingItem = shoppingCart.ShoppingItemGroupList.FindAll(m =>
                                                                                      (m.PackageType.Equals(1) && m.PackageNo.Equals(sysNo)))[0];
                            shoppingCartNew.ShoppingItemGroupList.Add(ShoppingItem);
                        }
                    }
                }

                if (!string.IsNullOrEmpty(context.PackageTypeSingleList))
                {
                    string[] array = context.PackageTypeSingleList.Split(',');
                    foreach (var item in array)
                    {
                        int sysNo = 0;
                        if (int.TryParse(item, out sysNo))
                        {
                            ShoppingItem = shoppingCart.ShoppingItemGroupList.FindAll(m =>
                                                                                      (m.PackageType.Equals(0) && m.ShoppingItemList[0].ProductSysNo.Equals(sysNo)))[0];
                            shoppingCartNew.ShoppingItemGroupList.Add(ShoppingItem);
                        }
                    }
                }
            }

            if (ShoppingCartIsEmpty(shoppingCartNew))
            {
                return(Json(new { url = PageHelper.BuildUrl("ShoppingCartRoute") }));
            }
            shoppingCartNew.OrderDeleteGiftSysNo = shoppingCart.OrderDeleteGiftSysNo;
            shoppingCartNew.OrderSelectGiftSysNo = shoppingCart.OrderSelectGiftSysNo;
            CheckOutResult result = ShoppingFacade.SubmitCheckout(context, shoppingCartNew, CurrUser.UserSysNo, SOSource.None);

            if (result.HasSucceed)
            {
                //取得订单编号列表
                List <int> soSysNoList = result.OrderProcessResult.ReturnData.SubOrderList.Select(subOrder => subOrder.Value.ID).ToList();
                ShoppingStorageManager.SaveLatestSO(soSysNoList);
                //团购订单数据不是来自cookie,不能清除cookie
                if (!result.OrderProcessResult.ReturnData.SubOrderList.Any(x => x.Value.SOType == (int)SOType.GroupBuy || x.Value.SOType == (int)SOType.VirualGroupBuy))
                {
                    //ShoppingStorageManager.RemoveShoppingCartCookie();
                    //移除mini购物车
                    //ShoppingStorageManager.RemoveShoppingCartMiniCookie();

                    //删除套餐
                    if (!string.IsNullOrEmpty(context.PackageTypeGroupList))
                    {
                        string[] array = context.PackageTypeGroupList.Split(',');
                        foreach (var item in array)
                        {
                            int sysNo = 0;
                            if (int.TryParse(item, out sysNo))
                            {
                                shoppingCart.ShoppingItemGroupList =
                                    shoppingCart.ShoppingItemGroupList.FindAll(m
                                                                               => (m.PackageType.Equals(1) && !m.PackageNo.Equals(sysNo)) ||
                                                                               m.PackageType.Equals(0));
                            }
                        }
                    }
                    //删除单个商品
                    if (!string.IsNullOrEmpty(context.PackageTypeSingleList))
                    {
                        string[] array = context.PackageTypeSingleList.Split(',');
                        foreach (var item in array)
                        {
                            int sysNo = 0;
                            if (int.TryParse(item, out sysNo))
                            {
                                shoppingCart.ShoppingItemGroupList =
                                    shoppingCart.ShoppingItemGroupList.FindAll(m
                                                                               => (m.PackageType.Equals(0) && !m.ShoppingItemList[0].ProductSysNo.Equals(sysNo)) ||
                                                                               m.PackageType.Equals(1));
                            }
                        }
                    }
                    //用于计算会员价:
                    LoginUser userInfo = UserMgr.ReadUserInfo();
                    shoppingCart.CustomerSysNo = userInfo == null ? 0 : userInfo.UserSysNo;
                    OrderPipelineProcessResult shoppingResult = ShoppingFacade.BuildShoppingCart(shoppingCart);
                    ShoppingCart pipelineShoppingCart         = (shoppingResult.ReturnData != null &&
                                                                 shoppingResult.ReturnData["ShoppingCart"] != null)
                        ? shoppingResult.ReturnData["ShoppingCart"] as ShoppingCart
                        : new ShoppingCart();
                    shoppingCart.OrderSelectGiftSysNo = pipelineShoppingCart.OrderSelectGiftSysNo;
                    shoppingCart.OrderDeleteGiftSysNo = pipelineShoppingCart.OrderDeleteGiftSysNo;
                    ShoppingStorageManager.SaveShoppingCart(shoppingCart);
                    //将迷你购物车加入Cookie
                    ShoppingStorageManager.SaveShoppingCartMini(ShoppingFacade.BuildMiniShoppingCartFromPipeline(shoppingResult));
                }

                return(Json(new { url = PageHelper.BuildUrl("Thankyou", result.OrderProcessResult.ReturnData.ShoppingCartID) }));
            }

            return(Json(new { errors = result.ErrorMessages }));
        }