diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/ChusanController.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/ChusanController.kt index c5a92404..114c285e 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/ChusanController.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/ChusanController.kt @@ -4,7 +4,9 @@ import ext.* import icu.samnyan.aqua.net.db.AquaUserServices import icu.samnyan.aqua.net.utils.simpleDescribe import icu.samnyan.aqua.sega.allnet.TokenChecker -import icu.samnyan.aqua.sega.chusan.handler.* +import icu.samnyan.aqua.sega.chusan.handler.GameLoginHandler +import icu.samnyan.aqua.sega.chusan.handler.UpsertUserAllHandler +import icu.samnyan.aqua.sega.chusan.handler.chusanInit import icu.samnyan.aqua.sega.chusan.model.Chu3Repos import icu.samnyan.aqua.sega.general.* import icu.samnyan.aqua.sega.util.jackson.BasicMapper @@ -25,9 +27,6 @@ import kotlin.reflect.full.declaredMemberProperties class ChusanController( val gameLogin: GameLoginHandler, val upsertUserAll: UpsertUserAllHandler, - val cmUpsertUserGacha: CMUpsertUserGachaHandler, - val cmUpsertUserPrintSubtract: CMUpsertUserPrintSubtractHandler, - val cmUpsertUserPrintCancel: CMUpsertUserPrintCancelHandler, val mapper: StringMapper, val cmMapper: BasicMapper, @@ -42,8 +41,7 @@ class ChusanController( val log = LoggerFactory.getLogger(ChusanController::class.java) // Below are code related to handling the handlers - val externalHandlers = mutableListOf("GameLoginApi", "UpsertUserAllApi", - "CMUpsertUserGachaApi", "CMUpsertUserPrintCancelApi", "CMUpsertUserPrintSubtractApi") + val externalHandlers = mutableListOf("GameLoginApi", "UpsertUserAllApi") val noopEndpoint = setOf("UpsertClientBookkeepingApi", "UpsertClientDevelopApi", "UpsertClientErrorApi", "UpsertClientSettingApi", "UpsertClientTestmodeApi", "CreateTokenApi", "RemoveTokenApi", "UpsertClientUploadApi", diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/CMUpsertUserGachaHandler.java b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/CMUpsertUserGachaHandler.java deleted file mode 100644 index cbd8449c..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/CMUpsertUserGachaHandler.java +++ /dev/null @@ -1,101 +0,0 @@ -package icu.samnyan.aqua.sega.chusan.handler; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.chusan.model.Chu3UserCardPrintStateRepo; -import icu.samnyan.aqua.sega.chusan.model.Chu3UserGachaRepo; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.chusan.model.gamedata.GameGachaCard; -import icu.samnyan.aqua.sega.chusan.model.request.UpsertUserGacha; -import icu.samnyan.aqua.sega.chusan.model.userdata.UserCardPrintState; -import icu.samnyan.aqua.sega.chusan.model.userdata.Chu3UserData; -import icu.samnyan.aqua.sega.chusan.model.userdata.UserGacha; -import icu.samnyan.aqua.sega.chusan.model.userdata.UserItem; -import icu.samnyan.aqua.sega.chusan.service.UserDataService; -import icu.samnyan.aqua.sega.chusan.service.UserItemService; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import lombok.AllArgsConstructor; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.time.LocalDateTime; -import java.util.*; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@AllArgsConstructor -@Component("ChusanCMUpsertUserGachaHandler") -public class CMUpsertUserGachaHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(CMUpsertUserGachaHandler.class); - private final Chu3UserCardPrintStateRepo userCardPrintStateRepository; - private final Chu3UserGachaRepo userGachaRepository; - private final UserDataService userDataService; - private final UserItemService userItemService; - private final BasicMapper mapper; - - @Override - public Object handle(Map request) throws JsonProcessingException { - String userId = String.valueOf(request.get("userId")); - int gachaId = ((Number) request.get("gachaId")).intValue(); - int placeId = ((Number) request.get("placeId")).intValue(); - - UpsertUserGacha upsertUserGacha = mapper.convert(request.get("cmUpsertUserGacha"), UpsertUserGacha.class); - List userCardPrintStateList = new ArrayList<>(); - Chu3UserData userData; - - Optional userOptional = userDataService.getUserByExtId(userId); - if (userOptional.isPresent()) { - userData = userOptional.get(); - } else { - logger.error("User not found. userId: {}", userId); - return null; - } - - if (upsertUserGacha.getGameGachaCardList() != null) { - for (GameGachaCard gameGachaCard : upsertUserGacha.getGameGachaCardList()) { - UserCardPrintState userCardPrintState = new UserCardPrintState(); - userCardPrintState.setHasCompleted(false); - userCardPrintState.setLimitDate(LocalDateTime.of(2029, 01, 01, 0, 0)); - userCardPrintState.setPlaceId(placeId); - userCardPrintState.setCardId(gameGachaCard.getCardId()); - userCardPrintState.setGachaId(gachaId); - userCardPrintState.setUser(userData); - userCardPrintStateRepository.save(userCardPrintState); - } - } - - List userItemListToSave = new ArrayList<>(); - List userItemList = upsertUserGacha.getUserItemList(); - - userItemList.forEach(newUserItem -> { - int itemId = newUserItem.getItemId(); - int itemKind = newUserItem.getItemKind(); - - Optional userItemOptional = userItemService.getByUserAndItemIdAndKind(userData, itemId, itemKind); - UserItem userItem = userItemOptional.orElseGet(() -> new UserItem()); - - newUserItem.setId(userItem.getId()); - newUserItem.setUser(userItem.getUser()); - - userItemListToSave.add(newUserItem); - }); - userItemService.saveAll(userItemListToSave); - - if (upsertUserGacha.getUserGacha() != null) { - UserGacha newUserGacha = upsertUserGacha.getUserGacha(); - newUserGacha.setUser(userData); - userGachaRepository.save(newUserGacha); - } - - userCardPrintStateList = userCardPrintStateRepository.findByUserAndGachaIdAndHasCompleted(userData, gachaId, false); - Map resultMap = new LinkedHashMap<>(); - resultMap.put("returnCode", 1); - resultMap.put("apiName", "CMUpsertUserGachaApi"); - resultMap.put("userCardPrintStateList", userCardPrintStateList); - - return resultMap; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/CMUpsertUserPrintCancelHandler.java b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/CMUpsertUserPrintCancelHandler.java deleted file mode 100644 index 33717613..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/CMUpsertUserPrintCancelHandler.java +++ /dev/null @@ -1,57 +0,0 @@ -package icu.samnyan.aqua.sega.chusan.handler; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import icu.samnyan.aqua.sega.chusan.model.Chu3UserCardPrintStateRepo; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.chusan.model.userdata.UserCardPrintState; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("ChusanCMUpsertUserPrintCancelHandler") -public class CMUpsertUserPrintCancelHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(CMUpsertUserPrintCancelHandler.class); - private final Chu3UserCardPrintStateRepo userCardPrintStateRepository; - private final BasicMapper mapper; - - @Autowired - public CMUpsertUserPrintCancelHandler(Chu3UserCardPrintStateRepo userCardPrintStateRepository, BasicMapper mapper) { - this.userCardPrintStateRepository = userCardPrintStateRepository; - this.mapper = mapper; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - String userId = String.valueOf(request.get("userId")); - List orderIdList = mapper.convert(request.get("orderIdList"), new TypeReference>() {}); - - for (Integer orderId : orderIdList) { - Optional userCardPrintStateOptional = userCardPrintStateRepository.findById(orderId.longValue()); - if (userCardPrintStateOptional.isPresent()) { - UserCardPrintState newUserCardPrintState = userCardPrintStateOptional.get(); - newUserCardPrintState.setHasCompleted(true); - userCardPrintStateRepository.save(newUserCardPrintState); - } - } - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("returnCode", 1); - resultMap.put("apiName", "CMUpsertUserPrintCancelApi"); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/CMUpsertUserPrintSubtractHandler.java b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/CMUpsertUserPrintSubtractHandler.java deleted file mode 100644 index 50323ade..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/CMUpsertUserPrintSubtractHandler.java +++ /dev/null @@ -1,81 +0,0 @@ -package icu.samnyan.aqua.sega.chusan.handler; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import icu.samnyan.aqua.sega.chusan.model.Chu3UserCardPrintStateRepo; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.chusan.model.userdata.UserCardPrintState; -import icu.samnyan.aqua.sega.chusan.model.userdata.Chu3UserData; -import icu.samnyan.aqua.sega.chusan.model.userdata.UserItem; -import icu.samnyan.aqua.sega.chusan.service.UserDataService; -import icu.samnyan.aqua.sega.chusan.service.UserItemService; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import lombok.AllArgsConstructor; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.*; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@AllArgsConstructor -@Component("ChusanCMUpsertUserPrintSubtractHandler") -public class CMUpsertUserPrintSubtractHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(CMUpsertUserPrintSubtractHandler.class); - private final Chu3UserCardPrintStateRepo userCardPrintStateRepository; - private final UserItemService userItemService; - private final UserDataService userDataService; - private final BasicMapper mapper; - - @Override - public String handle(Map request) throws JsonProcessingException { - String userId = String.valueOf(request.get("userId")); - UserCardPrintState userCardPrintState = mapper.convert(request.get("userCardPrintState"), UserCardPrintState.class); - List userItemList = mapper.convert(request.get("userItemList"), new TypeReference>() {}); - - Chu3UserData userData; - - Optional userOptional = userDataService.getUserByExtId(userId); - if (userOptional.isPresent()) { - userData = userOptional.get(); - } else { - logger.error("User not found. userId: {}", userId); - return null; - } - - List userItemListToSave = new ArrayList<>(); - - userItemList.forEach(newUserItem -> { - int itemId = newUserItem.getItemId(); - int itemKind = newUserItem.getItemKind(); - - Optional userItemOptional = userItemService.getByUserAndItemIdAndKind(userData, itemId, itemKind); - UserItem userItem = userItemOptional.orElseGet(() -> new UserItem()); - - newUserItem.setId(userItem.getId()); - newUserItem.setUser(userItem.getUser()); - - userItemListToSave.add(newUserItem); - }); - userItemService.saveAll(userItemListToSave); - - Optional userCardPrintStateOptional = userCardPrintStateRepository.findById(userCardPrintState.getId()); - if (userCardPrintStateOptional.isPresent()) { - UserCardPrintState newUserCardPrintState = userCardPrintStateOptional.get(); - newUserCardPrintState.setHasCompleted(true); - userCardPrintStateRepository.save(newUserCardPrintState); - } - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("returnCode", 1); - resultMap.put("apiName", "CMUpsertUserPrintSubtractApi"); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/ChusanApis.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt similarity index 98% rename from src/main/java/icu/samnyan/aqua/sega/chusan/ChusanApis.kt rename to src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt index ac59b974..1c4c0ffa 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/ChusanApis.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt @@ -1,7 +1,9 @@ -package icu.samnyan.aqua.sega.chusan +package icu.samnyan.aqua.sega.chusan.handler import ext.* import icu.samnyan.aqua.sega.allnet.TokenChecker +import icu.samnyan.aqua.sega.chusan.ChusanController +import icu.samnyan.aqua.sega.chusan.ChusanData import icu.samnyan.aqua.sega.chusan.model.request.UserCMissionResp import icu.samnyan.aqua.sega.chusan.model.request.UserEmoney import icu.samnyan.aqua.sega.chusan.model.userdata.UserCharge @@ -13,6 +15,7 @@ import java.time.format.DateTimeFormatter @Suppress("UNCHECKED_CAST") fun ChusanController.chusanInit() { matchingApiInit() + cmApiInit() // Stub handlers "GetGameRanking" { """{"type":"${data["type"]}","length":"0","gameRankingList":[]}""" } diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanCMApis.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanCMApis.kt new file mode 100644 index 00000000..3b510834 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanCMApis.kt @@ -0,0 +1,86 @@ +package icu.samnyan.aqua.sega.chusan.handler + +import com.fasterxml.jackson.core.type.TypeReference +import ext.int +import ext.invoke +import ext.mapApply +import ext.parsing +import icu.samnyan.aqua.sega.chusan.ChusanController +import icu.samnyan.aqua.sega.chusan.model.request.UpsertUserGacha +import icu.samnyan.aqua.sega.chusan.model.userdata.UserCardPrintState +import icu.samnyan.aqua.sega.chusan.model.userdata.UserItem +import java.time.LocalDateTime + +fun ChusanController.cmApiInit() { + "CMUpsertUserGacha" api@ { + val (gachaId, placeId) = parsing { data["gachaId"]!!.int to data["placeId"]!!.int } + + val u = db.userData.findByCard_ExtId(uid)() ?: return@api null + val upsertUserGacha = parsing { mapper.convert(data["cmUpsertUserGacha"], UpsertUserGacha::class.java) } + + upsertUserGacha.gameGachaCardList?.let { lst -> + db.userCardPrintState.saveAll(lst.map { + UserCardPrintState( + hasCompleted = false, + limitDate = LocalDateTime.of(2029, 1, 1, 0, 0), + placeId = placeId, + cardId = it.cardId, + gachaId = gachaId + ).apply { user = u } + }) + } + + upsertUserGacha.userItemList?.let { + db.userItem.saveAll(it.mapApply { + user = u + id = db.userItem.findByUserAndItemIdAndItemKind(u, itemId, itemKind)?.id ?: 0 + }) + } + + upsertUserGacha.userGacha?.let { + it.user = u + db.userGacha.save(it) + } + + mapOf( + "returnCode" to 1, + "apiName" to "CMUpsertUserGachaApi", + "userCardPrintStateList" to db.userCardPrintState.findByUserAndGachaIdAndHasCompleted(u, gachaId, false) + ) + } + + "CMUpsertUserPrintCancel" { + val orderIdList: List = cmMapper.convert(data["orderIdList"], object : TypeReference>() {}) + + db.userCardPrintState.saveAll(orderIdList.mapNotNull { + // TODO: The original code by Eori writes findById but I don't think that is correct... + db.userCardPrintState.findById(it)()?.apply { + hasCompleted = true + } + }) + + mapOf("returnCode" to 1, "apiName" to "CMUpsertUserPrintCancelApi") + } + + "CMUpsertUserPrintSubtract" api@ { + val userCardPrintState = cmMapper.convert(data["userCardPrintState"], UserCardPrintState::class.java) + val userItemList = cmMapper.convert(data["userItemList"], object : TypeReference>() {}) + + val u = db.userData.findByCard_ExtId(uid)() ?: return@api null + + db.userItem.saveAll( + userItemList.mapApply { + id = db.userItem.findByUserAndItemIdAndItemKind(u, itemId, itemKind)?.id ?: 0 + user = u + } + ) + + // TODO: I also doubt this is correct... it shouldn't be ID + db.userCardPrintState.findById(userCardPrintState.id)()?.apply { + hasCompleted = true + db.userCardPrintState.save(this) + } + + mapOf("returnCode" to 1, "apiName" to "CMUpsertUserPrintSubtractApi") + } +} \ No newline at end of file diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/ChusanMatchingApis.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanMatchingApis.kt similarity index 96% rename from src/main/java/icu/samnyan/aqua/sega/chusan/ChusanMatchingApis.kt rename to src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanMatchingApis.kt index 7a19baad..87eaabb3 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/ChusanMatchingApis.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanMatchingApis.kt @@ -1,11 +1,12 @@ @file:Suppress("UNCHECKED_CAST") -package icu.samnyan.aqua.sega.chusan +package icu.samnyan.aqua.sega.chusan.handler import ext.JDict import ext.int import ext.millis import ext.parsing +import icu.samnyan.aqua.sega.chusan.ChusanController import icu.samnyan.aqua.sega.chusan.model.request.MatchingWaitState import icu.samnyan.aqua.sega.chusan.model.userdata.Chu3MatchingMemberReq import kotlin.collections.MutableList diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/model/userdata/UserCardPrintState.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/model/userdata/UserCardPrintState.kt index 51759369..faa2e1d6 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/model/userdata/UserCardPrintState.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/model/userdata/UserCardPrintState.kt @@ -6,10 +6,11 @@ import java.time.LocalDateTime @Entity(name = "ChusanUserCardPrintState") @Table(name = "chusan_user_print_state") -class UserCardPrintState : Chu3UserEntity() { - var hasCompleted = false - var limitDate: LocalDateTime = LocalDateTime.now() - var placeId = 0 - var cardId = 0 - var gachaId = 0 -} +class UserCardPrintState( + var hasCompleted: Boolean = false, + var limitDate: LocalDateTime = LocalDateTime.now(), + var placeId: Int = 0, + var cardId: Int = 0, + var gachaId: Int = 0 +) : Chu3UserEntity() + diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/service/UserDataService.java b/src/main/java/icu/samnyan/aqua/sega/chusan/service/UserDataService.java deleted file mode 100644 index ff9477bd..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/service/UserDataService.java +++ /dev/null @@ -1,37 +0,0 @@ -package icu.samnyan.aqua.sega.chusan.service; - -import icu.samnyan.aqua.sega.chusan.model.Chu3UserDataRepo; -import icu.samnyan.aqua.sega.chusan.model.userdata.Chu3UserData; -import icu.samnyan.aqua.sega.general.model.Card; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.time.LocalDateTime; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Service("ChusanUserDataService") -public class UserDataService { - - private final Chu3UserDataRepo userDataRepository; - - @Autowired - public UserDataService(Chu3UserDataRepo userDataRepository) { - this.userDataRepository = userDataRepository; - } - - public Chu3UserData saveUserData(Chu3UserData userData) { - return userDataRepository.save(userData); - } - - public Optional getUserByExtId(String aimeId) { - return userDataRepository.findByCard_ExtId(Long.parseLong(aimeId)); - } - - public void updateLoginTime(Chu3UserData userData) { - userData.setLastLoginDate(LocalDateTime.now()); - userDataRepository.save(userData); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/service/UserItemService.java b/src/main/java/icu/samnyan/aqua/sega/chusan/service/UserItemService.java deleted file mode 100644 index 7f257ab6..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/service/UserItemService.java +++ /dev/null @@ -1,60 +0,0 @@ -package icu.samnyan.aqua.sega.chusan.service; - -import icu.samnyan.aqua.sega.chusan.model.Chu3UserItemRepo; -import icu.samnyan.aqua.sega.chusan.model.userdata.Chu3UserData; -import icu.samnyan.aqua.sega.chusan.model.userdata.UserItem; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Service; - -import java.util.Comparator; -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Service("ChusanUserItemService") -public class UserItemService { - private final Chu3UserItemRepo userItemRepository; - - @Autowired - public UserItemService(Chu3UserItemRepo userItemRepository) { - this.userItemRepository = userItemRepository; - } - - public UserItem save(UserItem userItem) { - return userItemRepository.save(userItem); - } - - public List saveAll(Iterable userItem) { - return userItemRepository.saveAll(userItem); - } - - public List getByUserId(String userId) { - List userItemList = userItemRepository.findByUser_Card_ExtId(Long.parseLong(userId)); - userItemList.sort(Comparator.comparingInt(UserItem::getItemId)); - return userItemList; - } - - public Optional getByUserAndItemIdAndKind(Chu3UserData user, int itemId, int itemKind) { - return userItemRepository.findTopByUserAndItemIdAndItemKindOrderByIdDesc(user, itemId, itemKind); - } - - public Page getByUserAndItemKind(String userId, int kind, int pageNumber, int maxCount) { - Pageable page = PageRequest.of(pageNumber, maxCount); - return userItemRepository.findAllByUser_Card_ExtIdAndItemKind(Long.parseLong(userId), kind, page); - } - - public List getByUserAndItemKind(String userId, int kind) { - List userItemList = userItemRepository.findAllByUser_Card_ExtIdAndItemKind(Long.parseLong(userId), kind); - userItemList.sort(Comparator.comparingInt(UserItem::getItemId)); - return userItemList; - } - - public Page getByUserId(String userId, int page, int size) { - return userItemRepository.findByUser_Card_ExtId(Long.parseLong(userId), PageRequest.of(page, size)); - } -}