예제 #1
0
        //查询订单信息
        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);
            }
        }