Example #1
0
        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));
        }
Example #2
0
        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);
        }