/// <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()); }
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()); }