一,条件分页查询
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);
}