Commit 82fb6b4277f1aec3f1855278c07f0881f02c381f
1 parent
02a8d3de
1、添加上传资源的分页查询功能,控制器和服务
Showing
5 changed files
with
84 additions
and
25 deletions
src/main/java/com/bsth/luban_springboot2/controller/UploadController.java
| 1 | 1 | package com.bsth.luban_springboot2.controller; |
| 2 | 2 | |
| 3 | +import com.bsth.luban_springboot2.dto.PageDto; | |
| 3 | 4 | import com.bsth.luban_springboot2.dto.UploadFileDto; |
| 4 | 5 | import com.bsth.luban_springboot2.dto.request.UploadFileQueryRequest; |
| 5 | 6 | import com.bsth.luban_springboot2.service.UploadFileService; |
| ... | ... | @@ -68,6 +69,7 @@ public class UploadController { |
| 68 | 69 | |
| 69 | 70 | } |
| 70 | 71 | |
| 72 | + // 上传文件数量 | |
| 71 | 73 | class UploadFilesCount { |
| 72 | 74 | private Long count; |
| 73 | 75 | |
| ... | ... | @@ -79,10 +81,10 @@ public class UploadController { |
| 79 | 81 | this.count = count; |
| 80 | 82 | } |
| 81 | 83 | } |
| 82 | - // 文件数量 | |
| 83 | 84 | @RequestMapping(value = "/files/count", method = RequestMethod.GET) |
| 84 | 85 | public UploadFilesCount countFiles() { |
| 85 | 86 | UploadFileDto uploadFileDto = UploadFileDto.builder() |
| 87 | + .mime("image") | |
| 86 | 88 | .cover(Boolean.FALSE) |
| 87 | 89 | .build(); |
| 88 | 90 | Long count = this.uploadFileService.count(uploadFileDto); |
| ... | ... | @@ -90,17 +92,29 @@ public class UploadController { |
| 90 | 92 | uploadFilesCount.setCount(count); |
| 91 | 93 | return uploadFilesCount; |
| 92 | 94 | } |
| 93 | - | |
| 95 | + // 当前页上传文件列表 | |
| 94 | 96 | @RequestMapping(value = "/files", method = RequestMethod.GET) |
| 95 | 97 | public List<UploadFileDto> listFiles(@Valid @ModelAttribute UploadFileQueryRequest request) { |
| 96 | 98 | PageRequest pageRequest = PageRequest.of( |
| 97 | 99 | request.get_start(), request.get_limit(), |
| 98 | 100 | Sort.Direction.DESC, "createTime"); |
| 99 | 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 | 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
src/main/java/com/bsth/luban_springboot2/service/UploadFileService.java
| 1 | 1 | package com.bsth.luban_springboot2.service; |
| 2 | 2 | |
| 3 | +import com.bsth.luban_springboot2.dto.PageDto; | |
| 3 | 4 | import com.bsth.luban_springboot2.dto.UploadFileDto; |
| 4 | 5 | import org.springframework.data.domain.Pageable; |
| 5 | 6 | import org.springframework.web.multipart.MultipartFile; |
| 6 | 7 | |
| 7 | -import java.util.List; | |
| 8 | - | |
| 9 | 8 | /** |
| 10 | 9 | * 上传文件Service。 |
| 11 | 10 | */ |
| ... | ... | @@ -33,10 +32,10 @@ public interface UploadFileService { |
| 33 | 32 | Long count(UploadFileDto uploadFileDto); |
| 34 | 33 | |
| 35 | 34 | /** |
| 36 | - * 分页查询文件。 | |
| 35 | + * 分页查询文件列表。 | |
| 37 | 36 | * @param uploadFileDto |
| 38 | 37 | * @param pageable |
| 39 | 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 | 1 | package com.bsth.luban_springboot2.service.impl; |
| 2 | 2 | |
| 3 | +import com.bsth.luban_springboot2.dto.PageDto; | |
| 3 | 4 | import com.bsth.luban_springboot2.dto.UploadFileDto; |
| 4 | 5 | import com.bsth.luban_springboot2.entity.UploadFile; |
| 5 | 6 | import com.bsth.luban_springboot2.repo.UploadFileRepo; |
| ... | ... | @@ -22,7 +23,6 @@ import java.io.File; |
| 22 | 23 | import java.nio.file.Files; |
| 23 | 24 | import java.nio.file.Paths; |
| 24 | 25 | import java.util.ArrayList; |
| 25 | -import java.util.List; | |
| 26 | 26 | import java.util.UUID; |
| 27 | 27 | |
| 28 | 28 | /** |
| ... | ... | @@ -138,25 +138,29 @@ public class UploadFileServiceImpl implements UploadFileService { |
| 138 | 138 | @Override |
| 139 | 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 | 149 | return this.uploadFileRepo.count(example); |
| 147 | 150 | } |
| 148 | 151 | |
| 149 | 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 | 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 | 164 | Page<UploadFile> uploadFilePage = this.uploadFileRepo.findAll(example, pageable); |
| 161 | 165 | Page<UploadFileDto> uploadFileDtoPage = uploadFilePage.map((uploadFile_source) -> { |
| 162 | 166 | UploadFileDto uploadFileDto_covert = UploadFileDto.builder() |
| ... | ... | @@ -176,7 +180,16 @@ public class UploadFileServiceImpl implements UploadFileService { |
| 176 | 180 | .build(); |
| 177 | 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 | } | ... | ... |