コード例 #1
0
        /// <summary>
        /// 转换订单到显示信息
        /// </summary>
        /// <param name="order">买家订单</param>
        /// <returns></returns>
        public static OrderDisplayInfo ToDisplayInfo(this BuyerOrder order)
        {
            var info = order.SellerOrder.ToDisplayInfo(OrderOperatorType.Buyer);

            info.RemarkFlags = order.RemarkFlags.ToString();
            return(info);
        }
コード例 #2
0
        public IActionResult DisplayOrders([FromBody] BuyerOrder buyerOrder)   // 查看买家订单
        {
            List <OrderInformationView> orders = new List <OrderInformationView>();

            orders = orderService.getOrderByBuyerId(buyerOrder.BuyerId);
            foreach (var order in orders)
            {
                foreach (var commodity in order.commodityList)
                {
                    commodity.Url = "../.." + commodity.Url;
                }
            }
            string str = JsonConvert.SerializeObject(orders);

            return(new ContentResult {
                Content = str, ContentType = "application/json"
            });
        }
コード例 #3
0
 public BuyerOrderViewModel(BuyerOrder order) : base(order)
 {
     Address = order.Address;
     Fio     = order.FIO;
 }
コード例 #4
0
        /// <summary>
        /// 按卖家分别创建订单
        /// </summary>
        protected virtual void CreateOrdersBySellers()
        {
            var orderManager             = Application.Ioc.Resolve <SellerOrderManager>();
            var userManager              = Application.Ioc.Resolve <UserManager>();
            var productManager           = Application.Ioc.Resolve <ProductManager>();
            var buyerOrderManager        = Application.Ioc.Resolve <BuyerOrderManager>();
            var transactionManager       = Application.Ioc.Resolve <PaymentTransactionManager>();
            var products                 = new Dictionary <Guid, Product>();
            var groupedProductParameters = Parameters.OrderProductParametersList.Select(p => new {
                productParameters = p,
                product           = products.GetOrCreate(p.ProductId, () => productManager.Get(p.ProductId))
            }).GroupBy(p => p.product.Seller?.Id).ToList();             // { 卖家: [ (参数, 商品) ] }
            var now = DateTime.UtcNow;

            foreach (var group in groupedProductParameters)
            {
                // 计算订单的价格
                // 支付手续费需要单独提取出来
                var orderPrice = orderManager.CalculateOrderPrice(
                    Parameters.CloneWith(group.Select(o => o.productParameters).ToList()));
                var paymentFee = orderPrice.Parts.FirstOrDefault(p => p.Type == "PaymentFee");
                orderPrice.Parts.Remove(paymentFee);
                // 生成卖家订单
                var sellerOrder = new SellerOrder()
                {
                    Buyer                       = Parameters.UserId == null ? null : userManager.Get(Parameters.UserId.Value),
                    Owner                       = (group.Key == null) ? null : userManager.Get(group.Key.Value),
                    State                       = OrderState.WaitingBuyerPay,
                    OrderParameters             = Parameters.OrderParameters,
                    TotalCost                   = orderPrice.Parts.Sum(),
                    Currency                    = orderPrice.Currency,
                    TotalCostCalcResult         = orderPrice,
                    OriginalTotalCostCalcResult = orderPrice,
                    StateTimes                  = new OrderStateTimes()
                    {
                        { OrderState.WaitingBuyerPay, now }
                    }
                };
                // 添加关联的订单商品
                // 这里会重新计算单价,但应该和之前的计算结果一样
                foreach (var obj in group)
                {
                    var unitPrice = orderManager.CalculateOrderProductUnitPrice(
                        Parameters.UserId, obj.productParameters);
                    var orderCount   = obj.productParameters.MatchParameters.GetOrderCount();
                    var properties   = obj.productParameters.MatchParameters.GetProperties();
                    var orderProduct = new OrderProduct()
                    {
                        Id                          = GuidUtils.SequentialGuid(now),
                        Order                       = sellerOrder,
                        Product                     = obj.product,
                        MatchParameters             = obj.productParameters.MatchParameters,
                        Count                       = orderCount,
                        UnitPrice                   = unitPrice.Parts.Sum(),
                        Currency                    = unitPrice.Currency,
                        UnitPriceCalcResult         = unitPrice,
                        OriginalUnitPriceCalcResult = unitPrice,
                        CreateTime                  = now,
                        UpdateTime                  = now
                    };
                    // 添加关联的属性
                    foreach (var productToPropertyValue in obj.product
                             .FindPropertyValuesFromPropertyParameters(properties))
                    {
                        orderProduct.PropertyValues.Add(new OrderProductToPropertyValue()
                        {
                            Id                = GuidUtils.SequentialGuid(now),
                            OrderProduct      = orderProduct,
                            Category          = obj.product.Category,
                            Property          = productToPropertyValue.Property,
                            PropertyValue     = productToPropertyValue.PropertyValue,
                            PropertyValueName = productToPropertyValue.PropertyValueName
                        });
                    }
                    sellerOrder.OrderProducts.Add(orderProduct);
                }
                // 添加关联的订单留言
                var comment = Parameters.OrderParameters.GetOrderComment();
                if (!string.IsNullOrEmpty(comment))
                {
                    sellerOrder.OrderComments.Add(new OrderComment()
                    {
                        Id         = GuidUtils.SequentialGuid(now),
                        Order      = sellerOrder,
                        Owner      = sellerOrder.Buyer,
                        Side       = OrderCommentSide.BuyerComment,
                        Contents   = comment,
                        CreateTime = now,
                        UpdateTime = now
                    });
                }
                // 生成订单编号
                sellerOrder.Serial = SerialGenerator.GenerateFor(sellerOrder);
                // 保存卖家订单
                orderManager.Save(ref sellerOrder);
                Result.CreatedSellerOrders.Add(sellerOrder);
                // 生成买家订单
                var buyerOrder = new BuyerOrder()
                {
                    Owner          = sellerOrder.Buyer,
                    SellerOrder    = sellerOrder,
                    BuyerSessionId = (sellerOrder.Buyer != null) ? null : (Guid?)Parameters.SessionId
                };
                // 保存买家订单
                buyerOrderManager.Save(ref buyerOrder);
                Result.CreatedBuyerOrders.Add(buyerOrder);
                // 创建订单交易
                // 因为目前只能使用后台的支付接口,所以收款人应该是null
                var paymentApiId = Parameters.OrderParameters.GetPaymentApiId();
                var transaction  = transactionManager.CreateTransaction(
                    OrderTransactionHandler.ConstType,
                    paymentApiId,
                    sellerOrder.TotalCost,
                    paymentFee?.Delta ?? 0,
                    sellerOrder.Currency,
                    sellerOrder.Buyer?.Id,
                    null,
                    sellerOrder.Id,
                    sellerOrder.Serial);
                Result.CreatedTransactions.Add(transaction);
            }
        }