Commit 82fb6b4277f1aec3f1855278c07f0881f02c381f

Authored by 徐烜
1 parent 02a8d3de

1、添加上传资源的分页查询功能,控制器和服务

src/main/java/com/bsth/luban_springboot2/controller/UploadController.java
1 package com.bsth.luban_springboot2.controller; 1 package com.bsth.luban_springboot2.controller;
2 2
  3 +import com.bsth.luban_springboot2.dto.PageDto;
3 import com.bsth.luban_springboot2.dto.UploadFileDto; 4 import com.bsth.luban_springboot2.dto.UploadFileDto;
4 import com.bsth.luban_springboot2.dto.request.UploadFileQueryRequest; 5 import com.bsth.luban_springboot2.dto.request.UploadFileQueryRequest;
5 import com.bsth.luban_springboot2.service.UploadFileService; 6 import com.bsth.luban_springboot2.service.UploadFileService;
@@ -68,6 +69,7 @@ public class UploadController { @@ -68,6 +69,7 @@ public class UploadController {
68 69
69 } 70 }
70 71
  72 + // 上传文件数量
71 class UploadFilesCount { 73 class UploadFilesCount {
72 private Long count; 74 private Long count;
73 75
@@ -79,10 +81,10 @@ public class UploadController { @@ -79,10 +81,10 @@ public class UploadController {
79 this.count = count; 81 this.count = count;
80 } 82 }
81 } 83 }
82 - // 文件数量  
83 @RequestMapping(value = "/files/count", method = RequestMethod.GET) 84 @RequestMapping(value = "/files/count", method = RequestMethod.GET)
84 public UploadFilesCount countFiles() { 85 public UploadFilesCount countFiles() {
85 UploadFileDto uploadFileDto = UploadFileDto.builder() 86 UploadFileDto uploadFileDto = UploadFileDto.builder()
  87 + .mime("image")
86 .cover(Boolean.FALSE) 88 .cover(Boolean.FALSE)
87 .build(); 89 .build();
88 Long count = this.uploadFileService.count(uploadFileDto); 90 Long count = this.uploadFileService.count(uploadFileDto);
@@ -90,17 +92,29 @@ public class UploadController { @@ -90,17 +92,29 @@ public class UploadController {
90 uploadFilesCount.setCount(count); 92 uploadFilesCount.setCount(count);
91 return uploadFilesCount; 93 return uploadFilesCount;
92 } 94 }
93 - 95 + // 当前页上传文件列表
94 @RequestMapping(value = "/files", method = RequestMethod.GET) 96 @RequestMapping(value = "/files", method = RequestMethod.GET)
95 public List<UploadFileDto> listFiles(@Valid @ModelAttribute UploadFileQueryRequest request) { 97 public List<UploadFileDto> listFiles(@Valid @ModelAttribute UploadFileQueryRequest request) {
96 PageRequest pageRequest = PageRequest.of( 98 PageRequest pageRequest = PageRequest.of(
97 request.get_start(), request.get_limit(), 99 request.get_start(), request.get_limit(),
98 Sort.Direction.DESC, "createTime"); 100 Sort.Direction.DESC, "createTime");
99 UploadFileDto uploadFileDto = UploadFileDto.builder() 101 UploadFileDto uploadFileDto = UploadFileDto.builder()
100 - .cover(Boolean.FALSE)  
101 - .mime(request.getMime()) 102 + .cover(request.get_cover())
  103 + .mime(request.getMime() == null ? "image" : request.getMime())
102 .build(); 104 .build();
103 - return this.uploadFileService.listFiles(uploadFileDto, pageRequest); 105 + return this.uploadFileService.listFilesPage(uploadFileDto, pageRequest).getDataList();
  106 + }
104 107
  108 + // 分页上传列表
  109 + @RequestMapping(value = "/getFiles", method = RequestMethod.GET)
  110 + public PageDto<UploadFileDto> getFiles(@Valid @ModelAttribute UploadFileQueryRequest request) {
  111 + PageRequest pageRequest = PageRequest.of(
  112 + request.get_start(), request.get_limit(),
  113 + Sort.Direction.DESC, "createTime");
  114 + UploadFileDto uploadFileDto = UploadFileDto.builder()
  115 + .cover(request.get_cover())
  116 + .mime(request.getMime())
  117 + .build();
  118 + return this.uploadFileService.listFilesPage(uploadFileDto, pageRequest);
105 } 119 }
106 } 120 }
src/main/java/com/bsth/luban_springboot2/dto/PageDto.java 0 → 100644
  1 +package com.bsth.luban_springboot2.dto;
  2 +
  3 +import lombok.Builder;
  4 +import lombok.Data;
  5 +
  6 +import java.io.Serializable;
  7 +import java.util.List;
  8 +
  9 +/**
  10 + * 分页数据dto。
  11 + */
  12 +@Data
  13 +@Builder
  14 +public class PageDto<T> implements Serializable {
  15 + private static final long serialVersionUID = -1524447529861110365L;
  16 +
  17 + /** 第几从1开始 */
  18 + private Integer page;
  19 + /** 每页几条数据 */
  20 + private Integer size;
  21 + /** 当前页有几条记录(等于dataList.size()) */
  22 + private Integer currentPageSize;
  23 + /** 一共有多少页 */
  24 + private Integer totalPages;
  25 + /** 一共有多少条记录 */
  26 + private Integer totalDataCount;
  27 +
  28 +
  29 + /** 当前页数据列表 */
  30 + private List<T> dataList;
  31 +}
