阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_04-新增页面-服务端-接口开发
2024-09-02 19:12:06
api接口定义方法
api的微服务里面。CmsPageControllerApi内定义add方法,返回类型是CmsPageResult
CmsPageResult继承了ResponseResult
ResponseResult里面这三项,SUCCESS、SUCCESS_CODE、message
把新增的数据响应给客户端,客户端可能会用
加上swagger的注解
dao
dao里面就不用写了我们直接用springDataMongoDB自带的save方法就可以了。在继承的MongoReposityory即可
Service
新增之前要先校验页面的唯一性
mongoDB数据内,右键cmsPage这个集合,创建索引
站点id、页面名称、页面的路径
右下角 创建这个索引
在dao里面定义根据这是三个字段的查询条件。字段之间用And来拼接。
失败和成功的 返回数据
要注意CmsPageResult的命名空间,
controller内直接调用Service
请求的json数据转换成对象。使用@RequestBody
以上接口开发 完成
最终代码
package com.xuecheng.manage_cms.service; import com.xuecheng.framework.domain.cms.CmsPage;
import com.xuecheng.framework.domain.cms.request.QueryPageRequest;
import com.xuecheng.framework.domain.cms.response.CmsPageResult;
import com.xuecheng.framework.model.response.CommonCode;
import com.xuecheng.framework.model.response.QueryResponseResult;
import com.xuecheng.framework.model.response.QueryResult;
import com.xuecheng.manage_cms.dao.CmsPageRepository;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.*;
import org.springframework.stereotype.Service; @Service
public class PageService {
@Autowired
CmsPageRepository cmsPageRepository;
public QueryResponseResult findList(int page,int size, QueryPageRequest queryPageRequest) { if(queryPageRequest==null){
queryPageRequest=new QueryPageRequest();
}
//自定义查询条件
ExampleMatcher exampleMatcher=ExampleMatcher.matching()
.withMatcher("pageAliase",ExampleMatcher.GenericPropertyMatchers.contains());
//条件之对象
CmsPage cmsPage=new CmsPage();
//设置条件值 (站点ID)
if(StringUtils.isNotEmpty(queryPageRequest.getSiteId())){
cmsPage.setSiteId(queryPageRequest.getSiteId());
}
//设置模板id 作为查询条件
if(StringUtils.isNotEmpty(queryPageRequest.getTemplateId())){
cmsPage.setTemplateId(queryPageRequest.getTemplateId());
}
//设置页面别名为查询条件
if(StringUtils.isNotEmpty(queryPageRequest.getPageAliase())){
cmsPage.setPageAliase(queryPageRequest.getPageAliase());
}
//定义Exmaple对象
Example<CmsPage> example=Example.of(cmsPage,exampleMatcher); if(page<){
page=;
}
page = page -;
if(size<=){
size = ;
}
Pageable pageable = PageRequest.of(page, size);
Page<CmsPage> all = cmsPageRepository.findAll(example,pageable);
QueryResult queryResult=new QueryResult();
queryResult.setList(all.getContent());//设置返回的列表数据
queryResult.setTotal(all.getTotalElements());//设置总记录数
QueryResponseResult queryResponseResult=new QueryResponseResult(CommonCode.SUCCESS,queryResult);
return queryResponseResult;
} public CmsPageResult add(CmsPage cmsPage){
//校验页面名称、站点Id、页面WebPath的唯一性
CmsPage cmsPage1=cmsPageRepository.findByPageNameAndSiteIdAndPageWebPath(cmsPage.getPageName(),cmsPage.getSiteId(),cmsPage.getPageWebPath());
if(cmsPage1==null){
cmsPage.setPageId(null);//设置设置为null 让mongoDB自动去生成,
cmsPageRepository.save(cmsPage);
return new CmsPageResult(CommonCode.SUCCESS,cmsPage);
}
return new CmsPageResult(CommonCode.FAIL,null);
}
}
pageService
cmsPageController
@Override
@PostMapping("/add")
public CmsPageResult add(@RequestBody CmsPage cmsPage) {
return pageService.add(cmsPage);
}
最新文章
- 重撸js_2_基础dom操作
- jQuery uploadify 文件上传
- 链栈的C语言实现
- ASP.NET之Ajax系列(一)
- asp.net oracle 存储过程
- USB OTG
- HOOK API(三)—— HOOK 所有程序的 MessageBox
- oracle的exp和imp命令的使用【转载】
- 互联网金融P2P主业务场景自动化测试
- Python爬虫番外篇之关于登录
- 参加Java培训你必须知道的五点真相!
- 浅谈数据结构vector
- Linux基础命令归纳大全
- T-SQL :TOP和OFFSET-FETCH筛选 (五)
- STO(Security Token Offering)证券型通证、代币发行介绍
- Node.js 知识(教程)
- Spring IOC(三)单例 bean 的注册管理
- Linux入门基础教程之Linux系统简介
- POJ 1118
- HDU 5869 Different GCD Subarray Query rmq+离线+数状数组