public IList <ArticleModel> SelectByPage(ArticleConditionModel articleConditionModel) { ArticleCondition condition = ConvertCondition(articleConditionModel); IEnumerable <Article> articles = _articleRepository.SelectByPage(articleConditionModel.PageSize, articleConditionModel.PageIndex, condition); Dictionary <string, string> userNames = _userRepository.SelectNameWithAccountDic(articles.Select(s => s.Author)); IList <ArticleModel> articleModels = new List <ArticleModel>(); foreach (var item in articles) { ArticleModel articleModel = new ArticleModel(); articleModel.Id = item.Id; articleModel.ArticleType = item.ArticleType.GetEnumText(); articleModel.TextSection = item.TextSection.Trim(); articleModel.Title = item.Title; articleModel.AuthorAccount = item.Author; articleModel.Author = userNames[item.Author]; articleModel.CreateTime = item.CreateTime.Value.ToString("yyyy-MM-dd hh:mm"); articleModel.IsDraft = item.IsDraft ? "是" : "否"; articleModel.PraiseCount = item.PraiseCount; articleModel.BrowserCount = item.BrowserCount; articleModel.CommentCount = string.IsNullOrEmpty(item.CommentIds) ? 0 : item.CommentIds.Split(',').Length; articleModels.Add(articleModel); } return(articleModels); }
/// <summary> /// 分页查询 /// </summary> /// <param name="currentPage"></param> /// <param name="pageSize"></param> /// <param name="condition"></param> /// <returns></returns> public IList <ArticleDTO> SelectByPage(int currentPage, int pageSize, ArticleCondition condition = null, string loginAccount = null) { IEnumerable <Article> articles = _articleRepoistory.SelectByPageWithDapper(currentPage, pageSize, ConvertCondition(condition)); IEnumerable <string> accounts = articles.Select(s => s.Author); Dictionary <string, string> accountWithName = _userRepoistory.AccountWithName(accounts); IList <ArticleDTO> articleDTOs = new List <ArticleDTO>(); ICacheClient cacheClient = _cacheFactory.CreateClient(CacheType.Redis); Dictionary <int, HashSet <string> > dic = cacheClient.StringGet <Dictionary <int, HashSet <string> > >(Praise_Key); foreach (var item in articles) { ArticleDTO articleDTO = new ArticleDTO(); articleDTO.Id = item.Id; articleDTO.ArticleType = Enum.GetName(typeof(ArticleType), item.ArticleType); articleDTO.Title = item.Title; articleDTO.AuthorAccount = item.Author; articleDTO.AuthorName = accountWithName[item.Author]; articleDTO.ContentBriefly = item.TextSection; articleDTO.CreateDate = item.CreateTime.ToString("yyyy-MM-dd HH:mm"); articleDTO.ReviewCount = item.CommentCount; articleDTO.PraiseCount = item.PraiseCount; articleDTO.ReadCount = item.BrowserCount; if (dic != null && dic.Count > 0 && dic.ContainsKey(item.Id) && !string.IsNullOrEmpty(loginAccount)) { HashSet <string> set = dic[item.Id]; if (set.Contains(loginAccount)) { articleDTO.Praise = true; } } articleDTOs.Add(articleDTO); } return(articleDTOs); }
public IEnumerable <Article> SelectByPage(int pageSize, int pageIndex, ArticleCondition condition = null) { int pageId = pageSize * (pageIndex - 1); DynamicParameters dynamicParameters = new DynamicParameters(); dynamicParameters.Add("pageId", pageId, DbType.Int32); dynamicParameters.Add("pageSize", pageSize, DbType.Int32); string where = Where(condition, ref dynamicParameters); string sql = "SELECT article_id,article_author,article_title,article_textsection,article_articletype,article_isdraft,article_praisecount,article_browsercount,article_comments,article_createtime " + "FROM T_Article WHERE " + where + " ORDER BY article_createtime DESC LIMIT @pageId,@pageSize"; IEnumerable <dynamic> dynamics = Select(sql, dynamicParameters); IList <Article> articles = new List <Article>(); foreach (var d in dynamics) { Article article = new Article( d.article_id , d.article_title , d.article_author , d.article_textsection , (ArticleType)d.article_articletype , Convert.ToBoolean(d.article_isdraft) , d.article_praisecount , d.article_browsercount , d.article_comments , (DateTime)d.article_createtime ); articles.Add(article); } return(articles); }
public ArticleModel Select(ArticleCondition articleCondition = null) { Article article = _articleRepository.Select(articleCondition); UserModel userModel = _userService.SelectUser(article.Author); string content = article.Content; if (content.Contains(ConstantKey.NGINX_FILE_ROUTE_OLD)) { content = content.Replace(ConstantKey.NGINX_FILE_ROUTE_OLD, ConstantKey.NGINX_FILE_ROUTE); } ArticleModel articleModel = new ArticleModel() { Id = article.Id, Title = article.Title, ArticleType = article.ArticleType.GetEnumText(), CreateTime = article.CreateTime.Value.ToString("yyyy/MM/dd"), Content = content, Author = userModel.Username, AuthorAccount = userModel.Account, IsDraft = article.IsDraft ? "是" : "否", Comments = CommentModel.ConvertToCommentModels(article.Comments) }; BrowserCommand browserCommand = new BrowserCommand(article.Id); _eventBus.Publish(browserCommand); return(articleModel); }
public Article Select(ArticleCondition articleCondition = null) { DynamicParameters dynamicParameters = new DynamicParameters(); string where = Where(articleCondition, ref dynamicParameters); string sql = "SELECT article_id,article_author,article_title,article_content,article_articletype,article_comments,article_isdraft,article_createtime " + "FROM T_Article WHERE 1=1 AND " + where; dynamic d = base.SelectSingle(sql, dynamicParameters); IList <Comment> comments = new List <Comment>(); if (!string.IsNullOrEmpty(d.article_comments)) { string article_comments = d.article_comments; comments = _commentRepository.SelectByIds(article_comments.Split(',')); } Article article = new Article( d.article_id , d.article_title , d.article_author , d.article_content , (ArticleType)d.article_articletype , Convert.ToBoolean(d.article_isdraft) , comments , d.article_createtime ); return(article); }
/// <summary> /// 抓换查询条件 /// </summary> /// <param name="condition"></param> /// <returns></returns> private Hashtable ConvertCondition(ArticleCondition condition) { Hashtable hashtable = new Hashtable(); if (condition == null) { return(hashtable); } if (condition.ArticleType != 0) { hashtable.Add("articleType", condition.ArticleType); } if (!string.IsNullOrEmpty(condition.Account)) { hashtable.Add("author", condition.Account); } if (!string.IsNullOrEmpty(condition.TitleContain)) { hashtable.Add("titleContain", condition.TitleContain); } if (!string.IsNullOrEmpty(condition.IsDraft)) { hashtable.Add("isDraft", condition.IsDraft); } if (!string.IsNullOrEmpty(condition.FullText)) { hashtable.Add("fullText", condition.FullText); } return(hashtable); }
public ApiResult SelectContext(int id) { ArticleCondition condition = new ArticleCondition(); condition.IsDraft = false; PageInfoMode result = _articleService.SelectContext(id, condition); return(ApiResult.Success(result)); }
public ApiResult LoadTotal(int articleType) { ArticleCondition condition = new ArticleCondition(); condition.ArticleType = articleType; int count = _articleRepository.SelectCount(condition); return(ApiResult.Success(count)); }
public ApiResult Detail(int id) { ArticleCondition condition = new ArticleCondition(); condition.Id = id; ArticleModel articleModel = _articleService.Select(condition); return(ApiResult.Success(articleModel)); }
public int SelectCount(ArticleConditionModel articleConditionModel = null) { ArticleCondition articleCondition = null; if (articleConditionModel != null) { articleCondition = ConvertCondition(articleConditionModel); } return(_articleRepository.SelectCount(articleCondition)); }
public IEnumerable <dynamic> SelectArticleFile(ArticleCondition articleCondition) { DynamicParameters parameters = new DynamicParameters(); string where = Where(articleCondition, ref parameters); string sql = "SELECT COUNT(*) as count,article_author,article_articletype FROM T_Article WHERE " + where + " GROUP BY article_author,article_articletype"; IEnumerable <dynamic> resultList = Select(sql, parameters); return(resultList); }
public ApiResult SelectArticleFile(string account) { ArticleCondition articleCondition = new ArticleCondition(); articleCondition.Account = account; IList <ArticleFileModel> fileModels = _articleService.SelectArticleFile(articleCondition); UserModel userModel = _userService.SelectUser(account); return(ApiResult.Success(new { fileModels, userModel })); }
public int SelectCount(ArticleCondition condition = null) { DynamicParameters dynamicParameters = new DynamicParameters(); string where = Where(condition, ref dynamicParameters); string sql = "SELECT COUNT(*) FROM T_Article WHERE " + where; int count = base.SelectCount(sql, dynamicParameters); return(count); }
public ApiResult GetArchive() { UserDTO userDTO = Auth.GetLoginUser(); ArticleCondition articleCondition = new ArticleCondition(); articleCondition.IsDraft = "false"; articleCondition.Account = userDTO.Account; List <ArticleFileDTO> articleDTOs = _articleService.SelectArticleFile(articleCondition); return(ApiResult.Success(articleDTOs)); }
private ArticleCondition ConvertCondition(ArticleConditionModel articleConditionModel) { ArticleCondition articleCondition = new ArticleCondition(); articleCondition.ArticleType = articleConditionModel.ArticleType; articleCondition.FullText = articleConditionModel.FullText; articleCondition.IsDraft = Convert.ToBoolean(articleConditionModel.IsDraft); articleCondition.TitleContain = articleConditionModel.TitleContain; if (!string.IsNullOrEmpty(articleConditionModel.Account)) { articleCondition.Account = articleConditionModel.Account; } return(articleCondition); }
public ApiResult SelectArchive() { try { string json = new JWT(_httpContext).ResolveToken(); UserModel userModel = JsonHelper.DeserializeObject <UserModel>(json); ArticleCondition articleCondition = new ArticleCondition(); articleCondition.Account = userModel.Account; IList <ArticleFileModel> fileModels = _articleService.SelectArticleFile(articleCondition); return(ApiResult.Success(fileModels)); } catch (AuthException) { return(ApiResult.Error(HttpStatusCode.BAD_REQUEST, "not login")); } }
public IList <ArticleFileModel> SelectArticleFile(ArticleCondition articleCondition) { articleCondition.IsDraft = false; IEnumerable <dynamic> resultList = _articleRepository.SelectArticleFile(articleCondition); IList <ArticleFileModel> fileModels = new List <ArticleFileModel>(); foreach (var item in resultList) { ArticleFileModel model = new ArticleFileModel(); model.ArticleType = item.article_articletype; model.Total = (int)item.count; model.Account = item.article_author; fileModels.Add(model); } return(fileModels); }
public List <ArticleFileDTO> SelectArticleFile(ArticleCondition articleCondition) { articleCondition.IsDraft = "false"; IEnumerable <dynamic> resultList = _articleRepoistory.SelectArticleFile(ConvertCondition(articleCondition)); List <ArticleFileDTO> fileModels = new List <ArticleFileDTO>(); foreach (var item in resultList) { ArticleFileDTO model = new ArticleFileDTO(); model.ArticleType = item.article_articletype; model.Total = (int)item.count; model.Account = item.article_author; fileModels.Add(model); } return(fileModels); }
/// <summary> /// 查询上一篇下一篇 /// </summary> /// <param name="id"></param> /// <param name="condition"></param> /// <returns></returns> public UpNextDto SelectContext(int id, ArticleCondition condition = null) { IEnumerable <dynamic> dynamics = _articleRepoistory.SelectContext(id, ConvertCondition(condition)); UpNextDto pageInfoMode = new UpNextDto(); foreach (dynamic d in dynamics) { if (d.article_id > id) { pageInfoMode.NextId = d.article_id; pageInfoMode.NextTitle = d.article_title; } else { pageInfoMode.BeforeId = d.article_id; pageInfoMode.BeforeTitle = d.article_title; } } return(pageInfoMode); }
public IEnumerable <dynamic> SelectContext(int id, ArticleCondition articleCondition = null) { DynamicParameters dynamicParameters = new DynamicParameters(); dynamicParameters.Add("article_id", id, DbType.Int32); string where = Where(articleCondition, ref dynamicParameters); string sql = "SELECT article_id,article_title FROM T_Article " + "WHERE article_id IN( " + "SELECT MAX(article_id) " + "FROM T_Article " + "WHERE article_id <@article_id AND " + where + "UNION " + "SELECT MIN(article_id) " + "FROM T_Article " + "WHERE article_id >@article_id AND " + where + ")"; IEnumerable <dynamic> dynamics = DbConnection.Query(sql, dynamicParameters); return(dynamics); }
public PageInfoMode SelectContext(int id, ArticleCondition articleCondition = null) { IEnumerable <dynamic> dynamics = _articleRepository.SelectContext(id, articleCondition); PageInfoMode pageInfoMode = new PageInfoMode(); foreach (dynamic d in dynamics) { if (d.article_id > id) { pageInfoMode.NextId = d.article_id; pageInfoMode.NextTitle = d.article_title; } else { pageInfoMode.BeforeId = d.article_id; pageInfoMode.BeforeTitle = d.article_title; } } return(pageInfoMode); }
public ActionResult Index(ArticleCondition Condition) { ListArticleModel model = new ListArticleModel(); CategoryService service = new CategoryService(); model.Condition = Condition; model.ListCategory = service.ListItem(); model.ListCategory.Insert(0, new Entities.Item() { Text = "Chọn thư mục", Id = 0 }); int total = 0; try { model.ListArticle = _service.List(Condition.CatId, Condition.SearchText, Condition.DisplayOnly, Condition.Page, Condition.PageSize, out total); } catch (Exception ex) { Logs.LogWrite(ex.ToString()); } Paging(Condition.Page, total); return View(model); }
public ApiResult LoadArticlePage([FromBody] ArticleCondition articleCondition) { string loginAccount = ""; try { loginAccount = Auth.GetLoginUser().Account; } catch (AuthException) { loginAccount = ""; } if (articleCondition.LoginUser) { articleCondition.Account = loginAccount; } IList <ArticleDTO> articleDTOs = _articleService.SelectByPage(articleCondition.CurrentPage, articleCondition.PageSize, articleCondition, loginAccount); int count = _articleService.SelectCount(articleCondition); return(ApiResult.Success(new { list = articleDTOs, total = count })); }
/// <summary> /// 拼接查询条件 /// </summary> /// <param name="condition"></param> /// <param name="dynamicParameters"></param> /// <returns></returns> private string Where(ArticleCondition condition, ref DynamicParameters dynamicParameters) { IList <string> sqlList = new List <string>(); if (condition.ArticleType.HasValue && condition.ArticleType != 0) { dynamicParameters.Add("articleType", condition.ArticleType.Value); sqlList.Add("article_articletype = @articleType"); } if (condition.Id.HasValue) { dynamicParameters.Add("id", condition.Id.Value); sqlList.Add("article_id = @id"); } if (!string.IsNullOrEmpty(condition.Account)) { dynamicParameters.Add("author", condition.Account); sqlList.Add("article_author = @author"); } if (!string.IsNullOrEmpty(condition.TitleContain)) { dynamicParameters.Add("titleContain", condition.TitleContain); sqlList.Add("article_title like CONCAT('%',@titleContain,'%')"); } if (condition.IsDraft.HasValue) { dynamicParameters.Add("isDraft", condition.IsDraft.Value, DbType.Boolean); sqlList.Add("article_isdraft = @isDraft"); } if (!string.IsNullOrEmpty(condition.FullText)) { dynamicParameters.Add("fullText", condition.FullText, DbType.String); sqlList.Add("MATCH(article_title,article_content) AGAINST(@fullText IN BOOLEAN MODE)"); } sqlList.Add(" 1=1 "); string sql = string.Join(" AND ", sqlList); return(sql); }
/// <summary> /// 查询数量 /// </summary> /// <param name="condition"></param> /// <returns></returns> public int SelectCount(ArticleCondition condition = null) { int count = _articleRepoistory.SelectCountWithDapper(ConvertCondition(condition)); return(count); }