src/main/java/com/bsth/luban_springboot2/dto/request/UploadFileQueryRequest.java
@@ -13,4 +13,6 @@ public class UploadFileQueryRequest { @@ -13,4 +13,6 @@ public class UploadFileQueryRequest {
13 private Integer _start; 13 private Integer _start;
14 /** mime类型 */ 14 /** mime类型 */
15 private String mime; 15 private String mime;
  16 + /** 是否包含封面图 */
  17 + private Boolean _cover;
16 } 18 }
src/main/java/com/bsth/luban_springboot2/service/UploadFileService.java
1 package com.bsth.luban_springboot2.service; 1 package com.bsth.luban_springboot2.service;
2 2
  3 +import com.bsth.luban_springboot2.dto.PageDto;
3 import com.bsth.luban_springboot2.dto.UploadFileDto; 4 import com.bsth.luban_springboot2.dto.UploadFileDto;
4 import org.springframework.data.domain.Pageable; 5 import org.springframework.data.domain.Pageable;
5 import org.springframework.web.multipart.MultipartFile; 6 import org.springframework.web.multipart.MultipartFile;
6 7
7 -import java.util.List;  
8 -  
9 /** 8 /**
10 * 上传文件Service。 9 * 上传文件Service。
11 */ 10 */
@@ -33,10 +32,10 @@ public interface UploadFileService { @@ -33,10 +32,10 @@ public interface UploadFileService {
33 Long count(UploadFileDto uploadFileDto); 32 Long count(UploadFileDto uploadFileDto);
34 33
35 /** 34 /**
36 - * 分页查询文件 35 + * 分页查询文件列表
37 * @param uploadFileDto 36 * @param uploadFileDto
38 * @param pageable 37 * @param pageable
39 * @return 38 * @return
40 */ 39 */
41 - List<UploadFileDto> listFiles(UploadFileDto uploadFileDto, Pageable pageable); 40 + PageDto<UploadFileDto> listFilesPage(UploadFileDto uploadFileDto, Pageable pageable);
42 } 41 }
src/main/java/com/bsth/luban_springboot2/service/impl/UploadFileServiceImpl.java
1 package com.bsth.luban_springboot2.service.impl; 1 package com.bsth.luban_springboot2.service.impl;
2 2
  3 +import com.bsth.luban_springboot2.dto.PageDto;
