/// <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)); }
/// <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 }); }
/// <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)); }
/// <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(); } } }
// // 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); }
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 })); }