5.4.1 Api定义
此Api是课程管理前端请求服务端进行课程预览的Api
请求:课程Id
响应:课程预览Url
1、定义响应类型
@Data
@ToString
@NoArgsConstructor
public class CoursePublishResult extends ResponseResult {
String previewUrl;//页面预览的url,必须得到页面id才可以拼装
public CoursePublishResult(ResultCode resultCode, String previewUrl) {
super(resultCode);
this.previewUrl = previewUrl;
}
}
2、接口定义如下
@ApiOperation("课程预览")
public CoursePublishResult preview(String id);
控制器
@Override
@PostMapping("/preview/{id}")
public CoursePublishResult preview(@PathVariable("id") String id) {
return courseService.preview(id);
}
5.4.3 Service
1、配置添加页面参数信息
在application.yml中配置:
course-publish:
siteId: 6087b4ac07af9b0739cad463
templateId: 5ad9a24d68db5239b8fef199
previewUrl: http://www.xuecheng.com/cms/preview/
pageWebPath: /course/detail/
pagePhysicalPath: /course/detail/
dataUrlPre: http://localhost:31200/course/courseview/
@Autowired
CmsPageClient cmsPageClient;
@Value("${course-publish.dataUrlPre}")//获取application.yml配置文件中的值
private String publish_dataUrlPre;
@Value("${course-publish.pagePhysicalPath}")
private String publish_page_physicalpath;
@Value("${course-publish.pageWebPath}")
private String publish_page_webpath;
@Value("${course-publish.siteId}")
private String publish_siteId;
@Value("${course-publish.templateId}")
private String publish_templateId;
@Value("${course-publish.previewUrl}")
private String previewUrl;
//根据id查询课程基本信息
public CourseBase findCourseBaseById(String courseId){
Optional<CourseBase> baseOptional = courseBaseRepository.findById(courseId);
if(baseOptional.isPresent()){
CourseBase courseBase = baseOptional.get();
return courseBase;
}
ExceptionCast.cast(CourseCode.COURSE_DENIED_DELETE);
return null;
}
//课程预览
public CoursePublishResult preview(String id) {
//查询课程
CourseBase courseBaseById = this.findCourseBaseById(id);
//请求cms添加页面
//准备cmsPage信息
CmsPage cmsPage = new CmsPage();
cmsPage.setSiteId(publish_siteId);//站点id
cmsPage.setDataUrl(publish_dataUrlPre+id);//数据模型url
cmsPage.setPageName(id+".html");//页面名称
cmsPage.setPageAliase(courseBaseById.getName());//页面别名,就是课程名称
cmsPage.setPagePhysicalPath(publish_page_physicalpath);//页面物理路径
cmsPage.setPageWebPath(publish_page_webpath);//页面webpath
cmsPage.setTemplateId(publish_templateId);//页面模板id
//远程调用cms
CmsPageResult cmsPageResult = cmsPageClient.saveCmsPage(cmsPage);
if(!cmsPageResult.isSuccess()){
return new CoursePublishResult(CommonCode.FAIL,null);
}
CmsPage cmsPage1 = cmsPageResult.getCmsPage();
String pageId = cmsPage1.getPageId();
//拼装页面预览的url
String url = previewUrl+pageId;
//返回CoursePublishResult对象(当中包含了页面预览的url)
return new CoursePublishResult(CommonCode.SUCCESS,url);
}
5.4.2 创建 Feign Client
在课程管理工程创建CMS服务的Feign Client,通过此Client远程请求cms添加页面。
//添加页面,用于课程预览
@PostMapping("/cms/page/save")
public CmsPageResult saveCmsPage(@RequestBody CmsPage cmsPage);
测试预览
预览地址
如果出问题,可以看看eureka
启动服务
如果提示抱歉,系统繁忙,请稍后重试,那就重启电脑,把这5个服务全部启动,注意,先把mysql启动