diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/ChusanServletController.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/ChusanServletController.kt index da7b6a5f..42587a01 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/ChusanServletController.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/ChusanServletController.kt @@ -31,32 +31,18 @@ import kotlin.reflect.full.declaredMemberProperties @API(value = ["/g/chu3/{version}/ChuniServlet", "/g/chu3/{version}"]) class ChusanServletController( val gameLogin: GameLoginHandler, - val getUserCharacter: GetUserCharacterHandler, - val getUserCourse: GetUserCourseHandler, - val getUserFavoriteItem: GetUserFavoriteItemHandler, - val getUserItem: GetUserItemHandler, val getUserLoginBonus: GetUserLoginBonusHandler, - val getUserMapArea: GetUserMapAreaHandler, val getUserMusic: GetUserMusicHandler, - val getUserPreview: GetUserPreviewHandler, val getUserRecentRating: GetUserRecentRatingHandler, val getUserTeam: GetUserTeamHandler, val upsertUserAll: UpsertUserAllHandler, - val upsertUserChargelog: UpsertUserChargelogHandler, - val getUserCardPrintError: GetUserCardPrintErrorHandler, val cmGetUserPreview: CMGetUserPreviewHandler, val cmGetUserData: CMGetUserDataHandler, val cmGetUserCharacter: CMGetUserCharacterHandler, - val getUserGacha: GetUserGachaHandler, val cmGetUserItem: CMGetUserItemHandler, - val rollGacha: RollGachaHandler, val cmUpsertUserGacha: CMUpsertUserGachaHandler, val cmUpsertUserPrintSubtract: CMUpsertUserPrintSubtractHandler, val cmUpsertUserPrintCancel: CMUpsertUserPrintCancelHandler, - val beginMatching: BeginMatchingHandler, - - // Luminous - val getGameMapAreaCondition: GetGameMapAreaConditionHandler, val mapper: StringMapper, val db: Chu3Repos, @@ -168,7 +154,6 @@ fun ChusanServletController.init() { "CMUpsertUserPrint" { """{"returnCode":1,"orderId":"0","serialId":"FAKECARDIMAG12345678","apiName":"CMUpsertUserPrintApi"}""" } "CMUpsertUserPrintlog" { """{"returnCode":1,"orderId":"0","serialId":"FAKECARDIMAG12345678","apiName":"CMUpsertUserPrintlogApi"}""" } - // Matching // Matching TODO: Actually implement this "EndMatching" { """{"matchingResult":{"matchingMemberInfoList":[],"matchingMemberRoleList":[],"reflectorUri":""}}""" } "GetMatchingState" { """{"matchingWaitState":{"restMSec":"30000","pollingInterval":"10","matchingMemberInfoList":[],"isFinish":"true"}}""" } @@ -203,6 +188,17 @@ fun ChusanServletController.init() { mapOf("userId" to uid, "length" to lst.size, "userDuelList" to lst) } + "GetUserGacha" { + val lst = db.userGacha.findByUser_Card_ExtId(uid) + mapOf("userId" to uid, "length" to lst.size, "userGachaList" to lst) + } + + "RollGacha" { + val (gachaId, times) = parsing { data["gachaId"]!!.int to data["times"]!!.int } + val lst = db.gameGachaCard.findAllByGachaId(gachaId).shuffled().take(times) + mapOf("length" to lst.size, "gameGachaCardList" to lst) + } + "GetGameGachaCardById" { db.gameGachaCard.findAllByGachaId(parsing { data["gachaId"]!!.int }).let { mapOf("gachaId" to it.size, "length" to it.size, "isPickup" to false, "gameGachaCardList" to it, "emissionList" to empty, "afterCalcList" to empty) diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/RollGachaHandler.java b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/RollGachaHandler.java deleted file mode 100644 index 2077b662..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/RollGachaHandler.java +++ /dev/null @@ -1,48 +0,0 @@ -package icu.samnyan.aqua.sega.chusan.handler; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.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 request) throws JsonProcessingException { - int gachaId = ((Number) request.get("gachaId")).intValue(); - int times = ((Number) request.get("times")).intValue(); - - List gameGachaCardList = gameGachaCardService.getRandomCards(gachaId, times); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("length", gameGachaCardList.size()); - resultMap.put("gameGachaCardList", gameGachaCardList); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/model/response/GetUserPreviewResp.java b/src/main/java/icu/samnyan/aqua/sega/chusan/model/response/GetUserPreviewResp.java deleted file mode 100644 index c6147785..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/model/response/GetUserPreviewResp.java +++ /dev/null @@ -1,45 +0,0 @@ -package icu.samnyan.aqua.sega.chusan.model.response; - -import com.fasterxml.jackson.annotation.JsonProperty; -import icu.samnyan.aqua.sega.chusan.model.userdata.UserCharacter; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class GetUserPreviewResp { - - private String userId; - @JsonProperty("isLogin") - private boolean isLogin; - private LocalDateTime lastLoginDate; - private String userName; - private int reincarnationNum; - private int level; - private String exp; - private int playerRating; - private String lastGameId; - private String lastRomVersion; - private String lastDataVersion; - private LocalDateTime lastPlayDate; - private int emoneyBrandId; - private int trophyId; - private UserCharacter userCharacter; - private int playerLevel; - private int rating; - private int headphone; - private int chargeState; - private String userNameEx; - private int banState = 0; - private int classEmblemMedal; - private int classEmblemBase; - private int battleRankId; - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/service/GameGachaCardService.java b/src/main/java/icu/samnyan/aqua/sega/chusan/service/GameGachaCardService.java deleted file mode 100644 index aaaa6adf..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/service/GameGachaCardService.java +++ /dev/null @@ -1,36 +0,0 @@ -package icu.samnyan.aqua.sega.chusan.service; - -import icu.samnyan.aqua.sega.chusan.model.Chu3GameGachaCardRepo; -import icu.samnyan.aqua.sega.chusan.model.gamedata.GameGachaCard; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Service("ChusanGameGachaCardService") -public class GameGachaCardService { - - private final Chu3GameGachaCardRepo gameGachaCardRepository; - - @Autowired - public GameGachaCardService(Chu3GameGachaCardRepo gameGachaCardRepository) { - this.gameGachaCardRepository = gameGachaCardRepository; - } - - public List getRandomCards(int gachaId, int times) { - List gachaCards = gameGachaCardRepository.findAllByGachaId(gachaId); - List randomCards = new ArrayList<>(); - - Random rand = new Random(); - for (int i = 0; i < Math.min(times, gachaCards.size()); i++) { - randomCards.add(gachaCards.remove(rand.nextInt(gachaCards.size()))); - } - - return randomCards; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/util/jackson/StringMapper.kt b/src/main/java/icu/samnyan/aqua/sega/util/jackson/StringMapper.kt index bf7cda62..c99a2d17 100644 --- a/src/main/java/icu/samnyan/aqua/sega/util/jackson/StringMapper.kt +++ b/src/main/java/icu/samnyan/aqua/sega/util/jackson/StringMapper.kt @@ -27,6 +27,7 @@ import java.time.format.DateTimeFormatter class StringMapper { fun write(o: Any?) = STRING_MAPPER.writeValueAsString(o) fun convert(map: Any?, toClass: Class?) = STRING_MAPPER.convertValue(map, toClass) + final inline fun convert(map: Any?) = convert(map, T::class.java) fun toMap(obj: Any?) = STRING_MAPPER.convertValue(obj, object : TypeReference>() {}) companion object {