예제 #1
0
        /// <summary>
        /// 清理门店购物车所有无效商品
        /// </summary>
        /// <param name="shopBranchId"></param>
        /// <returns></returns>
        public JsonResult <Result <int> > GetClearBranchCartInvalidProducts(long shopBranchId)
        {
            long userId = CurrentUser != null ? CurrentUser.Id : 0;

            CartApplication.ClearInvalidShopBranchCart(userId, shopBranchId);
            return(JsonResult <int>());
        }
예제 #2
0
 /// <summary>
 /// 获取购物车中的商品
 /// </summary>
 /// <returns></returns>
 public IEnumerable <long> GetCartProductIds(long memberId, long shopBranchId)
 {
     long[] productIds = new long[] { };
     if (memberId > 0)//已经登录,系统从服务器读取购物车信息,否则从Cookie获取购物车信息
     {
         var cartInfo = CartApplication.GetShopBranchCart(memberId, shopBranchId);
         productIds = cartInfo.Items.Select(item => item.ProductId).ToArray();
     }
     else
     {
         string cartInfo = WebHelper.GetCookie(CookieKeysCollection.Mall_CART_BRANCH);
         if (!string.IsNullOrWhiteSpace(cartInfo))
         {
             string[] cartItems = cartInfo.Split(',');
             productIds = new long[cartItems.Length];
             int i = 0;
             foreach (string cartItem in cartItems)
             {
                 var cartItemParts = cartItem.Split(':');
                 productIds[i++] = long.Parse(cartItemParts[0]);//获取商品Id
             }
         }
     }
     return(productIds);
 }
예제 #3
0
        public object GetClearBranchCartInvalidProducts(long shopBranchId)
        {
            long userId = CurrentUser != null ? CurrentUser.Id : 0;

            CartApplication.ClearInvalidShopBranchCart(userId, shopBranchId);
            return(Json(""));
        }
예제 #4
0
 public void RemoveFromCart(string skuId, long memberId)
 {
     if (memberId > 0)
     {
         CartApplication.DeleteCartItem(skuId, memberId);
     }
     else
     {
         string cartInfo = WebHelper.GetCookie(CookieKeysCollection.HIMALL_CART);
         if (!string.IsNullOrWhiteSpace(cartInfo))
         {
             string[] cartItems   = cartInfo.Split(',');
             string   newCartInfo = string.Empty;
             foreach (string cartItem in cartItems)
             {
                 string[] cartItemParts = cartItem.Split(':');
                 string   cartItemSkuId = cartItemParts[0];
                 if (cartItemSkuId != skuId)
                 {
                     newCartInfo += "," + cartItem;
                 }
             }
             if (!string.IsNullOrWhiteSpace(newCartInfo))
             {
                 newCartInfo = newCartInfo.Substring(1);
             }
             WebHelper.SetCookie(CookieKeysCollection.HIMALL_CART, newCartInfo);
         }
     }
 }
예제 #5
0
        public Himall.Entities.ShoppingCartInfo GetCartNoCache(long memberId, long shopBranchId)
        {
            Himall.Entities.ShoppingCartInfo shoppingCartInfo;
            if (memberId > 0)//已经登录,系统从服务器读取购物车信息,否则从Cookie获取购物车信息
            {
                shoppingCartInfo = CartApplication.GetShopBranchCartNoCache(memberId, shopBranchId);
            }
            else
            {
                shoppingCartInfo = new Himall.Entities.ShoppingCartInfo();

                string cartInfo = WebHelper.GetCookie(CookieKeysCollection.HIMALL_CART_BRANCH);
                if (!string.IsNullOrWhiteSpace(cartInfo))
                {
                    string[] cartItems     = cartInfo.Split(',');
                    var      cartInfoItems = new List <Himall.Entities.ShoppingCartItem>();
                    foreach (string cartItem in cartItems)
                    {
                        var cartItemParts = cartItem.Split(':');
                        if (shopBranchId == 0 || cartItemParts[2] == shopBranchId.ToString())
                        {
                            cartInfoItems.Add(new Himall.Entities.ShoppingCartItem()
                            {
                                ProductId = long.Parse(cartItemParts[0].Split('_')[0]), SkuId = cartItemParts[0], Quantity = int.Parse(cartItemParts[1]), ShopBranchId = long.Parse(cartItemParts[2])
                            });
                        }
                    }
                    shoppingCartInfo.Items = cartInfoItems;
                }
            }
            return(shoppingCartInfo);
        }
예제 #6
0
 public void RemoveFromCart(IEnumerable <string> skuIds, long memberId, long shopBranchId)
 {
     if (memberId > 0)
     {
         CartApplication.DeleteShopBranchCartItem(skuIds, memberId, shopBranchId);
     }
     else
     {
         string cartInfo = WebHelper.GetCookie(CookieKeysCollection.HIMALL_CART_BRANCH);
         if (!string.IsNullOrWhiteSpace(cartInfo))
         {
             string[] cartItems   = cartInfo.Split(',');
             string   newCartInfo = string.Empty;
             foreach (string cartItem in cartItems)
             {
                 string[] cartItemParts        = cartItem.Split(':');
                 string   cartItemSkuId        = cartItemParts[0];
                 string   cartItemshopBranchId = cartItemParts[2];
                 if (!skuIds.Contains(cartItemSkuId) && shopBranchId.ToString() != cartItemshopBranchId)
                 {
                     newCartInfo += "," + cartItem;
                 }
             }
             if (!string.IsNullOrWhiteSpace(newCartInfo))
             {
                 newCartInfo = newCartInfo.Substring(1);
             }
             WebHelper.SetCookie(CookieKeysCollection.HIMALL_CART_BRANCH, newCartInfo);
         }
     }
 }
예제 #7
0
        /// <summary>
        /// 获取购物车中的商品
        /// </summary>
        /// <returns></returns>
        public Mall.Entities.ShoppingCartInfo GetCart(long memberId)
        {
            Mall.Entities.ShoppingCartInfo shoppingCartInfo;
            if (memberId > 0)//已经登录,系统从服务器读取购物车信息,否则从Cookie获取购物车信息
            {
                shoppingCartInfo = CartApplication.GetCart(memberId);
            }
            else
            {
                shoppingCartInfo = new Mall.Entities.ShoppingCartInfo();

                string cartInfo = WebHelper.GetCookie(CookieKeysCollection.Mall_CART);
                if (!string.IsNullOrWhiteSpace(cartInfo))
                {
                    string[] cartItems     = cartInfo.Split(',');
                    var      cartInfoItems = new List <Mall.Entities.ShoppingCartItem>();
                    foreach (string cartItem in cartItems)
                    {
                        var cartItemParts = cartItem.Split(':');
                        cartInfoItems.Add(new Mall.Entities.ShoppingCartItem()
                        {
                            ProductId = long.Parse(cartItemParts[0].Split('_')[0]), SkuId = cartItemParts[0], Quantity = int.Parse(cartItemParts[1])
                        });
                    }
                    shoppingCartInfo.Items = cartInfoItems;
                }
            }
            return(shoppingCartInfo);
        }
