5 课程预览功能开发 5.1 需求分析
课程预览功能将使用cms系统提供的页面预览功能,业务流程如下:
1、用户进入课程管理页面,点击课程预览,请求到课程管理服务 2、课程管理服务远程调用cms添加页面接口向cms添加课程详情页面
3、课程管理服务得到cms返回课程详情页面id,并拼接生成课程预览Url 4、课程管理服务将课程预览Url给前端返回 5、用户在前端页面请求课程预览Url,打开新窗口显示课程详情内容
5.2 CMS页面预览测试
CMS已经提供了页面预览功能,课程预览功能要使用CMS页面预览接口实现,下边通过cms页面预览接口测试课 程预览的效果。
1、向cms_page表插入一条页面记录或者从cms_page找一个页面进行测试。 注意:页面配置一定要正确,需设置正确的模板id和dataUrl。
如下,是一条页面的记录。
[AppleScript] 纯文本查看 复制代码 {
"_id" : ObjectId("5b3469f794db44269cb2bff1"),
"_class" : "com.xuecheng.framework.domain.cms.CmsPage",
"siteId" : "5a751fab6abb5044e0d19ea1",
"pageName" : "4028e581617f945f01617f9dabc40000.html",
"pageAliase" : "课程详情页面测试01",
"pageWebPath" : "/course/detail/",
"pagePhysicalPath" : "/course/detail/",
"pageType" : "1",
"pageCreateTime" : ISODate("2018‐02‐25T01:37:25.974+0000"),
"templateId" : "5b345a6b94db44269cb2bfec",
"dataUrl" : "http://localhost:31200/course/courseview/4028e581617f945f01617f9dabc40000" }
2、课程详细页面 使用ssi注意
由于Nginx先请求cms的课程预览功能得到html页面,再解析页面中的ssi标签,这里必须保证cms页面预览返回的 页面的Content-Type为text/html;charset=utf-8 在cms页面预览的controller方法中添加:
[AppleScript] 纯文本查看 复制代码 response.setHeader("Content‐type","text/html;charset=utf‐8");
3、测试 请求:http://www.xuecheng.com/cms/preview/5b3469f794db44269cb2bff1传入页面Id,测试效果如下:
5.3 CMS添加页面接口
cms服务对外提供添加页面接口,实现:如果不存在页面则添加,否则就更新页面信息。
此接口由课程管理服务在课程预览时调用。
5.3.1 Api接口
[AppleScript] 纯文本查看 复制代码 @ApiOperation("保存页面")
public CmsPageResult save(CmsPage cmsPage);
5.3.2 Service
[AppleScript] 纯文本查看 复制代码 //添加页面,如果已存在则更新页面 public CmsPageResult save(CmsPage cmsPage){
//校验页面是否存在,根据页面名称、站点Id、页面webpath查询 CmsPage cmsPage1 = cmsPageRepository.findByPageNameAndSiteIdAndPageWebPath(cmsPage.getPageName(), cmsPage.getSiteId(), cmsPage.getPageWebPath()); if(cmsPage1 !=null){
//更新
return this.update(cmsPage1.getPageId(),cmsPage);
}else{
//添加
return this.add(cmsPage);
} }
5.3.3 Controller
[AppleScript] 纯文本查看 复制代码 @Override
@PostMapping("/save") public CmsPageResult save(
@RequestBody CmsPage cmsPage) {
return pageService.save(cmsPage); }
|