Esempio n. 1
0
        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 }
            }));
        }
Esempio n. 2
0
        //获取微信订单列表
        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);
            }
        }