Esempio n. 1
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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
 /// <summary>
 /// 获取商家仓库的所有配送方式
 /// </summary>
 /// <param name="sellerSysNo">商家编号</param>
 /// <returns></returns>
 public static List <ShipTypeInfo> Checkout_GetStockShippingType(int sellerSysNo)
 {
     return(SOPipelineProcessor.Checkout_GetStockShippingType(sellerSysNo));
 }
Esempio n. 4
0
 /// <summary>
 /// 根据配送地区编号和支付方式编号取得所有支持的配送方式列表
 /// </summary>
 /// <param name="addressAreaID">配送地区编号</param>
 /// <param name="paymentCategory">支付类别</param>
 /// <returns></returns>
 public static List <ShipTypeInfo> GetSupportedShipTypeList(int addressAreaID, PaymentCategory?paymentCategory)
 {
     return(SOPipelineProcessor.GetSupportedShipTypeList(addressAreaID, paymentCategory));
 }