10、课程发布

简介: 课程发布后将生成正式的课程详情页面,课程发布后用户即可浏览课程详情页面,并开始课程的学习。

课程发布后将生成正式的课程详情页面,课程发布后用户即可浏览课程详情页面,并开始课程的学习。

CMS一键发布接口

根据需求分析内容,需要在cms服务增加页面发布接口供课程管理服务调用,此接口的功能如下: 1、接收课程管理服务发布的页面信息

2、将页面信息添加到 数据库(mongodb)

3、对页面信息进行静态化

4、将页面信息发布到服务器

接口定义

1、创建响应结果类型

页面发布成功后cms返回页面的url

页面:Url= cmsSite.siteDomain+cmsSite.siteWebPath+ cmsPage.pageWebPath + cmsPage.pageName

@Data
@NoArgsConstructor
public class CmsPostPageResult extends ResponseResult {
    String pageUrl;
    public CmsPostPageResult(ResultCode resultCode, String pageUrl) {
        super(resultCode);
        this.pageUrl = pageUrl;
    }
}

2、API

在CmsPageControllerApi中编写以下方法:

@ApiOperation("一键发布页面")
public CmsPostPageResult postPageQuick(CmsPage cmsPage);

3、Dao

接口中需要获取站点的信息(站点域名、站点访问路径等)

public interface CmsSiteRepository extends MongoRepository<CmsSite,String> {
}

4、Service

1、添加页面方法,如果已存在则更新页面

public CmsPageResult save(CmsPage cmsPage) {  }

2、页面发布方法

public CmsPostPageResult postPageQuick(CmsPage cmsPage) { }

3、根据id查询站点信息

public CmsSite findCmsSiteById(String siteId){  }

5、Controller

在CmsPageController添加以下代码:

@Override
@PostMapping("/postPageQuick")
public CmsPostPageResult postPageQuick(@RequestBody CmsPage cmsPage) {
    return pageService.postPageQuick(cmsPage);
}

课程发布接口

1、API接口

此Api接口由课程管理提供,由课程管理前端调用此Api接口,实现课程发布。

在api工程下的课程管理包下定义接口:

@ApiOperation("课程发布")
public CoursePublishResult publish(String id);

2、创建Feign Client

在CmsPageClient中添加如下方法:

//一键发布页面
@PostMapping("/cms/page/postPageQuick")
public CmsPostPageResult postPageQuick(@RequestBody CmsPage cmsPage);

3、在course工程的yml文件中添加:

course-publish:
  siteId: 5b30cba5f58b4411fc6cb1e5
  templateId: 5ecd0a0cda11e33814bfa410
  previewUrl: http://www.xuecheng.com/cms/preview/
  pageWebPath: /course/detail/
  pagePhysicalPath: /course/detail/
  dataUrlPre: http://localhost:31200/course/courseview/

由于在课程预览时已添加,可以不用重复添加

4、Service

在CourseService中配置如下方法:

//课程发布
    @Transactional
    public CoursePublishResult publish(String id) { }

更新课程状态为已发布

private CourseBase  saveCoursePubState(String courseId){    }

5、Controller

在CourseController中添加如下方法:

@Override
@PostMapping("/publish/{id}")
public CoursePublishResult publish(@PathVariable("id")String id) {
    return courseService.publish(id);
}

测试CMS一键发布接口

1、 配置虚拟主机

http下配置:

#静态资源服务
upstream static_server_pool{
  server 127.0.0.1:91 weight=10;
}

cms会将课程预览页面发布到服务器的D:/Workspace/webstorm/xcEduUI/xc-ui-pc-static-portal/course/detail/下,通过 www.xuecheng.com/course/detail/来访问。

例如:http://www.xuecheng.com/course/detail/4028e58161bcf7f40161bcf8b77c0000.html


新增站点和模板

1、新增课程详情页面的站点信息

向cms_site中新增如下信息

{ 
    "_id" : ObjectId("5b30cba5f58b4411fc6cb1e5"), 
    "_class" : "com.xuecheng.framework.domain.cms.CmsSite", 
    "siteName" : "课程详情站点", 
    "siteDomain" : "http://www.xuecheng.com", 
    "sitePort" : "80", 
    "siteWebPath" : "", 
    "siteCreateTime" : ISODate("2018-02-03T02:34:19.113+0000"), 
    "sitePhysicalPath" : "D:/Workspace/webstorm/xcEduUI/xc-ui-pc-static-portal"
}


2、新增课程详情模板信息

可直接使用前边章节制作的课程详情信息模板。

@Test
 public void testStore() throws FileNotFoundException {
     //定义file
     File file =new File("D:/Workspace/xcEduService01/test-freemarker/src/main/resources/templates/course.ftl");
     //定义fileInputStream
     FileInputStream fileInputStream = new FileInputStream(file);
     ObjectId objectId = gridFsTemplate.store(fileInputStream, "course.ftl");
     System.out.println(objectId);
 }

在cms-client的yml文件中添加:

xuecheng:
  mq:
    #cms客户端监控的队列名称(不同的客户端监控的队列不能重复)
    queue: queue_cms_postpage_03
    routingKey: 5b30cba5f58b4411fc6cb1e5  #此routingKey为门户站点ID

测试

1、启动RabbitMQ服务

2、启动eureka01、cms01、cmsclient、course服务

3、注意配置routingKey和队列名称

打开swagger:http://localhost:31200/swagger-ui.html#!/course45controller/publishUsingPOST

输入:4028e581617f945f01617f9dabc40000

此时会在该路径下新增该页面

响应成功:

目录
相关文章
|
7月前
|
Cloud Native 分布式数据库 数据库
【PolarDB-X 从入门到精通】课程随堂互动获奖公告
【PolarDB-X 从入门到精通】课程随堂互动获奖名单出炉!快看看你是否在榜?
【PolarDB-X 从入门到精通】课程随堂互动获奖公告
|
7月前
|
安全 Python
【教学基地平台更新日记】主线课程-笔记页面
【教学基地平台更新日记】主线课程-笔记页面
|
7月前
|
安全 Python
【教学基地平台更新日记】主线课程-介绍和视频章节模块
【教学基地平台更新日记】主线课程-介绍和视频章节模块
|
开发者
发布应用| 学习笔记
快速学习发布应用。
发布应用| 学习笔记
|
编解码 视频直播 开发者
案例和课程总结|学习笔记
快速学习案例和课程总结
案例和课程总结|学习笔记
|
人工智能 Java 开发者
课程管理-课程发布流程说明 | 学习笔记
快速学习课程管理-课程发布流程说明
课程管理-课程发布流程说明 | 学习笔记
|
前端开发 API 网络架构
讲师详情前端 | 学习笔记
快速学习讲师详情前端
讲师详情前端 | 学习笔记
|
人工智能 开发者
模型社区实战课程|学习笔记
简介:快速学习模型社区实战课程
163 0
模型社区实战课程|学习笔记
|
小程序 开发者
微信课程表小程序(0基础教你用,从入门到发布)
1.效果图: 2.准备工具: 3.下载代码 4.部署项目 1.打开微信小程序: 2.AppID查看方式: 3.拿出你的小手机扫码、 5.修改课程 6.项目发布
微信课程表小程序(0基础教你用,从入门到发布)
|
前端开发 数据库 开发者
课程管理-课程最终发布 | 学习笔记
简介:快速学习课程管理-课程最终发布