A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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); } 


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马