예제 #8
0
 /// <summary>
 /// 获取购物车中的商品
 /// </summary>
 /// <returns></returns>
 public IEnumerable <string> GetCartProductSKUIds(long memberId)
 {
     string[] productIds = new string[] { };
     if (memberId > 0)//已经登录,系统从服务器读取购物车信息,否则从Cookie获取购物车信息
     {
         var cartInfo = CartApplication.GetCart(memberId);
         productIds = cartInfo.Items.Select(item => item.SkuId).ToArray();
     }
     else
     {
         string cartInfo = WebHelper.GetCookie(CookieKeysCollection.HIMALL_CART);
         if (!string.IsNullOrWhiteSpace(cartInfo))
         {
             string[] cartItems = cartInfo.Split(',');
             productIds = new string[cartItems.Length];
             int i = 0;
             foreach (string cartItem in cartItems)
             {
                 var cartItemParts = cartItem.Split(':');
                 productIds[i++] = cartItemParts[0];//获取商品SKUId
             }
         }
     }
     return(productIds);
 }
예제 #9
0
        public object GetClearBranchCartProducts(long shopBranchId)
        {
            CheckUserLogin();
            long userId = CurrentUser.Id;

            CartApplication.ClearShopBranchCart(userId, shopBranchId);
            return(Json(""));
        }
예제 #10
0
        /// <summary>
        /// 清理门店购物车所有无效商品
        /// </summary>
        /// <param name="shopBranchId"></param>
        /// <returns></returns>
        public JsonResult <Result <int> > GetClearBranchCartProducts(long shopBranchId)
        {
            CheckUserLogin();
            long userId = CurrentUser.Id;

            CartApplication.ClearShopBranchCart(userId, shopBranchId);
            return(JsonResult <int>());
        }
예제 #11
0
        /// <summary>
        /// 购物车方式提交的订单
        /// </summary>
        /// <param name="value">数据</param>
        private object SubmitOrderByCart(OrderSubmitOrderByCartModel value)
        {
            string cartItemIds      = value.cartItemIds;
            long   recieveAddressId = value.recieveAddressId;
            string couponIds        = value.couponIds;
            int    integral         = value.integral;

            bool   isCashOnDelivery = value.isCashOnDelivery;
            int    invoiceType      = value.invoiceType;
            string invoiceTitle     = value.invoiceTitle;
            string invoiceContext   = value.invoiceContext;
            //end
            string           orderRemarks = "";//value.orderRemarks;//订单备注
            OrderCreateModel model        = new OrderCreateModel();
            List <OrderInfo> infos        = new List <OrderInfo>();

            var orderService = ServiceProvider.Instance <IOrderService> .Create;
            IEnumerable <long> orderIds;

            model.PlatformType     = PlatformType.WeiXinSmallProg;
            model.CurrentUser      = CurrentUser;
            model.ReceiveAddressId = recieveAddressId;
            model.Integral         = integral;

            model.formId = value.formId;

            model.IsCashOnDelivery = isCashOnDelivery;
            model.Invoice          = (InvoiceType)invoiceType;
            model.InvoiceContext   = invoiceContext;
            model.InvoiceTitle     = invoiceTitle;
            //end
            CommonModel.OrderShop[] OrderShops = Newtonsoft.Json.JsonConvert.DeserializeObject <OrderShop[]>(value.jsonOrderShops);
            model.OrderShops   = OrderShops;//用户APP选择门店自提时用到,2.5版本未支持门店自提
            model.OrderRemarks = OrderShops.Select(p => p.Remark).ToArray();
            try
            {
                var cartItemIdsArr = cartItemIds.Split(',').Select(item => long.Parse(item)).ToArray();
                //根据购物车项补充sku数据
                var cartItems = CartApplication.GetCartItems(cartItemIdsArr);
                model.SkuIds = cartItems.Select(e => e.SkuId).ToList();
                model.Counts = cartItems.Select(e => e.Quantity).ToList();

                model.CartItemIds  = cartItemIdsArr;
                model.CouponIdsStr = OrderHelper.ConvertUsedCoupon(couponIds);

                var orders = orderService.CreateOrder(model);
                orderIds = orders.Select(item => item.Id).ToArray();
                decimal orderTotals = orders.Sum(item => item.OrderTotalAmount);

                return(Json(new { Status = "OK", Message = "提交成功", OrderId = string.Join(",", orderIds), OrderTotal = orderTotals }));
            }
            catch (HimallException he)
            {
                return(Json(new { Status = "NO", Message = he.Message }));
            }
        }
예제 #12
0
        public JsonResult GetCartProducts()
        {
            var memberId  = CurrentUser?.Id ?? 0;
            var cartItems = CartApplication.GetCartItems(memberId);
            var products  = cartItems.Select(item =>
            {
                var product = item.Product;
                var shop    = ShopApplication.GetShop(product.ShopId);
                var sku     = item.Sku;
                return(new
                {
                    cartItemId = item.ItemId,
                    skuId = sku.Id,
                    id = product.Id,
                    imgUrl = Himall.Core.HimallIO.GetProductSizeImage(product.RelativePath, 1, (int)ImageSize.Size_50),
                    name = product.ProductName,
                    productstatus = item.IsLimit ? 0 : (sku.Stock <= 0 ? ProductInfo.ProductSaleStatus.InStock.GetHashCode() : product.SaleStatus.GetHashCode()),
                    status = item.ShowStatus,
                    productauditstatus = product.AuditStatus,
                    price = sku.SalePrice,
                    Color = sku.Color,
                    Size = sku.Size,
                    Version = sku.Version,
                    count = item.Quantity,
                    shopId = shop.Id,
                    shopName = shop.ShopName,
                    productcode = !(sku.Version + sku.Color + sku.Size).Equals("") ? sku.Sku : product.ProductCode,
                    ColorAlias = sku.ColorAlias,
                    SizeAlias = sku.SizeAlias,
                    VersionAlias = sku.VersionAlias,
                    AddTime = item.AddTime,
                    minMath = item.Quantity < item.MinMach ? 0 : 1
                });
            }).OrderBy(s => s.status).ThenByDescending(o => o.AddTime).ToList();

            var newproducts = products.Where(p => p.status == 0 && p.productauditstatus != Entities.ProductInfo.ProductAuditStatus.InfractionSaleOff && p.productauditstatus != Entities.ProductInfo.ProductAuditStatus.WaitForAuditing);//获取有效商品
            var cartModel   = new
            {
                products,
                amount     = newproducts.Sum(item => item.price * item.count),
                totalCount = newproducts.Sum(item => item.count),
            };

            return(Json(cartModel));
        }
예제 #13
0
        public object GetUpdateCartItem(string skuId, int count, long shopBranchId)
        {
            CheckUserLogin();
            CheckSkuIdIsValid(skuId, shopBranchId);
            //判断库存
            var sku = ProductManagerApplication.GetSKU(skuId);

            if (sku == null)
            {
                throw new MallException("错误的SKU");
            }
            //if (count > sku.Stock)
            //{
            //    throw new MallException("库存不足");
            //}
            var shopBranch = ShopBranchApplication.GetShopBranchById(shopBranchId);

            if (shopBranch == null)
            {
                throw new MallException("错误的门店id");
            }
            var shopBranchSkuList = ShopBranchApplication.GetSkusByIds(shopBranchId, new List <string> {
                skuId
            });

            if (shopBranchSkuList == null || shopBranchSkuList.Count == 0)
            {
                throw new MallException("门店没有该商品");
            }
            if (shopBranchSkuList[0].Status == ShopBranchSkuStatus.InStock)
            {
                throw new MallException("此商品已下架");
            }
            var sbsku = shopBranchSkuList.FirstOrDefault();

            if (sbsku.Stock < count)
            {
                throw new MallException("门店库存不足");
            }
            long memberId = CurrentUser.Id;

            CartApplication.UpdateShopBranchCart(skuId, count, memberId, shopBranchId);
            return(Json(""));
        }
