public void AddOrderTrace(string orderNO, Guid userId) { var user = DbSession.Users.GetSingle(u => u.ID == userId); if (user == null) { throw new Exception("当前用户不存在"); } var order = DbSession.Orders.All.Where(o => (o.State != OrderState.Cancel && o.State != OrderState.Completed) && o.NO.Equals(orderNO)).FirstOrDefault(); if (order == null) { throw new Exception("不存在该订单,订单可能被取消或订单已完成交易"); } var trace = new OderTrace { ID = Guid.NewGuid(), OrderID = order.ID, SubmittedBy = user, SubmittedUserID = user.ID, SubmitTime = DateTime.Now, TraceOf = order, Description = user.TraceInfo == null ? "无到站信息" : user.TraceInfo.Info }; order.Traces.Add(trace); DbSession.SaveChanges(); }
public Entities.Order SubmitOrder(Guid userId, Entities.Order order) { var user = DbSession.Users.GetSingle(u => u.ID == userId); if (user == null) { throw new Exception("当前用户不存在"); } // 计算运费 decimal freight = 10; decimal books_total = 0; foreach (var item in order.OrderItems) { var book = DbSession.Books.GetSingle(b => b.ID == item.BookID); books_total += book.SellingPrice.GetValueOrDefault() * (decimal)item.Quantity; } if (books_total >= 78) { freight = 0; } // 处理订单地址 ReceiptInfo receipt = DbSession.ReceiptInfos.GetSingle(r => r.ID == order.Receipt.ID); if (receipt == null) { receipt = new ReceiptInfo { ID = Guid.NewGuid(), Address = order.Receipt.Address, ReceiptName = order.Receipt.ReceiptName, Phone = order.Receipt.Phone, Email = order.Receipt.Email }; user.Receipts.Add(receipt); } // 生成订单主体 var newOrder = new Order { ID = Guid.NewGuid(), NO = DateTime.Now.ToString("yyyyMMddHHmm") + new Random().Next(0, 100), Freight = freight, OrderPrice = books_total + freight, SubmitDate = DateTime.Now, State = OrderState.Submitted, ReceiptID = receipt.ID, UserID = user.ID, ShipDate = null, IsAudited = false, AuditDate = null, AuditUserID = null }; DbSession.Orders.Add(newOrder, false); // 生成订单明细 newOrder = user.Orders.FirstOrDefault(o => o.ID == newOrder.ID); foreach (var item in order.OrderItems) { var book = DbSession.Books.GetSingle(b => b.ID == item.BookID); var newItem = new OrderItem { BookID = book.ID, Quantity = item.Quantity, UnitPrice = book.SellingPrice.GetValueOrDefault() }; newOrder.OrderItems.Add(newItem); } // 生成订单跟踪 OderTrace trace = new OderTrace { ID = Guid.NewGuid(), Description = "客户" + user.Name + "提交了订单", SubmittedUserID = user.ID, SubmitTime = DateTime.Now }; newOrder.Traces.Add(trace); // 删除购物车商品 foreach (var item in order.OrderItems) { var cartItem = user.ShoppingCart.CartItems.FirstOrDefault(i => i.BookID == item.BookID); if (cartItem == null) { continue; } DbSession.CartItems.Delete(cartItem, false); } DbSession.SaveChanges(); return(newOrder); }