mirror of
https://github.com/MewoLab/AquaDX.git
synced 2025-10-26 04:22:38 +00:00
[chuni] Fix music detail paging
This commit is contained in:
parent
ad0996fa8d
commit
8e51019f02
@ -10,6 +10,7 @@ import icu.samnyan.aqua.sega.util.jackson.StringMapper;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.data.domain.Page;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@ -43,53 +44,35 @@ public class GetUserMusicHandler implements BaseHandler {
|
|||||||
String userId = (String) request.get("userId");
|
String userId = (String) request.get("userId");
|
||||||
int nextIndex = Integer.parseInt((String) request.get("nextIndex"));
|
int nextIndex = Integer.parseInt((String) request.get("nextIndex"));
|
||||||
int maxCount = Integer.parseInt((String) request.get("maxCount"));
|
int maxCount = Integer.parseInt((String) request.get("maxCount"));
|
||||||
|
int pageNum = nextIndex / maxCount;
|
||||||
|
|
||||||
|
Page<UserMusicDetail> dbPage = userMusicDetailService.getByUser(userId,pageNum,maxCount);
|
||||||
|
|
||||||
List<UserMusicDetail> userMusicDetailList = userMusicDetailService.getByUser(userId);
|
|
||||||
|
|
||||||
|
|
||||||
Map<Integer, Map<Integer, UserMusicDetail>> allMusicMap = new LinkedHashMap<>();
|
|
||||||
|
|
||||||
userMusicDetailList.forEach(userMusicDetail -> {
|
|
||||||
|
|
||||||
int musicId = userMusicDetail.getMusicId();
|
|
||||||
int level = userMusicDetail.getLevel();
|
|
||||||
|
|
||||||
if (allMusicMap.containsKey(musicId)) {
|
|
||||||
allMusicMap.get(musicId).put(level, userMusicDetail);
|
|
||||||
} else {
|
|
||||||
Map<Integer, UserMusicDetail> levelMap = new HashMap<>();
|
|
||||||
levelMap.put(level, userMusicDetail);
|
|
||||||
allMusicMap.put(musicId, levelMap);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Convert to result format
|
// Convert to result format
|
||||||
// Result Map
|
// Result Map
|
||||||
Map<Integer, UserMusicListItem> userMusicMap = new LinkedHashMap<>();
|
Map<Integer, UserMusicListItem> userMusicMap = new LinkedHashMap<>();
|
||||||
|
|
||||||
allMusicMap.forEach((mid, lvMap) -> {
|
dbPage.getContent().forEach(userMusicDetail -> {
|
||||||
UserMusicListItem list;
|
UserMusicListItem list;
|
||||||
if (userMusicMap.containsKey(mid)) {
|
if (userMusicMap.containsKey(userMusicDetail.getMusicId())) {
|
||||||
list = userMusicMap.get(mid);
|
list = userMusicMap.get(userMusicDetail.getMusicId());
|
||||||
} else {
|
} else {
|
||||||
list = new UserMusicListItem(0, new ArrayList<>());
|
list = new UserMusicListItem(0, new ArrayList<>());
|
||||||
userMusicMap.put(mid, list);
|
userMusicMap.put(userMusicDetail.getMusicId(), list);
|
||||||
}
|
}
|
||||||
list.getUserMusicDetailList().addAll(lvMap.values());
|
list.getUserMusicDetailList().add(userMusicDetail);
|
||||||
list.setLength(lvMap.size());
|
list.setLength(list.getUserMusicDetailList().size());
|
||||||
});
|
});
|
||||||
|
|
||||||
List<UserMusicListItem> result = userMusicMap.values().stream().skip(nextIndex).limit(maxCount).collect(Collectors.toList());
|
|
||||||
|
|
||||||
|
long currentIndex = maxCount * pageNum + dbPage.getNumberOfElements();
|
||||||
long currentIndex = result.size();
|
|
||||||
|
|
||||||
Map<String, Object> resultMap = new LinkedHashMap<>();
|
Map<String, Object> resultMap = new LinkedHashMap<>();
|
||||||
resultMap.put("userId", userId);
|
resultMap.put("userId", userId);
|
||||||
resultMap.put("length", result.size());
|
resultMap.put("length", userMusicMap.size());
|
||||||
resultMap.put("nextIndex", allMusicMap.size() < maxCount ? -1 : currentIndex);
|
resultMap.put("nextIndex", dbPage.getNumberOfElements() < maxCount ? -1 : currentIndex);
|
||||||
resultMap.put("userMusicList", result);
|
resultMap.put("userMusicList", userMusicMap.values());
|
||||||
|
|
||||||
String json = mapper.write(resultMap);
|
String json = mapper.write(resultMap);
|
||||||
logger.info("Response: " + json);
|
logger.info("Response: " + json);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user