[cardmaker] Add experimental chusan gacha support

This commit is contained in:
Dom Eori
2022-07-27 22:41:22 +09:00
parent 563d91d438
commit a034ba2c88
46 changed files with 2244 additions and 3 deletions

View File

@@ -0,0 +1,68 @@
package icu.samnyan.aqua.sega.chusan.handler.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import icu.samnyan.aqua.sega.chusan.handler.BaseHandler;
import icu.samnyan.aqua.sega.chusan.model.userdata.UserCharacter;
import icu.samnyan.aqua.sega.chusan.service.UserCharacterService;
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.data.domain.Page;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
* Handle getUserCharacter request
* @author samnyan (privateamusement@protonmail.com)
*/
@Component("ChusanCMGetUserCharacterHandler")
public class CMGetUserCharacterHandler implements BaseHandler {
private static final Logger logger = LoggerFactory.getLogger(CMGetUserCharacterHandler.class);
private final BasicMapper mapper;
private final UserCharacterService userCharacterService;
@Autowired
public CMGetUserCharacterHandler(BasicMapper mapper, UserCharacterService userCharacterService) {
this.mapper = mapper;
this.userCharacterService = userCharacterService;
}
@Override
public String handle(Map<String, Object> request) throws JsonProcessingException {
String userId = String.valueOf(request.get("userId"));
int nextIndex = ((Number) request.get("nextIndex")).intValue();
int maxCount = ((Number) request.get("maxCount")).intValue();
int pageNum = nextIndex / maxCount;
Page<UserCharacter> dbPage = userCharacterService.getByUserId(userId, pageNum, maxCount);
long currentIndex = maxCount * pageNum + dbPage.getNumberOfElements();
Map<String, Object> resultMap = new LinkedHashMap<>();
resultMap.put("userId", userId);
resultMap.put("length", dbPage.getNumberOfElements());
resultMap.put("nextIndex", dbPage.getNumberOfElements() < maxCount ? -1 : currentIndex);
List<Integer> userCharacterIdList = new ArrayList<>();
dbPage.getContent().forEach(userCharacter -> {
userCharacterIdList.add(userCharacter.getCharacterId());
});
resultMap.put("userCharacterList", userCharacterIdList);
String json = mapper.write(resultMap);
logger.info("Response: " + json);
return json;
}
}

View File

@@ -0,0 +1,59 @@
package icu.samnyan.aqua.sega.chusan.handler.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import icu.samnyan.aqua.sega.chusan.handler.BaseHandler;
import icu.samnyan.aqua.sega.chusan.model.response.data.UserEmoney;
import icu.samnyan.aqua.sega.chusan.model.userdata.UserData;
import icu.samnyan.aqua.sega.chusan.service.UserDataService;
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.Map;
import java.util.Optional;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Component("ChusanCMGetUserDataHandler")
public class CMGetUserDataHandler implements BaseHandler {
private static final Logger logger = LoggerFactory.getLogger(CMGetUserDataHandler.class);
private final BasicMapper mapper;
private final UserDataService userDataService;
@Autowired
public CMGetUserDataHandler(BasicMapper mapper, UserDataService userDataService) {
this.mapper = mapper;
this.userDataService = userDataService;
}
@Override
public String handle(Map<String, Object> request) throws JsonProcessingException {
String userId = String.valueOf(request.get("userId"));
Optional<UserData> userDataOptional = userDataService.getUserByExtId(userId);
if (userDataOptional.isPresent()) {
Map<String, Object> resultMap = new LinkedHashMap<>();
resultMap.put("userId", userId);
UserData user = userDataOptional.get();
UserEmoney userEmoney = new UserEmoney();
user.setUserEmoney(userEmoney);
resultMap.put("userData", user);
resultMap.put("userEmoney", userEmoney);
String json = mapper.write(resultMap);
logger.info("Response: " + json);
return json;
}
return null;
}
}

View File

