//查询订单信息 public static SOInfo GetSalesOrder(long SOID, out string Message) { using (var EF = new EF()) { var order_exist = EF.SalesOrders.FirstOrDefault(i => i.ID == SOID); if (order_exist == null) { Message = "订单号" + SOID + "不存在"; return(null); } Message = null; var result = new SOInfo { SalesOrder = order_exist, SalesOrderItems = EF.SalesOrderItems.Where(i => i.SOID == order_exist.ID).ToList(), SOCustomerInfo = EF.SOCustomerInfos.FirstOrDefault(i => i.SOID == order_exist.ID), SOReceiveInfo = EF.SOReceiveInfos.FirstOrDefault(i => i.SOID == order_exist.ID), SOPayInfo = EF.SOPayInfos.FirstOrDefault(i => i.SOID == order_exist.ID), }; result.SOStateTitle = State.FirstOrDefault(i => i.ID == order_exist.StateID).Title; var customerType = CustomerType.FirstOrDefault(i => i.ID == result.SOCustomerInfo.CustomerTypeID); result.CustomerTypeTitle = customerType.Title; switch (customerType.Name) { case "WxUser": var wxUser = EF.WxUserInfos.FirstOrDefault(i => i.ID == result.SOCustomerInfo.CustomerID); result.CustomerNickName = wxUser.NickName; result.CustomerGender = WeChat.WxUserGender.FirstOrDefault(i => i.Name == wxUser.Gender).Title; result.CustomerAvatar = wxUser.AvatarUrl; break; } var goodsid = result.SalesOrderItems.Select(i => i.GoodsID).ToList(); result.GoodsInfos = EF.GoodsInfos.Where(i => goodsid.Contains(i.ID)).ToList(); result.SOItems = (from soItem in EF.SalesOrderItems join goodsInfo in EF.GoodsInfos on soItem.GoodsID equals goodsInfo.ID join goodsPhoto in EF.GoodsPhotos on goodsInfo.ID equals goodsPhoto.GoodsID into t1 from goodsPhoto in t1.DefaultIfEmpty() join specInfo in EF.GoodsSpecs on soItem.SpecID equals specInfo.ID where soItem.SOID == result.SalesOrder.ID select new SOItem { OrderID = soItem.OrderID, GoodsID = soItem.ID, GoodsName = goodsInfo.Name, GoodsTitle = goodsInfo.Title, GoodsPhotoIDs = goodsPhoto.FileIDs, GoodsSpecTitle = specInfo.SpecValues, Quantity = soItem.Quantity, Price = soItem.Price, Amount = soItem.Amount, }).ToList(); foreach (var goods in result.SOItems) { if (!string.IsNullOrWhiteSpace(goods.GoodsPhotoIDs)) { var fileids = goods.GoodsPhotoIDs.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(long.Parse).ToList(); goods.GoodsPhotos = (from file in EF.FileInfos join extname in EF.FileExtName on file.ExtNameID equals extname.ID where fileids.Contains(file.ID) select file.GUID + extname.Name).ToList(); } } result.ReceiptTypeTitle = ReceiveType.FirstOrDefault(i => i.ID == result.SOReceiveInfo.ReceiveTypeID).Title; result.ReceiptStore = EF.StoreInfos.FirstOrDefault(i => i.ID == result.SOReceiveInfo.StoreID); result.PayTypeTitle = PayType.FirstOrDefault(i => i.ID == result.SOPayInfo.PayTypeID).Title; result.PayStateTitle = WeChat.WxTradeState.FirstOrDefault(i => i.ID == result.SOPayInfo.StateID).Title; if (result.SOPayInfo.PayID > 0) { result.F2FPayInfo = Pay.GetF2FPayInfo(result.SOPayInfo.PayID ?? 0, out Message); } return(result); } }