cms01-后端-网站管理页面查询接口

页面查询接口定义 定义模型 需求分析 在梳理完用户需求后就要去定义前后端的接口,接口定义后前端和后端就可以依据接口去开发功能了。 本次定义页面查询接口,本接口供前端请求查询页面列表,支持分页及自定义条件查询方式。 具体需求如下: 1、分页查询CmsPage 集合下的数据 2、根据站点Id、模板Id、页面别名查询页面信息 3、接口基于Http Get请求,响应Json 模型类介绍 接口的定义离不开数据模型,根据前边对需求的分析,整个页面管理模块的数据模型如下: CmsSite:站点模型 CmsTemplate:页面模板 CmsPage:页面信息 @Data @ToString @Document(collection = "cms_page") public class CmsPage { /** * 页面名称、别名、访问地址、类型(静态/动态)、页面模版、状态 */ //站点ID private String siteId; //页面ID @Id private String pageId; //页面名称 private String pageName; //别名 private String pageAliase; //访问地址 private String pageWebPath; //参数 private String pageParameter; //物理路径 private String pagePhysicalPath; //类型(静态/动态) private String pageType; //页面模版 private String pageTemplate; //页面静态化内容 private String pageHtml; //状态 private String pageStatus; //创建时间 private Date pageCreateTime; //模版id private String templateId; //参数列表,暂不用 private List<CmsPageParam> pageParams; //模版文件Id // private String templateFileId; //静态文件Id private String htmlFileId; //数据Url private String dataUrl; } 属性说明: »

cms02--后端-网站管理页面条件查询

页面条件查询接口 需求分析 在页面输入查询条件,查询符合条件的页面信息。 查询条件如下: 站点Id:精确匹配 模板Id:精确匹配 页面别名:模糊匹配 服务端 Dao 使用 CmsPageRepository中的findAll(Example<S> var1, Pageable var2)方法实现,无需定义。 下边测试fifindAll方法实现自定义条件查询: //页面条件查询测试dao @Test public void testFindAllByExample() { Pageable pageable = PageRequest.of(0, 10); //创建条件匹配器,注意匹配器每返回一个引用,在创建就是一个新对象了 //可以链式调用实现多条件 ExampleMatcher exampleMatcher = ExampleMatcher.matching() //要匹配的字段,和查询方式 //contains:模糊匹配 startWith:开头匹配 等等 .withMatcher("pageAliase", ExampleMatcher.GenericPropertyMatchers.contains()); // .withMatcher("pageAliase", ExampleMatcher.GenericPropertyMatchers.startsWith()); CmsPage cmsPage = new CmsPage(); cmsPage.setPageAliase("分类导航"); Example<CmsPage> example = Example.of(cmsPage,exampleMatcher); Page<CmsPage> all = cmsPageRepository.findAll(example, pageable); System.out.println(all); } Service 由于前面编写了普通查询,也将封装的条件查询类QueryPageRequest也传入参数中 ​ 因此,对之前的进行改造: 定义条件查询对象Example,在定义条件值类型对象,cmsPage 由于只有页面别名为条件匹配,其他为精确匹配,因此定义ExampleMacher条件匹配器,传入匹配字段,和查询方式 使用lang3工具类公的isNotEmpty方法判断三个查询参数,存在就设置进去 在findAll方法中将example对象传入,测试 »

cms03--后端-网站管理新增页面接口

新增页面接口 定义响应模型 /** * 继承通用的responseResult响应类, * 在构造方法中添加模型类参数 */ @Data public class CmsPageResult extends ResponseResult { CmsPage cmsPage; public CmsPageResult(ResultCode resultCode,CmsPage cmsPage) { super(resultCode); this.cmsPage = cmsPage; } } 加上CmsPage参数是因为前端可能或使用到返回的数据对象 定义Api接口 /** * 新增页面 */ @ApiOperation("新增页面接口") public CmsPageResult addPage(CmsPage cmsPage); Service /** * 页面新增 * @param cmsPage * @return */ public CmsPageResult addPage(CmsPage cmsPage) { //校验页面名称,webPath,页面名称唯一性 //根据上述去页面查询集合,查到就说明已存在,查询不到就可以添加 CmsPage cmsPage1 = cmsPageRepository.findByPageNameAndSiteIdAndPageWebPath(cmsPage.getPageName(), cmsPage.getSiteId(), cmsPage.getPageWebPath()); if (cmsPage1 == null) { //调用dao,新增页面 /** * 这里因为cms_page页面pageId为主键,所以避免人为设置, * 不管有没有都将其置为空,让mongoDB的自增长自动生成主键 */ cmsPage. »

cms04--后端-网站管理修改页面接口

修改页面 修改页面用户操作流程: 1、用户进入修改页面,在页面上显示了修改页面的信息 2、用户修改页面的内容,点击“提交”,提示“修改成功”或“修改失败” 修改页面接口定义 /** * 根据页面id查询页面信息 */ @ApiOperation("根据id查询页面接口") public CmsPage findPageById(String pageId); /** * 修改页面 */ @ApiOperation("修改页面接口") public CmsPageResult editPage(String pageId,CmsPage cmsPage); 说明:提交数据使用post、put都可以,只是根据http方法的规范,put方法是对服务器指定资源进行修改,所以这里使用put方法对页面修改进行修改。 修改页面服务端开发 Dao 使用 Spring Data提供的fifindById方法完成根据主键查询 。 使用 Spring Data提供的save方法完成数据保存 。 Service /** * 根据id查询页面 * @param pageId * @return */ public CmsPage findPageById(String pageId) { Optional<CmsPage> optional = cmsPageRepository.findById(pageId); if (optional.isPresent()) { CmsPage cmsPage = optional.get(); return cmsPage; } return null; } /** * 修改页面 * @param pageId * @param cmsPage * @return */ public CmsPageResult editPage(String pageId, CmsPage cmsPage) { // 调用方法查询是否存在 CmsPage pageById = this. »

cms05--后端-网站管理删除页面接口

删除页面 用户操作流程: 1、用户进入用户列表,点击“删除” 2、执行删除操作,提示“删除成功”或“删除失败” 删除页面接口定义 @ApiOperation("通过ID删除页面") public ResponseResult delete(String id); 删除页面服务端开发 Dao 使用 Spring Data提供的deleteById方法完成删除操作 。 Service //删除页面 public ResponseResult delete(String id){ CmsPage one = this.getById(id); if(one!=null){ //删除页面 cmsPageRepository.deleteById(id); return new ResponseResult(CommonCode.SUCCESS); } return new ResponseResult(CommonCode.FAIL); } Controller @DeleteMapping("/del/{id}") //使用http的delete方法完成岗位操作 public ResponseResult delete(@PathVariable("id") String id) { return pageService.delete(id); } »

页面静态化与页面预览功能

页面静态化 页面预览 页面静态化需求 1、为什么要进行页面管理? 本项目cms系统的功能就是根据运营需要,对门户等子系统的部分页面进行管理,从而实现快速根据用户需求修改 页面内容并上线的需求。 2、如何修改页面的内容? 在开发中修改页面内容是需要人工编写html及JS文件,CMS系统是通过程序自动化的对页面内容进行修改,通过 页面静态化技术生成html页面。 3、如何对页面进行静态化? 一个页面等于模板加数据,在添加页面的时候我们选择了页面的模板。 页面静态化就是将页面模板和数据通过技术手段将二者合二为一,生成一个html网页文件。 4、页面静态化及页面发布流程图如下: 业务流程如下: 1、获取模型数据 2、制作模板 3、对页面进行静态化 4、将静态化生成的html页面存放文件系统中 5、将存放在文件系统的html文件发布到服务器 FreeMarker 研究 参考”Freemarker”相关资料 页面静态化 页面静态化流程 通过上边对FreeMarker的研究我们得出:模板+数据模型=输出,页面静态化需要准备数据模型和模板,先知道数 据模型的结构才可以编写模板,因为在模板中要引用数据模型中的数据,本节将系统讲解CMS页面数据模型获取、 模板管理及静态化的过程。 下边讨论一个问题:如何获取页面的数据模型? CMS管理了各种页面,CMS对页面进行静态化时需要数据模型,但是CMS并不知道每个页面的数据模型的具体内 容,它只管执行静态化程序便可对页面进行静态化,所以CMS静态化程序需要通过一种通用的方法来获取数据模 型。 在编辑页面信息时指定一个DataUrl,此DataUrl便是获取数据模型的Url,它基于Http方式,CMS对页面进行静态 化时会从页面信息中读取DataUrl,通过Http远程调用的方法请求DataUrl获取数据模型。 管理员怎么知道DataUrl的内容呢? 举例说明: 此页面是轮播图页面,它的DataUrl由开发轮播图管理的程序员提供。 此页面是精品课程推荐页面,它的DataUrl由精品课程推荐的程序员提供。 此页面是课程详情页面,它的DataUrl由课程管理的程序员提供。 页面静态化流程如下图: 1、静态化程序首先读取页面获取DataUrl。 2、静态化程序远程请求DataUrl得到数据模型。 3、获取页面模板。 4、执行页面静态化。 数据模型 轮播图DataUrl接口 需求分析 CMS中有轮播图管理、精品课程推荐的功能,以轮播图管理为例说明:轮播图管理是通过可视化的操作界面由管理 员指定轮播图图片地址,最后将轮播图图片地址保存在cms_confifig集合中,下边是轮播图数据模型: 针对首页的轮播图信息、精品推荐等信息的获取统一提供一个Url供静态化程序调用,这样我们就知道了轮播图页 面、精品课程推荐页面的DataUrl,管理在页面配置中将此Url配置在页面信息中。 ​ 本小节开发一个查询轮播图、精品推荐信息的接口,此接口供静态化程序调用获取数据模型。 接口定义 轮播图信息、精品推荐等信息存储在MongoDB的cms_confifig集合中。 cms_confifig有固定的数据结构,如下: package com.xuecheng.framework.domain.cms; import lombok.Data; import lombok.ToString; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; import java.util.List; /** * Created by admin on 2018/2/6. »