Java Spring Framework Method: Auto Sorting and Pagination with Bookmarking
@GetMapping('autoSort2')
@ResponseBody
public R autoSort2(@RequestParam Map<String, Object> params, NongzuowuEntity nongzuowuEntity, HttpServletRequest request) {
Integer userId = getUserId(request.getSession());
params.put('userId', userId);
PageUtils page = storeupService.queryPage(params);
String sortField = request.getParameter('sortField');
String order = request.getParameter('order');
if (StringUtils.isNotBlank(sortField) && StringUtils.isNotBlank(order)) {
List<Map<String, Object>> records = page.getRecords();
List<Map<String, Object>> sortedRecords = new ArrayList<>(records.size());
for (Map<String, Object> record : records) {
Integer id = (Integer) record.get('id');
StoreupEntity storeupEntity = storeupService.getByUserIdAndRefId(userId, id);
if (storeupEntity != null) {
record.put('storeupTime', storeupEntity.getCreateTime());
}
sortedRecords.add(record);
}
String orderClause = order.equalsIgnoreCase('asc') ? 'ASC' : 'DESC';
String sortClause = ' ORDER BY ' + sortField + ' ' + orderClause + ', id DESC';
QueryWrapper<NongzuowuEntity> wrapper = new QueryWrapper<>(nongzuowuEntity);
wrapper.in('id', sortedRecords.stream().map(s -> s.get('id')).collect(Collectors.toList()));
wrapper.last(sortClause);
List<NongzuowuEntity> nongzuowuEntities = nongzuowuService.list(wrapper);
List<NongzuowuEntity> resultList = new ArrayList<>(nongzuowuEntities.size());
List<Integer> bookmarkedIds = storeupService.getByUserId(userId).stream().map(StoreupEntity::getRefId).collect(Collectors.toList());
int limit = 20;
if (bookmarkedIds.size() < limit) {
for (NongzuowuEntity entity : nongzuowuEntities) {
if (!bookmarkedIds.contains(entity.getId())) {
resultList.add(entity);
bookmarkedIds.add(entity.getId());
}
if (bookmarkedIds.size() >= limit) {
break;
}
}
} else {
for (NongzuowuEntity entity : nongzuowuEntities) {
if (bookmarkedIds.contains(entity.getId())) {
resultList.add(entity);
}
}
resultList = resultList.subList(0, limit);
}
return R.ok().put('data', resultList);
} else {
return R.error('排序参数为空');
}
}
原文地址: http://www.cveoy.top/t/topic/nMu0 著作权归作者所有。请勿转载和采集!