/// <summary> /// 微博列表模式页 /// </summary> /// <returns></returns> public ActionResult Microblog(SortBy_Microblog sortBy = SortBy_Microblog.DateCreated, long tagGroupId = 0) { pageResourceManager.InsertTitlePart("广场"); //获取标签分组 ViewData["tagGroup"] = tagService.GetGroups(TenantTypeIds.Instance().Microblog()); ViewData["sortBy"] = sortBy; ViewData["tagGroupId"] = tagGroupId; return(View()); }
/// <summary> /// 微博图片模式数据页 /// </summary> /// <param name="pageIndex"></param> /// <param name="tenantTypeId"></param> /// <param name="mediaType"></param> /// <param name="isOriginal"></param> /// <param name="sortBy"></param> /// <returns></returns> public ActionResult _Waterfall(int pageIndex = 1, string tenantTypeId = "", MediaType?mediaType = null, bool?isOriginal = null, SortBy_Microblog sortBy = SortBy_Microblog.DateCreated) { //获取微博分页数据 PagingDataSet <MicroblogEntity> MicroblogEntities = microblogService.GetPagings(pageIndex, tenantTypeId: TenantTypeIds.Instance().User(), mediaType: mediaType, sortBy: sortBy); //获取微博图片 AttachmentService <Attachment> attachementService = new AttachmentService <Attachment>(TenantTypeIds.Instance().Microblog()); foreach (var MicroblogEntity in MicroblogEntities.Where(n => n.HasPhoto)) { IEnumerable <Attachment> attachments = attachementService.GetsByAssociateId(MicroblogEntity.MicroblogId); if (attachments != null && attachments.Count <Attachment>() > 0) { MicroblogEntity.ImageWidth = attachments.First().Width; MicroblogEntity.ImageUrl = SiteUrls.Instance().ImageUrl(attachments.First(), TenantTypeIds.Instance().Microblog(), ImageSizeTypeKeys.Instance().Big()); } } IUser CurrentUser = UserContext.CurrentUser; if (CurrentUser != null) { //设置当前登录用户对当前页用户的关注情况 Dictionary <long, bool> isCurrentUserFollowDic = new Dictionary <long, bool>(); foreach (var user in MicroblogEntities.Select(m => m.User)) { if (user == null) { continue; } //如果当前登录用户关注了该用户 if (followService.IsFollowed(CurrentUser.UserId, user.UserId)) { if (!isCurrentUserFollowDic.ContainsKey(user.UserId)) { isCurrentUserFollowDic.Add(user.UserId, true); } } else { if (!isCurrentUserFollowDic.ContainsKey(user.UserId)) { isCurrentUserFollowDic.Add(user.UserId, false); } } } ViewData["isCurrentUserFollowDic"] = isCurrentUserFollowDic; } return(View(MicroblogEntities.AsEnumerable <MicroblogEntity>())); }
/// <summary> /// 生成Sql语句用于微博分页及TopN条数据获取 /// </summary> /// <param name="ownerId">拥有者Id</param> ///<param name="tenantTypeId">租户类型Id</param> /// <param name="mediaType"><see cref="MediaType"/></param> /// <param name="isOriginal">是否为原创</param> ///<param name="sortBy">排序</param> /// <returns></returns> private Sql GenerateSql_Paging_Top(long?ownerId, string tenantTypeId, MediaType?mediaType, bool?isOriginal, SortBy_Microblog sortBy = SortBy_Microblog.DateCreated) { Sql sql = Sql.Builder; if (ownerId.HasValue) { sql.Where("OwnerId = @0", ownerId.Value); } if (!string.IsNullOrEmpty(tenantTypeId)) { sql.Where("TenantTypeId = @0", tenantTypeId); } if (isOriginal.HasValue && isOriginal.Value) { sql.Where("OriginalMicroblogId = 0"); } else if (mediaType.HasValue) { switch (mediaType) { case MediaType.Image: sql.Where("HasPhoto = 1"); break; case MediaType.Video: sql.Where("HasVideo = 1"); break; case MediaType.Audio: sql.Where("HasMusic = 1"); break; } } switch (this.PubliclyAuditStatus) { case PubliclyAuditStatus.Again: case PubliclyAuditStatus.Fail: case PubliclyAuditStatus.Pending: case PubliclyAuditStatus.Success: sql.Where("AuditStatus = @0", this.PubliclyAuditStatus); break; case PubliclyAuditStatus.Again_GreaterThanOrEqual: case PubliclyAuditStatus.Pending_GreaterThanOrEqual: sql.Where("AuditStatus > @0", this.PubliclyAuditStatus); break; default: break; } switch (sortBy) { case SortBy_Microblog.DateCreated: sql.OrderBy("MicroblogId desc"); break; case SortBy_Microblog.ForwardedCount: sql.OrderBy("ForwardedCount desc"); break; case SortBy_Microblog.ReplyCount: sql.OrderBy("ReplyCount Desc"); break; } return(sql); }
public ActionResult _OlderMicroblog(int pageIndex = 1, string tenantTypeId = "", MediaType?mediaType = null, bool?isOriginal = null, SortBy_Microblog sortBy = SortBy_Microblog.DateCreated) { //获取微博分页数据 PagingDataSet <MicroblogEntity> microblogEntities = microblogService.GetPagings(pageIndex, tenantTypeId: TenantTypeIds.Instance().User(), sortBy: sortBy); //当第一次加载页面时获取当前页的最新一条微博的ID if (pageIndex == 1) { ViewData["lastMicroblogId"] = microblogEntities.OrderByDescending(m => m.MicroblogId).Select(m => m.MicroblogId).FirstOrDefault(); } ViewData["pageCount"] = microblogEntities.PageCount; return(View("_NewMicroblogList", microblogEntities.AsEnumerable <MicroblogEntity>())); }
/// <summary> /// 微博图片模式数据页 /// </summary> /// <param name="pageIndex"></param> /// <param name="tenantTypeId"></param> /// <param name="mediaType"></param> /// <param name="isOriginal"></param> /// <param name="sortBy"></param> /// <returns></returns> public ActionResult _Waterfall(int pageIndex = 1, string tenantTypeId = "", MediaType? mediaType = null, bool? isOriginal = null, SortBy_Microblog sortBy = SortBy_Microblog.DateCreated) { //获取微博分页数据 PagingDataSet<MicroblogEntity> MicroblogEntities = microblogService.GetPagings(pageIndex, tenantTypeId: TenantTypeIds.Instance().User(), mediaType: mediaType, sortBy: sortBy); //获取微博图片 AttachmentService<Attachment> attachementService = new AttachmentService<Attachment>(TenantTypeIds.Instance().Microblog()); foreach (var MicroblogEntity in MicroblogEntities.Where(n => n.HasPhoto)) { IEnumerable<Attachment> attachments = attachementService.GetsByAssociateId(MicroblogEntity.MicroblogId); if (attachments != null && attachments.Count<Attachment>() > 0) { MicroblogEntity.ImageWidth = attachments.First().Width; MicroblogEntity.ImageUrl = SiteUrls.Instance().ImageUrl(attachments.First(), TenantTypeIds.Instance().Microblog(), ImageSizeTypeKeys.Instance().Big()); } } //设置当前登录用户对当前页用户的关注情况 //如果当前登录用户关注了该用户 return View(MicroblogEntities.AsEnumerable<MicroblogEntity>()); }
/// <summary> /// 获取指定条数的微博 /// </summary> ///<param name="topNumber">待获取条数</param> ///<param name="tenantTypeId">租户类型Id</param> /// <param name="mediaType"><see cref="MediaType"/></param> /// <param name="isOriginal">是否为原创</param> ///<param name="sortBy">排序</param> /// <returns></returns> public IEnumerable <MicroblogEntity> GetTops(int topNumber, string tenantTypeId = "", MediaType?mediaType = null, bool?isOriginal = null, SortBy_Microblog sortBy = SortBy_Microblog.DateCreated) { return(microblogRepository.GetTops(topNumber, tenantTypeId, mediaType, isOriginal, sortBy)); }
/// <summary> /// 获取微博分页数据 /// </summary> ///<param name="pageIndex">待获取条数</param> ///<param name="tenantTypeId">租户类型Id</param> /// <param name="mediaType"><see cref="MediaType"/></param> /// <param name="isOriginal">是否为原创</param> ///<param name="sortBy">排序</param> /// <returns></returns> public PagingDataSet <MicroblogEntity> GetPagings(int pageIndex, string tenantTypeId = "", MediaType?mediaType = null, bool?isOriginal = null, SortBy_Microblog sortBy = SortBy_Microblog.DateCreated) { return(GetPagingEntities(pageSize, pageIndex, CachingExpirationType.ObjectCollection, () => { return GetCackeKey_PagingMicroblogs(tenantTypeId, mediaType, isOriginal, sortBy); }, () => { return GenerateSql_Paging_Top(null, tenantTypeId, mediaType, isOriginal, sortBy); })); }
/// <summary> /// 微博列表模式页 /// </summary> /// <returns></returns> public ActionResult Microblog(SortBy_Microblog sortBy = SortBy_Microblog.DateCreated, long tagGroupId = 0) { pageResourceManager.InsertTitlePart("广场"); //获取标签分组 ViewData["tagGroup"] = tagService.GetGroups(TenantTypeIds.Instance().Microblog()); ViewData["sortBy"] = sortBy; ViewData["tagGroupId"] = tagGroupId; return View(); }
/// <summary> /// 根据拥有者获取指定条数的微博 /// </summary> ///<param name="ownerId">微博拥有者Id</param> ///<param name="topNumber">待获取条数</param> ///<param name="tenantTypeId">租户类型Id</param> ///<param name="mediaType"><see cref="MediaType"/></param> ///<param name="isOriginal">是否为原创</param> ///<param name="sortBy">排序</param> /// <returns></returns> public IEnumerable<MicroblogEntity> GetTops(long ownerId, int topNumber, string tenantTypeId = "", MediaType? mediaType = null, bool? isOriginal = null, SortBy_Microblog sortBy = SortBy_Microblog.DateCreated) { if (string.IsNullOrEmpty(tenantTypeId)) { tenantTypeId = TenantTypeIds.Instance().Microblog(); } return microblogRepository.GetTops(ownerId, topNumber, tenantTypeId, mediaType, isOriginal, sortBy); }
/// <summary> /// 微博图片模式数据页 /// </summary> /// <param name="pageIndex"></param> /// <param name="tenantTypeId"></param> /// <param name="mediaType"></param> /// <param name="isOriginal"></param> /// <param name="sortBy"></param> /// <returns></returns> public ActionResult _Waterfall(int pageIndex = 1, string tenantTypeId = "", MediaType?mediaType = null, bool?isOriginal = null, SortBy_Microblog sortBy = SortBy_Microblog.DateCreated) { //获取微博分页数据 PagingDataSet <MicroblogEntity> MicroblogEntities = microblogService.GetPagings(pageIndex, tenantTypeId: TenantTypeIds.Instance().User(), mediaType: mediaType, sortBy: sortBy); //获取微博图片 AttachmentService <Attachment> attachementService = new AttachmentService <Attachment>(TenantTypeIds.Instance().Microblog()); foreach (var MicroblogEntity in MicroblogEntities.Where(n => n.HasPhoto)) { IEnumerable <Attachment> attachments = attachementService.GetsByAssociateId(MicroblogEntity.MicroblogId); if (attachments != null && attachments.Count <Attachment>() > 0) { MicroblogEntity.ImageWidth = attachments.First().Width; MicroblogEntity.ImageUrl = SiteUrls.Instance().ImageUrl(attachments.First(), TenantTypeIds.Instance().Microblog(), ImageSizeTypeKeys.Instance().Big()); } } //设置当前登录用户对当前页用户的关注情况 //如果当前登录用户关注了该用户 return(View(MicroblogEntities.AsEnumerable <MicroblogEntity>())); }
/// <summary> /// 获取指定条数的微博 /// </summary> ///<param name="topNumber">待获取条数</param> ///<param name="tenantTypeId">租户类型Id</param> /// <param name="mediaType"><see cref="MediaType"/></param> /// <param name="isOriginal">是否为原创</param> ///<param name="sortBy">排序</param> /// <returns></returns> public IEnumerable<MicroblogEntity> GetTops(int topNumber, string tenantTypeId = "", MediaType? mediaType = null, bool? isOriginal = null, SortBy_Microblog sortBy = SortBy_Microblog.DateCreated) { return microblogRepository.GetTops(topNumber, tenantTypeId, mediaType, isOriginal, sortBy); }
//reply:已修改 /// <summary> /// 获取微博分页数据 /// </summary> ///<param name="pageIndex">待获取条数</param> ///<param name="tenantTypeId">租户类型Id</param> /// <param name="mediaType"><see cref="MediaType"/></param> /// <param name="isOriginal">是否为原创</param> ///<param name="sortBy">排序</param> /// <returns></returns> public PagingDataSet<MicroblogEntity> GetPagings(int pageIndex, string tenantTypeId = "", MediaType? mediaType = null, bool? isOriginal = null, SortBy_Microblog sortBy = SortBy_Microblog.DateCreated) { return microblogRepository.GetPagings(pageIndex, tenantTypeId, mediaType, isOriginal, sortBy); }
/// <summary> /// 根据拥有者获取指定条数的微博 /// </summary> ///<param name="ownerId">微博拥有者Id</param> ///<param name="topNumber">待获取条数</param> ///<param name="tenantTypeId">租户类型Id</param> ///<param name="mediaType"><see cref="MediaType"/></param> ///<param name="isOriginal">是否为原创</param> ///<param name="sortBy">排序</param> /// <returns></returns> public IEnumerable <MicroblogEntity> GetTops(long ownerId, int topNumber, string tenantTypeId = "", MediaType?mediaType = null, bool?isOriginal = null, SortBy_Microblog sortBy = SortBy_Microblog.DateCreated) { if (string.IsNullOrEmpty(tenantTypeId)) { tenantTypeId = TenantTypeIds.Instance().Microblog(); } return(microblogRepository.GetTops(ownerId, topNumber, tenantTypeId, mediaType, isOriginal, sortBy)); }
/// <summary> /// 微博广场首页(列表模式) /// </summary> /// <returns></returns> public static string Microblog(this SiteUrls siteUrls, SortBy_Microblog sortBy = SortBy_Microblog.DateCreated, long tagGroupId = 0) { return CachedUrlHelper.Action("Microblog", "ChannelMicroblog", MicroblogAreaName, new RouteValueDictionary { { "sortBy", sortBy }, { "tagGroupId", tagGroupId } }); }
/// <summary> /// 根据用户获取指定条数的微博 /// </summary> /// <param name="userId">用户Id</param> /// <param name="mediaType"><see cref="MediaType"/></param> /// <param name="isOriginal">是否为原创</param> ///<param name="topNumber">待获取条数</param> ///<param name="tenantTypeId">租户类型Id</param> ///<param name="sortBy">排序</param> /// <returns></returns> public IEnumerable <MicroblogEntity> GetTops(long userId, MediaType?mediaType, bool?isOriginal, int topNumber, string tenantTypeId = "", SortBy_Microblog sortBy = SortBy_Microblog.DateCreated) { return(GetTopEntities(topNumber, CachingExpirationType.ObjectCollection, () => { StringBuilder cacheKey = new StringBuilder(RealTimeCacheHelper.GetListCacheKeyPrefix(CacheVersionType.AreaVersion, "UserId", userId)); cacheKey.AppendFormat("TopMicroblogsByUser::TenantTypeId-{0}:sortBy-{1}:type-{2}:isOriginal-{3}", tenantTypeId, ((int)sortBy).ToString(), mediaType, isOriginal); return cacheKey.ToString(); }, () => { Sql sql = Sql.Builder; sql.Where("UserId = @0", userId); if (!string.IsNullOrEmpty(tenantTypeId)) { sql.Where("TenantTypeId = @0", tenantTypeId); } if (isOriginal.HasValue && isOriginal.Value) { sql.Where("OriginalMicroblogId = 0"); } else if (mediaType.HasValue) { switch (mediaType) { case MediaType.Image: sql.Where("HasPhoto = 1"); break; case MediaType.Video: sql.Where("HasVideo = 1"); break; case MediaType.Audio: sql.Where("HasMusic = 1"); break; } } switch (this.PubliclyAuditStatus) { case PubliclyAuditStatus.Again: case PubliclyAuditStatus.Fail: case PubliclyAuditStatus.Pending: case PubliclyAuditStatus.Success: sql.Where("AuditStatus = @0", this.PubliclyAuditStatus); break; case PubliclyAuditStatus.Again_GreaterThanOrEqual: case PubliclyAuditStatus.Pending_GreaterThanOrEqual: sql.Where("AuditStatus > @0", this.PubliclyAuditStatus); break; default: break; } switch (sortBy) { case SortBy_Microblog.DateCreated: sql.OrderBy("MicroblogId desc"); break; case SortBy_Microblog.ForwardedCount: sql.Where("ForwardedCount desc"); break; case SortBy_Microblog.ReplyCount: sql.Where("ReplyCount Desc"); break; } return sql; })); }
/// <summary> /// 微博列表 /// </summary> /// <returns></returns> public static string _List(this SiteUrls siteUrls, SortBy_Microblog? sortBy = null, long? tagGroupId = null, int pageIndex = 1) { RouteValueDictionary routeValues = new RouteValueDictionary(); if (tagGroupId != null) routeValues.Add("tagGroupId", tagGroupId); if (sortBy != null) routeValues.Add("sortBy", sortBy.Value); routeValues.Add("pageIndex", pageIndex); return CachedUrlHelper.Action("_List", "ChannelMicroblog", MicroblogAreaName, routeValues); }
/// <summary> /// 根据拥有者获取指定条数的微博 /// </summary> ///<param name="ownerId">微博拥有者Id</param> ///<param name="topNumber">待获取条数</param> ///<param name="tenantTypeId">租户类型Id</param> ///<param name="mediaType"><see cref="MediaType"/></param> ///<param name="isOriginal">是否为原创</param> ///<param name="sortBy">排序</param> /// <returns></returns> public IEnumerable <MicroblogEntity> GetTops(long ownerId, int topNumber, string tenantTypeId, MediaType?mediaType = null, bool?isOriginal = null, SortBy_Microblog sortBy = SortBy_Microblog.DateCreated) { return(GetTopEntities(topNumber, CachingExpirationType.ObjectCollection, () => { StringBuilder cacheKey = new StringBuilder(RealTimeCacheHelper.GetListCacheKeyPrefix(CacheVersionType.AreaVersion, "OwnerId", ownerId)); cacheKey.AppendFormat("TopMicroblogsByOwner::TenantTypeId-{0}:sortBy-{1}:type-{2}:isOriginal-{3}", tenantTypeId, ((int)sortBy).ToString(), mediaType, isOriginal); return cacheKey.ToString(); }, () => { return GenerateSql_Paging_Top(ownerId, tenantTypeId, mediaType, isOriginal, sortBy); })); }
public ActionResult _List(SortBy_Microblog? sortBy = null, long? tagGroupId = null, int pageIndex = 1) { //获取微博分页数据 PagingDataSet<MicroblogEntity> microblogs = null; if (tagGroupId.HasValue && tagGroupId.Value > 0) { IEnumerable<string> tagNames = tagService.GetTagsOfGroup(tagGroupId.Value); MicroblogFullTextQuery query = new MicroblogFullTextQuery(); query.PageIndex = pageIndex; query.PageSize = 30;//每页记录数 query.Keywords = tagNames; //调用搜索器进行搜索 MicroblogSearcher microblogSearcher = (MicroblogSearcher)SearcherFactory.GetSearcher(MicroblogSearcher.CODE); microblogs = microblogSearcher.Search(query); } else { microblogs = microblogService.GetPagings(pageIndex, tenantTypeId: TenantTypeIds.Instance().User(), sortBy: sortBy ?? SortBy_Microblog.DateCreated); ////当第一次加载页面时获取当前页的最新一条微博的ID //if (pageIndex == 1) //{ // ViewData["lastMicroblogId"] = microblogs.OrderByDescending(m => m.MicroblogId).Select(m => m.MicroblogId).FirstOrDefault(); //} } return View(microblogs); }
/// <summary> /// 获取微博分页列表的CacheKey /// </summary> /// <param name="tenantTypeId">租户类型Id</param> /// <param name="mediaType">多媒体类型</param> /// <param name="isOriginal">是否为原创</param> /// <param name="sortBy">排序字段</param> /// <returns></returns> private string GetCackeKey_PagingMicroblogs(string tenantTypeId, MediaType?mediaType, bool?isOriginal, SortBy_Microblog sortBy) { StringBuilder cacheKey = new StringBuilder(RealTimeCacheHelper.GetListCacheKeyPrefix(CacheVersionType.GlobalVersion)); cacheKey.AppendFormat("PagingsMicroblogs::TenantTypeId-{0}:sortBy-{1}:type-{2},isOriginal-{3}", tenantTypeId, ((int)sortBy).ToString(), mediaType, isOriginal); return(cacheKey.ToString()); }
/// <summary> /// 微博广场首页(列表模式) /// </summary> /// <returns></returns> public static string Microblog(this SiteUrls siteUrls, SortBy_Microblog sortBy = SortBy_Microblog.DateCreated, long tagGroupId = 0) { return(CachedUrlHelper.Action("Microblog", "ChannelMicroblog", MicroblogAreaName, new RouteValueDictionary { { "sortBy", sortBy }, { "tagGroupId", tagGroupId } })); }
//reply:已修改 /// <summary> /// 获取微博分页数据 /// </summary> ///<param name="pageIndex">待获取条数</param> ///<param name="tenantTypeId">租户类型Id</param> /// <param name="mediaType"><see cref="MediaType"/></param> /// <param name="isOriginal">是否为原创</param> ///<param name="sortBy">排序</param> /// <returns></returns> public PagingDataSet <MicroblogEntity> GetPagings(int pageIndex, string tenantTypeId = "", MediaType?mediaType = null, bool?isOriginal = null, SortBy_Microblog sortBy = SortBy_Microblog.DateCreated) { return(microblogRepository.GetPagings(pageIndex, tenantTypeId, mediaType, isOriginal, sortBy)); }