/// <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); }
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" }); }
public BuyerOrderViewModel(BuyerOrder order) : base(order) { Address = order.Address; Fio = order.FIO; }
/// <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); } }