Exemple #1
0
        public JsonResult GetItemList(int page, int rows)
        {
            ILimitTimeBuyService limitTimeBuyService = ServiceHelper.Create <ILimitTimeBuyService>();
            LimitTimeQuery       limitTimeQuery      = new LimitTimeQuery()
            {
                ShopId   = new long?(base.CurrentSellerManager.ShopId),
                PageSize = rows,
                PageNo   = page
            };
            PageModel <LimitTimeMarketInfo> itemList = limitTimeBuyService.GetItemList(limitTimeQuery);
            List <LimitTimeMarketModel>     limitTimeMarketModels = new List <LimitTimeMarketModel>();

            foreach (LimitTimeMarketInfo model in itemList.Models)
            {
                if (model.EndTime < DateTime.Now)
                {
                    model.AuditStatus = LimitTimeMarketInfo.LimitTimeMarketAuditStatus.Ended;
                }
                LimitTimeMarketModel limitTimeMarketModel = new LimitTimeMarketModel()
                {
                    Id             = model.Id,
                    StartTime      = model.StartTime.ToString("yyyy-MM-dd HH:mm"),
                    EndTime        = model.EndTime.ToString("yyyy-MM-dd HH:mm"),
                    ProductId      = model.ProductId,
                    SaleCount      = model.SaleCount,
                    ProductName    = model.ProductName,
                    AuditStatusNum = (int)model.AuditStatus,
                    AuditStatus    = model.AuditStatus.ToDescription(),
                    CancelReson    = model.CancelReson,
                    MaxSaleCount   = model.MaxSaleCount
                };
                limitTimeMarketModels.Add(limitTimeMarketModel);
            }
            return(Json(new { rows = limitTimeMarketModels, total = itemList.Total }));
        }
        public JsonResult List(int?AuditStatus, int page, int rows, string shopName, string productName)
        {
            LimitTimeMarketInfo.LimitTimeMarketAuditStatus?nullable;
            LimitTimeQuery limitTimeQuery  = new LimitTimeQuery();
            LimitTimeQuery limitTimeQuery1 = limitTimeQuery;
            int?           auditStatus     = AuditStatus;

            if ((auditStatus.GetValueOrDefault() != 0 ? false : auditStatus.HasValue))
            {
                nullable = null;
            }
            else
            {
                int?auditStatus1 = AuditStatus;
                if (auditStatus1.HasValue)
                {
                    nullable = new LimitTimeMarketInfo.LimitTimeMarketAuditStatus?((LimitTimeMarketInfo.LimitTimeMarketAuditStatus)((short)auditStatus1.GetValueOrDefault()));
                }
                else
                {
                    nullable = null;
                }
            }
            limitTimeQuery1.AuditStatus = nullable;
            limitTimeQuery.PageSize     = rows;
            limitTimeQuery.PageNo       = page;
            limitTimeQuery.ShopName     = shopName;
            limitTimeQuery.ItemName     = productName;
            PageModel <LimitTimeMarketInfo> itemList = ServiceHelper.Create <ILimitTimeBuyService>().GetItemList(limitTimeQuery);
            IEnumerable <LimitTimeBuyModel> array    =
                from item in itemList.Models.ToArray()
                select new LimitTimeBuyModel()
            {
                Id               = item.Id,
                StartDate        = item.StartTime.ToString("yyyy-MM-dd"),
                EndDate          = item.EndTime.ToString("yyyy-MM-dd"),
                ShopName         = item.ShopName,
                ProductName      = item.ProductName,
                ProductId        = item.ProductId.ToString(),
                Status           = (item.EndTime < DateTime.Now ? LimitTimeMarketInfo.LimitTimeMarketAuditStatus.Ended.ToDescription() : item.AuditStatus.ToDescription()),
                Price            = item.Price.ToString("f2"),
                RecentMonthPrice = item.RecentMonthPrice.ToString("f2"),
                SaleCount        = item.SaleCount.ToString()
            };
            DataGridModel <LimitTimeBuyModel> dataGridModel = new DataGridModel <LimitTimeBuyModel>()
            {
                rows  = array,
                total = itemList.Total
            };

            return(Json(dataGridModel));
        }
        public JsonResult GetlimitTimeProducts(LimitTimeQuery query)
        {
            query.ShopId = this.CurrentShop.Id;//只取当前商家的限时购商品
            // var result =  EngineContext.Current.Resolve<ILimitTimeBuyService>().GetFlashSaleInfos(query);

            var result = EngineContext.Current.Resolve <ILimitTimeBuyService>().GetFlashSaleInfos(query);

            var products = ProductManagerApplication.GetProducts(result.Models.Select(p => p.ProductId));
            var shops    = ShopApplication.GetShops(result.Models.Select(p => p.ShopId));
            var market   = result.Models.Select(item =>
            {
                var product = products.FirstOrDefault(p => p.Id == item.ProductId);
                var shop    = shops.FirstOrDefault(p => p.Id == item.ShopId);
                var m       = new FlashSaleModel
                {
                    Id          = item.Id,
                    Title       = item.Title,
                    BeginDate   = item.BeginDate.ToString("yyyy-MM-dd"),
                    EndDate     = item.EndDate.ToString("yyyy-MM-dd"),
                    ShopName    = shop.ShopName,
                    ProductName = product.ProductName,
                    ProductId   = item.ProductId,
                    StatusStr   = item.Status.ToDescription()
                };
                if (item.Status != FlashSaleInfo.FlashSaleStatus.WaitForAuditing && item.Status != FlashSaleInfo.FlashSaleStatus.AuditFailed && item.BeginDate > DateTime.Now && item.EndDate < DateTime.Now)
                {
                    m.StatusStr = "进行中";
                }
                else if (item.Status != FlashSaleInfo.FlashSaleStatus.WaitForAuditing && item.Status != FlashSaleInfo.FlashSaleStatus.AuditFailed && item.BeginDate > DateTime.Now)
                {
                    m.StatusStr = "未开始";
                }
                m.SaleCount   = item.SaleCount;
                m.MinPrice    = item.MinPrice;
                m.MarketPrice = product.MarketPrice;
                m.ProductImg  = MallIO.GetProductSizeImage(product.ImagePath, 1, (int)ImageSize.Size_350);
                return(m);
            });
            var dataGrid = new DataGridModel <FlashSaleModel>()
            {
                rows = market, total = result.Total
            };

            return(Json(dataGrid));
        }
        public JsonResult GetItemList(LimitTimeQuery query)
        {
            var service = _iLimitTimeBuyService;

            query.ShopId = CurrentSellerManager.ShopId;
            var result   = service.GetFlashSaleInfos(query);
            var list     = new List <FlashSaleModel>();
            var products = ProductManagerApplication.GetProducts(result.Models.Select(p => p.ProductId));

            foreach (var i in result.Models)
            {
                var product = products.FirstOrDefault(p => p.Id == i.ProductId);
                if (i.Status != FlashSaleInfo.FlashSaleStatus.WaitForAuditing && i.Status != FlashSaleInfo.FlashSaleStatus.AuditFailed && i.BeginDate > DateTime.Now && i.EndDate < DateTime.Now)
                {
                    i.Status = FlashSaleInfo.FlashSaleStatus.Ongoing;
                }
                else if (i.Status != FlashSaleInfo.FlashSaleStatus.WaitForAuditing && i.Status != FlashSaleInfo.FlashSaleStatus.AuditFailed && i.BeginDate > DateTime.Now)
                {
                    i.Status = FlashSaleInfo.FlashSaleStatus.NotBegin;
                }
                list.Add(new FlashSaleModel
                {
                    Id                    = i.Id,
                    BeginDate             = i.BeginDate.ToString("yyyy-MM-dd HH:mm"),
                    EndDate               = i.EndDate.ToString("yyyy-MM-dd HH:mm"),
                    ProductId             = i.ProductId,
                    SaleCount             = i.SaleCount,
                    ProductName           = product.ProductName,
                    StatusNum             = (int)i.Status,
                    StatusStr             = i.Status.ToDescription(),
                    LimitCountOfThePeople = i.LimitCountOfThePeople,
                    IsStarted             = (i.BeginDate > DateTime.Now)
                });
            }
            var model = new { rows = list, total = result.Total };

            return(Json(model));
        }
        private GetBuilder <FlashSaleInfo> WhereBuilder(LimitTimeQuery query)
        {
            var db = DbFactory.Default
                     .Get <FlashSaleInfo>()
                     .InnerJoin <ShopInfo>((fsi, si) => fsi.ShopId == si.Id)
                     .InnerJoin <ProductInfo>((fsi, pi) => fsi.ProductId == pi.Id);

            if (!string.IsNullOrEmpty(query.ShopName))
            {
                db.Where <ShopInfo>(p => p.ShopName.Contains(query.ShopName));
            }

            if (!string.IsNullOrWhiteSpace(query.ProductName))
            {
                db.Where <ProductInfo>(p => p.ProductName.Contains(query.ProductName));
            }

            if (!string.IsNullOrEmpty(query.Title))
            {
                db.Where(p => p.Title.Contains(query.Title));
            }

            if (query.StartDate.HasValue)
            {
                db.Where(a => a.BeginDate >= query.StartDate);
            }

            if (query.EndDate.HasValue)
            {
                query.EndDate = query.EndDate.Value.AddDays(1);
                db.Where(a => a.BeginDate <= query.EndDate);
            }
            if (query.ShopId.HasValue)
            {
                db.Where(a => a.ShopId == query.ShopId.Value);
            }

            if (query.Status.HasValue)
            {
                var status = (FlashSaleInfo.FlashSaleStatus)query.Status;
                if (status == FlashSaleInfo.FlashSaleStatus.Ended)
                {
                    db.Where(p => p.EndDate < DateTime.Now && p.Status != FlashSaleInfo.FlashSaleStatus.Cancelled);
                }
                else if (status == FlashSaleInfo.FlashSaleStatus.WaitForAuditing)
                {
                    db.Where(p => p.Status == status);
                }
                else if (status == FlashSaleInfo.FlashSaleStatus.Ongoing)
                {
                    db.Where(p => p.Status != FlashSaleInfo.FlashSaleStatus.WaitForAuditing && p.Status != FlashSaleInfo.FlashSaleStatus.AuditFailed && p.BeginDate < DateTime.Now && p.EndDate > DateTime.Now);
                }
                else if (status == FlashSaleInfo.FlashSaleStatus.AuditFailed)
                {
                    db.Where(a => a.Status == status);
                }
                else if (status == FlashSaleInfo.FlashSaleStatus.Cancelled)
                {
                    db.Where(a => a.Status == status);
                }
                else if (status == FlashSaleInfo.FlashSaleStatus.NotBegin)
                {
                    db.Where(p => p.Status != FlashSaleInfo.FlashSaleStatus.WaitForAuditing && p.Status != FlashSaleInfo.FlashSaleStatus.AuditFailed && p.BeginDate > DateTime.Now);
                }
            }


            return(db);
        }
        public int GetFlashSaleCount(LimitTimeQuery query)
        {
            var db = WhereBuilder(query);

            return(db.Count());
        }
        public QueryPageModel <FlashSaleInfo> GetFlashSaleInfos(LimitTimeQuery query)
        {
            ExpiredDataChangeStatus();
            var db = WhereBuilder(query);

            switch (query.Sort.ToLower())
            {
            case "begindate":
                if (query.IsAsc)
                {
                    db.OrderBy(p => p.BeginDate);
                }
                else
                {
                    db.OrderByDescending(p => p.BeginDate);
                }
                break;

            case "enddate":
                if (query.IsAsc)
                {
                    db.OrderBy(p => p.EndDate);
                }
                else
                {
                    db.OrderByDescending(p => p.EndDate);
                }
                break;

            case "salecount":
                if (query.IsAsc)
                {
                    db.OrderBy(p => p.SaleCount);
                }
                else
                {
                    db.OrderByDescending(p => p.SaleCount);
                }
                break;

            case "limitcountofthepeople":
                if (query.IsAsc)
                {
                    db.OrderBy(p => p.LimitCountOfThePeople);
                }
                else
                {
                    db.OrderByDescending(p => p.LimitCountOfThePeople);
                }
                break;

            default:
                db.OrderByDescending(o => o.BeginDate);
                break;
            }

            var datas = db.Select().ToPagedList(query.PageNo, query.PageSize);

            return(new QueryPageModel <FlashSaleInfo>()
            {
                Models = datas,
                Total = datas.TotalRecordCount
            });
        }
        public PageModel <LimitTimeMarketInfo> GetItemList(LimitTimeQuery query)
        {
            IQueryable <LimitTimeMarketInfo> endTime = context.LimitTimeMarketInfo.AsQueryable <LimitTimeMarketInfo>();

            if (query.OrderType != 0)
            {
                endTime =
                    from item in endTime
                    where item.EndTime > DateTime.Now
                    select item;
            }
            if (query.ShopId.HasValue)
            {
                endTime =
                    from item in endTime
                    where query.ShopId == item.ShopId
                    select item;
            }
            if (!string.IsNullOrWhiteSpace(query.ItemName))
            {
                endTime =
                    from item in endTime
                    where item.ProductName.Contains(query.ItemName)
                    select item;
            }
            if (!string.IsNullOrWhiteSpace(query.ShopName))
            {
                endTime =
                    from item in endTime
                    where item.ShopName.Contains(query.ShopName)
                    select item;
            }
            if (!string.IsNullOrWhiteSpace(query.CategoryName))
            {
                endTime = endTime.FindBy((LimitTimeMarketInfo d) => d.CategoryName == query.CategoryName);
            }
            DateTime now = DateTime.Now;

            if (query.AuditStatus.HasValue)
            {
                if (query.AuditStatus.Value == LimitTimeMarketInfo.LimitTimeMarketAuditStatus.Ended)
                {
                    endTime =
                        from a in endTime
                        where (a.EndTime < now) && ((int)a.AuditStatus == 2 || (int)a.AuditStatus == 1)
                        select a;
                }
                else if (query.AuditStatus.Value != LimitTimeMarketInfo.LimitTimeMarketAuditStatus.Ongoing)
                {
                    endTime = (query.AuditStatus.Value != LimitTimeMarketInfo.LimitTimeMarketAuditStatus.WaitForAuditing ?
                               from a in endTime
                               where (int)a.AuditStatus == (int)query.AuditStatus.Value
                               select a :
                               from a in endTime
                               where (int)a.AuditStatus == 1 && (a.EndTime > now)
                               select a);
                }
                else
                {
                    endTime =
                        from a in endTime
                        where (int)a.AuditStatus == 2 && (a.EndTime > now)
                        select a;
                }
            }
            int num = 0;

            endTime =
                from l in endTime
                join p in context.ProductInfo on l.ProductId equals p.Id
                where (int)p.AuditStatus == 2 && (!query.CheckProductStatus || query.CheckProductStatus && (int)p.SaleStatus == 1)
                select l;

            if (query.PageSize == 0)
            {
                query.PageSize = 10;
            }
            if (endTime.Count() / query.PageSize < query.PageNo - 1)
            {
                query.PageNo = 1;
            }
            Func <IQueryable <LimitTimeMarketInfo>, IOrderedQueryable <LimitTimeMarketInfo> > orderBy = endTime.GetOrderBy((IQueryable <LimitTimeMarketInfo> d) =>
                                                                                                                           from item in d
                                                                                                                           orderby item.Id descending
                                                                                                                           select item);

            switch (query.OrderKey)
            {
            case 2:
            {
                orderBy = endTime.GetOrderBy((IQueryable <LimitTimeMarketInfo> d) =>
                                             from item in d
                                             orderby item.SaleCount
                                             select item);
                break;
            }

            case 3:
            {
                if (query.OrderType != 2)
                {
                    orderBy = endTime.GetOrderBy((IQueryable <LimitTimeMarketInfo> d) =>
                                                 from item in d
                                                 orderby item.Price descending
                                                 select item);
                    break;
                }
                else
                {
                    orderBy = endTime.GetOrderBy((IQueryable <LimitTimeMarketInfo> d) =>
                                                 from item in d
                                                 orderby item.Price
                                                 select item);
                    break;
                }
            }

            case 4:
            {
                orderBy = endTime.GetOrderBy((IQueryable <LimitTimeMarketInfo> d) =>
                                             from item in d
                                             orderby item.EndTime
                                             select item);
                break;
            }

            case 5:
            {
                orderBy = endTime.GetOrderBy((IQueryable <LimitTimeMarketInfo> d) =>
                                             from item in d
                                             orderby item.AuditStatus
                                             select item);
                break;
            }

            default:
            {
                orderBy = endTime.GetOrderBy((IQueryable <LimitTimeMarketInfo> d) =>
                                             from item in d
                                             orderby item.Id descending
                                             select item);
                break;
            }
            }
            endTime = endTime.GetPage(out num, orderBy, query.PageNo, query.PageSize);
            return(new PageModel <LimitTimeMarketInfo>()
            {
                Models = endTime,
                Total = num
            });
        }
        public ActionResult Home(string keywords = "", string catename = "", int orderKey = 1, int orderType = 1, int pageNo = 1, int pageSize = 60)
        {
            LimitTimeQuery limitTimeQuery = new LimitTimeQuery()
            {
                ItemName           = keywords,
                OrderKey           = orderKey,
                OrderType          = orderType,
                CategoryName       = catename,
                PageNo             = pageNo,
                PageSize           = pageSize,
                AuditStatus        = new LimitTimeMarketInfo.LimitTimeMarketAuditStatus?(LimitTimeMarketInfo.LimitTimeMarketAuditStatus.Ongoing),
                CheckProductStatus = true
            };
            LimitTimeQuery        limitTimeQuery1 = limitTimeQuery;
            List <SelectListItem> selectListItems = new List <SelectListItem>();

            string[] serviceCategories = ServiceHelper.Create <ILimitTimeBuyService>().GetServiceCategories();
            for (int i = 0; i < serviceCategories.Length; i++)
            {
                string         str            = serviceCategories[i];
                SelectListItem selectListItem = new SelectListItem()
                {
                    Selected = false,
                    Text     = str,
                    Value    = str
                };
                selectListItems.Add(selectListItem);
            }
            if (!string.IsNullOrWhiteSpace(catename))
            {
                SelectListItem selectListItem1 = selectListItems.FirstOrDefault((SelectListItem c) => c.Text.Equals(catename));
                if (selectListItem1 != null)
                {
                    selectListItem1.Selected = true;
                }
            }
            ViewBag.Cate         = selectListItems;
            ViewBag.keywords     = keywords;
            ViewBag.orderKey     = orderKey;
            ViewBag.orderType    = orderType;
            base.ViewBag.Logined = (base.CurrentUser != null ? 1 : 0);
            ViewBag.Slide        = ServiceHelper.Create <ISlideAdsService>().GetSlidAds(0, SlideAdInfo.SlideAdType.PlatformLimitTime);
            PageModel <LimitTimeMarketInfo> itemList = ServiceHelper.Create <ILimitTimeBuyService>().GetItemList(limitTimeQuery1);
            int total = itemList.Total;

            LimitTimeMarketInfo[] array = itemList.Models.ToArray();
            if (itemList.Total == 0)
            {
                ViewBag.keywords = keywords;
                return(View());
            }
            PagingInfo pagingInfo = new PagingInfo()
            {
                CurrentPage  = limitTimeQuery1.PageNo,
                ItemsPerPage = pageSize,
                TotalItems   = total
            };

            ViewBag.pageInfo = pagingInfo;
            return(View(array ?? new LimitTimeMarketInfo[0]));
        }
Exemple #10
0
 public static int GetFlashSaleCount(LimitTimeQuery query)
 {
     return(Service.GetFlashSaleCount(query));
 }