@@ -0,0 +1,66 @@
package icu.samnyan.aqua.sega.chusan.handler.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import icu.samnyan.aqua.sega.chusan.handler.BaseHandler;
import icu.samnyan.aqua.sega.chusan.model.userdata.UserItem;
import icu.samnyan.aqua.sega.chusan.service.UserItemService;
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.stereotype.Component;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
* Handler for getting user item.
* This get call before profile create.
*
* @author samnyan (privateamusement@protonmail.com)
*/
@Component("ChusanCMGetUserItemHandler")
public class CMGetUserItemHandler implements BaseHandler {
private static final Logger logger = LoggerFactory.getLogger(CMGetUserItemHandler.class);
private final BasicMapper mapper;
private final UserItemService userItemService;
public CMGetUserItemHandler(BasicMapper mapper, UserItemService userItemService) {
this.mapper = mapper;
this.userItemService = userItemService;
}
@Override
public String handle(Map<String, Object> request) throws JsonProcessingException {
String userId = String.valueOf(request.get("userId"));
Long nextIndexVal = ((Number) request.get("nextIndex")).longValue();
int maxCount = ((Number) request.get("maxCount")).intValue();
Long mul = 10000000000L;
int kind = (int) (nextIndexVal / mul);
int nextIndex = (int) (nextIndexVal % mul);
int pageNum = nextIndex / maxCount;
Page<UserItem> userItemPage = userItemService.getByUserAndItemKind(userId, kind, pageNum, maxCount);
List<UserItem> userItemList = userItemPage.getContent();
long currentIndex = kind * mul + maxCount * pageNum + userItemPage.getNumberOfElements();
Map<String, Object> resultMap = new LinkedHashMap<>();
resultMap.put("userId", userId);
resultMap.put("length", userItemPage.getNumberOfElements());
resultMap.put("nextIndex", userItemPage.getNumberOfElements() < maxCount ? -1 : currentIndex);
resultMap.put("itemKind", kind);
resultMap.put("userItemList", userItemList);
String json = mapper.write(resultMap);
logger.info("Response: " + json);
return json;
}
}

View File

@@ -0,0 +1,60 @@
package icu.samnyan.aqua.sega.chusan.handler.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import icu.samnyan.aqua.sega.chusan.handler.BaseHandler;
import icu.samnyan.aqua.sega.chusan.model.userdata.UserData;
import icu.samnyan.aqua.sega.chusan.service.UserDataService;
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.Map;
import java.util.Optional;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Component("ChusanCMGetUserPreviewHandler")
public class CMGetUserPreviewHandler implements BaseHandler {
private static final Logger logger = LoggerFactory.getLogger(CMGetUserPreviewHandler.class);
private final BasicMapper mapper;
private final UserDataService userDataService;
@Autowired
public CMGetUserPreviewHandler(BasicMapper mapper, UserDataService userDataService) {
this.mapper = mapper;
this.userDataService = userDataService;
}
@Override
public String handle(Map<String, Object> request) throws JsonProcessingException {
String userId = String.valueOf(request.get("userId"));
String segaIdAuthKey = String.valueOf(request.get("segaIdAuthKey"));
Optional<UserData> userDataOptional = userDataService.getUserByExtId(userId);
if (userDataOptional.isPresent()) {
Map<String, Object> resultMap = new LinkedHashMap<>();
UserData user = userDataOptional.get();
resultMap.put("userName", user.getUserName());
resultMap.put("level", user.getLevel());
resultMap.put("medal", user.getMedal());
resultMap.put("lastDataVersion", "2.00.00"); //Hardcode due to outdated
resultMap.put("isLogin", false);
String json = mapper.write(resultMap);
logger.info("Response: " + json);
return json;
}
return null;
}
}

View File

