public async Task <int> AddProductToCart(CartItemInput itemDto) { //1:找到产品 var product = await _productRepository.FirstOrDefaultAsync(u => u.Id.Equals(itemDto.ProductId)); //2:找到购物车 var cart = await GetCurrentCart(); if (cart == null) { cart = new Mall_Cart(); await _cartRepository.InsertAsync(cart); //为了获取最新购物车的id await CurrentUnitOfWork.SaveChangesAsync(); } //3:检查购物车中是否已经存在该物品,如果存在,那么给该物品的数量添加1 var cartItem = await _cartItemRepository.FirstOrDefaultAsync(u => u.ProductId.Equals(itemDto.ProductId) && u.CartId.Equals(cart.Id)); if (cartItem != null) { cartItem.ItemNum++; cartItem.AllPrice = cartItem.ItemNum * product.Price; } else { cartItem = itemDto.MapTo <Mall_CartItem>(); cartItem.CartId = cart.Id; cartItem.ItemPrice = product.Price; cartItem.AllPrice = cartItem.ItemNum * product.Price; await _cartItemRepository.InsertAsync(cartItem); await CurrentUnitOfWork.SaveChangesAsync(); } //4:获取购物中产品的数量 var productNum = _cartItemRepository.GetAll().Where(u => u.CartId.Equals(cart.Id)).Count(); return(await Task.FromResult(productNum)); }
public async Task UpdateProductNums(CartItemInput input) { //1:找到购物车 var cart = await GetCurrentCart(); //2:找到商品 var cartItem = await _cartItemRepository.FirstOrDefaultAsync(u => u.CartId.Equals(cart.Id) && u.ProductId.Equals(input.ProductId)); //3:更新数量 if (cartItem.ItemNum != input.ItemNum) { cartItem.ItemNum = input.ItemNum; } if (!string.IsNullOrEmpty(input.Describe)) { cartItem.Describe = CheckJsAndProcess(input.Describe); } //3:计算小计 cartItem.AllPrice = cartItem.ItemNum * cartItem.ItemPrice; //3:更新商品 await _cartItemRepository.UpdateAsync(cartItem); }