예제 #14
0
        /*
         *购物车存储说明:
         * 游客访问时,点击加入购物车,购物车信息保存至Cookie中,游客点击结算时,Cookie中的购物车信息转移至数据库中并清空Cookie中购物车信息。
         *登录会员点击加入购物车时,购物车信息保存至数据库中。
         * Cookie存储格式: skuId1:count1,skuId2:count2,.....
         */

        /// <summary>
        /// 同步客户端购物车信息至服务器
        /// </summary>
        public void UpdateCartInfoFromCookieToServer(long memberId)
        {
            string cartInfo = WebHelper.GetCookie(CookieKeysCollection.HIMALL_CART);

            if (!string.IsNullOrWhiteSpace(cartInfo))
            {
                string[] cartItems         = cartInfo.Split(',');
                var      shoppingCartItems = new List <Himall.Entities.ShoppingCartItem>();
                foreach (string cartItem in cartItems)
                {
                    var cartItemParts = cartItem.Split(':');
                    shoppingCartItems.Add(new Himall.Entities.ShoppingCartItem()
                    {
                        SkuId = cartItemParts[0], Quantity = int.Parse(cartItemParts[1])
                    });
                }
                CartApplication.AddToCart(shoppingCartItems, memberId);
            }
            WebHelper.DeleteCookie(CookieKeysCollection.HIMALL_CART);
        }
예제 #15
0
        public void UpdateCartItem(string skuId, int count, long memberId)
        {
            if (memberId > 0)
            {
                CartApplication.UpdateCart(skuId, count, memberId);
            }
            else
            {
                string cartInfo = WebHelper.GetCookie(CookieKeysCollection.HIMALL_CART);
                if (!string.IsNullOrWhiteSpace(cartInfo))
                {
                    string[] cartItems   = cartInfo.Split(',');
                    string   newCartInfo = string.Empty;
                    foreach (string cartItem in cartItems)
                    {
                        var cartItemParts = cartItem.Split(':');
                        if (cartItemParts[0] == skuId)
                        {
                            newCartInfo += "," + skuId + ":" + count;
                        }
                        else
                        {
                            newCartInfo += "," + cartItem;
                        }
                    }

                    if (!string.IsNullOrWhiteSpace(newCartInfo))
                    {
                        newCartInfo = newCartInfo.Substring(1);
                    }
                    WebHelper.SetCookie(CookieKeysCollection.HIMALL_CART, newCartInfo);
                }
                else
                {
                    WebHelper.SetCookie(CookieKeysCollection.HIMALL_CART, string.Format("{0}:{1}", skuId, count));
                }
            }
        }
예제 #16
0
        /*
         *购物车存储说明:
         * 游客访问时,点击加入购物车,购物车信息保存至Cookie中,游客点击结算时,Cookie中的购物车信息转移至数据库中并清空Cookie中购物车信息。
         *登录会员点击加入购物车时,购物车信息保存至数据库中。
         * Cookie存储格式: skuId1:count1,skuId2:count2,.....
         */

        /// <summary>
        /// 同步客户端购物车信息至服务器
        /// </summary>
        public void UpdateCartInfoFromCookieToServer(long memberId)
        {
            string cartInfo = WebHelper.GetCookie(CookieKeysCollection.Mall_CART_BRANCH);

            if (!string.IsNullOrWhiteSpace(cartInfo))
            {
                string[] cartItems         = cartInfo.Split(',');
                var      shoppingCartItems = new List <Mall.Entities.ShoppingCartItem>();
                foreach (string cartItem in cartItems)
                {
                    var  cartItemParts = cartItem.Split(':');
                    var  skuId         = cartItemParts[0];
                    int  quantity      = int.Parse(cartItemParts[1]);
                    long shopBranchId  = long.Parse(cartItemParts[2]);
                    shoppingCartItems.Add(new Mall.Entities.ShoppingCartItem()
                    {
                        ShopBranchId = shopBranchId, SkuId = cartItemParts[0], Quantity = int.Parse(cartItemParts[1])
                    });
                }
                CartApplication.AddToShopBranchCart(shoppingCartItems, memberId);
            }
            WebHelper.DeleteCookie(CookieKeysCollection.Mall_CART_BRANCH);
        }
예제 #17
0
        /// <summary>
        /// 购物车方式提交的订单
        /// </summary>
        /// <param name="value">数据</param>
        public object PostSubmitOrderByCart(OrderSubmitOrderByCartModel value)
        {
            CheckUserLogin();
            string cartItemIds      = value.cartItemIds;
            long   recieveAddressId = value.recieveAddressId;
            string couponIds        = value.couponIds;
            int    integral         = value.integral;

            bool   isCashOnDelivery = value.isCashOnDelivery;
            int    invoiceType      = value.invoiceType;
            string invoiceTitle     = value.invoiceTitle;
            string invoiceContext   = value.invoiceContext;
            //end
            string           orderRemarks = "";//value.orderRemarks;//订单备注
            OrderCreateModel model        = new OrderCreateModel();
            var orderService = ServiceProvider.Instance <IOrderService> .Create;
            IEnumerable <long> orderIds;

            model.PlatformType     = PlatformType.Android;
            model.CurrentUser      = CurrentUser;
            model.ReceiveAddressId = recieveAddressId;
            model.Integral         = integral;


            model.IsCashOnDelivery = isCashOnDelivery;
            model.Invoice          = (InvoiceType)invoiceType;
            model.InvoiceContext   = invoiceContext;
            model.InvoiceTitle     = invoiceTitle;
            //end
            CommonModel.OrderShop[] OrderShops = Newtonsoft.Json.JsonConvert.DeserializeObject <OrderShop[]>(value.jsonOrderShops);
            model.OrderShops   = OrderShops;//用户APP选择门店自提时用到,2.5版本未支持门店自提
            model.OrderRemarks = OrderShops.Select(p => p.Remark).ToArray();
            try
            {
                var cartItemIdsArr = cartItemIds.Split(',').Select(item => long.Parse(item)).ToArray();
                //根据购物车项补充sku数据
                var cartItems = CartApplication.GetCartItems(cartItemIdsArr);
                model.SkuIds = cartItems.Select(e => e.SkuId).ToList();
                model.Counts = cartItems.Select(e => e.Quantity).ToList();

                model.CartItemIds  = cartItemIdsArr;
                model.CouponIdsStr = OrderHelper.ConvertUsedCoupon(couponIds);
                var orders = orderService.CreateOrder(model);
                orderIds = orders.Select(item => item.Id).ToArray();
                decimal orderTotals     = orders.Sum(item => item.OrderTotalAmount);
                var     realTotalIsZero = "false";
                if (orderTotals == 0)
                {
                    realTotalIsZero = "true";
                }
                return(Json(new { Success = "true", OrderIds = orderIds, RealTotalIsZero = realTotalIsZero }));
            }
            catch (HimallException he)
            {
                return(Json(new { Success = "false", Msg = he.Message }));
            }
            catch (Exception ex)
            {
                return(Json(new { Success = "false", Msg = "提交订单异常" }));
            }
        }
