• 阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_04-新增页面-服务端-接口开发


    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<0){
                page=1;
            }
            page = page -1;
            if(size<=0){
                size = 10;
            }
            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);
    }
     
  • 相关阅读:
    使用树莓派打造一个音乐播放器
    关于ESP8266 NodeCMU固件无法刷入新代码的解决方法
    推荐一个好用的免费开源的笔记本软件CherryTree
    忘记数据库密码?通过Navicat找回!!
    Kettle删除日志文件
    windows下解决10点前生成时间命名的文件无效问题
    windows下备份Linux服务器上的MySQL
    Windows下安装mysql
    【EXCEL】按天计算,分摊到每年的费用金额,只用内置函数 无需编写VB
    windows 7 安装visual studio 2019 闪退问题解决
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/11566860.html
Copyright © 2020-2023  润新知