package com.kingschan.blog.common.freemarker.directive.article; import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; import com.kingschan.blog.model.vo.ArticleVo; import org.jsoup.Jsoup; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.kingschan.blog.dao.Pagination; import com.kingschan.blog.po.Article; import com.kingschan.blog.services.ArticleService; import freemarker.core.Environment; import freemarker.template.ObjectWrapper; import freemarker.template.TemplateDirectiveBody; import freemarker.template.TemplateDirectiveModel; import freemarker.template.TemplateException; import freemarker.template.TemplateModel; /** * * <pre> * 类名称:CategoryDirective * 类描述: * 创建人:陈国祥 (kingschan) * 创建时间:2016-2-20 上午9:28:48 * 修改人:Administrator * 修改时间:2016-2-20 上午9:28:48 * 修改备注: * @version V1.0 * </pre> */ @Component("Article") public class ArticleDirective implements TemplateDirectiveModel { @Autowired private ArticleService article_serv; @SuppressWarnings("unchecked") @Override public void execute(Environment env, @SuppressWarnings("rawtypes") Map params, TemplateModel[] tm, TemplateDirectiveBody body) throws TemplateException, IOException { List<ArticleVo> lis=null; try { int page =params.containsKey("page")&¶ms.get("page").toString().matches("\\d+")?Integer.valueOf(params.get("page").toString()):1; int limit =params.containsKey("limit")&¶ms.get("limit").toString().matches("\\d+")?Integer.valueOf(params.get("limit").toString()):10; String date=params.containsKey("date")?params.get("date").toString():"";//日期 String tag=params.containsKey("tag")?params.get("tag").toString():"";//标签 String category=params.containsKey("category")?params.get("category").toString():"";//类型 String categoryId=params.containsKey("categoryId")?params.get("categoryId").toString():"";//类型 String fulltext=params.containsKey("fulltext")?params.get("fulltext").toString():"";//全文检索 String title=params.containsKey("title")?params.get("title").toString():"";//文章标题 String website_id=params.containsKey("website_id")?params.get("website_id").toString():"";//网站 String orderby=params.containsKey("orderby")?params.get("orderby").toString():"";//排序 String model=params.containsKey("model")?params.get("model").toString():"";// font | back 前端还是后台 Map<String, Object> map = new HashMap<String, Object>(); map.put("model", model); Pagination p=null; if (!category.isEmpty()) { map.put("category", category); }else if (!categoryId.isEmpty()) { map.put("categoryId", categoryId); }else if (date.matches("\\d+")) { map.put("year", Integer.valueOf(date.substring(0, 4))); map.put("month", Integer.valueOf(date.substring(4,6))); if(date.length()==8){ map.put("day", Integer.valueOf(date.substring(6))); } } if (!title.isEmpty()) { map.put("title", params.get("title").toString()); } if (!orderby.isEmpty()) { map.put("orderby", orderby); } if (!tag.isEmpty()) { //通过标签名取文章 p=article_serv.getArticleByLable(params.get("tag").toString(),website_id, page,limit); }else if (!fulltext.isEmpty()) { //全文检索 p=article_serv.getFullTextSearch(page, limit, website_id,model.equals("back"), fulltext, "articleTitle","articleText.articleContent","id"); }else{ p=article_serv.getArticleList(page,limit, website_id, map); } if (fulltext.isEmpty()) { lis=(List<ArticleVo>) p.getData(); String summary=null; for (ArticleVo article : lis) { if (null==article.getArticleSummary()||article.getArticleSummary().isEmpty()) { summary=Jsoup.parse(article.getArticleContent()).text(); summary=summary.length()>300? summary.substring(0,300):summary; }else { summary=Jsoup.parse(article.getArticleSummary()).text(); } article.setArticleSummary(summary); } } env.setVariable("article_lis", ObjectWrapper.DEFAULT_WRAPPER.wrap(fulltext.isEmpty()?lis:p.getData())); env.setVariable("page", ObjectWrapper.DEFAULT_WRAPPER.wrap(p)); body.render(env.getOut()); } catch (Exception e) { e.printStackTrace(); } } }