[O] Rewrite Begin matching

matching
Azalea 2024-12-26 18:50:20 -05:00
parent f75d0acb1c
commit b14a56bb6c
4 changed files with 22 additions and 73 deletions

View File

@ -6,6 +6,9 @@ import icu.samnyan.aqua.net.utils.simpleDescribe
import icu.samnyan.aqua.sega.chusan.handler.*
import icu.samnyan.aqua.sega.chusan.model.Chu3Repos
import icu.samnyan.aqua.sega.chusan.model.request.UserCMissionResp
import icu.samnyan.aqua.sega.chusan.model.response.data.MatchingMemberInfo
import icu.samnyan.aqua.sega.chusan.model.response.data.MatchingWaitState
import icu.samnyan.aqua.sega.chusan.model.userdata.UserCharge
import icu.samnyan.aqua.sega.general.BaseHandler
import icu.samnyan.aqua.sega.general.RequestContext
import icu.samnyan.aqua.sega.general.SpecialHandler
@ -145,6 +148,7 @@ class ChusanServletController(
}
@Suppress("UNCHECKED_CAST")
fun ChusanServletController.init() {
// Stub handlers
"GetGameRanking" { """{"type":"${data["type"]}","length":"0","gameRankingList":[]}""" }
@ -165,9 +169,15 @@ fun ChusanServletController.init() {
"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"}}""" }
"BeginMatching" {
val memberInfo = parsing { mapper.convert<MatchingMemberInfo>(data["matchingMemberInfo"] as JDict) }
mapOf("roomId" to 1, "matchingWaitState" to MatchingWaitState(listOf(memberInfo)))
}
// User handlers
"GetUserData" {
val user = db.userData.findByCard_ExtId(uid)() ?: (400 - "User not found")

View File

@ -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.response.data.MatchingMemberInfo;
import icu.samnyan.aqua.sega.chusan.model.response.data.MatchingWaitState;
import icu.samnyan.aqua.sega.util.jackson.StringMapper;
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;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Component("ChusanBeginMatchingHandler")
public class BeginMatchingHandler implements BaseHandler {
private static final Logger logger = LoggerFactory.getLogger(BeginMatchingHandler.class);
private final StringMapper mapper;
@Autowired
public BeginMatchingHandler(StringMapper mapper) {
this.mapper = mapper;
}
@Override
public String handle(Map<String, ?> request) throws JsonProcessingException {
MatchingMemberInfo matchingMemberInfo = mapper.convert(request.get("matchingMemberInfo"), MatchingMemberInfo.class);
MatchingWaitState matchingWaitState = new MatchingWaitState();
matchingWaitState.getMatchingMemberInfoList().add(matchingMemberInfo);
Map<String, Object> resultMap = new LinkedHashMap<>();
resultMap.put("roomId", 1);
resultMap.put("matchingWaitState", matchingWaitState);
String json = mapper.write(resultMap);
logger.info("Response: " + json);
return json;
}
}

View File

@ -1,25 +0,0 @@
package icu.samnyan.aqua.sega.chusan.model.response.data;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.ArrayList;
import java.util.List;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class MatchingWaitState {
@JsonProperty("isFinish")
private boolean isFinish = false;
private int restMSec = 30000;
private int pollingInterval = 10;
private List<MatchingMemberInfo> matchingMemberInfoList = new ArrayList<>();
}

View File

@ -0,0 +1,12 @@
package icu.samnyan.aqua.sega.chusan.model.response.data
import com.fasterxml.jackson.annotation.JsonProperty
class MatchingWaitState(
var matchingMemberInfoList: List<MatchingMemberInfo> = listOf(),
@JsonProperty("isFinish")
var isFinish: Boolean = false,
var restMSec: Int = 30000,
var pollingInterval: Int = 10,
)