public ApiResult AddCart([FromBody] MerchantCartInput parameter) { if (!this.IsFormValid()) { return(ApiResult.Failure(this.FormInvalidReason(), MessageCodes.ParameterValidationFailure)); } var stokCount = 0L; var merchantModel = Resolve <IMerchantProductService>().GetSingle(parameter.MerchantProductId); if (merchantModel != null) { merchantModel.Skus.ForEach(p => { if (p.SkuId == parameter.SkuId) { stokCount = p.Stock; } }); } var serviceResult = Resolve <IMerchantCartService>().AddCart(parameter); if (serviceResult.Succeeded) { serviceResult.ReturnObject = stokCount; } return(ToResult(serviceResult)); }
public ApiResult RemoveCart([FromQuery] MerchantCartInput parameter) { if (!this.IsFormValid()) { return(ApiResult.Failure(this.FormInvalidReason(), MessageCodes.ParameterValidationFailure)); } var serviceResult = Resolve <IMerchantCartService>().RemoveCart(parameter); return(ToResult(serviceResult)); }
/// <summary> /// Update cart /// </summary> public ServiceResult UpdateCart(MerchantCartInput input) { var cart = Resolve <IMerchantCartService>().GetSingle(c => c.UserId == input.UserId && c.Id == input.Id.ToObjectId() && c.Status == Status.Normal); cart.Count = input.Count; //验证商品和sku数量 var product = Resolve <IMerchantProductService>() .GetSingle(r => r.Id == input.MerchantProductId.ToObjectId()); //&& r.MerchantStoreId == input.MerchantStoreId if (product == null) { return(ServiceResult.Failure("商品不存在")); } if (input.Count <= 0) { return(ServiceResult.Failure("商品数量必须大于0")); } //stock var sku = product.Skus?.Find(s => s.SkuId == input.SkuId); if (sku == null) { return(ServiceResult.Failure($"商品:{product.Name},Sku不存在")); } if (input.Count > sku.Stock) { return(ServiceResult.Failure($"商品:{product.Name},Sku:{sku.Name},购买数量大于商品库存数量")); } var cartSingle = Resolve <IMerchantCartService>().GetSingle(c => c.UserId == input.UserId //&& c.MerchantProductId == input.MerchantProductId && c.SkuId == input.SkuId && c.Status == Status.Normal); // 数量递增 cartSingle.Count += input.Count; //递增后检查是否超过购买数量 if (cartSingle.Count > sku.Stock) { return(ServiceResult.Failure($"商品:{product.Name},Sku:{sku.Name},购买数量大于商品库存数量")); } Update(cart); return(ServiceResult.Success); }
/// <summary> /// Remove cart /// </summary> public ServiceResult RemoveCart(MerchantCartInput input) { //Get cart var cart = Resolve <IMerchantCartService>().GetList(c => c.UserId == input.UserId && c.Id == input.Id.ToObjectId() && c.Status == Status.Normal); cart.Foreach(z => { z.Status = Status.Deleted; Update(z); }); return(ServiceResult.Success); }
/// <summary> /// Add cart /// </summary> public ServiceResult AddCart(MerchantCartInput input) { //Check product var serviceResult = ServiceResult.Success; var product = Resolve <IMerchantProductService>() .GetSingle(r => r.Id == input.MerchantProductId.ToObjectId()); //&& r.MerchantStoreId == input.MerchantStoreId if (product == null) { return(ServiceResult.Failure("商品不存在")); } if (input.Count <= 0) { return(ServiceResult.Failure("商品数量必须大于0")); } //stock var sku = product.Skus?.Find(s => s.SkuId == input.SkuId); if (sku == null) { return(ServiceResult.Failure($"商品:{product.Name},Sku不存在")); } if (sku.Stock <= 0) { return(ServiceResult.Failure($"商品:{product.Name},Sku:{sku.Name},库存不足")); } if (input.Count > sku.Stock) { return(ServiceResult.Failure($"商品:{product.Name},Sku:{sku.Name},购买数量大于商品库存数量")); } //Get cart var cartSingle = Resolve <IMerchantCartService>().GetSingle(c => c.UserId == input.UserId //&& c.MerchantProductId == input.MerchantProductId && c.SkuId == input.SkuId && c.Status == Status.Normal); if (cartSingle == null) { var cart = new MerchantCart { //MerchantStoreId = input.MerchantStoreId, UserId = input.UserId, Count = input.Count, ProductName = product.Name, MerchantProductId = product.Id.ToString(), Price = sku != null ? sku.Price : 0, SkuId = sku.SkuId, SkuName = sku.Name }; Add(cart); return(serviceResult); } // 数量递增 cartSingle.Count += input.Count; //递增后检查是否超过购买数量 if (cartSingle.Count > sku.Stock) { return(ServiceResult.Failure($"商品:{product.Name},Sku:{sku.Name},购买数量大于商品库存数量")); } Update(cartSingle); ////减库存stock //MerchantProduct skus = product; //skus.Stock -= input.Count; //sku.Stock -= input.Count; //Resolve<IMerchantProductService>().Update(skus); return(ServiceResult.Success); }