예제 #18
0
        public void AddToCart(string skuId, int count, long memberId, long shopBranchId)
        {
            CheckSkuIdIsValid(skuId, shopBranchId);
            //判断库存
            var sku = ProductManagerApplication.GetSKU(skuId);

            if (sku == null)
            {
                throw new HimallException("错误的SKU");
            }
            if (count > sku.Stock)
            {
                throw new HimallException("库存不足");
            }
            var shopBranch = ShopBranchApplication.GetShopBranchById(shopBranchId);

            if (shopBranch == null)
            {
                throw new HimallException("错误的门店id");
            }
            var shopBranchSkuList = ShopBranchApplication.GetSkusByIds(shopBranchId, new List <string> {
                skuId
            });

            if (shopBranchSkuList == null || shopBranchSkuList.Count == 0)
            {
                throw new HimallException("门店没有该商品");
            }
            if (shopBranchSkuList[0].Status == ShopBranchSkuStatus.InStock)
            {
                throw new HimallException("此商品已下架");
            }

            if (memberId > 0)
            {
                CartApplication.AddToShopBranchCart(skuId, count, memberId, shopBranchId);
            }
            else
            {
                string cartInfo = WebHelper.GetCookie(CookieKeysCollection.HIMALL_CART_BRANCH);
                if (!string.IsNullOrWhiteSpace(cartInfo))
                {
                    string[] cartItems   = cartInfo.Split(',');
                    string   newCartInfo = string.Empty;
                    bool     exist       = false;
                    foreach (string cartItem in cartItems)
                    {
                        var cartItemParts = cartItem.Split(':');
                        if (cartItemParts[0] == skuId && cartItemParts[2] == shopBranchId.ToString())
                        {
                            newCartInfo += "," + skuId + ":" + (int.Parse(cartItemParts[1]) + count) + ":" + shopBranchId;
                            exist        = true;
                        }
                        else
                        {
                            newCartInfo += "," + cartItem;
                        }
                    }
                    if (!exist)
                    {
                        newCartInfo += "," + skuId + ":" + count + ":" + shopBranchId;
                    }

                    if (!string.IsNullOrWhiteSpace(newCartInfo))
                    {
                        newCartInfo = newCartInfo.Substring(1);
                    }
                    WebHelper.SetCookie(CookieKeysCollection.HIMALL_CART_BRANCH, newCartInfo);
                }
                else
                {
                    WebHelper.SetCookie(CookieKeysCollection.HIMALL_CART_BRANCH, string.Format("{0}:{1}:{2}", skuId, count, shopBranchId));
                }
            }
        }
예제 #19
0
        public void AddToCart(string skuId, int count, long memberId)
        {
            CheckSkuIdIsValid(skuId);
            //判断库存
            var sku = ProductManagerApplication.GetSKU(skuId);

            if (sku == null)
            {
                throw new HimallException("错误的SKU");
            }
            if (count > sku.Stock)
            {
                throw new HimallException("库存不足");
            }
            #region 商品限购判断
            var prouctInfo = ProductManagerApplication.GetProduct(sku.ProductId);
            if (prouctInfo != null && prouctInfo.MaxBuyCount > 0 && !prouctInfo.IsOpenLadder)//商品有限购数量
            {
                var carInfo = CartApplication.GetCart(memberId);
                if (carInfo != null)
                {
                    var quantity = carInfo.Items.Where(p => p.ProductId == sku.ProductId).Sum(d => d.Quantity); //当前用户该商品已加入购物车数量
                    if (count + quantity > prouctInfo.MaxBuyCount)                                              //已有数量+新数量
                    {
                        throw new HimallException(string.Format("每个ID限购{0}件", prouctInfo.MaxBuyCount));
                    }
                }
            }
            #endregion

            if (memberId > 0)
            {
                CartApplication.AddToCart(skuId, count, memberId);
            }
            else
            {
                string cartInfo = WebHelper.GetCookie(CookieKeysCollection.HIMALL_CART);
                if (!string.IsNullOrWhiteSpace(cartInfo))
                {
                    string[] cartItems   = cartInfo.Split(',');
                    string   newCartInfo = string.Empty;
                    bool     exist       = false;
                    foreach (string cartItem in cartItems)
                    {
                        var cartItemParts = cartItem.Split(':');
                        if (cartItemParts[0] == skuId)
                        {
                            newCartInfo += "," + skuId + ":" + (int.Parse(cartItemParts[1]) + count);
                            exist        = true;
                        }
                        else
                        {
                            newCartInfo += "," + cartItem;
                        }
                    }
                    if (!exist)
                    {
                        newCartInfo += "," + skuId + ":" + count;
                    }

                    if (!string.IsNullOrWhiteSpace(newCartInfo))
                    {
                        newCartInfo = newCartInfo.Substring(1);
                    }
                    WebHelper.SetCookie(CookieKeysCollection.HIMALL_CART, newCartInfo);
                }
                else
                {
                    WebHelper.SetCookie(CookieKeysCollection.HIMALL_CART, string.Format("{0}:{1}", skuId, count));
                }
            }
        }
예제 #20
0
        /// <summary>
        /// 首页商品信息
        /// </summary>
        /// <param name="openId"></param>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        public JsonResult <Result <List <dynamic> > > GetIndexProductData(string openId = "", int pageIndex = 1, int pageSize = 10)
        {
            var homeProducts = ServiceProvider.Instance <IWXSmallProgramService> .Create.GetWXSmallHomeProducts(pageIndex, pageSize);

            decimal discount    = 1M;
            long    SelfShopId  = 0;
            var     CartInfo    = new Himall.Entities.ShoppingCartInfo();
            var     ids         = homeProducts.Models.Select(p => p.Id).ToList();
            var     productList = new List <dynamic>();
            var     cartitems   = new List <Himall.Entities.ShoppingCartItem>();
            long    userId      = 0;

            if (CurrentUser != null)
            {
                userId   = CurrentUser.Id;
                discount = CurrentUser.MemberDiscount;
                var shopInfo = ShopApplication.GetSelfShop();
                SelfShopId = shopInfo.Id;
                CartInfo   = ServiceProvider.Instance <ICartService> .Create.GetCart(CurrentUser.Id);

                cartitems = CartApplication.GetCartQuantityByIds(CurrentUser.Id, ids);
            }

            foreach (var item in homeProducts.Models)
            {
                long activeId   = 0;
                int  activetype = 0;
                item.ImagePath = Core.HimallIO.GetRomoteProductSizeImage(Core.HimallIO.GetImagePath(item.ImagePath), 1, (int)Himall.CommonModel.ImageSize.Size_350);
                if (item.ShopId == SelfShopId)
                {
                    item.MinSalePrice = item.MinSalePrice * discount;
                }
                var limitBuy = ServiceProvider.Instance <ILimitTimeBuyService> .Create.GetLimitTimeMarketItemByProductId(item.Id);

                if (limitBuy != null)
                {
                    item.MinSalePrice = limitBuy.MinPrice;
                    activeId          = limitBuy.Id;
                    activetype        = 1;
                }
                int quantity = 0;
                quantity = cartitems.Where(d => d.ProductId == item.Id).Sum(d => d.Quantity);

                long stock = 0;

                var productInfo = ServiceProvider.Instance <IProductService> .Create.GetProduct(item.Id);

                if (productInfo != null)
                {
                    var skus = ProductManagerApplication.GetSKUs(productInfo.Id);
                    stock = skus.Sum(x => x.Stock);
                    if (productInfo.MaxBuyCount > 0)
                    {
                        stock = productInfo.MaxBuyCount;
                    }
                }
                if (productInfo.AuditStatus == Entities.ProductInfo.ProductAuditStatus.Audited)
                {
                    var ChoiceProducts = new
                    {
                        ProductId       = item.Id,
                        ProductName     = item.ProductName,
                        SalePrice       = item.MinSalePrice.ToString("0.##"),
                        ThumbnailUrl160 = item.ImagePath,
                        MarketPrice     = item.MarketPrice.ToString("0.##"),
                        CartQuantity    = quantity,
                        HasSKU          = item.HasSKU,
                        SkuId           = GetSkuIdByProductId(item.Id),
                        ActiveId        = activeId,
                        ActiveType      = activetype,//获取该商品是否参与活动
                        Stock           = stock,
                        IsVirtual       = item.ProductType == 1
                    };
                    productList.Add(ChoiceProducts);
                }
            }
            return(JsonResult(productList));
        }