3 import com.bsth.luban_springboot2.dto.UploadFileDto; 4 import com.bsth.luban_springboot2.dto.UploadFileDto;
4 import com.bsth.luban_springboot2.entity.UploadFile; 5 import com.bsth.luban_springboot2.entity.UploadFile;
5 import com.bsth.luban_springboot2.repo.UploadFileRepo; 6 import com.bsth.luban_springboot2.repo.UploadFileRepo;
@@ -22,7 +23,6 @@ import java.io.File; @@ -22,7 +23,6 @@ import java.io.File;
22 import java.nio.file.Files; 23 import java.nio.file.Files;
23 import java.nio.file.Paths; 24 import java.nio.file.Paths;
24 import java.util.ArrayList; 25 import java.util.ArrayList;
25 -import java.util.List;  
26 import java.util.UUID; 26 import java.util.UUID;
27 27
28 /** 28 /**
@@ -138,25 +138,29 @@ public class UploadFileServiceImpl implements UploadFileService { @@ -138,25 +138,29 @@ public class UploadFileServiceImpl implements UploadFileService {
138 @Override 138 @Override
139 public Long count(UploadFileDto uploadFileDto) { 139 public Long count(UploadFileDto uploadFileDto) {
140 // 不包括作品封面图 140 // 不包括作品封面图
141 - UploadFile uploadFile = new UploadFile();  
142 - uploadFile.setCover(uploadFileDto.getCover());  
143 - uploadFile.setCreateTime(null);  
144 - uploadFile.setUpdateTime(null);  
145 - Example<UploadFile> example = Example.of(uploadFile); 141 + UploadFile uploadFile_query = new UploadFile();
  142 + uploadFile_query.setMime(uploadFileDto.getMime());
  143 + uploadFile_query.setCover(uploadFileDto.getCover());
  144 + uploadFile_query.setCreateTime(null);
  145 + uploadFile_query.setUpdateTime(null);
  146 + ExampleMatcher matcher = ExampleMatcher.matching()
  147 + .withMatcher("mime", ExampleMatcher.GenericPropertyMatchers.startsWith()); // 对mime使用 like {mime}%
  148 + Example<UploadFile> example = Example.of(uploadFile_query, matcher);
146 return this.uploadFileRepo.count(example); 149 return this.uploadFileRepo.count(example);
147 } 150 }
148 151
149 @Override 152 @Override
150 - public List<UploadFileDto> listFiles(UploadFileDto uploadFileDto, Pageable pageable) {  
151 - // 不包括作品封面图  
152 - UploadFile uploadFile = new UploadFile();  
153 - uploadFile.setCover(uploadFileDto.getCover());  
154 - uploadFile.setMime(uploadFileDto.getMime() == null ? "image" : uploadFileDto.getMime());  
155 - uploadFile.setCreateTime(null);  
156 - uploadFile.setUpdateTime(null); 153 + public PageDto<UploadFileDto> listFilesPage(UploadFileDto uploadFileDto, Pageable pageable) {
  154 + // 1、创建查询参数
  155 + UploadFile uploadFile_query = new UploadFile();
  156 + uploadFile_query.setCover(uploadFileDto.getCover() == null ? Boolean.FALSE : uploadFileDto.getCover());
  157 + uploadFile_query.setMime(uploadFileDto.getMime() == null ? "image" : uploadFileDto.getMime());
  158 + uploadFile_query.setCreateTime(null);
  159 + uploadFile_query.setUpdateTime(null);
157 ExampleMatcher matcher = ExampleMatcher.matching() 160 ExampleMatcher matcher = ExampleMatcher.matching()
158 - .withMatcher("mime", ExampleMatcher.GenericPropertyMatchers.startsWith()); // like {mime}%  
159 - Example<UploadFile> example = Example.of(uploadFile, matcher); 161 + .withMatcher("mime", ExampleMatcher.GenericPropertyMatchers.startsWith()); // 对mime使用 like {mime}%
  162 + Example<UploadFile> example = Example.of(uploadFile_query, matcher);
  163 + // 2、查询
160 Page<UploadFile> uploadFilePage = this.uploadFileRepo.findAll(example, pageable); 164 Page<UploadFile> uploadFilePage = this.uploadFileRepo.findAll(example, pageable);
161 Page<UploadFileDto> uploadFileDtoPage = uploadFilePage.map((uploadFile_source) -> { 165 Page<UploadFileDto> uploadFileDtoPage = uploadFilePage.map((uploadFile_source) -> {
162 UploadFileDto uploadFileDto_covert = UploadFileDto.builder() 166 UploadFileDto uploadFileDto_covert = UploadFileDto.builder()
@@ -176,7 +180,16 @@ public class UploadFileServiceImpl implements UploadFileService { @@ -176,7 +180,16 @@ public class UploadFileServiceImpl implements UploadFileService {
176 .build(); 180 .build();
177 return uploadFileDto_covert; 181 return uploadFileDto_covert;
178 }); 182 });
  183 + // 3、转换PageDto返回
  184 + PageDto<UploadFileDto> uploadFileDtoPageDto = PageDto.<UploadFileDto>builder()
  185 + .page(uploadFileDtoPage.getNumber() + 1)
  186 + .size(uploadFileDtoPage.getSize())
  187 + .currentPageSize(uploadFileDtoPage.getNumberOfElements())
  188 + .totalPages(uploadFileDtoPage.getTotalPages())
  189 + .totalDataCount(new Long(uploadFileDtoPage.getTotalElements()).intValue())
  190 + .dataList(uploadFileDtoPage.getContent())
  191 + .build();
179 192
180 - return uploadFileDtoPage.getContent(); 193 + return uploadFileDtoPageDto;
181 } 194 }
182 } 195 }