/// <summary> /// 设置指定的查询语句并返回当前语句 /// </summary> /// <param name="command">选择语句</param> /// <param name="type">主题类型</param> /// <param name="relativeID">相关ID</param> /// <param name="includeHide">是否包含隐藏主题</param> /// <returns>当前语句</returns> internal static SelectCommand Where(this SelectCommand command, ForumTopicType type, Int32 relativeID, Boolean includeHide) { SqlConditionBuilder c = command.ConditionBuilder; AbstractSqlCondition condition = command.WhereCondition as AbstractSqlCondition; AbstractSqlCondition temp = null; //不包含隐藏 if (!includeHide) { temp = c.Equal(ForumTopicRepository.ISHIDE, false); condition = (condition == null ? temp : condition & temp); } if (type == ForumTopicType.Default) //普通讨论板中包括题目专属讨论板的帖子 { temp = c.LessThan(ForumTopicRepository.TYPE, (Byte)ForumTopicType.Contest); //普通0,题目1,竞赛2 condition = (condition == null ? temp : condition & temp); } else//竞赛或题目专属讨论板只有专属帖子 { temp = c.Equal(ForumTopicRepository.TYPE, (Byte)type) & c.Equal(ForumTopicRepository.RELATIVEID, relativeID); condition = (condition == null ? temp : condition & temp); } return(command.Where(condition)); }
/// <summary> /// 增加缓存中主题总数 /// </summary> /// <param name="type">主题类型</param> /// <param name="relativeID">相关ID</param> public static void IncreaseForumTopicCountCache(ForumTopicType type, Int32 relativeID) { Int32 count = GetForumTopicCountCache(type, relativeID); if (count > 0) { SetForumTopicCountCache(type, relativeID, count + 1); } }
/// <summary> /// 获取主题总数(有缓存) /// </summary> /// <param name="cid">竞赛ID</param> /// <param name="pid">题目ID</param> /// <returns>主题总数</returns> private static Int32 CountForumTopics(String cid, String pid) { ForumTopicType type = ForumTopicManager.GetForumTopicType(cid, pid); Int32 relativeID = ForumTopicManager.GetRelativeID(cid, pid); Int32 recordCount = ForumTopicCache.GetForumTopicCountCache(type, relativeID);//获取缓存 if (recordCount < 0) { recordCount = ForumTopicRepository.Instance.CountEntities(type, relativeID, false); ForumTopicCache.SetForumTopicCountCache(type, relativeID, recordCount);//设置缓存 } return(recordCount); }
/// <summary> /// 分享帖子 /// </summary> /// <param name="model"></param> /// <returns></returns> public static bool ForumTopicType_Edit(ForumTopicType model) { try { using (var conn = DbHelper.CCService()) { var p = new DynamicParameters(); p.Add("@TopicID", model.TopicID); p.Add("@ForumTypeIDS", model.ForumTypeIDS); conn.Execute("ForumTopicType_Edit", p, commandType: CommandType.StoredProcedure); return true; } } catch (Exception e) { return false; } }
/// <summary> /// 获取主题列表 /// </summary> /// <param name="pageIndex">页面索引</param> /// <param name="cid">竞赛ID</param> /// <param name="pid">题目ID</param> /// <returns>主题列表</returns> public static PagedList <ForumTopicEntity> GetForumTopicList(Int32 pageIndex, String cid, String pid) { ForumTopicType type = ForumTopicManager.GetForumTopicType(cid, pid); Int32 relativeID = ForumTopicManager.GetRelativeID(cid, pid); if (type == ForumTopicType.Problem && !ProblemManager.InternalExistsProblem(relativeID)) { throw new InvalidRequstException(RequestType.Problem); } else if (type == ForumTopicType.Contest && !ContestManager.InternalExistsContest(relativeID)) { throw new InvalidRequstException(RequestType.Contest); } Int32 pageSize = ForumTopicManager.FORUM_PAGE_SIZE; Int32 recordCount = ForumTopicManager.CountForumTopics(cid, pid); return(ForumTopicRepository.Instance .GetEntities(pageIndex, pageSize, recordCount, type, relativeID, false) .ToPagedList(pageSize, recordCount)); }
/// <summary> /// 向缓存中写入主题总数 /// </summary> /// <param name="type">主题类型</param> /// <param name="relativeID">相关ID</param> /// <param name="count">主题总数</param> public static void SetForumTopicCountCache(ForumTopicType type, Int32 relativeID, Int32 count) { CacheManager.Set(GetForumTopicCountCacheKey(type, relativeID), count, FORUM_TOPIC_COUNT_CACHE_TIME); }
/// <summary> /// 从缓存中删除主题总数 /// </summary> /// <param name="type">主题类型</param> /// <param name="relativeID">相关ID</param> public static void RemoveForumTopicCountCache(ForumTopicType type, Int32 relativeID) { CacheManager.Remove(GetForumTopicCountCacheKey(type, relativeID)); }
/// <summary> /// 增加缓存中主题总数 /// </summary> /// <param name="type">主题类型</param> /// <param name="relativeID">相关ID</param> public static void IncreaseForumTopicCountCache(ForumTopicType type, Int32 relativeID) { Int32 count = GetForumTopicCountCache(type, relativeID); if (count > 0) SetForumTopicCountCache(type, relativeID, count + 1); }
/// <summary> /// 从缓存中读取主题总数 /// </summary> /// <param name="type">主题类型</param> /// <param name="relativeID">相关ID</param> /// <returns>主题总数</returns> public static Int32 GetForumTopicCountCache(ForumTopicType type, Int32 relativeID) { return CacheManager.GetInt32(GetForumTopicCountCacheKey(type, relativeID)); }
/// <summary> /// 从缓存中读取主题总数 /// </summary> /// <param name="type">主题类型</param> /// <param name="relativeID">相关ID</param> /// <returns>主题总数</returns> public static Int32 GetForumTopicCountCache(ForumTopicType type, Int32 relativeID) { return(CacheManager.GetInt32(GetForumTopicCountCacheKey(type, relativeID))); }
public bool ForumTopicType_Upd(ForumTopicType model) { throw new NotImplementedException(); }
public ForumTopicType ForumTopicType_ADD(ForumTopicType model) { throw new NotImplementedException(); }
/// <summary> /// 获取实体总数 /// </summary> /// <param name="type">主题类型</param> /// <param name="relativeID">相关ID</param> /// <param name="includeHide">是否包含隐藏主题</param> /// <returns>实体总数</returns> public Int32 CountEntities(ForumTopicType type, Int32 relativeID, Boolean includeHide) { return(this.Select() .Where(type, relativeID, includeHide) .Count()); }
/// <summary> /// 获取实体列表 /// </summary> /// <param name="pageIndex">页面索引</param> /// <param name="pageSize">页面大小</param> /// <param name="recordCount">记录总数</param> /// <param name="type">主题类型</param> /// <param name="relativeID">相关ID</param> /// <param name="includeHide">是否包含隐藏主题</param> /// <returns>实体列表</returns> public List <ForumTopicEntity> GetEntities(Int32 pageIndex, Int32 pageSize, Int32 recordCount, ForumTopicType type, Int32 relativeID, Boolean includeHide) { return(this.Select() .Paged(pageSize, pageIndex, recordCount) .Querys(TOPICID, USERNAME, TITLE, TYPE, ISLOCKED, ISHIDE, RELATIVEID, LASTDATE) .Where(type, relativeID, includeHide) .OrderByDesc(LASTDATE, TOPICID) .ToEntityList(this)); }
public async Task GetAnimeForumTopicsAsync_InvalidEnum_ShouldThrowValidationException(ForumTopicType type) { // When var func = _jikan.Awaiting(x => x.GetAnimeForumTopicsAsync(1, type)); // Then await func.Should().ThrowExactlyAsync <JikanValidationException>(); }
public static bool ForumTopicType_Edit(ForumTopicType model) { return new ForumTopicTypeBLL().ForumTopicType_Edit(model); }
public static bool ForumTopicType_Edit(ForumTopicType model) { return(new ForumTopicTypeBLL().ForumTopicType_Edit(model)); }
/// <summary> /// 获取主题总数缓存KEY /// </summary> /// <param name="type">主题类型</param> /// <param name="relativeID">相关ID</param> /// <returns>缓存KEY</returns> private static String GetForumTopicCountCacheKey(ForumTopicType type, Int32 relativeID) { return(String.Format("{0}.{1}:id={2}", FORUM_TOPIC_COUNT_CACHE_KEY, type.ToString(), relativeID.ToString())); }
/// <summary> /// 获取主题总数缓存KEY /// </summary> /// <param name="type">主题类型</param> /// <param name="relativeID">相关ID</param> /// <returns>缓存KEY</returns> private static String GetForumTopicCountCacheKey(ForumTopicType type, Int32 relativeID) { return String.Format("{0}.{1}:id={2}", FORUM_TOPIC_COUNT_CACHE_KEY, type.ToString(), relativeID.ToString()); }