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
@NoArgsConstructor//注意:要进行远程调用一定要加一个无参构造器
@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.5 Service
1、添加页面,如果已存在则更新页面
@Autowired
CmsSiteRepository cmsSiteRepository;
//一键发布页面
public CmsPostPageResult postPageQuick(CmsPage cmsPage) {
//将页面信息存储到cms_page 集合中
CmsPageResult save = this.save(cmsPage);
if(!save.isSuccess()){
ExceptionCast.cast(CommonCode.FAIL);
}
//得到页面的id
CmsPage cmsPageSave = save.getCmsPage();
String pageId = cmsPageSave.getPageId();
//执行页面发布(先静态化、保存GridFS,向MQ发送消息)
ResponseResult post = this.post(pageId);
if(!post.isSuccess()){
ExceptionCast.cast(CommonCode.FAIL);
}
//拼接页面Url= cmsSite.siteDomain+cmsSite.siteWebPath+ cmsPage.pageWebPath + cmsPage.pageName
//取出站点id
String siteId = cmsPageSave.getSiteId();
CmsSite cmsSite = this.findCmsSiteById(siteId);
//页面url
String pageUrl =cmsSite.getSiteDomain() + cmsSite.getSiteWebPath() + cmsPageSave.getPageWebPath() + cmsPageSave.getPageName();
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);
}