/// <summary> /// 获取词条排行分页集合 /// </summary> /// <returns>词条分页列表</returns> public PagingDataSet <WikiPage> Gets(string keyWord, string tenantTypeId, long?ownerId = null, bool ignoreAudit = false, long?categoryId = null, string tagName = null, bool?isEssential = null, SortBy_WikiPage sortBy = SortBy_WikiPage.DateCreated_Desc, int pageSize = 20, int pageIndex = 1) { return(wikiPageRepository.Gets(keyWord, tenantTypeId, ownerId, ignoreAudit, categoryId, tagName, isEssential, sortBy, pageSize, pageIndex)); }
/// <summary> /// 增加用于首页的词条列表 /// </summary> /// <returns></returns> public ActionResult _WikiIndex(int pageSize, int pageIndex, SortBy_WikiPage sortBy_WikiPage) { PagingDataSet <WikiPage> wikiPages = wikiService.Gets(TenantTypeIds.Instance().Wiki(), null, false, null, string.Empty, null, sortBy_WikiPage, pageSize, pageIndex); return(View(wikiPages)); }
/// <summary> /// /// </summary> /// <param name="tenantTypeId"></param> /// <param name="topNumber"></param> /// <param name="categoryId"></param> /// <param name="isEssential"></param> /// <param name="sortBy"></param> /// <returns></returns> public IEnumerable <WikiPage> GetTopsForExtractEntry(string tenantTypeId, int topNumber, long?categoryId, bool?isEssential, SortBy_WikiPage sortBy) { IEnumerable <WikiPage> wikis = wikiPageRepository.GetTops(tenantTypeId, topNumber, categoryId, isEssential, sortBy); IEnumerable <WikiPage> iwikis = wikis as IEnumerable <WikiPage>; return(iwikis); }
/// <summary> /// 获取词条的排行数据 /// </summary> /// <param name="tenantTypeId">租户类型Id</param> /// <param name="topNumber">前多少条</param> /// <param name="categoryId">类别Id</param> /// <param name="isEssential">是否精华</param> /// <param name="sortBy">词条排序依据</param> /// <returns>词条列表</returns> public IEnumerable <WikiPage> GetTops(string tenantTypeId, int topNumber, long?categoryId, bool?isEssential, SortBy_WikiPage sortBy) { return(wikiPageRepository.GetTops(tenantTypeId, topNumber, categoryId, isEssential, sortBy)); }
public static string _WikiIndex(this SiteUrls siteUrls, int pageSize, int pageIndex, SortBy_WikiPage sortBy_WikiPage) { RouteValueDictionary routeValueDictionary = new RouteValueDictionary(); routeValueDictionary.Add("pageSize", pageSize); routeValueDictionary.Add("pageIndex", pageIndex); routeValueDictionary.Add("sortBy_WikiPage", sortBy_WikiPage); return(CachedUrlHelper.Action("_WikiIndex", "ChannelWiki", WikiAreaName, routeValueDictionary)); }
/// <summary> /// 获取词条排行分页集合 /// </summary> /// <param name="tenantTypeId">租户类型Id</param> /// <param name="ignoreAudit">是否忽略审核状态</param> /// <param name="ownerId">所有者id</param> /// <param name="categoryId">类别Id</param> /// <param name="tagName">标签名称</param> /// <param name="isEssential">是否精华</param> /// <param name="sortBy">帖子排序依据</param> /// <param name="pageSize">分页大小</param> /// <param name="pageIndex">页码</param> /// <returns>词条分页列表</returns> public PagingDataSet <WikiPage> Gets(string keyWord, string tenantTypeId, long?ownerId, bool ignoreAudit, long?categoryId, string tagName, bool?isEssential, SortBy_WikiPage sortBy = SortBy_WikiPage.DateCreated_Desc, int pageSize = 20, int pageIndex = 1) { var sql = Sql.Builder.Select("spb_WikiPages.*").From("spb_WikiPages"); var whereSql = Sql.Builder.Where("spb_WikiPages.IsLogicalDelete=0"); var orderSql = Sql.Builder; if (!string.IsNullOrEmpty(tenantTypeId)) { whereSql.Where("spb_WikiPages.TenantTypeId=@0", tenantTypeId); } if (!string.IsNullOrEmpty(keyWord)) { whereSql.Where("spb_WikiPages.Title like @0", "%" + keyWord + "%"); } if (ownerId.HasValue) { whereSql.Where("spb_WikiPages.OwnerId=@0", ownerId.Value); } if (categoryId.HasValue && categoryId > 0) { sql.InnerJoin("tn_ItemsInCategories").On("spb_WikiPages.PageId=tn_ItemsInCategories.ItemId"); whereSql.Where("tn_ItemsInCategories.CategoryId=@0", categoryId.Value); } if (!string.IsNullOrEmpty(tagName)) { whereSql.Where("spb_WikiPages.PageId in ( select ItemId from tn_ItemsInTags where tn_ItemsInTags.TenantTypeId = @0 and tn_ItemsInTags.TagName=@1 )", TenantTypeIds.Instance().WikiPage(), tagName); } if (!ignoreAudit) { switch (this.PubliclyAuditStatus) { case PubliclyAuditStatus.Again: case PubliclyAuditStatus.Fail: case PubliclyAuditStatus.Pending: case PubliclyAuditStatus.Success: whereSql.Where("spb_WikiPages.AuditStatus=@0", this.PubliclyAuditStatus); break; case PubliclyAuditStatus.Again_GreaterThanOrEqual: case PubliclyAuditStatus.Pending_GreaterThanOrEqual: whereSql.Where("spb_WikiPages.AuditStatus>@0", this.PubliclyAuditStatus); break; default: break; } } if (isEssential.HasValue) { whereSql.Where("spb_WikiPages.IsEssential=@0", isEssential.Value); } CountService countService = new CountService(TenantTypeIds.Instance().WikiPage()); string countTableName = countService.GetTableName_Counts(); switch (sortBy) { case SortBy_WikiPage.DateCreated_Desc: orderSql.OrderBy("spb_WikiPages.PageId desc"); break; case SortBy_WikiPage.StageHitTimes: StageCountTypeManager stageCountTypeManager = StageCountTypeManager.Instance(TenantTypeIds.Instance().WikiPage()); int stageCountDays = stageCountTypeManager.GetMaxDayCount(CountTypes.Instance().HitTimes()); string stageCountType = stageCountTypeManager.GetStageCountType(CountTypes.Instance().HitTimes(), stageCountDays); sql.LeftJoin(string.Format("(select * from {0} WHERE ({0}.CountType = '{1}')) c", countTableName, stageCountType)) .On("PageId = c.ObjectId"); orderSql.OrderBy("c.StatisticsCount desc"); break; default: orderSql.OrderBy("spb_WikiPages.PageId desc"); break; } sql.Append(whereSql).Append(orderSql); return(GetPagingEntities(pageSize, pageIndex, sql)); }
/// <summary> /// 获取词条的排行数据 /// </summary> /// <param name="tenantTypeId">租户类型Id</param> /// <param name="topNumber">前多少条</param> /// <param name="categoryId">类别Id</param> /// <param name="isEssential">是否精华</param> /// <param name="sortBy">词条排序依据</param> /// <returns>词条列表</returns> public IEnumerable <WikiPage> GetTops(string tenantTypeId, int topNumber, long?categoryId, bool?isEssential, SortBy_WikiPage sortBy) { return(GetTopEntities(topNumber, CachingExpirationType.UsualObjectCollection, () => { StringBuilder cacheKey = new StringBuilder(); cacheKey.AppendFormat("WikiTops::TenantTypeId-{0}:CategoryId-{1}:IsEssential-{2}:SortBy-{3}", tenantTypeId, categoryId, isEssential, sortBy); return cacheKey.ToString(); }, () => { var sql = Sql.Builder.Select("spb_WikiPages.*") .From("spb_WikiPages"); var whereSql = Sql.Builder.Where("spb_WikiPages.IsLogicalDelete=0"); if (!string.IsNullOrEmpty(tenantTypeId)) { whereSql.Where("spb_WikiPages.TenantTypeId=@0", tenantTypeId); } if (categoryId.HasValue && categoryId > 0) { sql.InnerJoin("tn_ItemsInCategories").On("spb_WikiPages.PageId=tn_ItemsInCategories.ItemId"); whereSql.Where("tn_ItemsInCategories.CategoryId=@0", categoryId.Value); } switch (this.PubliclyAuditStatus) { case PubliclyAuditStatus.Again: case PubliclyAuditStatus.Fail: case PubliclyAuditStatus.Pending: case PubliclyAuditStatus.Success: whereSql.Where("spb_WikiPages.AuditStatus=@0", this.PubliclyAuditStatus); break; case PubliclyAuditStatus.Again_GreaterThanOrEqual: case PubliclyAuditStatus.Pending_GreaterThanOrEqual: whereSql.Where("spb_WikiPages.AuditStatus>@0", this.PubliclyAuditStatus); break; default: break; } if (isEssential.HasValue) { whereSql.Where("spb_WikiPages.IsEssential=@0", isEssential); } var orderSql = Sql.Builder; CountService countService = new CountService(TenantTypeIds.Instance().WikiPage()); string countTableName = countService.GetTableName_Counts(); switch (sortBy) { case SortBy_WikiPage.DateCreated_Desc: orderSql.OrderBy("spb_WikiPages.PageId desc"); break; case SortBy_WikiPage.StageHitTimes: StageCountTypeManager stageCountTypeManager = StageCountTypeManager.Instance(TenantTypeIds.Instance().WikiPage()); int stageCountDays = stageCountTypeManager.GetMaxDayCount(CountTypes.Instance().HitTimes()); string stageCountType = stageCountTypeManager.GetStageCountType(CountTypes.Instance().HitTimes(), stageCountDays); sql.LeftJoin(string.Format("(select * from {0} WHERE ({0}.CountType = '{1}')) c", countTableName, stageCountType)) .On("PageId = c.ObjectId"); orderSql.OrderBy("c.StatisticsCount desc"); break; default: orderSql.OrderBy("spb_WikiPages.PageId desc"); break; } return sql.Append(whereSql).Append(orderSql); })); }