예제 #21
0
        public object PostUpdateCartItem(CartUpdateCartItemModel value)
        {
            var productService = ServiceProvider.Instance <IProductService> .Create;

            CheckUserLogin();
            string Jsonstr      = value.jsonstr;
            var    datavalue    = Newtonsoft.Json.JsonConvert.DeserializeObject <UpdateCartSKusModel>(Jsonstr);
            var    cartService  = ServiceProvider.Instance <ICartService> .Create;
            var    ladderPrice  = 0m;
            long   productId    = 0;
            var    isOpenLadder = false;

            foreach (var sku in datavalue.skus)
            {
                Entities.SKUInfo skuinfo = OrderApplication.GetSkuByID(sku.skuId);
                if (skuinfo != null)
                {
                    var productInfo = ProductManagerApplication.GetProduct(skuinfo.ProductId);
                    if (productInfo != null)
                    {
                        if (productInfo.MaxBuyCount > 0 && sku.count > productInfo.MaxBuyCount && !productInfo.IsOpenLadder)
                        {
                            return(ErrorResult(string.Format("商品[{0}]限购{1}件", productInfo.ProductName, productInfo.MaxBuyCount), data: new { maxBuyCount = productInfo.MaxBuyCount }));
                            //throw new MallException(string.Format("每个ID限购{0}件", productInfo.MaxBuyCount));
                        }
                    }
                }
                cartService.UpdateCart(sku.skuId, sku.count, CurrentUser.Id);
                #region 阶梯价--张宇枫
                var skus    = CartApplication.GetCart(CurrentUser.Id);
                var skuItem = skus.Items.ToList().Find(i => i.SkuId == sku.skuId);
                productId = skuItem.ProductId;
                var product = ProductManagerApplication.GetProduct(productId);
                isOpenLadder = product.IsOpenLadder;
                if (isOpenLadder)
                {
                    var shop = ShopApplication.GetShop(product.ShopId);
                    var groupCartByProduct = skus.Items.Where(item => item.ShopBranchId == 0).Select(c =>
                    {
                        var cItem   = new Mall.Entities.ShoppingCartItem();
                        var skuInfo = productService.GetSku(c.SkuId);
                        if (skuInfo != null)
                        {
                            cItem = c;
                        }
                        return(cItem);
                    }).GroupBy(i => i.ProductId).ToList();
                    var quantity =
                        groupCartByProduct.Where(i => i.Key == productId)
                        .ToList()
                        .Sum(cartitem => cartitem.Sum(i => i.Quantity));
                    ladderPrice = ProductManagerApplication.GetProductLadderPrice(skuItem.ProductId, quantity);
                    if (shop.IsSelf)
                    {
                        ladderPrice = CurrentUser.MemberDiscount * ladderPrice;
                    }
                }
                #endregion
            }
            var result = new
            {
                success = true,
                //d.Url = "http://" + Url.Request.RequestUri.Host + "/m-IOS/Order/SubmiteByCart";
                Url          = Core.MallIO.GetRomoteImagePath("/m-IOS/Order/SubmiteByCart"),
                Price        = ladderPrice.ToString("F2"),
                ProductId    = productId,
                IsOpenLadder = isOpenLadder ? 1 : 0,
            };
            return(result);
        }
예제 #22
0
        public object PostSubmitOrderByCart(OrderSubmitOrderByCartModel value)
        {
            this.CheckUserLogin();
            if (value.CapitalAmount > new Decimal(0) && !string.IsNullOrEmpty(value.PayPwd) && !MemberApplication.VerificationPayPwd(this.CurrentUser.Id, value.PayPwd))
            {
                return((object)this.Json(new
                {
                    Success = "false",
                    Msg = "预付款支付密码错误"
                }));
            }
            string           cartItemIds      = value.cartItemIds;
            long             recieveAddressId = value.recieveAddressId;
            string           couponIds        = value.couponIds;
            int              integral         = value.integral;
            bool             isCashOnDelivery = value.isCashOnDelivery;
            int              invoiceType      = value.invoiceType;
            string           invoiceTitle     = value.invoiceTitle;
            string           invoiceContext   = value.invoiceContext;
            OrderCreateModel model            = new OrderCreateModel();
            IOrderService    create           = Instance <IOrderService> .Create;

            model.PlatformType     = PlatformType.Android;
            model.CurrentUser      = this.CurrentUser;
            model.ReceiveAddressId = recieveAddressId;
            model.Integral         = integral;
            model.Capital          = value.CapitalAmount;
            model.IsCashOnDelivery = isCashOnDelivery;
            model.Invoice          = (InvoiceType)invoiceType;
            model.InvoiceContext   = invoiceContext;
            model.InvoiceTitle     = invoiceTitle;
            model.InvoiceCode      = value.invoiceCode;
            OrderShop[] orderShopArray = JsonConvert.DeserializeObject <OrderShop[]>(value.jsonOrderShops);
            model.OrderShops   = orderShopArray;
            model.OrderRemarks = (IEnumerable <string>)Enumerable.ToArray <string>(Enumerable.Select <OrderShop, string>((IEnumerable <OrderShop>)orderShopArray, (Func <OrderShop, string>)(p => p.Remark)));
            try
            {
                long[] numArray = Enumerable.ToArray <long>(Enumerable.Select <string, long>(Enumerable.Where <string>((IEnumerable <string>)cartItemIds.Split(','), (Func <string, bool>)(d => !string.IsNullOrWhiteSpace(d))), (Func <string, long>)(item => long.Parse(item))));
                IQueryable <ShoppingCartItem> cartItems = CartApplication.GetCartItems((IEnumerable <long>)numArray);
                model.SkuIds       = (IEnumerable <string>)Enumerable.ToList <string>((IEnumerable <string>)Queryable.Select <ShoppingCartItem, string>(cartItems, (Expression <Func <ShoppingCartItem, string> >)(e => e.SkuId)));
                model.Counts       = (IEnumerable <int>)Enumerable.ToList <int>((IEnumerable <int>)Queryable.Select <ShoppingCartItem, int>(cartItems, (Expression <Func <ShoppingCartItem, int> >)(e => e.Quantity)));
                model.CartItemIds  = numArray;
                model.CouponIdsStr = OrderHelper.ConvertUsedCoupon(couponIds);
                List <OrderInfo>   order      = create.CreateOrder(model);
                IEnumerable <long> enumerable = (IEnumerable <long>)Enumerable.ToArray <long>(Enumerable.Select <OrderInfo, long>((IEnumerable <OrderInfo>)order, (Func <OrderInfo, long>)(item => item.Id)));
                Decimal            num        = Enumerable.Sum <OrderInfo>((IEnumerable <OrderInfo>)order, (Func <OrderInfo, Decimal>)(item => item.OrderTotalAmount));
                string             str        = "false";
                if (num == new Decimal(0))
                {
                    str = "true";
                }
                return((object)this.Json(new
                {
                    Success = "true",
                    OrderIds = enumerable,
                    RealTotalIsZero = str
                }));
            }
            catch (HimallException ex)
            {
                return((object)this.Json(new
                {
                    Success = "false",
                    Msg = ex.Message
                }));
            }
            catch (Exception ex)
            {
                return((object)this.Json(new
                {
                    Success = "false",
                    Msg = "提交订单异常"
                }));
            }
        }
