mirror of https://github.com/elunez/eladmin
feat: 增加分页实体 APage,使 Swagger 可显示接口的响应示例 (#800)
* feat: 增加分页实体 APage,使 Swagger 可显示接口的响应示例 1. 增加类 APage,并重构 PageUtils 2. 调整 UserController 的 `查询用户` 接口的返回值类型 * refactor: rename APage -> PageResultpull/729/head^2
parent
8ce9db9a5c
commit
a74cf51c0a
|
@ -0,0 +1,17 @@
|
||||||
|
package me.zhengjie.utils;
|
||||||
|
|
||||||
|
import lombok.AccessLevel;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@RequiredArgsConstructor(access = AccessLevel.PACKAGE)
|
||||||
|
public class PageResult<T> {
|
||||||
|
|
||||||
|
private final List<T> content;
|
||||||
|
|
||||||
|
private final long totalElements;
|
||||||
|
|
||||||
|
}
|
|
@ -28,11 +28,11 @@ public class PageUtil extends cn.hutool.core.util.PageUtil {
|
||||||
/**
|
/**
|
||||||
* List 分页
|
* List 分页
|
||||||
*/
|
*/
|
||||||
public static List toPage(int page, int size , List list) {
|
public static <T> List<T> paging(int page, int size , List<T> list) {
|
||||||
int fromIndex = page * size;
|
int fromIndex = page * size;
|
||||||
int toIndex = page * size + size;
|
int toIndex = page * size + size;
|
||||||
if(fromIndex > list.size()){
|
if(fromIndex > list.size()){
|
||||||
return new ArrayList();
|
return Collections.emptyList();
|
||||||
} else if(toIndex >= list.size()) {
|
} else if(toIndex >= list.size()) {
|
||||||
return list.subList(fromIndex,list.size());
|
return list.subList(fromIndex,list.size());
|
||||||
} else {
|
} else {
|
||||||
|
@ -43,21 +43,15 @@ public class PageUtil extends cn.hutool.core.util.PageUtil {
|
||||||
/**
|
/**
|
||||||
* Page 数据处理,预防redis反序列化报错
|
* Page 数据处理,预防redis反序列化报错
|
||||||
*/
|
*/
|
||||||
public static Map<String,Object> toPage(Page page) {
|
public static <T> PageResult<T> toPage(Page<T> page) {
|
||||||
Map<String,Object> map = new LinkedHashMap<>(2);
|
return new PageResult<>(page.getContent(), page.getTotalElements());
|
||||||
map.put("content",page.getContent());
|
|
||||||
map.put("totalElements",page.getTotalElements());
|
|
||||||
return map;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 自定义分页
|
* 自定义分页
|
||||||
*/
|
*/
|
||||||
public static Map<String,Object> toPage(Object object, Object totalElements) {
|
public static <T> PageResult<T> toPage(List<T> list, long totalElements) {
|
||||||
Map<String,Object> map = new LinkedHashMap<>(2);
|
return new PageResult<>(list, totalElements);
|
||||||
map.put("content",object);
|
|
||||||
map.put("totalElements",totalElements);
|
|
||||||
return map;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -90,7 +90,7 @@ public class GeneratorServiceImpl implements GeneratorService {
|
||||||
"where table_schema = (select database()) and table_name like :table";
|
"where table_schema = (select database()) and table_name like :table";
|
||||||
Query queryCount = em.createNativeQuery(countSql);
|
Query queryCount = em.createNativeQuery(countSql);
|
||||||
queryCount.setParameter("table", StringUtils.isNotBlank(name) ? ("%" + name + "%") : "%%");
|
queryCount.setParameter("table", StringUtils.isNotBlank(name) ? ("%" + name + "%") : "%%");
|
||||||
Object totalElements = queryCount.getSingleResult();
|
long totalElements = (long) queryCount.getSingleResult();
|
||||||
return PageUtil.toPage(tableInfos, totalElements);
|
return PageUtil.toPage(tableInfos, totalElements);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
package me.zhengjie.modules.security.service;
|
package me.zhengjie.modules.security.service;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import me.zhengjie.utils.PageResult;
|
||||||
import me.zhengjie.modules.security.config.bean.SecurityProperties;
|
import me.zhengjie.modules.security.config.bean.SecurityProperties;
|
||||||
import me.zhengjie.modules.security.service.dto.JwtUserDto;
|
import me.zhengjie.modules.security.service.dto.JwtUserDto;
|
||||||
import me.zhengjie.modules.security.service.dto.OnlineUserDto;
|
import me.zhengjie.modules.security.service.dto.OnlineUserDto;
|
||||||
|
@ -70,10 +71,10 @@ public class OnlineUserService {
|
||||||
* @param pageable /
|
* @param pageable /
|
||||||
* @return /
|
* @return /
|
||||||
*/
|
*/
|
||||||
public Map<String,Object> getAll(String filter, Pageable pageable){
|
public PageResult<OnlineUserDto> getAll(String filter, Pageable pageable){
|
||||||
List<OnlineUserDto> onlineUserDtos = getAll(filter);
|
List<OnlineUserDto> onlineUserDtos = getAll(filter);
|
||||||
return PageUtil.toPage(
|
return PageUtil.toPage(
|
||||||
PageUtil.toPage(pageable.getPageNumber(),pageable.getPageSize(), onlineUserDtos),
|
PageUtil.paging(pageable.getPageNumber(),pageable.getPageSize(), onlineUserDtos),
|
||||||
onlineUserDtos.size()
|
onlineUserDtos.size()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@ import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import me.zhengjie.annotation.Log;
|
import me.zhengjie.annotation.Log;
|
||||||
|
import me.zhengjie.utils.PageResult;
|
||||||
import me.zhengjie.config.RsaProperties;
|
import me.zhengjie.config.RsaProperties;
|
||||||
import me.zhengjie.modules.system.domain.Dept;
|
import me.zhengjie.modules.system.domain.Dept;
|
||||||
import me.zhengjie.modules.system.service.DataService;
|
import me.zhengjie.modules.system.service.DataService;
|
||||||
|
@ -77,7 +78,7 @@ public class UserController {
|
||||||
@ApiOperation("查询用户")
|
@ApiOperation("查询用户")
|
||||||
@GetMapping
|
@GetMapping
|
||||||
@PreAuthorize("@el.check('user:list')")
|
@PreAuthorize("@el.check('user:list')")
|
||||||
public ResponseEntity<Object> queryUser(UserQueryCriteria criteria, Pageable pageable){
|
public ResponseEntity<PageResult<UserDto>> queryUser(UserQueryCriteria criteria, Pageable pageable){
|
||||||
if (!ObjectUtils.isEmpty(criteria.getDeptId())) {
|
if (!ObjectUtils.isEmpty(criteria.getDeptId())) {
|
||||||
criteria.getDeptIds().add(criteria.getDeptId());
|
criteria.getDeptIds().add(criteria.getDeptId());
|
||||||
// 先查找是否存在子节点
|
// 先查找是否存在子节点
|
||||||
|
|
|
@ -15,12 +15,12 @@
|
||||||
*/
|
*/
|
||||||
package me.zhengjie.modules.system.service;
|
package me.zhengjie.modules.system.service;
|
||||||
|
|
||||||
|
import me.zhengjie.utils.PageResult;
|
||||||
import me.zhengjie.modules.system.domain.DictDetail;
|
import me.zhengjie.modules.system.domain.DictDetail;
|
||||||
import me.zhengjie.modules.system.service.dto.DictDetailDto;
|
import me.zhengjie.modules.system.service.dto.DictDetailDto;
|
||||||
import me.zhengjie.modules.system.service.dto.DictDetailQueryCriteria;
|
import me.zhengjie.modules.system.service.dto.DictDetailQueryCriteria;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Zheng Jie
|
* @author Zheng Jie
|
||||||
|
@ -52,7 +52,7 @@ public interface DictDetailService {
|
||||||
* @param pageable 分页参数
|
* @param pageable 分页参数
|
||||||
* @return /
|
* @return /
|
||||||
*/
|
*/
|
||||||
Map<String,Object> queryAll(DictDetailQueryCriteria criteria, Pageable pageable);
|
PageResult<DictDetailDto> queryAll(DictDetailQueryCriteria criteria, Pageable pageable);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据字典名称获取字典详情
|
* 根据字典名称获取字典详情
|
||||||
|
@ -60,4 +60,4 @@ public interface DictDetailService {
|
||||||
* @return /
|
* @return /
|
||||||
*/
|
*/
|
||||||
List<DictDetailDto> getDictByName(String name);
|
List<DictDetailDto> getDictByName(String name);
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
*/
|
*/
|
||||||
package me.zhengjie.modules.system.service;
|
package me.zhengjie.modules.system.service;
|
||||||
|
|
||||||
|
import me.zhengjie.utils.PageResult;
|
||||||
import me.zhengjie.modules.system.domain.Dict;
|
import me.zhengjie.modules.system.domain.Dict;
|
||||||
import me.zhengjie.modules.system.service.dto.DictDto;
|
import me.zhengjie.modules.system.service.dto.DictDto;
|
||||||
import me.zhengjie.modules.system.service.dto.DictQueryCriteria;
|
import me.zhengjie.modules.system.service.dto.DictQueryCriteria;
|
||||||
|
@ -22,7 +23,6 @@ import org.springframework.data.domain.Pageable;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -37,7 +37,7 @@ public interface DictService {
|
||||||
* @param pageable 分页参数
|
* @param pageable 分页参数
|
||||||
* @return /
|
* @return /
|
||||||
*/
|
*/
|
||||||
Map<String,Object> queryAll(DictQueryCriteria criteria, Pageable pageable);
|
PageResult<DictDto> queryAll(DictQueryCriteria criteria, Pageable pageable);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询全部数据
|
* 查询全部数据
|
||||||
|
@ -72,4 +72,4 @@ public interface DictService {
|
||||||
* @throws IOException /
|
* @throws IOException /
|
||||||
*/
|
*/
|
||||||
void download(List<DictDto> queryAll, HttpServletResponse response) throws IOException;
|
void download(List<DictDto> queryAll, HttpServletResponse response) throws IOException;
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
*/
|
*/
|
||||||
package me.zhengjie.modules.system.service;
|
package me.zhengjie.modules.system.service;
|
||||||
|
|
||||||
|
import me.zhengjie.utils.PageResult;
|
||||||
import me.zhengjie.modules.system.domain.Job;
|
import me.zhengjie.modules.system.domain.Job;
|
||||||
import me.zhengjie.modules.system.service.dto.JobDto;
|
import me.zhengjie.modules.system.service.dto.JobDto;
|
||||||
import me.zhengjie.modules.system.service.dto.JobQueryCriteria;
|
import me.zhengjie.modules.system.service.dto.JobQueryCriteria;
|
||||||
|
@ -22,7 +23,6 @@ import org.springframework.data.domain.Pageable;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -63,7 +63,7 @@ public interface JobService {
|
||||||
* @param pageable 分页参数
|
* @param pageable 分页参数
|
||||||
* @return /
|
* @return /
|
||||||
*/
|
*/
|
||||||
Map<String,Object> queryAll(JobQueryCriteria criteria, Pageable pageable);
|
PageResult<JobDto> queryAll(JobQueryCriteria criteria, Pageable pageable);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询全部数据
|
* 查询全部数据
|
||||||
|
@ -85,4 +85,4 @@ public interface JobService {
|
||||||
* @param ids /
|
* @param ids /
|
||||||
*/
|
*/
|
||||||
void verification(Set<Long> ids);
|
void verification(Set<Long> ids);
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
*/
|
*/
|
||||||
package me.zhengjie.modules.system.service;
|
package me.zhengjie.modules.system.service;
|
||||||
|
|
||||||
|
import me.zhengjie.utils.PageResult;
|
||||||
import me.zhengjie.modules.system.domain.User;
|
import me.zhengjie.modules.system.domain.User;
|
||||||
import me.zhengjie.modules.system.service.dto.UserDto;
|
import me.zhengjie.modules.system.service.dto.UserDto;
|
||||||
import me.zhengjie.modules.system.service.dto.UserLoginDto;
|
import me.zhengjie.modules.system.service.dto.UserLoginDto;
|
||||||
|
@ -100,7 +101,7 @@ public interface UserService {
|
||||||
* @param pageable 分页参数
|
* @param pageable 分页参数
|
||||||
* @return /
|
* @return /
|
||||||
*/
|
*/
|
||||||
Object queryAll(UserQueryCriteria criteria, Pageable pageable);
|
PageResult<UserDto> queryAll(UserQueryCriteria criteria, Pageable pageable);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询全部不分页
|
* 查询全部不分页
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
package me.zhengjie.modules.system.service.impl;
|
package me.zhengjie.modules.system.service.impl;
|
||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import me.zhengjie.utils.PageResult;
|
||||||
import me.zhengjie.modules.system.domain.Dict;
|
import me.zhengjie.modules.system.domain.Dict;
|
||||||
import me.zhengjie.modules.system.domain.DictDetail;
|
import me.zhengjie.modules.system.domain.DictDetail;
|
||||||
import me.zhengjie.modules.system.repository.DictRepository;
|
import me.zhengjie.modules.system.repository.DictRepository;
|
||||||
|
@ -32,7 +33,6 @@ import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Zheng Jie
|
* @author Zheng Jie
|
||||||
|
@ -49,7 +49,7 @@ public class DictDetailServiceImpl implements DictDetailService {
|
||||||
private final RedisUtils redisUtils;
|
private final RedisUtils redisUtils;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String,Object> queryAll(DictDetailQueryCriteria criteria, Pageable pageable) {
|
public PageResult<DictDetailDto> queryAll(DictDetailQueryCriteria criteria, Pageable pageable) {
|
||||||
Page<DictDetail> page = dictDetailRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
|
Page<DictDetail> page = dictDetailRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
|
||||||
return PageUtil.toPage(page.map(dictDetailMapper::toDto));
|
return PageUtil.toPage(page.map(dictDetailMapper::toDto));
|
||||||
}
|
}
|
||||||
|
@ -92,4 +92,4 @@ public class DictDetailServiceImpl implements DictDetailService {
|
||||||
Dict dict = dictRepository.findById(dictDetail.getDict().getId()).orElseGet(Dict::new);
|
Dict dict = dictRepository.findById(dictDetail.getDict().getId()).orElseGet(Dict::new);
|
||||||
redisUtils.del(CacheKey.DICT_NAME + dict.getName());
|
redisUtils.del(CacheKey.DICT_NAME + dict.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@ package me.zhengjie.modules.system.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import me.zhengjie.utils.PageResult;
|
||||||
import me.zhengjie.modules.system.domain.Dict;
|
import me.zhengjie.modules.system.domain.Dict;
|
||||||
import me.zhengjie.modules.system.service.dto.DictDetailDto;
|
import me.zhengjie.modules.system.service.dto.DictDetailDto;
|
||||||
import me.zhengjie.modules.system.service.dto.DictQueryCriteria;
|
import me.zhengjie.modules.system.service.dto.DictQueryCriteria;
|
||||||
|
@ -48,7 +49,7 @@ public class DictServiceImpl implements DictService {
|
||||||
private final RedisUtils redisUtils;
|
private final RedisUtils redisUtils;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String, Object> queryAll(DictQueryCriteria dict, Pageable pageable){
|
public PageResult<DictDto> queryAll(DictQueryCriteria dict, Pageable pageable){
|
||||||
Page<Dict> page = dictRepository.findAll((root, query, cb) -> QueryHelp.getPredicate(root, dict, cb), pageable);
|
Page<Dict> page = dictRepository.findAll((root, query, cb) -> QueryHelp.getPredicate(root, dict, cb), pageable);
|
||||||
return PageUtil.toPage(page.map(dictMapper::toDto));
|
return PageUtil.toPage(page.map(dictMapper::toDto));
|
||||||
}
|
}
|
||||||
|
@ -118,4 +119,4 @@ public class DictServiceImpl implements DictService {
|
||||||
public void delCaches(Dict dict){
|
public void delCaches(Dict dict){
|
||||||
redisUtils.del(CacheKey.DICT_NAME + dict.getName());
|
redisUtils.del(CacheKey.DICT_NAME + dict.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
package me.zhengjie.modules.system.service.impl;
|
package me.zhengjie.modules.system.service.impl;
|
||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import me.zhengjie.utils.PageResult;
|
||||||
import me.zhengjie.exception.BadRequestException;
|
import me.zhengjie.exception.BadRequestException;
|
||||||
import me.zhengjie.exception.EntityExistException;
|
import me.zhengjie.exception.EntityExistException;
|
||||||
import me.zhengjie.modules.system.domain.Job;
|
import me.zhengjie.modules.system.domain.Job;
|
||||||
|
@ -52,7 +53,7 @@ public class JobServiceImpl implements JobService {
|
||||||
private final UserRepository userRepository;
|
private final UserRepository userRepository;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String,Object> queryAll(JobQueryCriteria criteria, Pageable pageable) {
|
public PageResult<JobDto> queryAll(JobQueryCriteria criteria, Pageable pageable) {
|
||||||
Page<Job> page = jobRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
|
Page<Job> page = jobRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
|
||||||
return PageUtil.toPage(page.map(jobMapper::toDto).getContent(),page.getTotalElements());
|
return PageUtil.toPage(page.map(jobMapper::toDto).getContent(),page.getTotalElements());
|
||||||
}
|
}
|
||||||
|
@ -122,4 +123,4 @@ public class JobServiceImpl implements JobService {
|
||||||
throw new BadRequestException("所选的岗位中存在用户关联,请解除关联再试!");
|
throw new BadRequestException("所选的岗位中存在用户关联,请解除关联再试!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
package me.zhengjie.modules.system.service.impl;
|
package me.zhengjie.modules.system.service.impl;
|
||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import me.zhengjie.utils.PageResult;
|
||||||
import me.zhengjie.config.FileProperties;
|
import me.zhengjie.config.FileProperties;
|
||||||
import me.zhengjie.exception.BadRequestException;
|
import me.zhengjie.exception.BadRequestException;
|
||||||
import me.zhengjie.modules.security.service.OnlineUserService;
|
import me.zhengjie.modules.security.service.OnlineUserService;
|
||||||
|
@ -61,7 +62,7 @@ public class UserServiceImpl implements UserService {
|
||||||
private final UserLoginMapper userLoginMapper;
|
private final UserLoginMapper userLoginMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object queryAll(UserQueryCriteria criteria, Pageable pageable) {
|
public PageResult<UserDto> queryAll(UserQueryCriteria criteria, Pageable pageable) {
|
||||||
Page<User> page = userRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder), pageable);
|
Page<User> page = userRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder), pageable);
|
||||||
return PageUtil.toPage(page.map(userMapper::toDto));
|
return PageUtil.toPage(page.map(userMapper::toDto));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue