/// <summary>
        /// 添加物品
        /// </summary>
        /// <param name="input">请求信息</param>
        /// <param name="pid">商品id</param>
        /// <returns></returns>
        public async Task <BaseResult <object> > AddAsync(AddBasketItemDto input)
        {
            long pid    = input.PId;
            var  store  = _redis.GetDatabase(MyShopRedisConfig.BASKETDBNUMBER);
            var  userId = CurrentUser.Id;
            var  key    = $"{MyShopRedisConfig.BASKETKEY_PRE}:{userId}";

            var basketItem = await store.HashGetAsync(key, pid);

            if (!basketItem.IsNullOrEmpty)
            {
                await store.HashIncrementAsync(key, pid);
            }
            else
            {
                var product = await _products.FindAsync(p => p.Id == pid);

                if (product != null)
                {
                    if (product.Status != ProductStatus.Normal)
                    {
                        return(BaseResult <object> .Failed("商品已下架!"));
                    }
                    await store.HashIncrementAsync(key, pid);
                }
                else
                {
                    return(BaseResult <object> .Failed("加入购物车失败:商品不见了!"));
                }
            }

            return(BaseResult <object> .Success());
        }
Beispiel #2
0
        public async Task <ActionResult> Post([FromBody] AddBasketItemDto dto)
        {
            if (dto == null)
            {
                throw new ArgumentNullException(nameof(dto));
            }

            var product = await _productsRepository.FindBySkuAsync(dto.SKU);

            if (product == null)
            {
                return(BadRequest("Product not found."));
            }

            var basket = await GetBasket();

            basket.Add(product, dto.Quantity);
            await _unitOfWork.SaveChangesAsync();

            return(NoContent());
        }