예제 #23
0
        /// <summary>
        /// 购物车方式提交的订单
        /// </summary>
        /// <param name="value">数据</param>
        public object PostSubmitOrderByCart(OrderSubmitOrderByCartModel value)
        {
            CheckUserLogin();
            if (value.CapitalAmount > 0 && !string.IsNullOrEmpty(value.PayPwd))
            {
                var flag = MemberApplication.VerificationPayPwd(CurrentUser.Id, value.PayPwd);
                if (!flag)
                {
                    return(ErrorResult("预存款支付密码错误"));
                }
            }
            string cartItemIds      = value.cartItemIds;
            long   recieveAddressId = value.recieveAddressId;
            string couponIds        = value.couponIds;
            int    integral         = value.integral;

            decimal capitalAmount = value.CapitalAmount;

            bool   isCashOnDelivery = value.isCashOnDelivery;
            int    invoiceType      = value.invoiceType;
            string invoiceTitle     = value.invoiceTitle;
            string invoiceContext   = value.invoiceContext;
            string invoiceCode      = value.invoiceCode;

            OrderCreateModel model = new OrderCreateModel();
            var orderService       = ServiceProvider.Instance <IOrderService> .Create;
            IEnumerable <long> orderIds;

            model.PlatformType     = PlatformType.Android;
            model.CurrentUser      = CurrentUser;
            model.ReceiveAddressId = recieveAddressId;
            model.Integral         = integral;

            model.Capital = capitalAmount;//预存款

            model.IsCashOnDelivery = isCashOnDelivery;
            model.Invoice          = (InvoiceType)invoiceType;
            model.InvoiceContext   = invoiceContext;
            model.InvoiceTitle     = invoiceTitle;
            model.InvoiceCode      = invoiceCode;
            //end
            CommonModel.OrderShop[] OrderShops = Newtonsoft.Json.JsonConvert.DeserializeObject <OrderShop[]>(value.jsonOrderShops);
            model.OrderShops   = OrderShops;//用户APP选择门店自提时用到,2.5版本未支持门店自提
            model.OrderRemarks = OrderShops.Select(p => p.Remark).ToArray();
            try
            {
                var cartItemIdsArr = cartItemIds.Split(',').Select(item => long.Parse(item)).ToArray();
                //根据购物车项补充sku数据
                var cartItems = CartApplication.GetCartItems(cartItemIdsArr);
                model.SkuIds = cartItems.Select(e => e.SkuId).ToList();
                model.Counts = cartItems.Select(e => e.Quantity).ToList();

                model.CartItemIds  = cartItemIdsArr;
                model.CouponIdsStr = CouponApplication.ConvertUsedCoupon(couponIds);
                var orders = orderService.CreateOrder(model);
                orderIds = orders.Select(item => item.Id).ToArray();
                decimal orderTotals = orders.Where(d => d.PaymentType != Entities.OrderInfo.PaymentTypes.CashOnDelivery).Sum(item => item.OrderTotalAmount);
                return(new { success = true, OrderIds = orderIds, RealTotalIsZero = orderTotals == 0 });
            }
            catch (HimallException he)
            {
                return(ErrorResult(he.Message));
            }
            catch (Exception ex)
            {
                return(ErrorResult("提交订单异常"));
            }
        }
예제 #24
0
        public object GetIndexProductData(string openId = "", int pageIndex = 10, int pageSize = 1)
        {
            //CheckUserLogin();
            var homeProducts = ServiceProvider.Instance <IWXSmallProgramService> .Create.GetWXSmallHomeProducts().OrderBy(item => item.Id).Skip((pageIndex - 1) * pageSize).Take(pageSize);

            decimal          discount           = 1M;
            long             SelfShopId         = 0;
            ShoppingCartInfo CartInfo           = new ShoppingCartInfo();
            var                     ids         = homeProducts.Select(d => d.Id).ToArray();
            List <object>           productList = new List <object>();
            List <ShoppingCartItem> cartitems   = new List <ShoppingCartItem>();

            if (CurrentUser != null)
            {
                discount = CurrentUser.MemberDiscount;
                var shopInfo = ShopApplication.GetSelfShop();
                SelfShopId = shopInfo.Id;
                CartInfo   = ServiceProvider.Instance <ICartService> .Create.GetCart(CurrentUser.Id);

                cartitems = CartApplication.GetCartQuantityByIds(CurrentUser.Id, ids);
            }

            var limit = LimitTimeApplication.GetLimitProducts();

            //var fight = FightGroupApplication.GetFightGroupPrice();

            foreach (var item in homeProducts)
            {
                long activeId   = 0;
                int  activetype = 0;
                item.ImagePath = Core.HimallIO.GetRomoteProductSizeImage(Core.HimallIO.GetImagePath(item.ImagePath), 1, (int)Himall.CommonModel.ImageSize.Size_350);
                if (item.ShopId == SelfShopId)
                {
                    item.MinSalePrice = item.MinSalePrice * discount;
                }
                var limitBuy = ServiceProvider.Instance <ILimitTimeBuyService> .Create.GetLimitTimeMarketItemByProductId(item.Id);

                if (limitBuy != null)
                {
                    item.MinSalePrice = limitBuy.MinPrice;
                    activeId          = limitBuy.Id;
                    activetype        = 1;
                }
                int quantity = 0;
                quantity = cartitems.Where(d => d.ProductId == item.Id).Sum(d => d.Quantity);
                //火拼
                //if (activeInfo != null)
                //{
                //    item.MinSalePrice = activeInfo.MiniGroupPrice;
                //    activeId = activeInfo.Id;
                //    activetype = 2;
                //}
                var ChoiceProducts = new
                {
                    ProductId       = item.Id,
                    ProductName     = item.ProductName,
                    SalePrice       = item.MinSalePrice.ToString("0.##"),
                    ThumbnailUrl160 = item.ImagePath,
                    MarketPrice     = item.MarketPrice.ToString("0.##"),
                    CartQuantity    = quantity,
                    HasSKU          = item.HasSKU,
                    SkuId           = GetSkuIdByProductId(item.Id), //d.Himall_Products d.Field<string>("SkuId"),
                    ActiveId        = activeId,
                    ActiveType      = activetype                    //获取该商品是否参与活动
                };
                productList.Add(ChoiceProducts);
            }
            var json = new
            {
                Status = "OK",
                Data   = new {
                    ChoiceProducts = productList
                }
            };

            return(json);
        }
