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 + " "; } if (!string.IsNullOrWhiteSpace(sku.Color)) { skuDetails += sku.ColorAlias + ":" + sku.Color + " "; } if (!string.IsNullOrWhiteSpace(sku.Version)) { skuDetails += sku.VersionAlias + ":" + sku.Version + " "; } 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)); }
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 })); }