模型数据
//1.获取页面模型数据
private Map getModelByPageId(String pageId){
CmsPage cmsPage = findById(pageId);
if (cmsPage==null){
//页面不存在
ExceptionCast.cast(CmsCode.CMS_PAGE_NOTEXISTS);
}
String dataUrl = cmsPage.getDataUrl();
if (StringUtils.isEmpty(dataUrl)){
ExceptionCast.cast(CmsCode.CMS_GENERATEHTML_DATAURLISNULL);
}
ResponseEntity<Map> forEntity = restTemplate.getForEntity(dataUrl, Map.class);
Map body = forEntity.getBody();
return body;
}
模型页面
//2、获取页面模板
public String getTemplateByPageId(String pageId){
CmsPage cmsPage = findById(pageId);
if (cmsPage==null){
ExceptionCast.cast(CmsCode.CMS_PAGE_NOTEXISTS);
}
//拿到cms_page的teplateId
String templateId = cmsPage.getTemplateId();
//根据cmstemplate来拿到files_id
Optional<CmsTemplate> optional = cmsTemplateRepository.findById(templateId);
if (optional.isPresent()){
CmsTemplate cmsTemplate = optional.get();
String templateFileId = cmsTemplate.getTemplateFileId();
//取出模板文件内容
GridFSFile gridFSFile = gridFsTemplate.findOne(Query.query(Criteria.where("_id").is(templateFileId)));
//打开下载流对象
GridFSDownloadStream gridFSDownloadStream = gridFSBucket.openDownloadStream(gridFSFile.getObjectId());
//获取流对象
GridFsResource gridFsResource = new GridFsResource(gridFSFile, gridFSDownloadStream);
// 获取流中的数据
try {
String content = IOUtils.toString(gridFsResource.getInputStream(), "UTF-8");
return content;
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
页面静态化
//3.页面静态化
public String generateHtml(String template,Map model){
try {
//生成配置类
Configuration configuration = new Configuration(Configuration.getVersion());
//模板加载器
StringTemplateLoader stringTemplateLoader = new StringTemplateLoader();
stringTemplateLoader.putTemplate("template",template);
//配置模板加载器
configuration.setTemplateLoader(stringTemplateLoader);
Template template1 = configuration.getTemplate("template");
String html = FreeMarkerTemplateUtils.processTemplateIntoString(template1, model);
return html;
}catch (Exception e) {
e.printStackTrace();
} return null;
}