예제 #25
0
        /// <summary>
        /// 购物车方式提交的订单
        /// </summary>
        /// <param name="value">数据</param>
        private object SubmitOrderByCart(OrderSubmitOrderByCartModel value)
        {
            string cartItemIds      = value.cartItemIds;
            long   recieveAddressId = value.recieveAddressId;
            string couponIds        = value.couponIds;
            int    integral         = value.integral;

            bool   isCashOnDelivery = value.isCashOnDelivery;
            int    invoiceType      = value.invoiceType;
            string invoiceTitle     = value.invoiceTitle;
            string invoiceContext   = value.invoiceContext;

            OrderCreateModel model = new OrderCreateModel();
            List <OrderInfo> infos = new List <OrderInfo>();

            var orderService = ServiceProvider.Instance <IOrderService> .Create;
            IEnumerable <long> orderIds;

            model.PlatformType     = PlatformType.WeiXinSmallProg;
            model.CurrentUser      = CurrentUser;
            model.ReceiveAddressId = recieveAddressId;
            model.Integral         = integral;

            model.formId  = value.formId;
            model.Capital = value.Capital;

            model.IsCashOnDelivery = isCashOnDelivery;
            model.Invoice          = (InvoiceType)invoiceType;
            model.InvoiceContext   = invoiceContext;
            model.InvoiceTitle     = invoiceTitle;

            if (value.isStore)
            {
                model.IsShopbranchOrder = true;
            }
            //end
            CommonModel.OrderShop[] OrderShops = Newtonsoft.Json.JsonConvert.DeserializeObject <OrderShop[]>(value.jsonOrderShops);
            model.OrderShops   = OrderShops;//用户APP选择门店自提时用到,2.5版本未支持门店自提
            model.OrderRemarks = OrderShops.Select(p => p.Remark).ToArray();
            try
            {
                var cartItemIdsArr = cartItemIds.Split(',').Select(item => long.Parse(item)).ToArray();
                //根据购物车项补充sku数据
                var cartItems = CartApplication.GetCartItems(cartItemIdsArr);
                model.SkuIds = cartItems.Select(e => e.SkuId).ToList();
                model.Counts = cartItems.Select(e => e.Quantity).ToList();

                model.CartItemIds  = cartItemIdsArr;
                model.CouponIdsStr = CouponApplication.ConvertUsedCoupon(couponIds);

                var orders = orderService.CreateOrder(model);
                orderIds = orders.Select(item => item.Id).ToArray();
                decimal orderTotals = orders.Where(d => d.PaymentType != Entities.OrderInfo.PaymentTypes.CashOnDelivery).Sum(item => item.OrderTotalAmount);

                return(Json(new { OrderId = string.Join(",", orderIds), OrderTotal = orderTotals,
                                  RealTotalIsZero = (orderTotals - model.Capital) == 0, msg = "提交成功" }));
            }
            catch (MallException he)
            {
                return(Json(ErrorResult <dynamic>(he.Message)));
            }
        }
예제 #26
0
        public object GetCartProduct(string openId = "")
        {
            CheckUserLogin();
            List <CartProductModel> products = new List <CartProductModel>();
            var cartItems = CartApplication.GetCartItems(CurrentUser.Id);
            var vshops    = VshopApplication.GetVShopsByShopIds(cartItems.Select(p => p.Shop.Id));

            foreach (var item in cartItems)
            {
                var sku     = item.Sku;
                var product = item.Product;
                var shop    = item.Shop;
                var vshop   = vshops.FirstOrDefault(p => p.ShopId == shop.Id);

                var _tmp = new CartProductModel
                {
                    CartItemId    = item.ItemId.ToString(),
                    SkuId         = sku.Id,
                    Id            = product.Id.ToString(),
                    ImgUrl        = Core.MallIO.GetRomoteProductSizeImage(product.RelativePath, 1, (int)ImageSize.Size_150),
                    Name          = product.ProductName,
                    Price         = sku.SalePrice.ToString("F2"),
                    MarketPrice   = product.MarketPrice.ToString("F2"),
                    Count         = item.Quantity.ToString(),
                    ShopId        = shop.Id.ToString(),
                    Size          = sku.Size,
                    Color         = sku.Color,
                    Version       = sku.Version,
                    VShopId       = vshop == null ? "0" : vshop.Id.ToString(),
                    ShopName      = shop.ShopName,
                    ShopLogo      = vshop == null ? "" : Core.MallIO.GetRomoteImagePath(vshop.Logo),
                    Url           = Core.MallIO.GetRomoteImagePath("/m-IOS/product/detail/") + product.Id,
                    ProductStatus = item.ShowStatus,
                    ColorAlias    = sku.ColorAlias,
                    SizeAlias     = sku.SizeAlias,
                    VersionAlias  = sku.VersionAlias,
                    AddTime       = item.AddTime,
                    IsOpenLadder  = product.IsOpenLadder,
                    MaxBuyCount   = product.MaxBuyCount,
                    MinBath       = ProductManagerApplication.GetProductLadderMinMath(product.Id),
                    ActiveId      = item.LimitId
                };
                _tmp.IsValid = (_tmp.ProductStatus == 0) ? 0 : 1;
                products.Add(_tmp);
            }


            products = products.OrderBy(p => p.IsValid).ThenByDescending(item => item.AddTime).ToList();
            var     cartShop  = products.GroupBy(item => item.ShopId);
            decimal prodPrice = 0.0M; //优惠价格
            decimal discount  = 1.0M; //默认折扣为1(没有折扣)

            if (CurrentUser != null)
            {
                discount = CurrentUser.MemberDiscount;
            }
            var productService    = ServiceProvider.Instance <IProductService> .Create;
            var shopService       = ServiceProvider.Instance <IShopService> .Create;
            var vshopService      = ServiceProvider.Instance <IVShopService> .Create;
            var siteSetting       = SiteSettingApplication.SiteSettings;
            var typeservice       = ServiceProvider.Instance <ITypeService> .Create;
            var shopBranchService = ServiceProvider.Instance <IShopBranchService> .Create;
            var shopCartHelper    = ServiceProvider.Instance <IBranchCartService> .Create;
            var branchcart        = shopCartHelper.GetCart(CurrentUser.Id, 0);
            var branchProducts    = PackageCartProducts(branchcart, prodPrice, discount, productService, shopService, shopBranchService, vshopService, typeservice, true);
            var sbProducts        = branchProducts.OrderBy(p => p.Status).ThenByDescending(item => item.AddTime);
            var sbCartShop        = sbProducts.GroupBy(item => item.ShopBranchId);

            return(Json(new { Shop = cartShop, ShopBranch = sbCartShop }));
        }
