mirror of
https://github.com/MewoLab/AquaDX.git
synced 2026-02-04 22:47:26 +08:00
[O] Optimize mai2 GetUserMusic
This commit is contained in:
@@ -1,65 +0,0 @@
|
|||||||
package icu.samnyan.aqua.sega.maimai2.handler;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
|
||||||
import icu.samnyan.aqua.sega.maimai2.model.Mai2UserMusicDetailRepo;
|
|
||||||
import icu.samnyan.aqua.sega.general.BaseHandler;
|
|
||||||
import icu.samnyan.aqua.sega.maimai2.model.response.data.UserMusic;
|
|
||||||
import icu.samnyan.aqua.sega.maimai2.model.userdata.Mai2UserMusicDetail;
|
|
||||||
import icu.samnyan.aqua.sega.util.jackson.BasicMapper;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.data.domain.Page;
|
|
||||||
import org.springframework.data.domain.PageRequest;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.LinkedHashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author samnyan (privateamusement@protonmail.com)
|
|
||||||
*/
|
|
||||||
@Component("Maimai2GetUserMusicHandler")
|
|
||||||
public class GetUserMusicHandler implements BaseHandler {
|
|
||||||
|
|
||||||
private static final Logger logger = LoggerFactory.getLogger(GetUserMusicHandler.class);
|
|
||||||
|
|
||||||
private final BasicMapper mapper;
|
|
||||||
|
|
||||||
private final Mai2UserMusicDetailRepo userMusicDetailRepository;
|
|
||||||
|
|
||||||
public GetUserMusicHandler(BasicMapper mapper, Mai2UserMusicDetailRepo userMusicDetailRepository) {
|
|
||||||
this.mapper = mapper;
|
|
||||||
this.userMusicDetailRepository = userMusicDetailRepository;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String handle(Map<String, Object> request) throws JsonProcessingException {
|
|
||||||
long userId = ((Number) request.get("userId")).longValue();
|
|
||||||
int nextIndexVal = ((Number) request.get("nextIndex")).intValue();
|
|
||||||
int maxCount = ((Number) request.get("maxCount")).intValue();
|
|
||||||
|
|
||||||
int pageNum = nextIndexVal / maxCount;
|
|
||||||
|
|
||||||
Page<Mai2UserMusicDetail> dbPage = userMusicDetailRepository.findByUser_Card_ExtId(userId, PageRequest.of(pageNum, maxCount));
|
|
||||||
|
|
||||||
long currentIndex = maxCount * pageNum + dbPage.getNumberOfElements();
|
|
||||||
|
|
||||||
Map<String, Object> resultMap = new LinkedHashMap<>();
|
|
||||||
resultMap.put("userId", userId);
|
|
||||||
resultMap.put("nextIndex", dbPage.getNumberOfElements() < maxCount ? 0 : currentIndex);
|
|
||||||
|
|
||||||
UserMusic userMusic = new UserMusic();
|
|
||||||
userMusic.setUserMusicDetailList(dbPage.getContent());
|
|
||||||
|
|
||||||
List<UserMusic> userMusicList = new ArrayList<>();
|
|
||||||
userMusicList.add(userMusic);
|
|
||||||
|
|
||||||
resultMap.put("userMusicList", userMusicList);
|
|
||||||
|
|
||||||
String json = mapper.write(resultMap);
|
|
||||||
logger.info("Response: " + json);
|
|
||||||
return json;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
package icu.samnyan.aqua.sega.maimai2.handler
|
||||||
|
|
||||||
|
import icu.samnyan.aqua.sega.general.BaseHandler
|
||||||
|
import icu.samnyan.aqua.sega.maimai2.model.Mai2Repos
|
||||||
|
import icu.samnyan.aqua.sega.util.jackson.BasicMapper
|
||||||
|
import org.slf4j.Logger
|
||||||
|
import org.slf4j.LoggerFactory
|
||||||
|
import org.springframework.stereotype.Component
|
||||||
|
|
||||||
|
@Component("Maimai2GetUserMusicHandler")
|
||||||
|
class GetUserMusicHandler(
|
||||||
|
val mapper: BasicMapper,
|
||||||
|
val repos: Mai2Repos
|
||||||
|
) : BaseHandler {
|
||||||
|
override fun handle(request: Map<String, Any>): Any {
|
||||||
|
val userId = (request["userId"] as Number).toLong()
|
||||||
|
// val nextIndexVal = (request["nextIndex"] as Number).toInt()
|
||||||
|
// val maxCount = (request["maxCount"] as Number).toInt()
|
||||||
|
//
|
||||||
|
// val pageNum = nextIndexVal / maxCount
|
||||||
|
//
|
||||||
|
// val dbPage = userMusicDetailRepository.findByUser_Card_ExtId(userId, PageRequest.of(pageNum, maxCount))
|
||||||
|
//
|
||||||
|
// val currentIndex = (maxCount * pageNum + dbPage.numberOfElements).toLong()
|
||||||
|
//
|
||||||
|
// val resultMap = mutableMapOf(
|
||||||
|
// "userId" to userId,
|
||||||
|
// "nextIndex" to if (dbPage.numberOfElements < maxCount) 0 else currentIndex,
|
||||||
|
// "userMusicList" to listOf(mapOf("userMusicDetailList" to dbPage.content))
|
||||||
|
// )
|
||||||
|
//
|
||||||
|
// val json = mapper.write(resultMap)
|
||||||
|
// logger.info("Response: $json")
|
||||||
|
|
||||||
|
val db = repos.userMusicDetail.findByUser_Card_ExtId(userId)
|
||||||
|
|
||||||
|
logger.info("Response: ${db.size} music records")
|
||||||
|
return mapOf(
|
||||||
|
"userId" to userId,
|
||||||
|
"nextIndex" to 0,
|
||||||
|
"userMusicList" to listOf(mapOf("userMusicDetailList" to db))
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
val logger = LoggerFactory.getLogger(GetUserMusicHandler::class.java)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
package icu.samnyan.aqua.sega.maimai2.model.response.data;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import icu.samnyan.aqua.sega.maimai2.model.userdata.Mai2UserMusicDetail;
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author samnyan (privateamusement@protonmail.com)
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@AllArgsConstructor
|
|
||||||
@NoArgsConstructor
|
|
||||||
public class UserMusic {
|
|
||||||
private List<Mai2UserMusicDetail> userMusicDetailList;
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user