Commit 82fb6b4277f1aec3f1855278c07f0881f02c381f

Authored by 徐烜
1 parent 02a8d3de

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

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
... ... @@ -13,4 +13,6 @@ public class UploadFileQueryRequest {
13 13 private Integer _start;
14 14 /** mime类型 */
15 15 private String mime;
  16 + /** 是否包含封面图 */
  17 + private Boolean _cover;
16 18 }
... ...
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 }
... ...