public object GetSOList(string user_code, string state_name, string pager) { string Message = null; //检查会话 if (Context.Session["WxUserInfo"] == null) { if (string.IsNullOrWhiteSpace(user_code)) { return(ResponseWrite(new Result { Code = ResultCode.Error, Message = "用户未登录,或者登录状态已失效,请重新登录后再操作。" })); } var userInfo = Ziri.BLL.WeChat.GetWxUserInfoByJSCode(user_code, out Message); if (Message != null) { return(ResponseWrite(new Result { Code = ResultCode.Error, Message = Message })); } Context.Session["WxUserInfo"] = userInfo; } var wxUserInfo = (WxUserInfo)Context.Session["WxUserInfo"]; //状态统计 var StateCount = new { Total = Ziri.BLL.OMS.SalesOrder.GetSOStateCount(wxUserInfo.ID, "全部"), Submit = Ziri.BLL.OMS.SalesOrder.GetSOStateCount(wxUserInfo.ID, "待付款"), Paid = Ziri.BLL.OMS.SalesOrder.GetSOStateCount(wxUserInfo.ID, "待提货"), Send = Ziri.BLL.OMS.SalesOrder.GetSOStateCount(wxUserInfo.ID, "待收货"), }; //分页 var pagerCount = new PagerCount { PageSize = 10, PageIndex = 1, }; JObject Pager = null; try { Pager = JsonConvert.DeserializeObject <JObject>(pager); } catch { } if (Pager["PageSize"] != null) { try { pagerCount.PageSize = int.Parse(Pager["PageSize"].ToString()); } catch { } } if (Pager["PageIndex"] != null) { try { pagerCount.PageIndex = int.Parse(Pager["PageIndex"].ToString()); } catch { } } //订单页 var list = Ziri.BLL.OMS.SalesOrder.GetSOList(wxUserInfo.ID, state_name, pagerCount, out PagerCount PageCountNew); //结果 return(ResponseWrite(new Result { Code = ResultCode.Success, Data = new { StateCount, list, pager = PageCountNew } })); }
//获取微信订单列表 public static List <SOFullInfo> GetSOList(long CustomerID, string StateGroup, PagerCount PagerCount, out PagerCount PagerCountNew) { using (var EF = new EF()) { //列表 var WxCustomerTypeID = CustomerType.FirstOrDefault(i => i.Name == "WxUser").ID; var list = from soInfo in EF.SalesOrders join soCustomer in EF.SOCustomerInfos on soInfo.ID equals soCustomer.SOID join payInfo in EF.SOPayInfos on soInfo.ID equals payInfo.SOID orderby soInfo.CreateTime descending select new SOFullInfo { ID = soInfo.ID, BillNO = soInfo.BillNO, CreateTime = soInfo.CreateTime, CustomerTypeID = soCustomer.CustomerTypeID, CustomerID = soCustomer.CustomerID, StateID = soInfo.StateID, PayTypeID = payInfo.PayTypeID }; //状态组 var f2fid = PayType.FirstOrDefault(i => i.Name == "F2F").ID; var createid = State.FirstOrDefault(i => i.Name == "Create").ID; var confirmid = State.FirstOrDefault(i => i.Name == "Confirm").ID; var sendid = State.FirstOrDefault(i => i.Name == "Send").ID; switch (StateGroup) { case "全部": list = list.Where(i => i.CustomerTypeID == WxCustomerTypeID && i.CustomerID == CustomerID); break; case "待付款": list = list.Where(i => i.CustomerTypeID == WxCustomerTypeID && i.CustomerID == CustomerID && i.StateID == createid && i.PayTypeID != f2fid); break; case "待提货": list = list.Where(i => i.CustomerTypeID == WxCustomerTypeID && i.CustomerID == CustomerID && i.StateID == confirmid && i.PayTypeID == f2fid); break; case "待收货": list = list.Where(i => i.CustomerTypeID == WxCustomerTypeID && i.CustomerID == CustomerID && i.StateID == sendid); break; } //分页 PagerCountNew = PagerCount; PagerCountNew.ItemCount = list.Count(); if (PagerCountNew.ItemCount == 0) { return(null); } PagerCountNew.PageCount = (int)Math.Ceiling((double)PagerCountNew.ItemCount / PagerCountNew.PageSize); if (PagerCountNew.PageIndex > PagerCountNew.PageCount) { PagerCountNew.PageIndex = PagerCountNew.PageCount; } var PageList = list.Skip((PagerCountNew.PageIndex - 1) * PagerCountNew.PageSize).Take(PagerCountNew.PageSize).ToList(); //补充 foreach (var so in PageList) { so.StateTitle = State.FirstOrDefault(i => i.ID == so.StateID).Title; so.PayTypeTitle = PayType.FirstOrDefault(i => i.ID == so.PayTypeID).Title; so.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 into t2 from specInfo in t2.DefaultIfEmpty() where soItem.SOID == so.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 so.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(); } } } return(PageList); } }