예제 #27
0
        public object PostSubmitOrderByCart(OrderSubmitOrderByCartModel value)
        {
            CheckUserLogin();
            if (value.CapitalAmount > 0 && !string.IsNullOrEmpty(value.PayPwd))
            {
                var flag = MemberApplication.VerificationPayPwd(CurrentUser.Id, value.PayPwd);
                if (!flag)
                {
                    throw new MallApiException("预存款支付密码错误");
                }
            }

            string cartItemIds = value.cartItemIds;
            long recieveAddressId = value.recieveAddressId;
            string couponIds = value.couponIds;
            int integral = value.integral;

            bool isCashOnDelivery = value.isCashOnDelivery;
            int invoiceType = value.invoiceType;
            string invoiceTitle = value.invoiceTitle;
            string invoiceContext = value.invoiceContext;


            IEnumerable<long> orderIds;

           
            CommonModel.OrderShop[] OrderShops = Newtonsoft.Json.JsonConvert.DeserializeObject<OrderShop[]>(value.jsonOrderShops);

            OrderPostModel model = new OrderPostModel();
            model.CurrentUser = CurrentUser;
            model.PlatformType = PlatformType.Android.GetHashCode();
            model.IsShopbranchOrder = true;
            model.RecieveAddressId = recieveAddressId;
            model.Integral = integral;
            model.Capital = value.CapitalAmount;
            model.IsCashOnDelivery = isCashOnDelivery;
            //model.InvoiceType = invoiceType;
            //model.InvoiceContext = invoiceContext;
            //model.InvoiceTitle = invoiceTitle;
            //model.InvoiceCode = value.invoiceCode;
            model.OrderShops = OrderShops;//用户APP选择门店自提时用到,2.5版本未支持门店自提
            model.CartItemIds = cartItemIds;
            model.IsShopbranchOrder = true;
            if (model.OrderShops == null || model.OrderShops.Count() < 1)
            {
                throw new MallApiException("订单信息错误");
            }
            try
            {
                var cartItemIdsArr = cartItemIds.Split(',').Where(d => !string.IsNullOrWhiteSpace(d)).Select(item => long.Parse(item)).ToArray();
                //根据购物车项补充sku数据
                var cartItems = CartApplication.GetCartItems(cartItemIdsArr);
                List<OrderSku> skus = new List<OrderSku>();
                foreach (var _item in cartItems)
                {
                    OrderSku _tmp = new OrderSku();
                    _tmp.SkuId = _item.SkuId;
                    _tmp.Count = _item.Quantity;
                    skus.Add(_tmp);
                }

                model.CouponIds = couponIds;
                model.OrderShops[0].OrderSkus = skus.ToArray();
                var result = OrderApplication.SubmitOrder(model, value.PayPwd);
                orderIds = result.OrderIds;
                decimal orderTotals = result.OrderTotal;
                var _result = new { success = true, OrderIds = orderIds, RealTotalIsZero = orderTotals == 0 };
                return _result;
            }
            catch (MallException he)
            {
                return ErrorResult(he.Message);
            }
            catch (Exception ex)
            {
                return ErrorResult("提交订单异常");
            }
        }
예제 #28
0
        public JsonResult GetCartProducts()
        {
            var memberId  = CurrentUser?.Id ?? 0;
            var cartItems = CartApplication.GetCartItems(memberId);
            var vshops    = VshopApplication.GetVShopsByShopIds(cartItems.Select(p => p.Shop.Id));
            var products  = cartItems.Select(item =>
            {
                var sku     = item.Sku;
                var product = item.Product;
                var shop    = item.Shop;
                var vshop   = vshops.FirstOrDefault(p => p.ShopId == shop.Id);

                var skuDetails = string.Empty;
                if (!string.IsNullOrWhiteSpace(sku.Size))
                {
                    skuDetails += sku.SizeAlias + ":" + sku.Size + "&nbsp;&nbsp;";
                }
                if (!string.IsNullOrWhiteSpace(sku.Color))
                {
                    skuDetails += sku.ColorAlias + ":" + sku.Color + "&nbsp;&nbsp;";
                }
                if (!string.IsNullOrWhiteSpace(sku.Version))
                {
                    skuDetails += sku.VersionAlias + ":" + sku.Version + "&nbsp;&nbsp;";
                }


                return(new
                {
                    cartItemId = item.ItemId,
                    skuId = sku.Id,
                    id = product.Id,
                    imgUrl = Himall.Core.HimallIO.GetProductSizeImage(product.RelativePath, 1, (int)ImageSize.Size_150),
                    name = product.ProductName,
                    price = sku.SalePrice,
                    count = item.Quantity,
                    shopId = shop.Id,
                    vshopId = vshop == null ? 0 : vshop.Id,
                    shopName = shop.ShopName,
                    shopLogo = vshop == null ? "" : vshop.Logo,
                    productstatus = item.IsLimit ? 0 : (sku.Stock <= 0 ? ProductInfo.ProductSaleStatus.InStock.GetHashCode() : product.SaleStatus.GetHashCode()),
                    status = item.IsLimit ? 1 : ProductManagerApplication.GetProductShowStatus(product, sku.Map <DTO.SKU>(), 1),   // 0:正常;1:已失效;2:库存不足;3:已下架;
                    Size = sku.Size,
                    Color = sku.Color,
                    Version = sku.Version,
                    ColorAlias = sku.ColorAlias,
                    SizeAlias = sku.SizeAlias,
                    VersionAlias = sku.VersionAlias,
                    skuDetails = skuDetails,
                    AddTime = item.AddTime,
                    minMath = ProductManagerApplication.GetProductLadderMinMath(product.Id)
                });
            }).OrderBy(p => p.status).ThenByDescending(o => o.AddTime).ToList();

            #region 门店购物车
            var  discount         = CurrentUser?.MemberDiscount ?? 1;
            var  branchCartHelper = new BranchCartHelper();
            long userId           = 0;
            if (CurrentUser != null)
            {
                userId = CurrentUser.Id;
            }
            var Branchcart     = branchCartHelper.GetCartNoCache(userId, 0);
            var shopBranchList = Branchcart.Items.Where(x => x.ShopBranchId > 0).Select(x => x.ShopBranchId).ToList();
            shopBranchList = shopBranchList.GroupBy(x => x).Select(x => x.First()).ToList();
            Dictionary <long, long> buyedCounts = null;
            if (userId > 0)
            {
                buyedCounts = new Dictionary <long, long>();
                buyedCounts = OrderApplication.GetProductBuyCount(userId, Branchcart.Items.Select(x => x.ProductId));
            }

            var branchProducts = PackageCartProducts(Branchcart, discount, true);
            var sbProducts     = branchProducts.OrderBy(p => p.status).ThenByDescending(item => item.AddTime);
            var shopBranchCart = sbProducts.GroupBy(item => item.shopBranchId);
            #endregion

            var cartModel = new { products = products, amount = products.Sum(item => item.price * item.count), totalCount = products.Sum(item => item.count), shopBranchCart = shopBranchCart };
            return(SuccessResult <dynamic>(data: cartModel));
        }