/// <summary> /// 取用户在门店的购物车数量 /// </summary> /// <param name="userId"></param> /// <param name="branchIds"></param> /// <returns></returns> public static Dictionary <long, int> GetShopBranchCartItemCount(long userId, List <long> branchIds) { Dictionary <long, int> result = new Dictionary <long, int>(); if (userId == 0) { return(result); } Mall.Entities.ShoppingCartInfo memberCartInfo = new Mall.Entities.ShoppingCartInfo(); List <DTO.Product.Product> onSaleProducts = new List <DTO.Product.Product>(); if (userId > 0) {//如果已登陆取购物车数据 memberCartInfo = CartApplication.GetShopBranchCart(userId); if (memberCartInfo != null) { onSaleProducts = ProductManagerApplication.GetAllStatusProductByIds(memberCartInfo.Items.Select(e => e.ProductId)).ToList(); } } Dictionary <long, long> buyedCounts = null; if (userId > 0) { buyedCounts = new Dictionary <long, long>(); buyedCounts = OrderApplication.GetProductBuyCount(userId, memberCartInfo.Items.Select(x => x.ProductId)); } var shopBranchSkuList = Service.GetSkusByBranchIds(branchIds, skuids: memberCartInfo.Items.Select(s => s.SkuId).ToList()); foreach (var id in branchIds) { //var cartQuantity = memberCartInfo.Items.Where(c => c.ShopBranchId.HasValue && c.ShopBranchId.Value == query.shopBranchId).Sum(c => c.Quantity); //过滤购物车 无效商品 var cartQuantity = memberCartInfo.Items.Where(c => c.ShopBranchId == id).Select(item => { var product = onSaleProducts.FirstOrDefault(p => p.Id == item.ProductId); var shopbranchsku = shopBranchSkuList.FirstOrDefault(x => x.ShopBranchId == id && x.SkuId == item.SkuId); long stock = shopbranchsku == null ? 0 : shopbranchsku.Stock; if (stock > product.MaxBuyCount && product.MaxBuyCount != 0) { stock = product.MaxBuyCount; } if (product.MaxBuyCount > 0 && buyedCounts != null && buyedCounts.ContainsKey(item.ProductId)) { long buynum = buyedCounts[item.ProductId]; stock = stock - buynum; } var status = product.IsOpenLadder ? 1 : (shopbranchsku == null ? 1 : (shopbranchsku.Status == ShopBranchSkuStatus.Normal) ? (item.Quantity > stock ? 2 : 0) : 1);//0:正常;1:冻结;2:库存不足 if (status == 0) { return(item.Quantity); } else { return(0); } }).Sum(count => count); if (cartQuantity > 0) { result.Add(id, cartQuantity); } } return(result); }