Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        /// <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);
        }
Esempio n. 7
0
        public ApiResult SelectContext(int id)
        {
            ArticleCondition condition = new ArticleCondition();

            condition.IsDraft = false;
            PageInfoMode result = _articleService.SelectContext(id, condition);

            return(ApiResult.Success(result));
        }
Esempio n. 8
0
        public ApiResult LoadTotal(int articleType)
        {
            ArticleCondition condition = new ArticleCondition();

            condition.ArticleType = articleType;
            int count = _articleRepository.SelectCount(condition);

            return(ApiResult.Success(count));
        }
Esempio n. 9
0
        public ApiResult Detail(int id)
        {
            ArticleCondition condition = new ArticleCondition();

            condition.Id = id;
            ArticleModel articleModel = _articleService.Select(condition);

            return(ApiResult.Success(articleModel));
        }
Esempio n. 10
0
        public int SelectCount(ArticleConditionModel articleConditionModel = null)
        {
            ArticleCondition articleCondition = null;

            if (articleConditionModel != null)
            {
                articleCondition = ConvertCondition(articleConditionModel);
            }
            return(_articleRepository.SelectCount(articleCondition));
        }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
        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 }));
        }
Esempio n. 13
0
        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);
        }
Esempio n. 14
0
        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));
        }
Esempio n. 15
0
        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);
        }
Esempio n. 16
0
 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"));
     }
 }
Esempio n. 17
0
        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);
        }
Esempio n. 18
0
        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);
        }
Esempio n. 19
0
        /// <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);
        }
Esempio n. 20
0
        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);
        }
Esempio n. 21
0
        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);
        }
Esempio n. 22
0
        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);
        }
Esempio n. 23
0
        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 }));
        }
Esempio n. 24
0
        /// <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);
        }
Esempio n. 25
0
        /// <summary>
        /// 查询数量
        /// </summary>
        /// <param name="condition"></param>
        /// <returns></returns>
        public int SelectCount(ArticleCondition condition = null)
        {
            int count = _articleRepoistory.SelectCountWithDapper(ConvertCondition(condition));

            return(count);
        }