public ShoppingCartDto GetShoppingCart(Guid customerId) { var user = _userRepository.GetByKey(customerId); var shoppingCart = _shoppingCartRepository.GetBySpecification( new ExpressionSpecification <ShoppingCart>(s => s.User.Id == user.Id)); if (shoppingCart == null) { throw new DomainException("用户{0}不存在购物车.", customerId); } var shoppingCartItems = _shoppingCartItemRepository.GetAll( new ExpressionSpecification <ShoppingCartItem>(s => s.ShoopingCart.Id == shoppingCart.Id), elp => elp.Product); var shoppingCartDto = Mapper.Map <ShoppingCart, ShoppingCartDto>(shoppingCart); shoppingCartDto.Items = new List <ShoppingCartItemDto>(); if (shoppingCartItems != null && shoppingCartItems.Any()) { shoppingCartItems .ToList() .ForEach(s => shoppingCartDto.Items.Add(Mapper.Map <ShoppingCartItem, ShoppingCartItemDto>(s))); shoppingCartDto.Subtotal = shoppingCartDto.Items.Sum(p => p.ItemAmount); } return(shoppingCartDto); }
/// <summary> /// 创建订单,涉及到的操作有2个:1. 把购物车中的项中购物车移除; 2.创建一个订单。 /// 这两个操作必须同时完成或失败。 /// </summary> /// <param name="user"></param> /// <param name="shoppingCart"></param> /// <returns></returns> public Order CreateOrder(User user, ShoppingCart shoppingCart) { var order = new Order(); var shoppingCartItems = _shoppingCartItemRepository.GetAll( new ExpressionSpecification <ShoppingCartItem>(s => s.ShoopingCart.Id == shoppingCart.Id)); if (shoppingCartItems == null || !shoppingCartItems.Any()) { throw new InvalidOperationException("购物篮中没有任何物品"); } order.OrderItems = new List <OrderItem>(); foreach (var shoppingCartItem in shoppingCartItems) { var orderItem = shoppingCartItem.ConvertToOrderItem(); orderItem.Order = order; order.OrderItems.Add(orderItem); _shoppingCartItemRepository.Remove(shoppingCartItem); } order.User = user; order.Status = OrderStatus.Paid; _orderRepository.Add(order); _repositoryContext.Commit(); return(order); }
public IList <ShoppingCartItem> GetCartItems(string cartId) { return(_shoppingCartItemRepository .GetAll() .Where(i => i.ShoppingCartId == cartId) .ToList() ?? throw new KeyNotFoundException(cartId)); }
public List <ShoppingCartItem> Execute(string cartId) { return(_shoppingCartItemRepository .GetAll() .Where(i => i.ShoppingCartId == cartId).ToList()); }
public List <ShoppingCartItem> GetAll() { return(_shoppingCartItemRepository.GetAll().ToList()); }
public IEnumerable <ShoppingCartItem> GetAll() { return(_shoppingCartItemRepository.GetAll()); }