一,条件分页查询
1定义接口需要什么返回什么:
接口
@Api("cmspage接口管理") public interface CmsPageControllerApi { @ApiOperation("分页查询") @ApiImplicitParams({ @ApiImplicitParam(name="page",value = "页码",required=true,paramType="path",dataType="int"), @ApiImplicitParam(name="size",value = "每页记录数",required=true,paramType="path",dataType="int") }) QueryResponseResult findList(int page, int size, QueryPageRequest queryPageRequest);
返回QueryResponseResult
import lombok.Data; import lombok.ToString; @Data @ToString public class QueryResponseResult<T> extends ResponseResult { QueryResult queryResult; public QueryResponseResult(ResultCode resultCode,QueryResult queryResult){ super(resultCode); this.queryResult = queryResult; } }
其中的 QueryResult
import lombok.Data; import lombok.ToString; import java.util.List; @Data @ToString public class QueryResult<T> { //数据列表 private List<T> list; //数据总数 private long total; }
继承了ResponseResult
import lombok.Data; import lombok.NoArgsConstructor; import lombok.ToString; @Data @ToString @NoArgsConstructor public class ResponseResult implements Response { //操作是否成功 boolean success = SUCCESS; //操作代码 int code = SUCCESS_CODE; //提示信息 String message; public ResponseResult(ResultCode resultCode){ this.success = resultCode.success(); this.code = resultCode.code(); this.message = resultCode.message(); } public static ResponseResult SUCCESS(){ return new ResponseResult(CommonCode.SUCCESS); } public static ResponseResult FAIL(){ return new ResponseResult(CommonCode.FAIL); } }
分页查询条件
import lombok.Data; import lombok.NoArgsConstructor; import lombok.ToString; @Data @ToString @NoArgsConstructor public class QueryPageRequest { private String siteId; private String pageName; private String pageAliase; }
2.创建service-manage-cms工程
Controller
1 @RestController 2 @RequestMapping("/cms/page") 3 public class CmsPageController implements CmsPageControllerApi { 4 5 @Autowired 6 private CmsPageService cmsPageService; 7 8 @Override 9 @GetMapping("/list/{page}/{size}") 10 public QueryResponseResult findList(@PathVariable("page") int page, @PathVariable("size") int size, QueryPageRequest queryPageRequest) { 11 /* //暂时采用测试数据,测试接口是否可以正常运行 12 QueryResult queryResult = new QueryResult(); 13 queryResult.setTotal(2); 14 //静态数据列表 15 List list = new ArrayList(); 16 CmsPage cmsPage = new CmsPage(); 17 cmsPage.setPageName("测试页面"); 18 list.add(cmsPage); 19 queryResult.setList(list);*/ 20 //QueryResponseResult queryResponseResult = new QueryResponseResult(CommonCode.SUCCESS,queryResult); 21 22 23 24 return cmsPageService.findList(page,size,queryPageRequest); 25 }
精确查询(站点)
Page<CmsPage> all = cmsPageRepository.findAll(example, pageable);
example是条件封装
Example<CmsPage> example=Example.of(cmsPageQuery,matcher);
模糊查询(关键字)
ExampleMatcher matchaer=ExampleMatcher.matching().withMatcher("pageAliase",ExampleMatcher.GenericPropertyMatchers.contains())
分发
1 @Service 2 public class CmsPageService { 3 @Autowired 4 CmsPageRepository cmsPageRepository; 5 @Value("${xuecheng.mq.routingKey}") 6 private String routingKey; 7 public QueryResponseResult findList(int page, int size, QueryPageRequest queryPageRequest) { 8 9 if(page<=0){ 10 page=1; 11 12 }if(size<=0){ 13 size=10; 14 15 } 16 if(queryPageRequest==null){ 17 18 queryPageRequest = new QueryPageRequest(); 19 } 20 Pageable pageable=new PageRequest(page-1,size); 21 //Page<CmsPage> all = cmsPageRepository.findAll(pageable); 22 CmsPage cmsPageQuery=new CmsPage(); 23 if(StringUtils.isNotEmpty(queryPageRequest.getSiteId())){ 24 25 cmsPageQuery.setSiteId(queryPageRequest.getSiteId()); 26 } 27 if(StringUtils.isNotEmpty(queryPageRequest.getPageAliase())){ 28 29 cmsPageQuery.setPageAliase(queryPageRequest.getPageAliase()); 30 } 31 ExampleMatcher matcher=ExampleMatcher.matching().withMatcher("pageAliase",ExampleMatcher.GenericPropertyMatchers.contains()); 32 Example<CmsPage> example=Example.of(cmsPageQuery,matcher); 33 Page<CmsPage> all = cmsPageRepository.findAll(example, pageable); 34 QueryResult queryResult=new QueryResult(); 35 queryResult.setList(all.getContent()); 36 queryResult.setTotal(all.getTotalElements()); 37 return new QueryResponseResult(CommonCode.SUCCESS,queryResult); 38 }
repository
1 import com.xuecheng.filesystem.framework.domain.cms.CmsPage; 2 import org.springframework.data.mongodb.repository.MongoRepository; 3 4 public interface CmsPageRepository extends MongoRepository<CmsPage,String> { 5 CmsPage findByPageNameAndSiteIdAndPageWebPath(String pageName,String siteId,String pageWebPath); 6 7 }
二,站点下拉类表
目标实体类
import lombok.Data; import lombok.ToString; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; import java.util.Date; @Data @ToString @Document(collection = "cms_site") public class CmsSite { //站点ID @Id private String siteId; //站点名称 private String siteName; //站点名称 private String siteDomain; //站点端口 private String sitePort; //站点访问地址 private String siteWebPath; //创建时间 private Date siteCreateTime; private String sitePhysicalPath; }
表中
cms_site
api
import com.xuecheng.filesystem.framework.domain.cms.CmsSite; import io.swagger.annotations.Api; import java.util.List; @Api("cmssite站点管理") public interface CmsSiteControllerApi { List<CmsSite> findList(); }
controller
@RestController @RequestMapping("/cms/site") public class CmsSiteController implements CmsSiteControllerApi { @Autowired private CmsSiteService cmsSiteService; @Override @GetMapping("/list") public List<CmsSite> findList() { return cmsSiteService.findList(); } }
service(findAll)
1 @Service 2 public class CmsSiteService{ 3 @Autowired 4 CmsSiteRepository cmsSiteRepository; 5 6 7 public List<CmsSite> findList() { 8 List<CmsSite> all = cmsSiteRepository.findAll(); 9 /*QueryResult queryResult =new QueryResult(); 10 queryResult.setList(all);*/ 11 // return new QueryResponseResult(CommonCode.SUCCESS,queryResult); 12 return all; 13 }
repository(实体类主键数据类型)
import com.xuecheng.filesystem.framework.domain.cms.CmsSite; import org.springframework.data.mongodb.repository.MongoRepository; public interface CmsSiteRepository extends MongoRepository<CmsSite,String> { }
三,新增之页面模板下拉类表‘
前端vue
//cmspage列表查询 /api/cms/list/1/1 export const page_list=(page,size,params)=>{ let queryParams = querystring.stringify(params); return http.requestGet(apiUrl+'/cms/page/list/'+page+'/'+size+'/?'+queryParams); }
1 //添加页面 2 export const page_add=(params)=>{ 3 return http.requestPost(apiUrl+'/cms/page/add',params); 4 }
实体类
1 import lombok.Data; 2 import lombok.ToString; 3 import org.springframework.data.annotation.Id; 4 import org.springframework.data.mongodb.core.mapping.Document; 5 6 7 @Data 8 @ToString 9 @Document(collection = "cms_template") 10 public class CmsTemplate { 11 12 //站点ID 13 private String siteId; 14 //模版ID 15 @Id 16 private String templateId; 17 //模版名称 18 private String templateName; 19 //模版参数 20 private String templateParameter; 21 22 //模版文件Id 23 private String templateFileId; 24 }
表
cms_template
api
1 import com.xuecheng.filesystem.framework.domain.cms.CmsTemplate; 2 import io.swagger.annotations.Api; 3 import io.swagger.annotations.ApiOperation; 4 5 import java.util.List; 6 7 @Api("页面模板接口管理") 8 public interface CmsTemplateControllerApi { 9 @ApiOperation("查询模板列表") 10 List<CmsTemplate> findList(); 11 }
controller
1 import com.xuecheng.filesystem.api.cms.CmsTemplateControllerApi; 2 import com.xuecheng.filesystem.framework.domain.cms.CmsTemplate; 3 import com.xuecheng.filesystem.manage_cms.service.CmsTemplateService; 4 import org.springframework.beans.factory.annotation.Autowired; 5 import org.springframework.web.bind.annotation.*; 6 7 import java.util.List; 8 @RestController 9 @RequestMapping("/cms/template") 10 public class CmsTemplateController implements CmsTemplateControllerApi { 11 /* 12 @Override 13 @PostMapping("/add") 14 public CmsPageResult add(@RequestBody CmsPage cmsPage) { 15 List<String> list = new ArrayList<String>(); 16 return cmsPageService.add(cmsPage); 17 18 }*/ 19 @Autowired 20 private CmsTemplateService cmsTemplateService; 21 @Override 22 @GetMapping("/list") 23 public List<CmsTemplate> findList() { 24 return cmsTemplateService.findList(); 25 } 26 }
service
import com.xuecheng.filesystem.framework.domain.cms.CmsTemplate; import com.xuecheng.filesystem.manage_cms.dao.CmsTemplateRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service public class CmsTemplateService { @Autowired CmsTemplateRepository cmsTemplateRepository; public List<CmsTemplate> findList() { List<CmsTemplate> all = cmsTemplateRepository.findAll(); return all; } }
repository
import com.xuecheng.filesystem.framework.domain.cms.CmsTemplate; import org.springframework.data.mongodb.repository.MongoRepository; public interface CmsTemplateRepository extends MongoRepository<CmsTemplate,String> { }
四,添加
controller(
CmsPageController
)
1 @Override 2 @PostMapping("/add") 3 public CmsPageResult addPage(@RequestBody CmsPage cmsPage) { 4 5 return cmsPageService.addPage(cmsPage); 6 }
service(
CmsPageService
)
避免重复添加(页面名,页面webpath,站点id)先判断(查询三条件都满足视为同一项目不予添加)
1 public CmsPageResult addPage(CmsPage cmsPage) { 2 CmsPage pageNameAndSiteIdAndPageWebPath = cmsPageRepository.findByPageNameAndSiteIdAndPageWebPath(cmsPage.getPageName(), cmsPage.getSiteId(), cmsPage.getPageWebPath()); 3 if(pageNameAndSiteIdAndPageWebPath != null ) 4 { 5 ExceptionCast.cast(CmsCode.CMS_ADDPAGE_EXISTSNAME); 6 7 } 8 cmsPage.setPageId(null); 9 cmsPageRepository.save(cmsPage); 10 CmsPageResult cmsPageResult = new CmsPageResult(CommonCode.SUCCESS, cmsPage); 11 return cmsPageResult; 12 //throw new CustomerException(CmsCode.CMS_ADDPAGE_EXISTSNAME); 13 // return new CmsPageResult(CommonCode.FAIL,null); 14 }
repository
1 import com.xuecheng.filesystem.framework.domain.cms.CmsPage; 2 import org.springframework.data.mongodb.repository.MongoRepository; 3 4 public interface CmsPageRepository extends MongoRepository<CmsPage,String> { 5 CmsPage findByPageNameAndSiteIdAndPageWebPath(String pageName,String siteId,String pageWebPath); 6 7 }
五,编辑
1.vue前端page_list
1 <el-button 2 size="small"type="text" 3 @click="edit(page.row.pageId)">编辑 4 </el-button>
点击edit
edit:function (pageId) { this.$router.push({ path:'/cms/page/edit/'+pageId, query:{ page:this.params.page, siteId:this.params.siteId, pageAliase:this.params.pageAliase } }) },
点击跳转到page_edit页面
methods:{ go_back(){ this.$router.push({ path: '/cms/page/list', query: { page: this.$route.query.page, siteId:this.$route.query.siteId } }) }, editSubmit(){ this.$refs.pageForm.validate((valid) => { if (valid) { this.$confirm('确认提交吗?', '提示', {}).then(() => { this.addLoading = true; cmsApi.page_edit(this.pageId,this.pageForm).then((res) => { console.log(res); if(res.success){ this.addLoading = false; this.$message({ message: '提交成功', type: 'success' }); //返回 this.go_back(); }else{ this.addLoading = false; this.$message.error('提交失败'); } }); }); } }); }, querySiteList:function () { cmsApi.site_list().then(response=>{ this.siteList=response; }) }, queryTemplateList:function () { cmsApi.template_list().then(response=>{ this.templateList=response; }) } }, created: function () { this.pageId=this.$route.params.pageId; //根据主键查询页面信息 cmsApi.page_get(this.pageId).then((res) => { console.log(res); if(res){ this.pageForm = res; } }); }, mounted:function(){ this.querySiteList(); this.queryTemplateList(); } }
ctrl单击
cmsApi.page_edit
//修改页面 export const page_edit=(id,params)=>{ return http.requestPut(apiUrl+'/cms/page/edit/'+id,params); }
回显
mounted:function(){
this.querySiteList();
this.queryTemplateList();
//修改页面 export const page_edit=(id,params)=>{ return http.requestPut(apiUrl+'/cms/page/edit/'+id,params); } //查询单一 export const page_get=(id)=>{ return http.requestGet(apiUrl+'/cms/page/get/'+id); }
api
@ApiOperation("修改页面")
ResponseResult editPage(String id, CmsPage cmsPage);
controller
1 @Override 2 @GetMapping("/get/{id}") 3 public CmsPage findOne(@PathVariable("id") String id){ 4 return cmsPageService.findOne(id); 5 } 6 @Override 7 @PutMapping("/edit/{id}") 8 public ResponseResult editPage(@PathVariable("id") String id, @RequestBody CmsPage cmsPage) { 9 return cmsPageService.editPage(id,cmsPage); 10 }
service
/** * 查询单一页面 * @param id * @return */ public CmsPage findOne(String id) { Optional<CmsPage> byId = cmsPageRepository.findById(id); if (byId.isPresent()) { CmsPage cmsPage = byId.get(); return cmsPage; } return null; } /** * 修改页面 * @param id * @param cmsPage * @return */ public CmsPageResult editPage(String id, CmsPage cmsPage) { CmsPage one = this.findOne(id); if(one == null){ return new CmsPageResult(CommonCode.FAIL,null); } // CmsPage one = this.getById(id); //更新模板id one.setTemplateId(cmsPage.getTemplateId()); //更新所属站点 one.setSiteId(cmsPage.getSiteId()); //更新页面别名 one.setPageAliase(cmsPage.getPageAliase()); //更新页面名称 one.setPageName(cmsPage.getPageName()); //更新访问路径 one.setPageWebPath(cmsPage.getPageWebPath()); //更新物理路径 one.setPagePhysicalPath(cmsPage.getPagePhysicalPath()); //更新dataUrl one.setDataUrl(cmsPage.getDataUrl()); //执行更新 CmsPage save = cmsPageRepository.save(one); return new CmsPageResult(CommonCode.SUCCESS,save); }
六。删除
前端
//删除页面 export const page_del=(id)=>{ return http.requestDelete(apiUrl+'/cms/page/del/'+id); }
api
@ApiOperation("删除页面")
ResponseResult deletePage(String id);
controller
@Override @DeleteMapping("/del/{id}") public ResponseResult deletePage(@PathVariable("id") String id) { return cmsPageService.deletePage(id); }
service
//删除页面 public ResponseResult deletePage(String id) { cmsPageRepository.deleteById(id); return new ResponseResult(CommonCode.SUCCESS); }