@@ -0,0 +1,117 @@
package icu.samnyan.aqua.sega.chusan.handler.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import icu.samnyan.aqua.sega.chusan.dao.userdata.UserCardPrintStateRepository;
import icu.samnyan.aqua.sega.chusan.dao.userdata.UserGachaRepository;
import icu.samnyan.aqua.sega.chusan.handler.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.UserData;
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 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.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Component("ChusanCMUpsertUserGachaHandler")
public class CMUpsertUserGachaHandler implements BaseHandler {
private static final Logger logger = LoggerFactory.getLogger(CMUpsertUserGachaHandler.class);
private final UserCardPrintStateRepository userCardPrintStateRepository;
private final UserGachaRepository userGachaRepository;
private final UserDataService userDataService;
private final UserItemService userItemService;
private final BasicMapper mapper;
@Autowired
public CMUpsertUserGachaHandler(UserItemService userItemService, UserDataService userDataService,
UserCardPrintStateRepository userCardPrintStateRepository, BasicMapper mapper,
UserGachaRepository userGachaRepository) {
this.userCardPrintStateRepository = userCardPrintStateRepository;
this.userGachaRepository = userGachaRepository;
this.userDataService = userDataService;
this.userItemService = userItemService;
this.mapper = mapper;
}
@Override
public String handle(Map<String, Object> 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<>();
UserData userData;
Optional<UserData> 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(userData));
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);
String json = mapper.write(resultMap);
logger.info("Response: " + json);
return json;
}
}

View File

@@ -0,0 +1,58 @@
package icu.samnyan.aqua.sega.chusan.handler.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import icu.samnyan.aqua.sega.chusan.dao.userdata.UserCardPrintStateRepository;
import icu.samnyan.aqua.sega.chusan.handler.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 UserCardPrintStateRepository userCardPrintStateRepository;
private final BasicMapper mapper;
@Autowired
public CMUpsertUserPrintCancelHandler(UserCardPrintStateRepository userCardPrintStateRepository, BasicMapper mapper) {
this.userCardPrintStateRepository = userCardPrintStateRepository;
this.mapper = mapper;
}
@Override
public String handle(Map<String, Object> 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;
}
}

View File

@@ -0,0 +1,92 @@
package icu.samnyan.aqua.sega.chusan.handler.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import icu.samnyan.aqua.sega.chusan.dao.userdata.UserCardPrintStateRepository;
import icu.samnyan.aqua.sega.chusan.handler.BaseHandler;
import icu.samnyan.aqua.sega.chusan.model.userdata.UserCardPrintState;
import icu.samnyan.aqua.sega.chusan.model.userdata.UserData;
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 org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Component("ChusanCMUpsertUserPrintSubtractHandler")
public class CMUpsertUserPrintSubtractHandler implements BaseHandler {
private static final Logger logger = LoggerFactory.getLogger(CMUpsertUserPrintSubtractHandler.class);
private final UserCardPrintStateRepository userCardPrintStateRepository;
private final UserItemService userItemService;
private final UserDataService userDataService;
private final BasicMapper mapper;
@Autowired
public CMUpsertUserPrintSubtractHandler(UserItemService userItemService, UserDataService userDataService, UserCardPrintStateRepository userCardPrintStateRepository, BasicMapper mapper) {
this.userCardPrintStateRepository = userCardPrintStateRepository;
this.userItemService = userItemService;
this.userDataService = userDataService;
this.mapper = mapper;
}
@Override
public String handle(Map<String, Object> 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>>() {});
UserData userData;
Optional<UserData> 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(userData));
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;
}
}

View File

