Exemplo n.º 1
0
        /// <summary>
        ///     Builder order info and calculator price
        /// </summary>
        /// <param name="buyInfoInput"></param>
        public Tuple <ServiceResult, MerchantCartOutput> BuyInfo(MerchantBuyInfoInput buyInfo)
        {
            //user
            var result = new MerchantCartOutput();
            var user   = Resolve <IUserService>().GetSingle(buyInfo.UserId);

            if (user == null || user.Status != Status.Normal)
            {
                return(Tuple.Create(ServiceResult.Failure("您的输入的账户不存在,或者状态不正常"), result));
            }
            //get merchant store
            //var merchantStore = Resolve<IMerchantStoreService>().GetSingle(s => s.Id == buyInfo.MerchantStoreId.ToObjectId());
            //if (merchantStore == null)
            //{
            //    return Tuple.Create(ServiceResult.Failure("当前店铺不存在"), result);
            //}
            //get cart from database
            var cartIds = buyInfo.ProductItems.Select(c => c.Id.ToObjectId()).ToList();
            var carts   = Resolve <IMerchantCartService>().GetCart(cartIds);

            if (carts.Count <= 0)
            {
                return(Tuple.Create(ServiceResult.Failure("购物车为空"), result));
            }

            return(CountPrice(carts));
        }
Exemplo n.º 2
0
        /// <summary>
        ///     Calculator price
        /// </summary>
        /// <param name="cartProducts"></param>
        /// <returns></returns>
        public Tuple <ServiceResult, MerchantCartOutput> CountPrice(List <MerchantCartViewModel> cartProducts)
        {
            //check
            var output = new MerchantCartOutput();

            if (cartProducts.Count <= 0)
            {
                return(Tuple.Create(ServiceResult.Failure("购物车数据异常"), output));
            }
            //product
            var result         = ServiceResult.Success;
            var productService = Resolve <IMerchantProductService>();

            foreach (var cart in cartProducts)
            {
                if (cart.Count <= 0)
                {
                    result = ServiceResult.Failure($"商品:{cart.ProductName},商品数据异常");
                    break;
                }

                var product = productService.GetSingle(p => p.Id == cart.MerchantProductId.ToObjectId());
                if (product == null)
                {
                    result = ServiceResult.Failure($"商品:{cart.ProductName},不存在");
                    break;
                }

                //stock
                var sku = product.Skus?.Find(s => s.SkuId == cart.SkuId);
                if (sku == null)
                {
                    result = ServiceResult.Failure($"商品:{cart.ProductName},Sku不存在");
                    break;
                }

                if (cart.Count > sku.Stock)
                {
                    result = ServiceResult.Failure($"商品:{cart.ProductName},Sku:{sku.Name},购买数量大于商品库存数量");
                    break;
                }

                cart.ThumbnailUrl   = Resolve <IApiService>().ApiImageUrl(product.ThumbnailUrl);
                cart.ProductAmount  = sku.Price * cart.Count;
                output.TotalCount  += cart.Count;
                output.TotalAmount += cart.ProductAmount;
                output.Products.Add(cart);
            }

            return(Tuple.Create(result, output));
        }