学成在线-第10天-讲义-课程发布 一

课程发布 
1.1 需求分析 
课程发布后将生成正式的课程详情页面,课程发布后用户即可浏览课程详情页面,并开始课程的学习。 
课程发布生成课程详情页面的流程与课程预览业务流程相同,如下: 
1、用户进入教学管理中心,进入某个课程的管理界面 
2、点击课程发布,前端请求到课程管理服务 
3、课程管理服务远程调用CMS生成课程发布页面,CMS将课程详情页面发布到服务器 
4、课程管理服务修改课程发布状态为已发布,并向前端返回发布成功
5、用户在教学管理中心点击课程详情页面链接,查看课程详情页面内容 

1.2 CMS键发布接口
1.2.1 需求分析

根据需求分析内容,需要在cms服务增加页面发布接口供课程管理服务调用,此接口的功能如下: 
1、接收课程管理服务发布的页面信息 
2、将页面信息添加到 数据库(mongodb) 
3、对页面信息进行静态化 
4、将页面信息发布到服务器 
1.2.3 接口定义 
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工程定义页面发布接口

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

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

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

2.2.5 Service 
1、添加页面,如果已存在则更新页面

//添加页面,如果已存在则更新页面
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);
}
}

2、页面发布方法

//
一
键发布页面
public CmsPostPageResult postPageQuick(CmsPage cmsPage){
//添加页面
CmsPageResult save
=
this.save(cmsPage);
if(!save.isSuccess()){
return new CmsPostPageResult(CommonCode.FAIL,null);
}
CmsPage cmsPage1 =
save.
getCmsPage();
//要布的页面id
String pageId
=
cmsPage1.
getPageId();
//发布页面
ResponseResult responseResult
=
this.
postPage(pageId);
if(!responseResult.isSuccess()){
return new CmsPostPageResult(CommonCode.FAIL,null);
}
//得到页面的url
//页面url=
站点域名+站点webpath+页面webpath+页面名称
//站点id
String siteId
=
cmsPage1.
getSiteId();
//查询站点信息
CmsSite cmsSite
= findCmsSiteById(siteId);
//站点域名
String siteDomain =
cmsSite.
getSiteDomain();
//站点web路径
String siteWebPath =
cmsSite.
getSiteWebPath();
//页面web路径
String pageWebPath =
cmsPage1.
getPageWebPath();
//页面名称
String pageName
=
cmsPage1.
getPageName();
//页面的web访问地址
String pageUrl =
siteDomain+siteWebPath+pageWebPath+pageName;
return new CmsPostPageResult(CommonCode.SUCCESS,pageUrl);
}
//根据id查询站点信息
public CmsSite findCmsSiteById(String siteId){
Optional<CmsSite> optional =
cmsSiteRepository
.findById(siteId);
if(optional.isPresent()){
return optional.
get();
}
return null;
}

2.2.6 Controller

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值