| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238 |
- /**
- The MIT License (MIT) * Copyright (c) 2019 铭飞科技
- * Permission is hereby granted, free of charge, to any person obtaining a copy of
- * this software and associated documentation files (the "Software"), to deal in
- * the Software without restriction, including without limitation the rights to
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
- * the Software, and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
- * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
- * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
- * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
- package net.mingsoft.cms.biz.impl;
- import cn.hutool.core.bean.BeanUtil;
- import cn.hutool.core.bean.copier.CopyOptions;
- import cn.hutool.core.date.DateUtil;
- import cn.hutool.core.io.FileUtil;
- import net.mingsoft.base.constant.Const;
- import net.mingsoft.basic.holder.DataHolder;
- import net.mingsoft.basic.util.BasicUtil;
- import net.mingsoft.cms.bean.CategoryBean;
- import net.mingsoft.cms.bean.ContentBean;
- import net.mingsoft.cms.dao.ICategoryDao;
- import net.mingsoft.cms.entity.CategoryEntity;
- import net.mingsoft.cms.util.CmsParserUtil;
- import net.mingsoft.mdiy.bean.AttributeBean;
- import net.mingsoft.mdiy.bean.PageBean;
- import net.mingsoft.mdiy.entity.ModelEntity;
- import net.mingsoft.mdiy.util.ParserUtil;
- import org.apache.commons.lang3.StringUtils;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import net.mingsoft.base.biz.impl.BaseBizImpl;
- import net.mingsoft.base.dao.IBaseDao;
- import java.io.IOException;
- import java.util.*;
- import net.mingsoft.cms.biz.IContentBiz;
- import net.mingsoft.cms.dao.IContentDao;
- /**
- * 文章管理持久化层
- * @author 铭飞开发团队
- * 创建日期:2019-11-28 15:12:32<br/>
- * 历史修订:<br/>
- */
- @Service("cmscontentBizImpl")
- public class ContentBizImpl extends BaseBizImpl implements IContentBiz {
- /*
- * log4j日志记录
- */
- protected final Logger LOG = LoggerFactory.getLogger(this.getClass());
- @Autowired
- private IContentDao contentDao;
- /**
- * 栏目管理业务层
- */
- @Autowired
- private ICategoryDao categoryDao;
-
-
- @Override
- protected IBaseDao getDao() {
- // TODO Auto-generated method stub
- return contentDao;
- }
- @Override
- public List<CategoryBean> queryIdsByCategoryIdForParser(ContentBean contentBean) {
- contentBean.setAppId(BasicUtil.getAppId());
- return this.contentDao.queryIdsByCategoryIdForParser(contentBean);
- }
- @Override
- public int getSearchCount(ModelEntity contentModel, List diyList, Map whereMap, int appId, String categoryIds) {
- if (contentModel!=null) {
- return contentDao.getSearchCount(contentModel.getModelTableName(),diyList,whereMap, appId,categoryIds);
- }
- return contentDao.getSearchCount(null,null,whereMap, appId,categoryIds);
- }
- /*
- * 任务调度静态化任务
- */
- public void staticizeTask(Integer appId, String tmpFileName, String generateFileName) {
- Date now = new Date();
- LOG.info("定时静态化任务", now);
- //生成栏目,更新所有栏目
- try {
- DataHolder.set(ParserUtil.APP_ID, appId);
- genernateColumn();
- generaterIndex(tmpFileName, generateFileName);
- generateArticle(DateUtil.format(now, "yyyy-MM-dd"));
- LOG.info("静态化完成", new Date());
- } catch (IOException e) {
- LOG.info("静态化失败", new Date());
- e.printStackTrace();
- }
- }
- //文章
- private void generateArticle(String dateTime) throws IOException {
- // 网站风格物理路径
- List<CategoryBean> articleIdList = null;
- List<CategoryEntity> categoryList = null;
- AttributeBean attributeBean = new AttributeBean();
- ContentBean contentBean = new ContentBean();
- contentBean.setBeginTime(dateTime);
- Map<String, Object> map = new HashMap<>();
- map.put(ParserUtil.APP_ID, BasicUtil.getAppId());
- PageBean page = new PageBean();
- map.put(ParserUtil.HTML, ParserUtil.HTML);
- map.put(ParserUtil.URL, BasicUtil.getUrl());
- map.put(ParserUtil.PAGE, page);
- CategoryEntity categoryEntity = new CategoryEntity();
- categoryList = categoryDao.query(categoryEntity);
- for(CategoryEntity category : categoryList){
- contentBean.setContentCategoryId(category.getId());
- // 分类是列表
- if(category.getCategoryType().equals("1")){
- // 判断模板文件是否存在
- if (!FileUtil.exist(ParserUtil.buildTempletPath(category.getCategoryListUrl())) || StringUtils.isEmpty(category.getCategoryListUrl())) {
- LOG.error("模板不存在:{}",category.getCategoryUrl());
- continue;
- }
- // 获取文章列表表属性
- ParserUtil.read(category.getCategoryListUrl(),map, page,attributeBean);
- contentBean.setFlag(attributeBean.getFlag());
- contentBean.setNoflag(attributeBean.getNoflag());
- contentBean.setOrder(attributeBean.getOrder());
- contentBean.setOrderBy(attributeBean.getOrderby());
- }
- articleIdList = queryIdsByCategoryIdForParser(contentBean);
- // 有符合条件的就更新
- if (articleIdList.size() > 0) {
- CmsParserUtil.generateBasic(articleIdList);
- }
- }
- }
- //栏目
- private void genernateColumn() throws IOException {
- List<CategoryEntity> columns = new ArrayList<>();
- // 获取所有的内容管理栏目
- CategoryEntity categoryEntity=new CategoryEntity();
- Integer appId = (Integer) DataHolder.get(ParserUtil.APP_ID);
- categoryEntity.setAppId(appId);
- columns = categoryDao.query(categoryEntity);
- List<CategoryBean> articleIdList = null;
- // 1、设置模板文件夹路径
- // 获取栏目列表模版
- for (CategoryEntity column : columns) {
- ContentBean contentBean = new ContentBean();
- contentBean.setContentCategoryId(column.getId());
- // 分类是列表
- if(column.getCategoryType().equals("1")) {
- // 判断模板文件是否存在
- if (!FileUtil.exist(ParserUtil.buildTempletPath(column.getCategoryListUrl()))) {
- LOG.error("模板不存在:{}", column.getCategoryUrl());
- continue;
- }
- //获取模板中列表标签中的条件
- Map<String, Object> map = new HashMap<>();
- map.put(ParserUtil.APP_ID, BasicUtil.getAppId());
- PageBean page = new PageBean();
- map.put(ParserUtil.HTML, ParserUtil.HTML);
- map.put(ParserUtil.URL, BasicUtil.getUrl());
- map.put(ParserUtil.PAGE, page);
- AttributeBean attributeBean = new AttributeBean();
- // 获取文章列表模板标签属性
- ParserUtil.read(column.getCategoryListUrl(), map, page, attributeBean);
- contentBean.setFlag(attributeBean.getFlag());
- contentBean.setNoflag(attributeBean.getNoflag());
- contentBean.setOrder(attributeBean.getOrder());
- contentBean.setOrderBy(attributeBean.getOrderby());
- }
- articleIdList = contentDao.queryIdsByCategoryIdForParser(contentBean);
- // 判断列表类型
- switch (column.getCategoryType()) {
- //TODO 暂时先用字符串代替
- case "1": // 列表
- CmsParserUtil.generateList(column, articleIdList.size());
- break;
- case "2":// 单页
- if(articleIdList.size()==0){
- CategoryBean columnArticleIdBean=new CategoryBean();
- CopyOptions copyOptions=CopyOptions.create();
- copyOptions.setIgnoreError(true);
- BeanUtil.copyProperties(column,columnArticleIdBean,copyOptions);
- articleIdList.add(columnArticleIdBean);
- }
- CmsParserUtil.generateBasic(articleIdList);
- break;
- }
- }
- }
- //主页
- private void generaterIndex(String templatePath, String targetPath) throws IOException {
- if (!FileUtil.exist(ParserUtil.buildTempletPath())) {
- LOG.info("模板文件不存在");
- return;
- }
- Integer appId = (Integer) DataHolder.get(ParserUtil.APP_ID);
- Map<String, Object> map = new HashMap<String, Object>();
- map.put(ParserUtil.IS_DO, false);
- CategoryEntity column = new CategoryEntity();
- //内容管理栏目编码
- map.put(ParserUtil.COLUMN, column);
- //如果单站点,就废弃站点地址
- if (ParserUtil.IS_SINGLE) {
- map.put(ParserUtil.URL, BasicUtil.getUrl());
- }
- //设置生成的路径
- map.put(ParserUtil.HTML, ParserUtil.HTML);
- //设置站点编号
- map.put(ParserUtil.APP_ID, appId);
- String read = ParserUtil.read(templatePath, map);
- FileUtil.writeString(read, ParserUtil.buildHtmlPath(targetPath), Const.UTF8);
- }
- }
|