mirror of https://github.com/hykilpikonna/AquaDX
[O] Rewrite CM chusan apis
parent
f290e6e576
commit
8203a70b60
|
@ -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",
|
||||
|
|
|
@ -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<String, ?> 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<UserCardPrintState> userCardPrintStateList = new ArrayList<>();
|
||||
Chu3UserData userData;
|
||||
|
||||
Optional<Chu3UserData> 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<UserItem> userItemListToSave = new ArrayList<>();
|
||||
List<UserItem> userItemList = upsertUserGacha.getUserItemList();
|
||||
|
||||
userItemList.forEach(newUserItem -> {
|
||||
int itemId = newUserItem.getItemId();
|
||||
int itemKind = newUserItem.getItemKind();
|
||||
|
||||
Optional<UserItem> 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<String, Object> resultMap = new LinkedHashMap<>();
|
||||
resultMap.put("returnCode", 1);
|
||||
resultMap.put("apiName", "CMUpsertUserGachaApi");
|
||||
resultMap.put("userCardPrintStateList", userCardPrintStateList);
|
||||
|
||||
return resultMap;
|
||||
}
|
||||
}
|
|
@ -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<String, ?> request) throws JsonProcessingException {
|
||||
String userId = String.valueOf(request.get("userId"));
|
||||
List<Integer> orderIdList = mapper.convert(request.get("orderIdList"), new TypeReference<List<Integer>>() {});
|
||||
|
||||
for (Integer orderId : orderIdList) {
|
||||
Optional<UserCardPrintState> userCardPrintStateOptional = userCardPrintStateRepository.findById(orderId.longValue());
|
||||
if (userCardPrintStateOptional.isPresent()) {
|
||||
UserCardPrintState newUserCardPrintState = userCardPrintStateOptional.get();
|
||||
newUserCardPrintState.setHasCompleted(true);
|
||||
userCardPrintStateRepository.save(newUserCardPrintState);
|
||||
}
|
||||
}
|
||||
|
||||
Map<String, Object> resultMap = new LinkedHashMap<>();
|
||||
resultMap.put("returnCode", 1);
|
||||
resultMap.put("apiName", "CMUpsertUserPrintCancelApi");
|
||||
|
||||
String json = mapper.write(resultMap);
|
||||
logger.info("Response: " + json);
|
||||
return json;
|
||||
}
|
||||
}
|
|
@ -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<String, ?> request) throws JsonProcessingException {
|
||||
String userId = String.valueOf(request.get("userId"));
|
||||
UserCardPrintState userCardPrintState = mapper.convert(request.get("userCardPrintState"), UserCardPrintState.class);
|
||||
List<UserItem> userItemList = mapper.convert(request.get("userItemList"), new TypeReference<List<UserItem>>() {});
|
||||
|
||||
Chu3UserData userData;
|
||||
|
||||
Optional<Chu3UserData> userOptional = userDataService.getUserByExtId(userId);
|
||||
if (userOptional.isPresent()) {
|
||||
userData = userOptional.get();
|
||||
} else {
|
||||
logger.error("User not found. userId: {}", userId);
|
||||
return null;
|
||||
}
|
||||
|
||||
List<UserItem> userItemListToSave = new ArrayList<>();
|
||||
|
||||
userItemList.forEach(newUserItem -> {
|
||||
int itemId = newUserItem.getItemId();
|
||||
int itemKind = newUserItem.getItemKind();
|
||||
|
||||
Optional<UserItem> 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<UserCardPrintState> userCardPrintStateOptional = userCardPrintStateRepository.findById(userCardPrintState.getId());
|
||||
if (userCardPrintStateOptional.isPresent()) {
|
||||
UserCardPrintState newUserCardPrintState = userCardPrintStateOptional.get();
|
||||
newUserCardPrintState.setHasCompleted(true);
|
||||
userCardPrintStateRepository.save(newUserCardPrintState);
|
||||
}
|
||||
|
||||
Map<String, Object> resultMap = new LinkedHashMap<>();
|
||||
resultMap.put("returnCode", 1);
|
||||
resultMap.put("apiName", "CMUpsertUserPrintSubtractApi");
|
||||
|
||||
String json = mapper.write(resultMap);
|
||||
logger.info("Response: " + json);
|
||||
return json;
|
||||
}
|
||||
}
|
|
@ -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":[]}""" }
|
|
@ -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<Long> = cmMapper.convert(data["orderIdList"], object : TypeReference<List<Long>>() {})
|
||||
|
||||
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<List<UserItem>>() {})
|
||||
|
||||
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")
|
||||
}
|
||||
}
|
|
@ -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
|
|
@ -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()
|
||||
|
||||
|
|
|
@ -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<Chu3UserData> getUserByExtId(String aimeId) {
|
||||
return userDataRepository.findByCard_ExtId(Long.parseLong(aimeId));
|
||||
}
|
||||
|
||||
public void updateLoginTime(Chu3UserData userData) {
|
||||
userData.setLastLoginDate(LocalDateTime.now());
|
||||
userDataRepository.save(userData);
|
||||
}
|
||||
}
|
|
@ -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<UserItem> saveAll(Iterable<UserItem> userItem) {
|
||||
return userItemRepository.saveAll(userItem);
|
||||
}
|
||||
|
||||
public List<UserItem> getByUserId(String userId) {
|
||||
List<UserItem> userItemList = userItemRepository.findByUser_Card_ExtId(Long.parseLong(userId));
|
||||
userItemList.sort(Comparator.comparingInt(UserItem::getItemId));
|
||||
return userItemList;
|
||||
}
|
||||
|
||||
public Optional<UserItem> getByUserAndItemIdAndKind(Chu3UserData user, int itemId, int itemKind) {
|
||||
return userItemRepository.findTopByUserAndItemIdAndItemKindOrderByIdDesc(user, itemId, itemKind);
|
||||
}
|
||||
|
||||
public Page<UserItem> 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<UserItem> getByUserAndItemKind(String userId, int kind) {
|
||||
List<UserItem> userItemList = userItemRepository.findAllByUser_Card_ExtIdAndItemKind(Long.parseLong(userId), kind);
|
||||
userItemList.sort(Comparator.comparingInt(UserItem::getItemId));
|
||||
return userItemList;
|
||||
}
|
||||
|
||||
public Page<UserItem> getByUserId(String userId, int page, int size) {
|
||||
return userItemRepository.findByUser_Card_ExtId(Long.parseLong(userId), PageRequest.of(page, size));
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue