[O] Reduce loc

pull/23/head
Azalea 2024-03-18 01:32:38 -04:00
parent f4cc9c7734
commit 5a9b7e296f
8 changed files with 118 additions and 410 deletions

View File

@ -29,13 +29,17 @@ typealias API = RequestMapping
typealias Str = String
typealias Bool = Boolean
@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION)
@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY)
@Retention(AnnotationRetention.RUNTIME)
annotation class Doc(
val desc: String,
val ret: String = ""
)
@Target(AnnotationTarget.VALUE_PARAMETER)
@Retention(AnnotationRetention.RUNTIME)
annotation class SettingField(val name: Str, val desc: Str)
// Make it easier to throw a ResponseStatusException
operator fun HttpStatus.invoke(message: String? = null): Nothing = throw ApiException(value(), message ?: this.reasonPhrase)
operator fun Int.minus(message: String): Nothing {

View File

@ -0,0 +1,104 @@
package icu.samnyan.aqua.sega.maimai2
import ext.API
import icu.samnyan.aqua.sega.maimai2.handler.BaseHandler
import icu.samnyan.aqua.sega.maimai2.handler.impl.*
import lombok.AllArgsConstructor
import org.slf4j.LoggerFactory
import org.springframework.web.bind.annotation.*
import kotlin.reflect.full.declaredMemberProperties
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Suppress("unused")
@AllArgsConstructor
@RestController
@RequestMapping(path = ["/g/mai2/Maimai2Servlet/", "/g/mai2/"])
class Maimai2ServletController(
val getGameSetting: GetGameSettingHandler,
val getGameEvent: GetGameEventHandler,
val getGameRanking: GetGameRankingHandler,
val getGameTournamentInfo: GetGameTournamentInfoHandler,
val getGameCharge: GetGameChargeHandler,
val getTransferFriend: GetTransferFriendHandler,
val getUserActivity: GetUserActivityHandler,
val userLogin: UserLoginHandler,
val userLogout: UserLogoutHandler,
val getUserData: GetUserDataHandler,
val upsertUserAll: UpsertUserAllHandler,
val getUserPreview: GetUserPreviewHandler,
val getUserCharacter: GetUserCharacterHandler,
val getUserOption: GetUserOptionHandler,
val getUserItem: GetUserItemHandler,
val getUserExtend: GetUserExtendHandler,
val getUserGhost: GetUserGhostHandler,
val getUserLoginBonus: GetUserLoginBonusHandler,
val getUserMap: GetUserMapHandler,
val getUserFavorite: GetUserFavoriteHandler,
val getUserCard: GetUserCardHandler,
val getUserMusic: GetUserMusicHandler,
val getUserRating: GetUserRatingHandler,
val getUserRegion: GetUserRegionHandler,
val getUserCharge: GetUserChargeHandler,
val getUserCourse: GetUserCourseHandler,
val uploadUserPhoto: UploadUserPhotoHandler,
val uploadUserPlaylog: UploadUserPlaylogHandler,
val getGameNgMusicId: GetGameNgMusicIdHandler,
val getUserFriendSeasonRanking: GetUserFriendSeasonRankingHandler,
val getUserPortrait: GetUserPortraitHandler,
val uploadUserPortrait: UploadUserPortraitHandler,
val cmGetUserPreview: CMGetUserPreviewHandler,
val cmGetSellingCard: CMGetSellingCardHandler,
val getUserCardPrintError: GetUserCardPrintErrorHandler,
val cmGetUserCharacter: CMGetUserCharacterHandler,
val upsertUserPrint: UpsertUserPrintHandler,
val getUserRecommendRateMusic: GetUserRecommendRateMusicHandler,
val getUserRecommendSelectMusic: GetUserRecommendSelectMusicHandler,
val getUserFavoriteItem: GetUserFavoriteItemHandler,
val getUserRivalData: GetUserRivalDataHandler,
val getUserRivalMusic: GetUserRivalMusicHandler,
) {
val logger = LoggerFactory.getLogger(Maimai2ServletController::class.java)
val createToken = BaseHandler { """{"Bearer":"AQUATOKEN"}""" }
val cmUpsertUserPrintLog = BaseHandler { """{"returnCode":1,"orderId":"0","serialId":"FAKECARDIMAG12345678"}""" }
val endpointList = listOf("GetGameEventApi", "GetGameRankingApi", "GetGameSettingApi", "GetGameTournamentInfoApi",
"GetTransferFriendApi", "GetUserActivityApi", "GetUserCardApi", "GetUserCharacterApi", "GetUserDataApi",
"GetUserExtendApi", "GetUserFavoriteApi", "GetUserGhostApi", "GetUserItemApi", "GetUserLoginBonusApi",
"GetUserMapApi", "GetUserMusicApi", "GetUserOptionApi", "GetUserPortraitApi", "GetUserPreviewApi",
"GetUserRatingApi", "GetUserRegionApi", "UploadUserPhotoApi", "UploadUserPlaylogApi", "UploadUserPortraitApi",
"UserLoginApi", "UserLogoutApi", "UpsertUserAllApi", "GetGameChargeApi", "GetUserChargeApi",
"GetUserCourseApi", "GetGameNgMusicIdApi", "GetUserFriendSeasonRankingApi", "CreateTokenApi",
"GetUserRecommendRateMusicApi", "GetUserRecommendSelectMusicApi", "CMGetSellingCardApi",
"CMGetUserCardApi", "CMGetUserCardPrintErrorApi", "CMGetUserCharacterApi", "CMGetUserDataApi", "CMGetUserItemApi",
"CMGetUserPreviewApi", "CMUpsertUserPrintApi",
"CMUpsertUserPrintlogApi", "GetUserFavoriteItemApi", "GetUserRivalDataApi", "GetUserRivalMusicApi")
val noopEndpoint = setOf("GetUserScoreRankingApi", "UpsertClientBookkeepingApi", "UpsertClientSettingApi",
"UpsertClientTestmodeApi", "UpsertClientUploadApi", "Ping", "RemoveTokenApi", "CMLoginApi", "CMLogoutApi",
"CMUpsertBuyCardApi")
val members = this::class.declaredMemberProperties
val handlers: Map<String, BaseHandler> = endpointList.associateWith { api ->
val name = api.replace("Api", "").lowercase()
(members.find { it.name.lowercase() == name } ?: members.find { it.name.lowercase() == name.replace("cm", "") })
?.let { it.call(this) as BaseHandler }
?: throw IllegalArgumentException("Mai2: No handler found for $api")
}
@API("/{api}")
fun handle(@PathVariable api: String, @RequestBody request: Map<String, Any>): Any {
logger.info("Mai2 $api : $request")
if (api in noopEndpoint) {
return """{"returnCode":1,"apiName":"com.sega.maimai2servlet.api.$api"}"""
}
return handlers[api]?.handle(request) ?: {
logger.warn("Mai2 $api not found")
"""{"returnCode":1,"apiName":"com.sega.maimai2servlet.api.$api"}"""
}
}
}

View File

@ -1,368 +0,0 @@
package icu.samnyan.aqua.sega.maimai2.controller;
import com.fasterxml.jackson.core.JsonProcessingException;
import icu.samnyan.aqua.sega.maimai2.handler.impl.*;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@AllArgsConstructor
@RestController
@RequestMapping({ "/g/mai2/Maimai2Servlet", "/g/mai2" })
public class Maimai2ServletController {
private final GetGameSettingHandler getGameSettingHandler;
private final GetGameEventHandler getGameEventHandler;
private final GetGameRankingHandler getGameRankingHandler;
private final GetGameTournamentInfoHandler getGameTournamentInfoHandler;
private final GetGameChargeHandler getGameChargeHandler;
private final GetTransferFriendHandler getTransferFriendHandler;
private final GetUserActivityHandler getUserActivityHandler;
private final UserLoginHandler userLoginHandler;
private final UserLogoutHandler userLogoutHandler;
private final GetUserDataHandler getUserDataHandler;
private final UpsertUserAllHandler upsertUserAllHandler;
private final GetUserPreviewHandler getUserPreviewHandler;
private final GetUserCharacterHandler getUserCharacterHandler;
private final GetUserOptionHandler getUserOptionHandler;
private final GetUserItemHandler getUserItemHandler;
private final GetUserExtendHandler getUserExtendHandler;
private final GetUserGhostHandler getUserGhostHandler;
private final GetUserLoginBonusHandler getUserLoginBonusHandler;
private final GetUserMapHandler getUserMapHandler;
private final GetUserFavoriteHandler getUserFavoriteHandler;
private final GetUserCardHandler getUserCardHandler;
private final GetUserMusicHandler getUserMusicHandler;
private final GetUserRatingHandler getUserRatingHandler;
private final GetUserRegionHandler getUserRegionHandler;
private final GetUserChargeHandler getUserChargeHandler;
private final GetUserCourseHandler getUserCourseHandler;
private final UploadUserPhotoHandler uploadUserPhotoHandler;
private final UploadUserPlaylogHandler uploadUserPlaylogHandler;
private final GetGameNgMusicIdHandler getGameNgMusicIdHandler;
private final GetUserFriendSeasonRankingHandler getUserFriendSeasonRankingHandler;
private final GetUserPortraitHandler getUserPortraitHandler;
private final UploadUserPortraitHandler uploadUserPortraitHandler;
private final CMGetUserPreviewHandler cmGetUserPreviewHandler;
private final CMGetSellingCardHandler cmGetSellingCardHandler;
private final GetUserCardPrintErrorHandler getUserCardPrintErrorHandler;
private final CMGetUserCharacterHandler cmGetUserCharacterHandler;
private final UpsertUserPrintHandler upsertUserPrintHandler;
private final GetUserRecommendRateMusicHandler getUserRecommendRateMusicHandler;
private final GetUserRecommendSelectMusicHandler getUserRecommendSelectMusicHandler;
private final GetUserFavoriteItemHandler getUserFavoriteItemHandler;
private final GetUserRivalDataHandler getUserRivalDataHandler;
private final GetUserRivalMusicHandler getUserRivalMusicHandler;
// Mandatory for boot
@PostMapping("GetGameEventApi")
public String getGameEvent(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getGameEventHandler.handle(request);
}
@PostMapping("GetGameRankingApi")
public String getGameRanking(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getGameRankingHandler.handle(request);
}
@PostMapping("GetGameSettingApi")
public String getGameSetting(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getGameSettingHandler.handle(request);
}
@PostMapping("GetGameTournamentInfoApi")
public String getGameTournamentInfoHandler(@ModelAttribute Map<String, Object> request)
throws JsonProcessingException {
return getGameTournamentInfoHandler.handle(request);
}
// Gameplay
@PostMapping("GetTransferFriendApi")
public String getTransferFriendHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getTransferFriendHandler.handle(request);
}
@PostMapping("GetUserActivityApi")
public String getUserActivityHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserActivityHandler.handle(request);
}
@PostMapping("GetUserCardApi")
public String getUserCardHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserCardHandler.handle(request);
}
@PostMapping("GetUserCharacterApi")
public String getUserCharacterHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserCharacterHandler.handle(request);
}
@PostMapping("GetUserDataApi")
public String getUserDataHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserDataHandler.handle(request);
}
@PostMapping("GetUserExtendApi")
public String getUserExtendHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserExtendHandler.handle(request);
}
@PostMapping("GetUserFavoriteApi")
public String getUserFavoriteHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserFavoriteHandler.handle(request);
}
// No support, return empty
@PostMapping("GetUserGhostApi")
public String getUserGhostHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserGhostHandler.handle(request);
}
@PostMapping("GetUserItemApi")
public String getUserItemHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserItemHandler.handle(request);
}
@PostMapping("GetUserLoginBonusApi")
public String getUserLoginBonusHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserLoginBonusHandler.handle(request);
}
@PostMapping("GetUserMapApi")
public String getUserMapHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserMapHandler.handle(request);
}
@PostMapping("GetUserMusicApi")
public String getUserMusicHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserMusicHandler.handle(request);
}
@PostMapping("GetUserOptionApi")
public String getUserOptionHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserOptionHandler.handle(request);
}
@PostMapping("GetUserPortraitApi")
public String getUserPortraitHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserPortraitHandler.handle(request);
}
@PostMapping("GetUserPreviewApi")
public String getUserPreviewHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserPreviewHandler.handle(request);
}
@PostMapping("GetUserRatingApi")
public String getUserRatingHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserRatingHandler.handle(request);
}
// I don't know what it is. return empty
@PostMapping("GetUserRegionApi")
public String getUserRegionHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserRegionHandler.handle(request);
}
// Seems only used for tournament, No Support
@PostMapping("GetUserScoreRankingApi")
public String getUserScoreRankingHandler(@ModelAttribute Map<String, Object> request)
throws JsonProcessingException {
return "{}";
}
@PostMapping("UploadUserPhotoApi")
public Object uploadUserPhotoHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return uploadUserPhotoHandler.handle(request);
}
@PostMapping("UploadUserPlaylogApi")
public Object uploadUserPlaylogHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return uploadUserPlaylogHandler.handle(request);
}
@CrossOrigin // enable cors because aqua-viewer also use it.
@PostMapping("UploadUserPortraitApi")
public Object uploadUserPortraitHandler(@ModelAttribute Map<String, Object> request)
throws JsonProcessingException {
return uploadUserPortraitHandler.handle(request);
}
@PostMapping("UserLoginApi")
public Object userLoginHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return userLoginHandler.handle(request);
}
@PostMapping("UserLogoutApi")
public String userLogoutHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return userLogoutHandler.handle(request);
}
@PostMapping("UpsertClientBookkeepingApi")
public String upsertClientBookkeeping(@ModelAttribute Map<String, Object> request) {
return "{\"returnCode\":1,\"apiName\":\"com.sega.maimai2servlet.api.UpsertClientBookkeepingApi\"}";
}
@PostMapping("UpsertClientSettingApi")
public String upsertClientSetting(@ModelAttribute Map<String, Object> request) {
return "{\"returnCode\":1,\"apiName\":\"com.sega.maimai2servlet.api.UpsertClientSettingApi\"}";
}
@PostMapping("UpsertClientTestmodeApi")
public String upsertClientTestmode(@ModelAttribute Map<String, Object> request) {
return "{\"returnCode\":1,\"apiName\":\"com.sega.maimai2servlet.api.UpsertClientTestmodeApi\"}";
}
@PostMapping("UpsertClientUploadApi")
public String upsertClientUpload(@ModelAttribute Map<String, Object> request) {
return "{\"returnCode\":1,\"apiName\":\"com.sega.maimai2servlet.api.UpsertClientUploadApi\"}";
}
// Score saving
@PostMapping("UpsertUserAllApi")
public String upsertUserAllHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return upsertUserAllHandler.handle(request);
}
// Splash plus APIs
@PostMapping("GetGameChargeApi")
public String getGameChargeHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getGameChargeHandler.handle(request);
}
@PostMapping("GetUserChargeApi")
public String getUserChargeHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserChargeHandler.handle(request);
}
@PostMapping("UpsertUserChargelogApi")
public String upsertUserChargelog(@ModelAttribute Map<String, Object> request) {
return "{\"returnCode\":1,\"apiName\":\"com.sega.maimai2servlet.api.UpsertUserChargelogApi\"}";
}
@PostMapping("GetUserCourseApi")
public String getUserCourseHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserCourseHandler.handle(request);
}
// Universe APIs
@PostMapping("GetGameNgMusicIdApi")
public String getGameNgMusicIdHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getGameNgMusicIdHandler.handle(request);
}
@PostMapping("GetUserFriendSeasonRankingApi")
public String getUserFriendSeasonRankingHandler(@ModelAttribute Map<String, Object> request)
throws JsonProcessingException {
return getUserFriendSeasonRankingHandler.handle(request);
}
@PostMapping("Ping")
String ping(@ModelAttribute Map<String, Object> request) {
return "{\"returnCode\":\"1\"}";
}
// Festival APIs
@PostMapping("CreateTokenApi")
String createTokenHandler(@ModelAttribute Map<String, Object> request) {
return "{\"Bearer\":\"AQUATOKEN\"}";
}
@PostMapping("RemoveTokenApi")
String removeTokenHandler(@ModelAttribute Map<String, Object> request) {
return "{\"returnCode\":\"1\"}";
}
@PostMapping("GetUserRecommendRateMusicApi")
public String getUserRecommendRateMusicHandler(@ModelAttribute Map<String, Object> request)
throws JsonProcessingException {
return getUserRecommendRateMusicHandler.handle(request);
}
@PostMapping("GetUserRecommendSelectMusicApi")
public String getUserRecommendSelectMusicHandler(@ModelAttribute Map<String, Object> request)
throws JsonProcessingException {
return getUserRecommendSelectMusicHandler.handle(request);
}
// CardMaker APIs
@PostMapping("CMGetSellingCardApi")
String cmGetSellingCard(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return cmGetSellingCardHandler.handle(request);
}
@PostMapping("CMGetUserCardApi")
String cmGetUserCard(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserCardHandler.handle(request);
}
@PostMapping("CMGetUserCardPrintErrorApi")
String cmGetUserCardPrintError(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserCardPrintErrorHandler.handle(request);
}
@PostMapping("CMGetUserCharacterApi")
String cmGetUserCharacter(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return cmGetUserCharacterHandler.handle(request);
}
@PostMapping("CMGetUserDataApi")
String cmGetUserData(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserDataHandler.handle(request);
}
@PostMapping("CMGetUserItemApi")
String cmGetUserItem(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserItemHandler.handle(request);
}
@PostMapping("CMGetUserPreviewApi")
String cmGetUserPreview(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return cmGetUserPreviewHandler.handle(request);
}
@PostMapping("CMLoginApi")
String cmLoginApi(@ModelAttribute Map<String, Object> request) {
return "{\"returnCode\":\"1\"}";
}
@PostMapping("CMLogoutApi")
String cmLogoutApi(@ModelAttribute Map<String, Object> request) {
return "{\"returnCode\":\"1\"}";
}
@PostMapping("CMUpsertBuyCardApi")
String cmUpsertBuyCard(@ModelAttribute Map<String, Object> request) {
return "{\"returnCode\":\"1\"}";
}
@PostMapping("CMUpsertUserPrintApi")
String cmUpsertUserPrint(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return upsertUserPrintHandler.handle(request);
}
@PostMapping("CMUpsertUserPrintlogApi")
String cmUpsertUserPrintlog(@ModelAttribute Map<String, Object> request) {
return "{\"returnCode\":\"1\", \"orderId\":\"0\", \"serialId\":\"FAKECARDIMAG12345678\"}";
}
@PostMapping("GetUserFavoriteItemApi")
String getUserFavoriteItem(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return this.getUserFavoriteItemHandler.handle(request);
}
@PostMapping("GetUserRivalDataApi")
String getUserRivalData(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return this.getUserRivalDataHandler.handle(request);
}
@PostMapping("GetUserRivalMusicApi")
String getUserRivalMusic(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return this.getUserRivalMusicHandler.handle(request);
}
}

