public ActionResult GetMediaList(MediaLibrary_QueryModel queryModel) { MediaServices ms = new MediaServices(); int count = 0; try { return(Json(new NBCMSResultJson { Status = StatusType.OK, Data = new { rows = ms.GetMediaList(queryModel, out count), total = count } })); } catch (Exception ex) { NBCMSLoggerManager.Error(ex.Message); NBCMSLoggerManager.Error(ex.Source); return(Json(new NBCMSResultJson { Status = StatusType.Exception, Data = ex.Message })); } }
public ActionResult SearchMediaLibrary(MediaLibrary_QueryModel queryModel) { var ms = new MediaServices(); try { //List<MediaGroupBy_Model> groupByList = new List<MediaGroupBy_Model>(); int count; return(Json(new NBCMSResultJson { Status = StatusType.OK, Data = new { list = ms.GetMediaLibraryList(queryModel, out count), //groupByList = groupByList, count } })); } catch (Exception ex) { NBCMSLoggerManager.Error(ex.Message); NBCMSLoggerManager.Error(ex.Source); return(Json(new NBCMSResultJson { Status = StatusType.Exception, Data = ex.Message })); } }
/// <summary> /// 获取图像列表,供给ProductConfigureation页面AttachSKU用... /// Change:新增按照图像分辨率进行分组的信息,以适应新的需求 2014年1月6日10:55:16 /// </summary> /// <returns></returns> public ActionResult GetImageList(MediaLibrary_QueryModel model) { try { var count = 0; var groupByList = new List <MediaGroupBy_Model>(); //针对SKU页面做的单独处理,如果当前页面没有关联任何的HM#,则不要展示任何形象。 if (model.ProductID >= 1) { return(Json(new NBCMSResultJson { Status = StatusType.OK, Data = new { List = new MediaServices().GetMediaLibraryListWithGroup(model, out count, out groupByList), groupByList, Count = count } })); } var tempL = new List <MediaLibrary_Model>(); return(Json(new NBCMSResultJson { Status = StatusType.OK, Data = new { List = tempL, groupByList, Count = count } })); } catch (Exception ex) { NBCMSLoggerManager.Error(ex.Message); NBCMSLoggerManager.Error(ex.Source); NBCMSLoggerManager.Error(ex.StackTrace); return(Json(new NBCMSResultJson { Status = StatusType.Exception, Data = ex.Message })); } }
/// <summary> /// 带有分组信息的图像列表。2014年4月25日10:29:26 /// 由于发现在MediaLibrary页面返回去的分组信息带到800组,转化成JSON造成网路负担和前后台解析缓慢,所以就吧需要分组和不需要分组的反复分离开来。 /// 实际上MediaLibrary不需要分组 /// </summary> /// <param name="queryModel"></param> /// <param name="count"></param> /// <param name="groupByList"></param> /// <returns></returns> public List <MediaLibrary_Model> GetMediaLibraryListWithGroup(MediaLibrary_QueryModel queryModel, out int count, out List <MediaGroupBy_Model> groupByList) { var query = this.GetMediaList(queryModel, out count); //Load from memory.经过测试 ,如果不先toList(),还是会去数据库查询3次!之所以要AsEnumerable()是因为必须调用到Take()这个方法 //但是这种预先全部preloading到memoery的方法,可能不适合MedialLibrary页面,for the performance考虑,可能要抽离出2个方法 2014年1月22日10:25:02 var newQuery = query.AsEnumerable(); count = newQuery.Count(); //第一次触发数据库查询(没有toList()情况下) groupByList = newQuery.GroupBy(gp => new //Group By in Memory { fileWidth = gp.fileWidth, fileHeight = gp.fileHeight }).OrderBy(g => g.Key.fileWidth).Select(g => new MediaGroupBy_Model { fileWidth = g.Key.fileWidth, fileHeight = g.Key.fileHeight }).ToList();//第二次触发查询(没有toList()情况下) return(newQuery.ToList()); }
/// <summary> /// 查询出所有图像,不需要分组,该方法提供给前端同步云端模块用 2014年4月14日17:45:13 /// </summary> /// <param name="queryModel"></param> /// <param name="count"></param> /// <returns></returns> public List <MediaLibrary_Model> GetMediaList(MediaLibrary_QueryModel queryModel, out int count) { using (PermaisuriCMSEntities db = new PermaisuriCMSEntities()) { var query = db.MediaLibrary.Include(m => m.SKU_Media_Relation).Where(d => d.CloudStatusID != 4); if (!String.IsNullOrEmpty(queryModel.HMNUM)) { query = query.Where(m => m.HMNUM.Contains(queryModel.HMNUM)); } if (!string.IsNullOrEmpty(queryModel.SKUOrder)) { query = query.Where(m => m.SKU_Media_Relation.Any(r => r.CMS_SKU.SKU.Contains(queryModel.SKUOrder))); } if (queryModel.Format > 0) { query = query.Where(m => m.MediaType == queryModel.Format); } if (queryModel.Status > 0) { if (queryModel.Status == 1)//Attached to SKU { query = query.Where(m => m.SKU_Media_Relation.Any(r => r.MediaID > 0)); } if (queryModel.Status == 2)//unattach { query = query.Except(query.Where(m => m.SKU_Media_Relation.Any(r => r.MediaID > 0))); } } if (queryModel.Channel > 0) { query = query.Where(m => m.SKU_Media_Relation.Any(r => r.CMS_SKU.ChannelID == queryModel.Channel)); } if (queryModel.Brand > 0) { query = query.Where(m => m.SKU_Media_Relation.Any(r => r.CMS_SKU.BrandID == queryModel.Brand)); } if (queryModel.IsExcludeSKU) { query = query.Except(query.Where(m => m.SKU_Media_Relation.Any(r => r.SKUID == queryModel.SKUID))); } if (queryModel.ProductID > 0) { query = query.Where(m => m.CMS_StockKey.CMS_HMNUM.Any(r => r.ProductID == queryModel.ProductID)); } if (queryModel.CloudStatusID > 0) { query = query.Where(m => m.CloudStatusID == queryModel.CloudStatusID); } count = query.Count(); return(query.OrderByDescending(m => m.MediaID) .Skip((queryModel.page - 1) * queryModel.rows) .Take(queryModel.rows).ToList().Select(c => new MediaLibrary_Model { fileFormat = c.fileFormat, fileHeight = c.fileHeight.HasValue ? c.fileHeight.Value : 0, fileWidth = c.fileWidth.HasValue ? c.fileWidth.Value : 0, fileSize = c.fileSize, MediaID = c.MediaID, Description = c.Description, HMNUM = c.HMNUM, ImgName = c.ImgName, ProductID = c.ProductID, MediaType = c.MediaType, SerialNum = c.SerialNum, strCreateOn = c.CreateOn.ToString("yyyy-MM-dd HH:mm:ss"), CloudStatusID = c.CloudStatusID, MediaCloudStatus = new MediaCloudStatus_Model { CloudStatusId = c.MediaCloudStatus.CloudStatusId, CloudStatusName = c.MediaCloudStatus.CloudStatusName }, CMS_SKU = c.SKU_Media_Relation.Where(r => r.MediaID == c.MediaID) .Select(s => new CMS_SKU_Model { ChannelName = s.CMS_SKU.Channel.ChannelName, ProductName = s.CMS_SKU.ProductName, SKU = s.CMS_SKU.SKU }).ToList() }).ToList()); } }
/// <summary> /// Change:新增按照图像分辨率进行分组的信息,以适应新的需求 2014年1月6日10:55:16 /// Change2:应David要求,去掉时间的筛选 /// </summary> /// <param name="queryModel"></param> /// <param name="count"></param> /// <returns></returns> public List <MediaLibrary_Model> GetMediaLibraryList(MediaLibrary_QueryModel queryModel, out int count) { List <MediaLibrary_Model> list = new List <MediaLibrary_Model>(); using (PermaisuriCMSEntities db = new PermaisuriCMSEntities()) { var query = db.MediaLibrary.Include(m => m.SKU_Media_Relation).Where(d => d.MediaID > 0); if (!String.IsNullOrEmpty(queryModel.HMNUM)) { query = query.Where(m => m.HMNUM.Contains(queryModel.HMNUM)); } if (!string.IsNullOrEmpty(queryModel.SKUOrder)) { query = query.Where(m => m.SKU_Media_Relation.Any(r => r.CMS_SKU.SKU.Contains(queryModel.SKUOrder))); } if (queryModel.Format > 0) { query = query.Where(m => m.MediaType == queryModel.Format); } if (queryModel.Status > 0) { if (queryModel.Status == 1)//Attached to SKU { query = query.Where(m => m.SKU_Media_Relation.Any(r => r.MediaID > 0)); } if (queryModel.Status == 2)//unattach { query = query.Except(query.Where(m => m.SKU_Media_Relation.Any(r => r.MediaID > 0))); } } if (queryModel.Channel > 0) { query = query.Where(m => m.SKU_Media_Relation.Any(r => r.CMS_SKU.ChannelID == queryModel.Channel)); } if (queryModel.Brand > 0) { query = query.Where(m => m.SKU_Media_Relation.Any(r => r.CMS_SKU.BrandID == queryModel.Brand)); } if (queryModel.IsExcludeSKU) { //ChangeDate:2013年12月6日16:16:02 原来是根据SKUOrder来排除,但是这样子在批量复制(DupliatedProduct)情况下,一个 //渠道的SKUOrder选择了图片之后,会影响到其他渠道的SKUOrder的图片关联,故而应该用SKUID来关联排除。 //query = query.Except(query.Where(m => m.SKU_Media_Relation.Any(r => r.CMS_SKU.SKU == queryModel.SKUOrder))); query = query.Except(query.Where(m => m.SKU_Media_Relation.Any(r => r.SKUID == queryModel.SKUID))); } if (queryModel.ProductID > 0) { //query = query.Where(m => m.ProductID == queryModel.ProductID); changed 2014年4月11日10:40:02 query = query.Where(m => m.CMS_StockKey.CMS_HMNUM.Any(r => r.ProductID == queryModel.ProductID)); } if (queryModel.CloudStatusID > 0) { query = query.Where(m => m.CloudStatusID == queryModel.CloudStatusID); } count = query.Count();//第一次触发数据库查询(没有toList()情况下) query = query.OrderByDescending(m => m.MediaID).Skip((queryModel.page - 1) * queryModel.rows).Take(queryModel.rows); foreach (MediaLibrary c in query)////第三次触发查询(没有toList()情况下) { list.Add(new MediaLibrary_Model { fileFormat = c.fileFormat, fileHeight = c.fileHeight.HasValue ? c.fileHeight.Value : 0, fileWidth = c.fileWidth.HasValue ? c.fileWidth.Value : 0, fileSize = c.fileSize, MediaID = c.MediaID, Description = c.Description, HMNUM = c.HMNUM, ImgName = c.ImgName, ProductID = c.ProductID, MediaType = c.MediaType, SerialNum = c.SerialNum, strCreateOn = c.CreateOn.ToString("yyyy-MM-dd HH:mm:ss"), CloudStatusID = c.CloudStatusID, CMS_SKU = c.SKU_Media_Relation.Where(r => r.MediaID == c.MediaID) .Select(s => new CMS_SKU_Model { ChannelName = s.CMS_SKU.Channel.ChannelName, ProductName = s.CMS_SKU.ProductName, SKU = s.CMS_SKU.SKU }).ToList() }); } return(list); } }