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 | 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 | } |