@@ -0,0 +1,53 @@
package icu.samnyan.aqua.sega.chusan.handler.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import icu.samnyan.aqua.sega.chusan.dao.gamedata.GameGachaCardRepository;
import icu.samnyan.aqua.sega.chusan.handler.BaseHandler;
import icu.samnyan.aqua.sega.chusan.model.gamedata.GameGachaCard;
import icu.samnyan.aqua.sega.chusan.service.GameGachaCardService;
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;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Component("ChusanGetGameGachaCardByIdHandler")
public class GetGameGachaCardByIdHandler implements BaseHandler {
private static final Logger logger = LoggerFactory.getLogger(GetGameGachaCardByIdHandler.class);
private final GameGachaCardService gameGachaCardService;
private final BasicMapper mapper;
@Autowired
public GetGameGachaCardByIdHandler(GameGachaCardService gameGachaCardService, BasicMapper mapper) {
this.gameGachaCardService = gameGachaCardService;
this.mapper = mapper;
}
@Override
public String handle(Map<String, Object> request) throws JsonProcessingException {
int gachaId = ((Number) request.get("gachaId")).intValue();
List<GameGachaCard> gameGachaCardList = gameGachaCardService.getByGachaId(gachaId);
Map<String, Object> resultMap = new LinkedHashMap<>();
resultMap.put("gachaId", gachaId);
resultMap.put("length", gameGachaCardList.size());
resultMap.put("isPickup", false);
resultMap.put("gameGachaCardList", gameGachaCardList);
resultMap.put("emissionList", List.of());
resultMap.put("afterCalcList", List.of());
String json = mapper.write(resultMap);
logger.info("Response: " + json);
return json;
}
}

View File

@@ -0,0 +1,47 @@
package icu.samnyan.aqua.sega.chusan.handler.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import icu.samnyan.aqua.sega.chusan.dao.gamedata.GameGachaRepository;
import icu.samnyan.aqua.sega.chusan.handler.BaseHandler;
import icu.samnyan.aqua.sega.chusan.model.gamedata.GameGacha;
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;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Component("ChusanGetGameGachaHandler")
public class GetGameGachaHandler implements BaseHandler {
private static final Logger logger = LoggerFactory.getLogger(GetGameGachaHandler.class);
private final GameGachaRepository gameGachaRepository;
private final BasicMapper mapper;
@Autowired
public GetGameGachaHandler(GameGachaRepository gameGachaRepository, BasicMapper mapper) {
this.gameGachaRepository = gameGachaRepository;
this.mapper = mapper;
}
@Override
public String handle(Map<String, Object> request) throws JsonProcessingException {
List<GameGacha> gameGachaList = gameGachaRepository.findAll();
Map<String, Object> resultMap = new LinkedHashMap<>();
resultMap.put("length", gameGachaList.size());
resultMap.put("gameGachaList", gameGachaList);
resultMap.put("registIdList", List.of());
String json = mapper.write(resultMap);
logger.info("Response: " + json);
return json;
}
}

View File

@@ -0,0 +1,49 @@
package icu.samnyan.aqua.sega.chusan.handler.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import icu.samnyan.aqua.sega.chusan.dao.userdata.UserCardPrintStateRepository;
import icu.samnyan.aqua.sega.chusan.handler.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;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Component("ChusanGetUserCardPrintErrorHandler")
public class GetUserCardPrintErrorHandler implements BaseHandler {
private static final Logger logger = LoggerFactory.getLogger(GetUserCardPrintErrorHandler.class);
private final UserCardPrintStateRepository userCardPrintStateRepository;
private final BasicMapper mapper;
@Autowired
public GetUserCardPrintErrorHandler(UserCardPrintStateRepository userCardPrintStateRepository, BasicMapper mapper) {
this.mapper = mapper;
this.userCardPrintStateRepository = userCardPrintStateRepository;
}
@Override
public String handle(Map<String, Object> request) throws JsonProcessingException {
Long userId = ((Number) request.get("userId")).longValue();
List<UserCardPrintState> userCardPrintStateList = userCardPrintStateRepository.findByUser_Card_ExtIdAndHasCompleted(userId, false);
Map<String, Object> resultMap = new LinkedHashMap<>();
resultMap.put("userId", userId);
resultMap.put("length", userCardPrintStateList.size());
resultMap.put("userCardPrintStateList", userCardPrintStateList);
String json = mapper.write(resultMap);
logger.info("Response: " + json);
return json;
}
}

