public IActionResult UserCenterIndex() { var commodityListForIndexVM = new List <YZ_CommodityVM>(); var commoditiesForIndex = this._commodity .GetAllIncluding(x => x.Category, x => x.AscriptionUser) .Where(x => x.State == YZ_CommodityState.OnSale) .OrderByDescending(c => c.AddTime).ToList(); if (commoditiesForIndex.Count() > 0) { foreach (var commodity in commoditiesForIndex) { var commodityImageForIndex = _businessImage.FindBy(m => m.RelevanceObjectId == commodity.Id).FirstOrDefault(m => m.Type == ImageType.CommodityCover); var commodityImagesForIndex = new List <BusinessImage>(); commodityImagesForIndex.Add(commodityImageForIndex); var commodityForIndexVM = new YZ_CommodityVM(commodity); commodityForIndexVM.Images = commodityImagesForIndex; commodityListForIndexVM.Add(commodityForIndexVM); } commodityListForIndexVM.OrderByDescending(m => m.AddTime); } ViewBag.LatestRelease = commodityListForIndexVM; var Commodies = GetWhatYouLike(); var obj = Commodies.Count() < 0 ? commodityListForIndexVM : Commodies; return(PartialView("../../Views/Account/UserCenterPartialViews/_UserCenterIndex", obj)); // return PartialView("../../Views/Account/UserCenterPartialViews/_UserCenterIndex", new List<YZ_CommodityVM>()); }
private List <YZ_CommodityVM> GetCommodityVMForGuessYouLike(YZ_UserVisitorLog visitorLog) { var commodityLisForLiketVM = new List <YZ_CommodityVM>(); var listCount = 0; var commodityForLikeList = _commodity.GetAllIncluding(x => x.Category).Where(x => x.Category == visitorLog.Category).ToList(); if (commodityForLikeList.Count() > 0) { foreach (var commodityForLikeItem in commodityForLikeList) { if (listCount >= 4) { break; } var commodityImageForLike = _businessImage.FindBy(m => m.RelevanceObjectId == commodityForLikeItem.Id).FirstOrDefault(m => m.Type == ImageType.CommodityCover); var commodityImagesForLike = new List <BusinessImage>(); commodityImagesForLike.Add(commodityImageForLike); var commodityForLikeVM = new YZ_CommodityVM(commodityForLikeItem); commodityForLikeVM.Images = commodityImagesForLike; commodityLisForLiketVM.Add(commodityForLikeVM); listCount++; } } return(commodityLisForLiketVM); }
/// <summary> /// 根据查询条件 获取商品的集合(不分页) /// </summary> /// <param name="predicate">查询参数:使用lambda表达式</param> /// <returns></returns> public List <YZ_CommodityVM> GetYZCommodityVMs(Expression <Func <YZ_Commodity, bool> > predicate) { var commodityListVM = new List <YZ_CommodityVM>(); var commodityList = this._commodity .GetAllIncluding(x => x.Category, x => x.AscriptionUser, x => x.Images, x => x.LookCount) .Where(predicate) .OrderByDescending(c => c.AddTime).ToList(); if (commodityList.Count() > 0) { foreach (var commodity in commodityList) { var commodityImageList = _businessImage.FindBy(m => m.RelevanceObjectId == commodity.Id).ToList(); var userAvatar = _businessImage.GetAll().FirstOrDefault(i => i.RelevanceObjectId == Guid.Parse(commodity.AscriptionUser.Id)); if (userAvatar != null) { commodity.AscriptionUser.Avatar = userAvatar; } var commodityVM = new YZ_CommodityVM(commodity); commodityVM.Images = commodityImageList; commodityVM.OrderNumber = (commodityListVM.Count() + 1).ToString(); commodityListVM.Add(commodityVM); } commodityListVM.OrderByDescending(m => m.AddTime); } return(commodityListVM); }
/// <summary> /// 商品详细页面 /// </summary> /// <returns></returns> public async Task <IActionResult> GetCommodityDetail(Guid id) { GetAdvertisements(); GetCurrUserName(); await AddUserVisitorLog(id); var images = new List <BusinessImage>(); var viewModel = new YZ_CommodityVM(); var model = this._commodity.GetAllIncluding(x => x.Category, x => x.Comments, x => x.AscriptionUser, x => x.Images, x => x.LookCount).FirstOrDefault(x => x.Id == id); if (model != null) { if (model.AscriptionUser != null) { var userAvatar = _businessImage.GetAll().FirstOrDefault(i => i.RelevanceObjectId == Guid.Parse(model.AscriptionUser.Id)); if (userAvatar != null) { model.AscriptionUser.Avatar = userAvatar; } } images = this._businessImage.GetAll().Where(x => x.RelevanceObjectId == model.Id).ToList(); viewModel = new YZ_CommodityVM(model); viewModel.Images = images; viewModel.Comments = await GetCommodityCommentsVM(model.Id); var lookCount = model.LookCount; lookCount.LookCount += 1; _commodityLookCount.EditAndSave(lookCount); return(PartialView("../../Views/CommodityManagement/CommodityDetail", viewModel)); } return(RedirectToAction("Error", "Home")); }
/// <summary> /// 网站首页 /// </summary> /// <returns></returns> public IActionResult Index() { //获取广告和轮播 GetAdvertisements(); //获取所有的商品 var commodityListForIndexVM = new List <YZ_CommodityVM>(); var commoditiesForIndex = this._commodity .GetAllIncluding(x => x.Category, x => x.AscriptionUser) .Where(x => x.State == YZ_CommodityState.OnSale) .OrderByDescending(c => c.AddTime).ToList(); if (commoditiesForIndex.Count() > 0) { foreach (var commodity in commoditiesForIndex) { var commodityImageForIndex = _businessImage.FindBy(m => m.RelevanceObjectId == commodity.Id).FirstOrDefault(m => m.Type == ImageType.CommodityCover); var commodityImagesForIndex = new List <BusinessImage>(); commodityImagesForIndex.Add(commodityImageForIndex); var commodityForIndexVM = new YZ_CommodityVM(commodity); commodityForIndexVM.Images = commodityImagesForIndex; commodityListForIndexVM.Add(commodityForIndexVM); } commodityListForIndexVM.OrderByDescending(m => m.AddTime); } //最新发布的商品 ViewBag.LatestRelease = commodityListForIndexVM; GetWhatYouLike(); //获取猜你喜欢的内容 return(View(commodityListForIndexVM)); }
public IActionResult AddOrEditCommodity(Guid?id, int?pageIndex) { var viewModel = new YZ_CommodityVM(); if (id.HasValue) { viewModel = GetYZCommodityVM(x => x.Id == id); } ViewBag.PageIndex = pageIndex; ViewBag.Category = GetCategories(); return(PartialView("../../Views/Account/UserCenterPartialViews/_AddOrEditCommodity", viewModel)); }
public IActionResult Index() { //获取当前用户名 GetCurrUserName(); var pageSize = 8; var pageIndex = 1; var counter = 0; //获取所有的商品 var commodityListVM = new List <YZ_CommodityVM>(); var commodities = this._commodity.GetAllIncluding(x => x.Category, x => x.AscriptionUser); var commodityCollectionPageList = commodities.ToPaginatedList(pageIndex, pageSize); if (commodities.Count() > 0) { foreach (var commodity in commodityCollectionPageList) { var commodityImage = _businessImage.FindBy(m => m.RelevanceObjectId == commodity.Id).FirstOrDefault(m => m.Type == ImageType.CommodityCover); var commodityImages = new List <BusinessImage>(); commodityImages.Add(commodityImage); var commodityVM = new YZ_CommodityVM(commodity); commodityVM.Images = commodityImages; commodityVM.OrderNumber = (++counter).ToString(); commodityListVM.Add(commodityVM); } ViewBag.CommodityVMCollection = commodityListVM; // 提取当前页面关联的分页器实例 var pageGroup = PagenateGroupRepository.GetItem <YZ_Commodity>(commodityCollectionPageList, 10, pageIndex); ViewBag.PageGroup = pageGroup; var listPageParameter = new ListPageParameter() { PageIndex = commodityCollectionPageList.PageIndex, Keyword = "", PageSize = commodityCollectionPageList.PageSize, ObjectTypeId = commodityListVM.FirstOrDefault().Id.ToString(), ObjectAmount = commodityCollectionPageList.TotalCount, SortDesc = "Default", SortProperty = "Name", PageAmount = 0, SelectedObjectId = "" }; ViewBag.PageParameter = listPageParameter; } else { commodityListVM = null; } return(View("../../Views/AdminCenter/CommodityManagement/Index", commodityListVM)); }
public async Task <JsonResult> SaveEditCommodity([Bind("Id,State,ExamineDescription")] YZ_CommodityVM boVM) { var commodity = _commodity.GetAllIncluding(x => x.AscriptionUser).FirstOrDefault(x => x.Id == boVM.Id); if (commodity != null) { commodity.State = boVM.State; } var examine = new YZ_CommodityExamine { Description = boVM.ExamineDescription, Commodity = commodity, ExamineTime = DateTime.Now, ExamineUser = GetUser(), State = boVM.State }; _commodityExamine.AddAndSave(examine); var result = await _commodity.AddOrEditAndSaveAsyn(commodity); if (result) { var message = ""; if (boVM.State == YZ_CommodityState.OnSale) { message = "尊敬的用户您好,您的商品 [ " + commodity.Name + " ] 已经审核并通过,已经自动上架。"; } else { message = "尊敬的用户您好,您的商品 [ " + commodity.Name + " ] 已经审核,但未通过已被驳回,原因是[" + boVM.ExamineDescription + "],请您修改后再次提交审核。"; } var notification = new Notification { Receiver = commodity.AscriptionUser, Name = "商品审核", Description = message, Link = "javascript:", IsAbnormal = false, IsRead = false, NotificationSource = NotificationSourceEnum.App }; AppNotification.SendNotification(notification); return(Json(new { result = true, message = "操作成功,请关闭当前页面!" })); } else { return(Json(new { result = false, message = "操作失败,请关闭当前页面!" })); } }
/// <summary> /// 根据条件查询一条商品数据 /// </summary> /// <param name="predicate"></param> /// <returns></returns> public YZ_CommodityVM GetYZCommodityVM(Expression <Func <YZ_Commodity, bool> > predicate) { var commodityVM = new YZ_CommodityVM(); var commodity = this._commodity .GetAllIncluding(x => x.Category, x => x.AscriptionUser, x => x.Images, x => x.LookCount) .FirstOrDefault(predicate); if (commodity != null) { var commodityImageList = _businessImage.FindBy(m => m.RelevanceObjectId == commodity.Id).ToList(); var userAvatar = _businessImage.GetAll().FirstOrDefault(i => i.RelevanceObjectId == Guid.Parse(commodity.AscriptionUser.Id)); if (userAvatar != null) { commodity.AscriptionUser.Avatar = userAvatar; } commodityVM = new YZ_CommodityVM(commodity); commodityVM.Images = commodityImageList; commodityVM.IsNew = false; } return(commodityVM); }
/// <summary> /// 获取商品视图 /// </summary> /// <returns></returns> public List <YZ_CommodityVM> GetCommodityVMForGuessYouLike(List <YZ_UserVisitorLog> visitorLogList) { var commodityLisForLiketVM = new List <YZ_CommodityVM>(); var visitorLogs = visitorLogList; visitorLogs = visitorLogs.OrderByDescending(v => v.LookTime).ToList(); if (visitorLogs.Count() > 0) { //去除重复的数据对象 visitorLogs = visitorLogs.YZDistinct(x => x.Category).OrderByDescending(x => x.LookTime).ToList(); foreach (var item in visitorLogs) { //一共取15条数据 if (commodityLisForLiketVM.Count() > 15) { break; } var listCount = 0; var commodityForLikeList = _commodity.GetAllIncluding(x => x.Category).Where(x => x.Category == item.Category).ToList(); if (commodityForLikeList.Count() > 0) { foreach (var commodityForLikeItem in commodityForLikeList) { if (listCount >= 5) { break; } var commodityImageForLike = _businessImage.FindBy(m => m.RelevanceObjectId == commodityForLikeItem.Id).FirstOrDefault(m => m.Type == ImageType.CommodityCover); var commodityImagesForLike = new List <BusinessImage>(); commodityImagesForLike.Add(commodityImageForLike); var commodityForLikeVM = new YZ_CommodityVM(commodityForLikeItem); commodityForLikeVM.Images = commodityImagesForLike; commodityLisForLiketVM.Add(commodityForLikeVM); listCount++; } } } } return(commodityLisForLiketVM); }
/// <summary> /// 列表数据 /// </summary> /// <param name="listPageParaJson"> /// 用于简单定义从前端页面返回的数据列表相关的 Json 变量,变量的定义依赖 ShiKe.Common.JsonModels.ListPageParameter, /// 前端 json 数据构建相关的代码,参见:wwwroot/js/yiZhanCommon.js 其中的方法:function yiZhanGetListParaJson() /// </param> /// <returns></returns> public IActionResult List(string listPageParaJson) { var listPagePara = Newtonsoft.Json.JsonConvert.DeserializeObject <ListPageParameter>(listPageParaJson); var typeId = ""; var keyword = ""; if (!String.IsNullOrEmpty(listPagePara.ObjectTypeId)) { typeId = listPagePara.ObjectTypeId; } if (!String.IsNullOrEmpty(listPagePara.Keyword)) { keyword = listPagePara.Keyword; } #region 1.构建与 keyword 相关的查询 lambda 表达式,用于对查询结果的过滤(给 Where 使用) Expression <Func <YZ_Commodity, bool> > predicate = x => x.Name.Contains(keyword) || x.Description.Contains(keyword) || x.Category.Name.Contains(keyword); #endregion var commodities = this._commodity.GetAllIncluding(x => x.Category, x => x.AscriptionUser); // 2.处理条件过滤 var filterCommoditiesCollection = commodities.Where(predicate); #region 3.根据属性名称确定排序的属性的 lambda 表达式 var sortPropertyName = listPagePara.SortProperty; var type = typeof(YZ_Commodity); var target = Expression.Parameter(typeof(object)); var castTarget = Expression.Convert(target, type); var getPropertyValue = Expression.Property(castTarget, sortPropertyName); var sortExpession = Expression.Lambda <Func <YZ_Commodity, object> >(getPropertyValue, target); #endregion #region 4.对过滤的数据进行排序 // 处理排序 IQueryable <YZ_Commodity> sortedUserCollection; if (listPagePara.SortDesc == "") { sortedUserCollection = filterCommoditiesCollection.OrderByDescending(sortExpession); } else { sortedUserCollection = filterCommoditiesCollection.OrderBy(sortExpession); } // 处理分页 var commodityCollectionPageList = sortedUserCollection.ToPaginatedList(listPagePara.PageIndex, listPagePara.PageSize); #endregion #region 5.构建相关的视图模型和所需要向前端提交一些与约束相关的参数 var commodityListVM = new List <YZ_CommodityVM>(); var counter = 0; if (commodities.Count() > 0) { foreach (var commodity in commodityCollectionPageList) { var commodityImage = _businessImage.FindBy(m => m.RelevanceObjectId == commodity.Id).FirstOrDefault(m => m.Type == ImageType.CommodityCover); var commodityImages = new List <BusinessImage>(); commodityImages.Add(commodityImage); var commodityVM = new YZ_CommodityVM(commodity); commodityVM.Images = commodityImages; commodityVM.OrderNumber = (++counter + ((listPagePara.PageIndex - 1) * listPagePara.PageSize)).ToString(); commodityListVM.Add(commodityVM); } } // 提取当前页面关联的分页器实例 var pageGroup = PagenateGroupRepository.GetItem <YZ_Commodity>(commodityCollectionPageList, 10, listPagePara.PageIndex); ViewBag.PageGroup = pageGroup; ViewBag.PageParameter = listPagePara; #endregion return(PartialView("../../Views/AdminCenter/CommodityManagement/_List", commodityListVM)); }
/// <summary> /// 网站搜索 /// </summary> /// <param name="keyword"></param> /// <returns></returns> public async Task <IActionResult> Search(string keyword) { //获取用户名 GetCurrUserName(); var commoditiesForSearch = this._commodity. GetAllIncluding(x => x.Category, x => x.AscriptionUser, x => x.Images) .Where(x => x.State == YZ_CommodityState.OnSale); var commodityImage = new BusinessImage(); var commodityImages = new List <BusinessImage>(); var commodityForSearchVM = new YZ_CommodityVM(); var commodityListForSearchVM = new List <YZ_CommodityVM>(); if (!String.IsNullOrEmpty(keyword)) { Expression <Func <YZ_Commodity, bool> > condition = x => x.Name.Contains(keyword) || x.Description.Contains(keyword) || x.Category.Name.Contains(keyword) || x.AscriptionUser.ChineseFullName.Contains(keyword); if (commoditiesForSearch.Count() > 0) { foreach (var commodity in commoditiesForSearch.Where(condition)) { commodityImage = _businessImage.FindBy(m => m.RelevanceObjectId == commodity.Id).FirstOrDefault(m => m.Type == ImageType.CommodityCover); commodityImages = new List <BusinessImage>(); commodityImages.Add(commodityImage); commodityForSearchVM = new YZ_CommodityVM(commodity); commodityForSearchVM.Images = commodityImages; commodityListForSearchVM.Add(commodityForSearchVM); } commodityListForSearchVM.OrderByDescending(m => m.AddTime); //添加搜索记录 if (commodityListForSearchVM.Count > 0) { AddSearchLog(keyword); } } else { commodityListForSearchVM = null; } ViewBag.Keyword = keyword; } else { if (commoditiesForSearch.Count() > 0) { foreach (var commodity in commoditiesForSearch.ToList()) { if (commodityListForSearchVM.Count() >= 30) { break; } commodityImage = _businessImage.FindBy(m => m.RelevanceObjectId == commodity.Id).FirstOrDefault(m => m.Type == ImageType.CommodityCover); commodityImages = new List <BusinessImage>(); commodityImages.Add(commodityImage); commodityForSearchVM = new YZ_CommodityVM(commodity); commodityForSearchVM.Images = commodityImages; commodityListForSearchVM.Add(commodityForSearchVM); } commodityListForSearchVM.OrderByDescending(m => m.AddTime); } else { commodityListForSearchVM = null; } ViewBag.Keyword = null; } GuessYouSearch(); //获取猜你想搜 await GetHotSearch(); //热门搜索 await GetCommodityCategorList(); //获取所有分类 return(View(commodityListForSearchVM)); }
public async Task <JsonResult> AddOrEditCommodity([Bind("Id,IsNew,Name,Description,Price,Unit,Stock,State,Way,Range,IsBargain,CategoryId")] YZ_CommodityVM boVM) { var commodity = new YZ_Commodity(); var category = _commodityCategory.GetAll().FirstOrDefault(x => x.Id == boVM.CategoryId); if (boVM.IsNew) { var lookCount = new YZ_CommodityLookCount { LookCount = 0 }; _commodityLookCount.AddAndSave(lookCount); commodity = new YZ_Commodity { Name = EncodeFilterHelper.EncodeHtml(boVM.Name), Description = EncodeFilterHelper.EncodeHtml(boVM.Description), Unit = EncodeFilterHelper.EncodeHtml(boVM.Unit), State = YZ_CommodityState.IsExamine, Category = category == null ? null : category, Price = boVM.Price, Stock = boVM.Stock, LookCount = lookCount, AscriptionUser = GetUser(), EditTime = DateTime.Now, IsBargain = boVM.IsBargain, Way = boVM.Way, Range = boVM.Range }; } else { commodity = await _commodity.GetSingleAsyn(boVM.Id); if (commodity != null) { commodity.Name = EncodeFilterHelper.EncodeHtml(boVM.Name); commodity.Description = EncodeFilterHelper.EncodeHtml(boVM.Description); commodity.Price = boVM.Price; commodity.Unit = EncodeFilterHelper.EncodeHtml(boVM.Unit); commodity.Stock = boVM.Stock; commodity.AddTime = commodity.AddTime; commodity.State = boVM.State; //调试时不修改商品状态 commodity.Category = category == null ? null : category; commodity.EditTime = DateTime.Now; commodity.IsBargain = boVM.IsBargain; commodity.Way = boVM.Way; commodity.Range = boVM.Range; } } //图片上传独立处理 AddCommodityImg(commodity); var result = await _commodity.AddOrEditAndSaveAsyn(commodity); if (result) { if (boVM.IsNew) { return(Json(new { result = true, message = "添加成功!" })); } else { return(Json(new { result = true, message = "修改成功!" })); } } else { return(Json(new { result = false, message = "操作失败!" })); } }