Beispiel #1
0
        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));
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        /// <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);
        }
Beispiel #4
0
        /// <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);
        }
Beispiel #5
0
        /// <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);
        }