View File

@@ -0,0 +1,50 @@
package icu.samnyan.aqua.sega.chusan.handler.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import icu.samnyan.aqua.sega.chusan.handler.BaseHandler;
import icu.samnyan.aqua.sega.chusan.model.userdata.UserGacha;
import icu.samnyan.aqua.sega.chusan.service.UserGachaService;
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;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Component("ChusanGetUserGachaHandler")
public class GetUserGachaHandler implements BaseHandler {
private static final Logger logger = LoggerFactory.getLogger(GetUserGachaHandler.class);
private final BasicMapper mapper;
private final UserGachaService userGachaService;
@Autowired
public GetUserGachaHandler(BasicMapper mapper, UserGachaService userGachaService) {
this.mapper = mapper;
this.userGachaService = userGachaService;
}
@Override
public String handle(Map<String, Object> request) throws JsonProcessingException {
String userId = String.valueOf(request.get("userId"));
List<UserGacha> userGachaList = userGachaService.getByUserId(userId);
Map<String, Object> resultMap = new LinkedHashMap<>();
resultMap.put("userId", userId);
resultMap.put("length", userGachaList.size());
resultMap.put("userGachaList", userGachaList);
String json = mapper.write(resultMap);
logger.info("Response: " + json);
return json;
}
}

View File

@@ -0,0 +1,43 @@
package icu.samnyan.aqua.sega.chusan.handler.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import icu.samnyan.aqua.sega.chusan.handler.BaseHandler;
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;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Component("ChusanGetUserPrintedCardHandler")
public class GetUserPrintedCardHandler implements BaseHandler {
private static final Logger logger = LoggerFactory.getLogger(GetUserPrintedCardHandler.class);
private final BasicMapper mapper;
@Autowired
public GetUserPrintedCardHandler(BasicMapper mapper) {
this.mapper = mapper;
}
@Override
public String handle(Map<String, Object> request) throws JsonProcessingException {
String userId = String.valueOf(request.get("userId"));
Map<String, Object> resultMap = new LinkedHashMap<>();
resultMap.put("userId", userId);
resultMap.put("length", 0);
resultMap.put("nextIndex", -1);
resultMap.put("userPrintedCardList", List.of());
String json = mapper.write(resultMap);
logger.info("Response: " + json);
return json;
}
}

View File

@@ -0,0 +1,50 @@
package icu.samnyan.aqua.sega.chusan.handler.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import icu.samnyan.aqua.sega.chusan.dao.gamedata.GameGachaCardRepository;
import icu.samnyan.aqua.sega.chusan.handler.BaseHandler;
import icu.samnyan.aqua.sega.chusan.model.gamedata.GameGachaCard;
import icu.samnyan.aqua.sega.chusan.service.GameGachaCardService;
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;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Component("ChusanRollGachaHandler")
public class RollGachaHandler implements BaseHandler {
private static final Logger logger = LoggerFactory.getLogger(RollGachaHandler.class);
private final GameGachaCardService gameGachaCardService;
private final BasicMapper mapper;
@Autowired
public RollGachaHandler(GameGachaCardService gameGachaCardService, BasicMapper mapper) {
this.gameGachaCardService = gameGachaCardService;
this.mapper = mapper;
}
@Override
public String handle(Map<String, Object> request) throws JsonProcessingException {
int gachaId = ((Number) request.get("gachaId")).intValue();
int times = ((Number) request.get("times")).intValue();
List<GameGachaCard> gameGachaCardList = gameGachaCardService.getRandomCards(gachaId, times);
Map<String, Object> resultMap = new LinkedHashMap<>();
resultMap.put("length", gameGachaCardList.size());
resultMap.put("gameGachaCardList", gameGachaCardList);
String json = mapper.write(resultMap);
logger.info("Response: " + json);
return json;
}
}