View File

@ -1,38 +0,0 @@
package icu.samnyan.aqua.sega.maimai2.controller;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import jakarta.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Map;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@RestControllerAdvice(basePackages = "icu.samnyan.aqua.sega.maimai2")
public class Maimai2ServletControllerAdvice {
private static final Logger logger = LoggerFactory.getLogger(Maimai2ServletControllerAdvice.class);
/**
* Get the map object from json string
*
* @param request HttpServletRequest
*/
@ModelAttribute
public Map<String, Object> preHandle(HttpServletRequest request) throws IOException {
byte[] src = request.getInputStream().readAllBytes();
String outputString = new String(src, StandardCharsets.UTF_8).trim();
logger.info("Request {} : {}", request.getRequestURI(), outputString);
ObjectMapper mapper = new ObjectMapper();
return mapper.readValue(outputString, new TypeReference<>() {
});
}
}

View File

@ -1,12 +1,16 @@
package icu.samnyan.aqua.sega.maimai2.handler;
import com.fasterxml.jackson.core.JsonProcessingException;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@RestController
@RequestMapping({"/g/mai2/Maimai2Servlet/", "/g/mai2/"})
public interface BaseHandler {
Object handle(Map<String, Object> request) throws JsonProcessingException;

View File

@ -4,6 +4,7 @@ import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Optional;
import icu.samnyan.aqua.sega.maimai2.handler.BaseHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -17,7 +18,7 @@ import icu.samnyan.aqua.sega.maimai2.model.userdata.UserDetail;
import icu.samnyan.aqua.sega.util.jackson.StringMapper;
@Component("Maimai2GetUserRivalDataHandler")
public class GetUserRivalDataHandler {
public class GetUserRivalDataHandler implements BaseHandler {
private static final Logger logger = LoggerFactory
.getLogger(icu.samnyan.aqua.sega.maimai2.handler.impl.GetUserRivalDataHandler.class);

View File

@ -6,6 +6,7 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import icu.samnyan.aqua.sega.maimai2.handler.BaseHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -20,7 +21,7 @@ import icu.samnyan.aqua.sega.maimai2.model.userdata.UserMusicDetail;
import icu.samnyan.aqua.sega.util.jackson.StringMapper;
@Component("Maimai2GetUserRivalMusicHandler")
public class GetUserRivalMusicHandler {
public class GetUserRivalMusicHandler implements BaseHandler {
private static final Logger logger = LoggerFactory
.getLogger(icu.samnyan.aqua.sega.maimai2.handler.impl.GetUserRivalMusicHandler.class);

View File

@ -3,7 +3,7 @@ package icu.samnyan.aqua.sega.maimai2.handler.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import icu.samnyan.aqua.sega.general.model.Card;
import icu.samnyan.aqua.sega.general.service.CardService;
import icu.samnyan.aqua.sega.maimai.handler.BaseHandler;
import icu.samnyan.aqua.sega.maimai2.handler.BaseHandler;
import icu.samnyan.aqua.sega.maimai2.model.*;
import icu.samnyan.aqua.sega.maimai2.model.request.UpsertUserAll;
import icu.samnyan.aqua.sega.maimai2.model.request.data.UserAll;