[general] Refactoring chunithm UpsertUserAll request and some clean up

This commit is contained in:
samnyan 2020-03-28 22:23:22 +09:00
parent 9a4ca3a612
commit 528b2f8b4d
70 changed files with 310 additions and 241 deletions

View File

@ -33,10 +33,9 @@ public class AimeDbDecoder extends ByteToMessageDecoder {
/**
* Decrypt the incoming request including frame management
*
* @param ctx
* @param in
* @param out
* @param ctx ChannelHandlerContext
* @param in ByteBuf in
* @param out List<Object>
* @throws Exception
*/
@Override

View File

@ -1,6 +1,6 @@
package icu.samnyan.aqua.sega.aimedb;
import icu.samnyan.aqua.sega.aimedb.handler.Impl.*;
import icu.samnyan.aqua.sega.aimedb.handler.impl.*;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;

View File

@ -1,6 +1,6 @@
package icu.samnyan.aqua.sega.aimedb;
import icu.samnyan.aqua.sega.aimedb.handler.Impl.*;
import icu.samnyan.aqua.sega.aimedb.handler.impl.*;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelPipeline;
import io.netty.channel.socket.SocketChannel;
@ -40,7 +40,7 @@ public class AimeDbServerInitializer extends ChannelInitializer<SocketChannel> {
@Override
protected void initChannel(SocketChannel ch) throws Exception {
protected void initChannel(SocketChannel ch) {
ChannelPipeline pipeline = ch.pipeline();
pipeline.addLast("encoder", new AimeDbEncoder());
pipeline.addLast("decoder", new AimeDbDecoder());

View File

@ -1,4 +1,4 @@
package icu.samnyan.aqua.sega.aimedb.handler.Impl;
package icu.samnyan.aqua.sega.aimedb.handler.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import icu.samnyan.aqua.sega.aimedb.handler.BaseHandler;

View File

@ -1,4 +1,4 @@
package icu.samnyan.aqua.sega.aimedb.handler.Impl;
package icu.samnyan.aqua.sega.aimedb.handler.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import icu.samnyan.aqua.sega.aimedb.handler.BaseHandler;

View File

@ -1,4 +1,4 @@
package icu.samnyan.aqua.sega.aimedb.handler.Impl;
package icu.samnyan.aqua.sega.aimedb.handler.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

View File

@ -1,4 +1,4 @@
package icu.samnyan.aqua.sega.aimedb.handler.Impl;
package icu.samnyan.aqua.sega.aimedb.handler.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import icu.samnyan.aqua.sega.aimedb.handler.BaseHandler;

View File

@ -1,4 +1,4 @@
package icu.samnyan.aqua.sega.aimedb.handler.Impl;
package icu.samnyan.aqua.sega.aimedb.handler.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import icu.samnyan.aqua.sega.aimedb.handler.BaseHandler;

View File

@ -1,4 +1,4 @@
package icu.samnyan.aqua.sega.aimedb.handler.Impl;
package icu.samnyan.aqua.sega.aimedb.handler.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import icu.samnyan.aqua.sega.aimedb.handler.BaseHandler;

View File

@ -1,4 +1,4 @@
package icu.samnyan.aqua.sega.aimedb.handler.Impl;
package icu.samnyan.aqua.sega.aimedb.handler.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import icu.samnyan.aqua.sega.aimedb.handler.BaseHandler;

View File

@ -1,10 +1,9 @@
package icu.samnyan.aqua.sega.aimedb.handler.Impl;
package icu.samnyan.aqua.sega.aimedb.handler.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import icu.samnyan.aqua.sega.aimedb.handler.BaseHandler;
import icu.samnyan.aqua.sega.aimedb.util.AimeDbUtil;
import icu.samnyan.aqua.sega.aimedb.util.LogMapper;
import icu.samnyan.aqua.sega.general.dao.CardRepository;
import icu.samnyan.aqua.sega.general.model.Card;
import icu.samnyan.aqua.sega.general.service.CardService;
import io.netty.buffer.ByteBuf;

View File

@ -14,11 +14,10 @@ import org.springframework.stereotype.Component;
public class LogMapper {
private final ObjectMapper mapper;
private final SimpleModule module;
public LogMapper() {
mapper = new ObjectMapper();
module = new SimpleModule();
SimpleModule module = new SimpleModule();
module.addSerializer(ByteBuf.class, new ByteBufSerializer());
mapper.registerModule(module);
}

View File

@ -33,7 +33,7 @@ public class AllNetController {
}
@PostMapping(value = "/sys/servlet/PowerOn", produces = "text/plain")
String powerOn(InputStream dataStream) throws DataFormatException, IOException {
public String powerOn(InputStream dataStream) throws IOException {
byte[] bytes = dataStream.readAllBytes();
Map<String, String> reqMap = Decoder.decode(bytes);

View File

@ -128,7 +128,7 @@ public class ChuniServletController {
/**
* The game start up request
*
* @return
* @return json of GameSetting object
*/
@PostMapping("GetGameSettingApi")
String getGameSetting(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {

View File

@ -14,7 +14,6 @@ import org.springframework.data.domain.Page;
import org.springframework.stereotype.Component;
import java.util.*;
import java.util.stream.Collectors;
/**
* Response:

View File

@ -2,7 +2,7 @@ package icu.samnyan.aqua.sega.chunithm.handler.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import icu.samnyan.aqua.sega.chunithm.handler.BaseHandler;
import icu.samnyan.aqua.sega.chunithm.model.response.data.UserRecentRating;
import icu.samnyan.aqua.sega.general.model.response.UserRecentRating;
import icu.samnyan.aqua.sega.chunithm.model.userdata.UserPlaylog;
import icu.samnyan.aqua.sega.chunithm.service.UserPlaylogService;
import icu.samnyan.aqua.sega.util.jackson.StringMapper;

View File

@ -2,6 +2,7 @@ package icu.samnyan.aqua.sega.chunithm.handler.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import icu.samnyan.aqua.sega.chunithm.handler.BaseHandler;
import icu.samnyan.aqua.sega.chunithm.model.requet.UpsertUserAll;
import icu.samnyan.aqua.sega.chunithm.model.response.CodeResp;
import icu.samnyan.aqua.sega.chunithm.model.userdata.*;
import icu.samnyan.aqua.sega.chunithm.service.*;
@ -67,21 +68,20 @@ public class UpsertUserAllHandler implements BaseHandler {
@Override
public String handle(Map<String, Object> request) throws JsonProcessingException {
String userId = (String) request.get("userId");
Map<String, Object> upsertUserAll = (Map<String, Object>) request.get("upsertUserAll");
UpsertUserAll upsertUserAll = mapper.convert(request.get("upsertUserAll"), UpsertUserAll.class);
// Not all field will be sent. Check if they are exist first.
UserData userData;
UserData newUserData;
// UserData
if (!upsertUserAll.containsKey("userData")) {
if (upsertUserAll.getUserData() == null) {
return null;
} else {
Map<String, Object> userDataMap = ((List<Map<String, Object>>) upsertUserAll.get("userData")).get(0);
newUserData = upsertUserAll.getUserData().get(0);
Optional<UserData> userOptional = userDataService.getUserByExtId(userId);
if (userOptional.isPresent()) {
userData = userOptional.get();
} else {
@ -90,9 +90,6 @@ public class UpsertUserAllHandler implements BaseHandler {
userData.setCard(card);
}
// Map the map to object
newUserData = mapper.convert(userDataMap, UserData.class);
newUserData.setId(userData.getId());
newUserData.setCard(userData.getCard());
@ -107,30 +104,26 @@ public class UpsertUserAllHandler implements BaseHandler {
}
// userGameOption
if (upsertUserAll.containsKey("userGameOption")) {
Map<String, Object> userGameOptionMap = ((List<Map<String, Object>>) upsertUserAll.get("userGameOption")).get(0);
if (upsertUserAll.getUserGameOption() != null) {
UserGameOption newUserGameOption = upsertUserAll.getUserGameOption().get(0);
Optional<UserGameOption> userGameOptionOptional = userGameOptionService.getByUser(newUserData);
UserGameOption userGameOption = userGameOptionOptional.orElseGet(() -> new UserGameOption(newUserData));
UserGameOption newUserGameOption = mapper.convert(userGameOptionMap, UserGameOption.class);
newUserGameOption.setId(userGameOption.getId());
newUserGameOption.setUser(userGameOption.getUser());
userGameOptionService.save(newUserGameOption);
}
// userGameOptionEx
if (upsertUserAll.containsKey("userGameOptionEx")) {
Map<String, Object> userGameOptionExMap = ((List<Map<String, Object>>) upsertUserAll.get("userGameOptionEx")).get(0);
if (upsertUserAll.getUserGameOptionEx() != null) {
UserGameOptionEx newUserGameOptionEx = upsertUserAll.getUserGameOptionEx().get(0);
Optional<UserGameOptionEx> userGameOptionExOptional = userGameOptionExService.getByUser(newUserData);
UserGameOptionEx userGameOptionEx = userGameOptionExOptional.orElseGet(() -> new UserGameOptionEx(newUserData));
UserGameOptionEx newUserGameOptionEx = mapper.convert(userGameOptionExMap, UserGameOptionEx.class);
newUserGameOptionEx.setId(userGameOptionEx.getId());
newUserGameOptionEx.setUser(userGameOptionEx.getUser());
@ -138,43 +131,35 @@ public class UpsertUserAllHandler implements BaseHandler {
}
// userMapList
if (upsertUserAll.containsKey("userMapList")) {
if (upsertUserAll.getUserMapList() != null) {
List<UserMap> userMapList = upsertUserAll.getUserMapList();
Map<Integer, UserMap> newUserMapMap = new HashMap<>();
int mapPos = 0;
List<Map<String, Object>> userMapList = (List<Map<String, Object>>) upsertUserAll.get("userMapList");
Map<String, UserMap> newUserMapMap = new HashMap<>();
userMapList.forEach(userMapListMap -> {
String mapId = (String) userMapListMap.get("mapId");
userMapList.forEach(newUserMap -> {
int mapId = newUserMap.getMapId();
UserMap userMap;
Optional<UserMap> userMapOptional = userMapService.getByUserAndMapId(newUserData, mapId);
userMap = userMapOptional.orElseGet(() -> new UserMap(newUserData));
UserMap newUserMap = mapper.convert(userMapListMap, UserMap.class);
newUserMap.setId(userMap.getId());
newUserMap.setUser(userMap.getUser());
newUserMapMap.put(mapId, newUserMap);
});
userMapService.saveAll(newUserMapMap.values());
}
// userCharacterList
if (upsertUserAll.containsKey("userCharacterList")) {
if (upsertUserAll.getUserCharacterList() != null) {
List<UserCharacter> userCharacterList = upsertUserAll.getUserCharacterList();
Map<Integer, UserCharacter> newCharacterMap = new HashMap<>();
List<Map<String, Object>> userCharacterList = (List<Map<String, Object>>) upsertUserAll.get("userCharacterList");
Map<String, UserCharacter> newCharacterMap = new HashMap<>();
userCharacterList.forEach(userCharacterMap -> {
String characterId = (String) userCharacterMap.get("characterId");
userCharacterList.forEach(newUserCharacter -> {
int characterId = newUserCharacter.getCharacterId();
Optional<UserCharacter> userCharacterOptional = userCharacterService.getByUserAndCharacterId(newUserData, characterId);
UserCharacter userCharacter = userCharacterOptional.orElseGet(() -> new UserCharacter(newUserData));
UserCharacter newUserCharacter = mapper.convert(userCharacterMap, UserCharacter.class);
newUserCharacter.setId(userCharacter.getId());
newUserCharacter.setUser(userCharacter.getUser());
@ -184,20 +169,18 @@ public class UpsertUserAllHandler implements BaseHandler {
}
// userItemList
if (upsertUserAll.containsKey("userItemList")) {
List<Map<String, Object>> userItemList = (List<Map<String, Object>>) upsertUserAll.get("userItemList");
if (upsertUserAll.getUserItemList() != null) {
List<UserItem> userItemList = upsertUserAll.getUserItemList();
Map<String, UserItem> newUserItemMap = new HashMap<>();
userItemList.forEach(userItemMap -> {
String itemId = (String) userItemMap.get("itemId");
String itemKind = (String) userItemMap.get("itemKind");
userItemList.forEach(newUserItem -> {
int itemId = newUserItem.getItemId();
int itemKind = newUserItem.getItemKind();
Optional<UserItem> userItemOptional = userItemService.getByUserAndItemId(newUserData, itemId, itemKind);
Optional<UserItem> userItemOptional = userItemService.getByUserAndItemIdAndKind(newUserData, itemId, itemKind);
UserItem userItem = userItemOptional.orElseGet(() -> new UserItem(newUserData));
UserItem newUserItem = mapper.convert(userItemMap, UserItem.class);
newUserItem.setId(userItem.getId());
newUserItem.setUser(userItem.getUser());
@ -207,100 +190,92 @@ public class UpsertUserAllHandler implements BaseHandler {
}
// userMusicDetailList
if (upsertUserAll.containsKey("userMusicDetailList")) {
if (upsertUserAll.getUserMusicDetailList() != null) {
List<Map<String, Object>> userMusicDetailList = (List<Map<String, Object>>) upsertUserAll.get("userMusicDetailList");
List<UserMusicDetail> userMusicDetailList = upsertUserAll.getUserMusicDetailList();
Map<String, UserMusicDetail> newUserMusicDetailMap = new HashMap<>();
userMusicDetailList.forEach(userMusicDetailMap -> {
String musicId = (String) userMusicDetailMap.get("musicId");
String level = (String) userMusicDetailMap.get("level");
userMusicDetailList.forEach(newUserMusicDetail -> {
int musicId = newUserMusicDetail.getMusicId();
int level = newUserMusicDetail.getLevel();
Optional<UserMusicDetail> userMusicDetailOptional = userMusicDetailService.getByUserAndMusicIdAndLevel(newUserData, musicId, level);
UserMusicDetail userMusicDetail = userMusicDetailOptional.orElseGet(() -> new UserMusicDetail(newUserData));
UserMusicDetail newUserMusicDetail = mapper.convert(userMusicDetailMap, UserMusicDetail.class);
newUserMusicDetail.setId(userMusicDetail.getId());
newUserMusicDetail.setUser(userMusicDetail.getUser());
newUserMusicDetailMap.put(musicId + "," + level, newUserMusicDetail);
newUserMusicDetailMap.put(musicId + "-" + level, newUserMusicDetail);
});
userMusicDetailService.saveAll(newUserMusicDetailMap.values());
}
// userActivityList
if (upsertUserAll.containsKey("userActivityList")) {
if (upsertUserAll.getUserActivityList() != null) {
List<UserActivity> userActivityList = upsertUserAll.getUserActivityList();
List<UserActivity> newUserActivityList = new LinkedList<>();
List<Map<String, Object>> userActivityList = (List<Map<String, Object>>) upsertUserAll.get("userActivityList");
userActivityList.forEach(userActivityMap -> {
userActivityList.forEach(newUserActivity -> {
// No need to rename to activityId. jackson auto handle that
String activityId = (String) userActivityMap.get("id");
String kind = (String) userActivityMap.get("kind");
int activityId = newUserActivity.getActivityId();
int kind = newUserActivity.getKind();
Optional<UserActivity> userActivityOptional = userActivityService.getByUserAndActivityIdAndKind(newUserData, activityId, kind);
UserActivity userActivity = userActivityOptional.orElseGet(() -> new UserActivity(newUserData));
UserActivity newUserActivity = mapper.convert(userActivityMap, UserActivity.class);
newUserActivity.setId(userActivity.getId());
newUserActivity.setUser(userActivity.getUser());
userActivityService.save(newUserActivity);
newUserActivityList.add(newUserActivity);
});
userActivityService.saveAll(newUserActivityList);
}
// userRecentRatingList
// userChargeList
if (upsertUserAll.containsKey("userChargeList")) {
List<Map<String, Object>> userChargeList = (List<Map<String, Object>>) upsertUserAll.get("userChargeList");
if (upsertUserAll.getUserChargeList() != null) {
List<UserCharge> userChargeList = upsertUserAll.getUserChargeList();
List<UserCharge> newUserChargeList = new ArrayList<>();
userChargeList.forEach(userChargeMap -> {
String chargeId = (String) userChargeMap.get("chargeId");
userChargeList.forEach(newUserCharge -> {
int chargeId = newUserCharge.getChargeId();
Optional<UserCharge> userChargeOptional = userChargeService.getByUserAndChargeId(newUserData, chargeId);
UserCharge userCharge = userChargeOptional.orElseGet(() -> new UserCharge(newUserData));
UserCharge newUserCharge = mapper.convert(userChargeMap, UserCharge.class);
newUserCharge.setId(userCharge.getId());
newUserCharge.setUser(userCharge.getUser());
newUserChargeList.add(newUserCharge);
});
userChargeService.saveAll(newUserChargeList);
}
// userPlaylogList
if (upsertUserAll.containsKey("userPlaylogList")) {
List<Map<String, Object>> userPlaylogList = (List<Map<String, Object>>) upsertUserAll.get("userPlaylogList");
if (upsertUserAll.getUserPlaylogList() != null) {
List<UserPlaylog> userPlaylogList = upsertUserAll.getUserPlaylogList();
List<UserPlaylog> newUserPlaylogList = new ArrayList<>();
userPlaylogList.forEach(userPlayLogMap -> {
UserPlaylog newUserPlaylog = mapper.convert(userPlayLogMap, UserPlaylog.class);
userPlaylogList.forEach(newUserPlaylog -> {
newUserPlaylog.setUser(newUserData);
newUserPlaylogList.add(newUserPlaylog);
});
if (newUserPlaylogList.size() > 0) userPlaylogService.saveAll(newUserPlaylogList);
}
// userCourseList
if (upsertUserAll.containsKey("userCourseList")) {
List<Map<String, Object>> userCourseList = (List<Map<String, Object>>) upsertUserAll.get("userCourseList");
if (upsertUserAll.getUserCourseList() != null) {
List<UserCourse> userCourseList = upsertUserAll.getUserCourseList();
userCourseList.forEach(userCourseMap -> {
String courseId = (String) userCourseMap.get("courseId");
userCourseList.forEach(newUserCourse -> {
int courseId = newUserCourse.getCourseId();
Optional<UserCourse> userCourseOptional = userCourseService.getByUserAndCourseId(newUserData, courseId);
UserCourse userCourse = userCourseOptional.orElseGet(() -> new UserCourse(newUserData));
UserCourse newUserCourse = mapper.convert(userCourseMap, UserCourse.class);
newUserCourse.setId(userCourse.getId());
newUserCourse.setUser(userCourse.getUser());
@ -310,13 +285,12 @@ public class UpsertUserAllHandler implements BaseHandler {
// userDataEx
if (upsertUserAll.containsKey("userDataEx")) {
Map<String, Object> userDataExMap = ((List<Map<String, Object>>) upsertUserAll.get("userDataEx")).get(0);
if (upsertUserAll.getUserDataEx() != null) {
UserDataEx newUserDataEx = upsertUserAll.getUserDataEx().get(0);
Optional<UserDataEx> userDataExOptional = userDataExService.getByUser(newUserData);
UserDataEx userDataEx = userDataExOptional.orElseGet(() -> new UserDataEx(newUserData));
UserDataEx newUserDataEx = mapper.convert(userDataExMap, UserDataEx.class);
newUserDataEx.setId(userDataEx.getId());
newUserDataEx.setUser(userDataEx.getUser());
@ -324,23 +298,21 @@ public class UpsertUserAllHandler implements BaseHandler {
}
// userDuelList
if (upsertUserAll.containsKey("userDuelList")) {
if (upsertUserAll.getUserDuelList() != null) {
List<UserDuel> userDuelList = upsertUserAll.getUserDuelList();
Map<Integer, UserDuel> newUserDuelMap = new HashMap<>();
List<Map<String, Object>> userDuelList = (List<Map<String, Object>>) upsertUserAll.get("userDuelList");
Map<String, UserDuel> newUserDuelMap = new HashMap<>();
userDuelList.forEach(userDuelMap -> {
String duelId = (String) userDuelMap.get("duelId");
userDuelList.forEach(newUserDuel -> {
int duelId = newUserDuel.getDuelId();
Optional<UserDuel> userDuelOptional = userDuelService.getByUserAndDuelId(newUserData, duelId);
UserDuel userDuel = userDuelOptional.orElseGet(() -> new UserDuel(newUserData));
UserDuel newUserDuel = mapper.convert(userDuelMap, UserDuel.class);
newUserDuel.setId(userDuel.getId());
newUserDuel.setUser(userDuel.getUser());
newUserDuelMap.put(duelId, newUserDuel);
});
userDuelService.saveAll(newUserDuelMap.values());
}

View File

@ -42,7 +42,7 @@ public class UpsertUserChargelogHandler implements BaseHandler {
String chargeId = (String) userChargeMap.get("chargeId");
UserCharge charge = mapper.convert(userChargeMap, UserCharge.class);
UserCharge userCharge = userChargeService.getByUserAndChargeId(user, chargeId).orElseGet(() -> new UserCharge(user));
UserCharge userCharge = userChargeService.getByUserAndChargeId(user, Integer.parseInt(chargeId)).orElseGet(() -> new UserCharge(user));
userCharge.setChargeId(charge.getChargeId());
userCharge.setStock(charge.getStock());
userCharge.setPurchaseDate(charge.getPurchaseDate());

View File

@ -0,0 +1,88 @@
package icu.samnyan.aqua.sega.chunithm.model.requet;
import com.fasterxml.jackson.annotation.JsonProperty;
import icu.samnyan.aqua.sega.chunithm.model.userdata.*;
import icu.samnyan.aqua.sega.general.model.response.UserRecentRating;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.lang.Nullable;
import java.io.Serializable;
import java.util.List;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UpsertUserAll implements Serializable {
@Nullable
private List<UserData> userData;
@Nullable
private List<UserGameOption> userGameOption;
@Nullable
private List<UserGameOptionEx> userGameOptionEx;
@Nullable
private List<UserMap> userMapList;
@Nullable
private List<UserCharacter> userCharacterList;
@Nullable
private List<UserItem> userItemList;
@Nullable
private List<UserMusicDetail> userMusicDetailList;
@Nullable
private List<UserActivity> userActivityList;
@Nullable
private List<UserRecentRating> userRecentRatingList;
@Nullable
private List<UserCharge> userChargeList;
@Nullable
private List<UserPlaylog> userPlaylogList;
@Nullable
private List<UserCourse> userCourseList;
@Nullable
private List<UserDataEx> userDataEx;
@Nullable
private List<UserDuel> userDuelList;
@Nullable
@JsonProperty("isNewMapList")
private String isNewMapList;
@Nullable
@JsonProperty("isNewCharacterList")
private String isNewCharacterList;
@Nullable
@JsonProperty("isNewMusicDetailList")
private String isNewMusicDetailList;
@Nullable
@JsonProperty("isNewItemList")
private String isNewItemList;
@Nullable
@JsonProperty("isNewCourseList")
private String isNewCourseList;
@Nullable
@JsonProperty("isNewDuelList")
private String isNewDuelList;
}

View File

@ -30,8 +30,8 @@ public class UserActivityService {
return userActivityRepository.saveAll(userActivityList);
}
public Optional<UserActivity> getByUserAndActivityIdAndKind(UserData user, String activityId, String kind) {
return userActivityRepository.findTopByUserAndActivityIdAndKindOrderByIdDesc(user, Integer.parseInt(activityId), Integer.parseInt(kind));
public Optional<UserActivity> getByUserAndActivityIdAndKind(UserData user, int activityId, int kind) {
return userActivityRepository.findTopByUserAndActivityIdAndKindOrderByIdDesc(user, activityId, kind);
}
public List<UserActivity> getAllByUserIdAndKind(String userId, String kind) {

View File

@ -42,10 +42,6 @@ public class UserCharacterService {
return userCharacterRepository.findByUser_Card_ExtId(Integer.parseInt(userId), pageable);
}
public Optional<UserCharacter> getByUserAndCharacterId(UserData user, String characterId) {
return getByUserAndCharacterId(user, Integer.parseInt(characterId));
}
public Optional<UserCharacter> getByUserAndCharacterId(UserData user, int characterId) {
return userCharacterRepository.findTopByUserAndCharacterIdOrderByIdDesc(user, characterId);
}

View File

@ -32,8 +32,8 @@ public class UserChargeService {
return userChargeRepository.findByUser_Card_ExtId(Integer.parseInt(userId));
}
public Optional<UserCharge> getByUserAndChargeId(UserData user, String chargeId) {
return userChargeRepository.findByUserAndChargeId(user, Integer.parseInt(chargeId));
public Optional<UserCharge> getByUserAndChargeId(UserData user, int chargeId) {
return userChargeRepository.findByUserAndChargeId(user, chargeId);
}
}

View File

@ -42,7 +42,7 @@ public class UserCourseService {
return userCourseRepository.findByUser_Card_ExtId(Integer.parseInt(userId), page);
}
public Optional<UserCourse> getByUserAndCourseId(UserData user, String courseId) {
return userCourseRepository.findTopByUserAndCourseIdOrderByIdDesc(user, Integer.parseInt(courseId));
public Optional<UserCourse> getByUserAndCourseId(UserData user, int courseId) {
return userCourseRepository.findTopByUserAndCourseIdOrderByIdDesc(user, courseId);
}
}

View File

@ -22,8 +22,8 @@ public class UserDuelService {
this.userDuelRepository = userDuelRepository;
}
public Optional<UserDuel> getByUserAndDuelId(UserData user, String duelId) {
return userDuelRepository.findTopByUserAndDuelIdOrderByIdDesc(user, Integer.parseInt(duelId));
public Optional<UserDuel> getByUserAndDuelId(UserData user, int duelId) {
return userDuelRepository.findTopByUserAndDuelIdOrderByIdDesc(user, duelId);
}
public UserDuel save(UserDuel userDuel) {

View File

@ -36,8 +36,8 @@ public class UserItemService {
return userItemRepository.findAllByUser_Card_ExtId(Integer.parseInt(userId));
}
public Optional<UserItem> getByUserAndItemId(UserData user, String itemId, String itemKind) {
return userItemRepository.findTopByUserAndItemIdAndItemKindOrderByIdDesc(user, Integer.parseInt(itemId), Integer.parseInt(itemKind));
public Optional<UserItem> getByUserAndItemIdAndKind(UserData user, int itemId, int itemKind) {
return userItemRepository.findTopByUserAndItemIdAndItemKindOrderByIdDesc(user, itemId, itemKind);
}
public Page<UserItem> getByUserAndItemKind(String userId, int kind, int pageNumber, int maxCount) {

View File

@ -38,7 +38,7 @@ public class UserMapService {
return userMapRepository.findAllByUser_Card_ExtId(Integer.parseInt(userId));
}
public Optional<UserMap> getByUserAndMapId(UserData user, String mapId) {
return userMapRepository.findTopByUserAndMapIdOrderByIdDesc(user, Integer.parseInt(mapId));
public Optional<UserMap> getByUserAndMapId(UserData user, int mapId) {
return userMapRepository.findTopByUserAndMapIdOrderByIdDesc(user, mapId);
}
}

View File

@ -50,7 +50,7 @@ public class UserMusicDetailService {
return userMusicDetailRepository.findByUser_Card_ExtIdAndMusicId(Integer.parseInt(userId), musicId);
}
public Optional<UserMusicDetail> getByUserAndMusicIdAndLevel(UserData user, String musicId, String level) {
return userMusicDetailRepository.findTopByUserAndMusicIdAndLevelOrderByIdDesc(user, Integer.parseInt(musicId), Integer.parseInt(level));
public Optional<UserMusicDetail> getByUserAndMusicIdAndLevel(UserData user, int musicId, int level) {
return userMusicDetailRepository.findTopByUserAndMusicIdAndLevelOrderByIdDesc(user, musicId, level);
}
}

View File

@ -246,7 +246,7 @@ public class DivaController {
}
@PostMapping(value = "", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public String fileRequest(@RequestParam String query, @RequestParam(required = false) MultipartFile bin) throws IOException, ServletException {
public String fileRequest(@RequestParam String query, @RequestParam(required = false) MultipartFile bin) {
Map<String, Object> body = parse(query);

View File

@ -53,7 +53,7 @@ public class DivaCompressionFilter extends OncePerRequestFilter {
}
@Override
protected boolean shouldNotFilter(HttpServletRequest request) throws ServletException {
protected boolean shouldNotFilter(HttpServletRequest request) {
String path = request.getServletPath();
return !path.startsWith("/diva");
}

View File

@ -20,7 +20,6 @@ import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.Optional;
/**
* @author samnyan (privateamusement@protonmail.com)

View File

@ -2,7 +2,6 @@ package icu.samnyan.aqua.sega.diva.model.gamedata;
import icu.samnyan.aqua.sega.diva.model.common.ContestLeague;
import icu.samnyan.aqua.sega.diva.model.common.ContestNormaType;
import icu.samnyan.aqua.sega.diva.model.common.ContestStageLimit;
import icu.samnyan.aqua.sega.diva.util.DivaDateTimeUtil;
import icu.samnyan.aqua.sega.util.URIEncoder;
import lombok.AllArgsConstructor;

View File

@ -2,9 +2,11 @@ package icu.samnyan.aqua.sega.diva.util;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.json.JsonWriteFeature;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.json.JsonMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import icu.samnyan.aqua.sega.util.jackson.BooleanNumberDeserializer;
@ -26,17 +28,19 @@ public class DivaMapper {
private final ObjectMapper mapper;
public DivaMapper() {
mapper = new ObjectMapper().configure(JsonGenerator.Feature.WRITE_NUMBERS_AS_STRINGS, true);
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
SimpleModule module = new SimpleModule();
module.addSerializer(LocalDateTime.class, new DivaDateTimeSerializer());
module.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.0")));
module.addDeserializer(ZonedDateTime.class, new ZonedDateTimeDeserializer());
module.addSerializer(Boolean.class, new BooleanNumberSerializer());
module.addSerializer(boolean.class, new BooleanNumberSerializer());
module.addDeserializer(Boolean.class, new BooleanNumberDeserializer());
module.addDeserializer(boolean.class, new BooleanNumberDeserializer());
module.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.0")));
module.addDeserializer(ZonedDateTime.class, new ZonedDateTimeDeserializer());
mapper = JsonMapper.builder().enable(JsonWriteFeature.WRITE_NUMBERS_AS_STRINGS)
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
.build();
mapper.registerModule(module);
}

View File

@ -12,7 +12,7 @@ import java.io.IOException;
*/
public class CompressRequestWrapper extends HttpServletRequestWrapper {
private ByteArrayInputStream input;
private final ByteArrayInputStream input;
private ServletInputStream filterInput;
public CompressRequestWrapper(HttpServletRequest request, byte[] input) {
@ -22,7 +22,7 @@ public class CompressRequestWrapper extends HttpServletRequestWrapper {
@Override
public ServletInputStream getInputStream() throws IOException {
public ServletInputStream getInputStream() {
if (filterInput == null) {
filterInput = new ServletInputStream() {
@Override
@ -41,7 +41,7 @@ public class CompressRequestWrapper extends HttpServletRequestWrapper {
}
@Override
public int read() throws IOException {
public int read() {
return input.read();
}
};

View File

@ -12,7 +12,7 @@ import java.io.IOException;
*/
public class CompressResponseWrapper extends HttpServletResponseWrapper {
private ByteArrayOutputStream output;
private final ByteArrayOutputStream output;
private ServletOutputStream filterOutput;
@ -22,7 +22,7 @@ public class CompressResponseWrapper extends HttpServletResponseWrapper {
}
@Override
public ServletOutputStream getOutputStream() throws IOException {
public ServletOutputStream getOutputStream() {
if (filterOutput == null) {
filterOutput = new ServletOutputStream() {
@Override
@ -36,7 +36,7 @@ public class CompressResponseWrapper extends HttpServletResponseWrapper {
}
@Override
public void write(int b) throws IOException {
public void write(int b) {
output.write(b);
}
};

View File

@ -61,7 +61,7 @@ public class CompressionFilter extends OncePerRequestFilter {
}
@Override
protected boolean shouldNotFilter(HttpServletRequest request) throws ServletException {
protected boolean shouldNotFilter(HttpServletRequest request) {
String path = request.getServletPath();
boolean notFilter = true;
for (String prefix : filterList) {

View File

@ -1,4 +1,4 @@
package icu.samnyan.aqua.sega.chunithm.model.response.data;
package icu.samnyan.aqua.sega.general.model.response;
import lombok.AllArgsConstructor;
import lombok.Data;

View File

@ -84,196 +84,196 @@ public class OngekiController {
}
@PostMapping("ExtendLockTimeApi")
String extendLockTime(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
public String extendLockTime(@ModelAttribute Map<String, Object> request) {
return "{\"returnCode\":1,\"apiName\":\"extendLockTime\"}";
}
@PostMapping("GameLoginApi")
String gameLogin(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
public String gameLogin(@ModelAttribute Map<String, Object> request) {
return "{\"returnCode\":1,\"apiName\":\"gameLogin\"}";
}
@PostMapping("GameLogoutApi")
String gameLogout(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
public String gameLogout(@ModelAttribute Map<String, Object> request) {
return "{\"returnCode\":1,\"apiName\": \"gameLogout\"}";
}
@PostMapping("GetGameEventApi")
String getGameEvent(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
public String getGameEvent(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getGameEventHandler.handle(request);
}
@PostMapping("GetGameIdlistApi")
String getGameIdList(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
public String getGameIdList(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getGameIdlistHandler.handle(request);
}
@PostMapping("GetGameMessageApi")
String getGameMessage(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
public String getGameMessage(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getGameMessageHandler.handle(request);
}
@PostMapping("GetGamePointApi")
String getGamePoint(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
public String getGamePoint(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getGamePointHandler.handle(request);
}
@PostMapping("GetGamePresentApi")
String getGamePresent(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
public String getGamePresent(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getGamePresentHandler.handle(request);
}
@PostMapping("GetGameRankingApi")
String getGameRanking(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
public String getGameRanking(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getGameRankingHandler.handle(request);
}
@PostMapping("GetGameRewardApi")
String getGameReward(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
public String getGameReward(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getGameRewardHandler.handle(request);
}
@PostMapping("GetGameSettingApi")
String getGameSetting(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
public String getGameSetting(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getGameSettingHandler.handle(request);
}
@PostMapping("GetUserActivityApi")
String getUserActivity(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
public String getUserActivity(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserActivityHandler.handle(request);
}
@PostMapping("GetUserBpBaseApi")
String getUserBpBase(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
public String getUserBpBase(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserBpBaseHandler.handle(request);
}
@PostMapping("GetUserCardApi")
String getUserCard(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
public String getUserCard(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserCardHandler.handle(request);
}
@PostMapping("GetUserChapterApi")
String getUserChapter(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
public String getUserChapter(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserChapterHandler.handle(request);
}
@PostMapping("GetUserCharacterApi")
String getUserCharacter(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
public String getUserCharacter(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserCharacterHandler.handle(request);
}
@PostMapping("GetUserDataApi")
String getUserData(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
public String getUserData(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserDataHandler.handle(request);
}
@PostMapping("GetUserDeckByKeyApi")
String getUserDeckByKey(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
public String getUserDeckByKey(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserDeckByKeyHandler.handle(request);
}
@PostMapping("GetUserEventPointApi")
String getUserEventPoint(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
public String getUserEventPoint(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserEventPointHandler.handle(request);
}
@PostMapping("GetUserEventRankingApi")
String getUserEventRanking(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
public String getUserEventRanking(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserEventRankingHandler.handle(request);
}
@PostMapping("GetUserItemApi")
String getUserItem(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
public String getUserItem(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserItemHandler.handle(request);
}
@PostMapping("GetUserLoginBonusApi")
String getUserLoginBonus(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
public String getUserLoginBonus(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserLoginBonusHandler.handle(request);
}
@PostMapping("GetUserMissionPointApi")
String getUserMissionPoint(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
public String getUserMissionPoint(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserMissionPointHandler.handle(request);
}
@PostMapping("GetUserMusicApi")
String getUserMusic(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
public String getUserMusic(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserMusicHandler.handle(request);
}
@PostMapping("GetUserMusicItemApi")
String getUserMusicItem(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
public String getUserMusicItem(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserMusicItemHandler.handle(request);
}
@PostMapping("GetUserOptionApi")
String getUserOption(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
public String getUserOption(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserOptionHandler.handle(request);
}
@PostMapping("GetUserPreviewApi")
String getUserPreview(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
public String getUserPreview(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserPreviewHandler.handle(request);
}
@PostMapping("GetUserRatinglogApi")
String getUserRatinglog(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
public String getUserRatinglog(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserRatinglogListHandler.handle(request);
}
@PostMapping("GetUserRecentRatingApi")
String getUserRecentRating(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
public String getUserRecentRating(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserRecentRatingHandler.handle(request);
}
@PostMapping("GetUserRegionApi")
String getUserRegion(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
public String getUserRegion(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserRegionHandler.handle(request);
}
@PostMapping("GetUserStoryApi")
String getUserStory(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
public String getUserStory(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserStoryHandler.handle(request);
}
@PostMapping("GetUserTrainingRoomByKeyApi")
String getUserTrainingRoomByKey(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
public String getUserTrainingRoomByKey(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserTrainingRoomByKeyHandler.handle(request);
}
@PostMapping("UpsertClientBookkeepingApi")
String upsertClientBookkeeping(@ModelAttribute Map<String, Object> request) {
public String upsertClientBookkeeping(@ModelAttribute Map<String, Object> request) {
return "{\"returnCode\":1},\"apiName\":\"upsertClientBookkeeping\"";
}
@PostMapping("UpsertClientDevelopApi")
String upsertClientDevelop(@ModelAttribute Map<String, Object> request) {
public String upsertClientDevelop(@ModelAttribute Map<String, Object> request) {
return "{\"returnCode\":1},\"apiName\":\"upsertClientDevelop\"";
}
@PostMapping("UpsertClientErrorApi")
String upsertClientError(@ModelAttribute Map<String, Object> request) {
public String upsertClientError(@ModelAttribute Map<String, Object> request) {
return "{\"returnCode\":1,\"apiName\":\"upsertClientError\"}";
}
@PostMapping("UpsertClientSettingApi")
String upsertClientSetting(@ModelAttribute Map<String, Object> request) {
public String upsertClientSetting(@ModelAttribute Map<String, Object> request) {
return "{\"returnCode\":1,\"apiName\":\"upsertClientSetting\"}";
}
@PostMapping("UpsertClientTestmodeApi")
String upsertClientTestmode(@ModelAttribute Map<String, Object> request) {
public String upsertClientTestmode(@ModelAttribute Map<String, Object> request) {
return "{\"returnCode\":1,\"apiName\":\"upsertClientTestmode\"}";
}
@PostMapping("UpsertUserGplogApi")
String upsertUserGplog(@ModelAttribute Map<String, Object> request) {
public String upsertUserGplog(@ModelAttribute Map<String, Object> request) {
return "{\"returnCode\":1,\"apiName\":\"upsertUserGplog\"}";
}
@PostMapping("UpsertUserAllApi")
String upsertUserAll(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
public String upsertUserAll(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return upsertUserAllHandler.handle(request);
}

View File

@ -1,6 +1,5 @@
package icu.samnyan.aqua.sega.ongeki.dao.gamedata;
import icu.samnyan.aqua.sega.ongeki.model.gamedata.GamePoint;
import icu.samnyan.aqua.sega.ongeki.model.gamedata.GamePresent;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

View File

@ -1,6 +1,5 @@
package icu.samnyan.aqua.sega.ongeki.dao.gamedata;
import icu.samnyan.aqua.sega.ongeki.model.gamedata.GamePresent;
import icu.samnyan.aqua.sega.ongeki.model.gamedata.GameReward;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

View File

@ -13,9 +13,11 @@ import java.util.Optional;
*/
@Repository("OngekiUserActivityRepository")
public interface UserActivityRepository extends JpaRepository<UserActivity, Long> {
List<UserActivity> findByUser_Card_ExtId(int userId);
Optional<UserActivity> findByUserAndKindAndActivityId(UserData userData, int kind, int activityId);
List<UserActivity> findByUser_Card_ExtIdAndKindOrderBySortNumberDesc(int userId, int kind);
List<UserActivity> findByUser_Card_ExtId(int userId);
}

View File

@ -14,9 +14,11 @@ import java.util.Optional;
*/
@Repository("OngekiUserCardRepository")
public interface UserCardRepository extends JpaRepository<UserCard, Long> {
Optional<UserCard> findByUserAndCardId(UserData userData, int cardId);
Optional<UserCard> findByUser_Card_ExtIdAndCardId(int aimeId, int cardId);
Page<UserCard> findByUser_Card_ExtId(int userId, Pageable page);
Optional<UserCard> findByUser_Card_ExtIdAndCardId(int aimeId, int cardId);
}

View File

@ -13,7 +13,9 @@ import java.util.Optional;
*/
@Repository("OngekiUserChapterRepository")
public interface UserChapterRepository extends JpaRepository<UserChapter, Long> {
Optional<UserChapter> findByUserAndChapterId(UserData userData, int chapterId);
List<UserChapter> findByUser_Card_ExtId(int userId);
Optional<UserChapter> findByUserAndChapterId(UserData userData, int chapterId);
}

View File

@ -14,7 +14,9 @@ import java.util.Optional;
*/
@Repository("OngekiUserCharacterRepository")
public interface UserCharacterRepository extends JpaRepository<UserCharacter, Long> {
Optional<UserCharacter> findByUserAndCharacterId(UserData userData, int characterId);
Page<UserCharacter> findByUser_Card_ExtId(Integer userId, Pageable page);
Optional<UserCharacter> findByUserAndCharacterId(UserData userData, int characterId);
}

View File

@ -13,4 +13,5 @@ import java.util.Optional;
public interface UserDataRepository extends JpaRepository<UserData, Long> {
Optional<UserData> findByCard_ExtId(int aimeId);
}

View File

@ -13,7 +13,9 @@ import java.util.Optional;
*/
@Repository("OngekiUserDeckRepository")
public interface UserDeckRepository extends JpaRepository<UserDeck, Long> {
Optional<UserDeck> findByUserAndDeckId(UserData userData, int deckId);
List<UserDeck> findByUser_Card_ExtId(int userId);
Optional<UserDeck> findByUserAndDeckId(UserData userData, int deckId);
}

View File

@ -13,7 +13,9 @@ import java.util.Optional;
*/
@Repository("OngekiUserEventPointRepository")
public interface UserEventPointRepository extends JpaRepository<UserEventPoint, Long> {
Optional<UserEventPoint> findByUserAndEventId(UserData userData, int eventId);
List<UserEventPoint> findByUser_Card_ExtId(int userId);
Optional<UserEventPoint> findByUserAndEventId(UserData userData, int eventId);
}

View File

@ -12,6 +12,9 @@ import java.util.Optional;
*/
@Repository("OngekiUserGeneralDataRepository")
public interface UserGeneralDataRepository extends JpaRepository<UserGeneralData, Long> {
Optional<UserGeneralData> findByUserAndPropertyKey(UserData user, String key);
Optional<UserGeneralData> findByUser_Card_ExtIdAndPropertyKey(int aimeId, String key);
}

View File

@ -14,9 +14,11 @@ import java.util.Optional;
*/
@Repository("OngekiUserItemRepository")
public interface UserItemRepository extends JpaRepository<UserItem, Long> {
Page<UserItem> findByUser_Card_ExtId(Integer aimeId, Pageable page);
Optional<UserItem> findByUserAndItemKindAndItemId(UserData userData, int itemKind, int itemId);
Page<UserItem> findByUser_Card_ExtIdAndItemKind(int userId, int kind, Pageable page);
Page<UserItem> findByUser_Card_ExtId(Integer aimeId, Pageable page);
}

View File

@ -11,7 +11,9 @@ import java.util.Optional;
* @author samnyan (privateamusement@protonmail.com)
*/
public interface UserLoginBonusRepository extends JpaRepository<UserLoginBonus, Long> {
Optional<UserLoginBonus> findByUserAndBonusId(UserData userData, int bonusId);
List<UserLoginBonus> findByUser_Card_ExtId(int userId);
Optional<UserLoginBonus> findByUserAndBonusId(UserData userData, int bonusId);
}

View File

@ -1,7 +1,6 @@
package icu.samnyan.aqua.sega.ongeki.dao.userdata;
import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData;
import icu.samnyan.aqua.sega.ongeki.model.userdata.UserEventPoint;
import icu.samnyan.aqua.sega.ongeki.model.userdata.UserMissionPoint;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@ -14,7 +13,9 @@ import java.util.Optional;
*/
@Repository("OngekiUserMissionPointRepository")
public interface UserMissionPointRepository extends JpaRepository<UserMissionPoint, Long> {
Optional<UserMissionPoint> findByUserAndEventId(UserData userData, int eventId);
List<UserMissionPoint> findByUser_Card_ExtId(int userId);
Optional<UserMissionPoint> findByUserAndEventId(UserData userData, int eventId);
}

View File

@ -15,9 +15,11 @@ import java.util.Optional;
*/
@Repository("OngekiUserMusicDetailRepository")
public interface UserMusicDetailRepository extends JpaRepository<UserMusicDetail, Long> {
Optional<UserMusicDetail> findByUserAndMusicIdAndLevel(UserData userData, int musicId, int level);
Page<UserMusicDetail> findByUser_Card_ExtId(int userId, Pageable page);
List<UserMusicDetail> findByUser_Card_ExtIdAndMusicId(int userId, int id);
Optional<UserMusicDetail> findByUserAndMusicIdAndLevel(UserData userData, int musicId, int level);
}

View File

@ -14,7 +14,9 @@ import java.util.Optional;
*/
@Repository("OngekiUserMusicItemRepository")
public interface UserMusicItemRepository extends JpaRepository<UserMusicItem, Long> {
Optional<UserMusicItem> findByUserAndMusicId(UserData userData, int musicId);
Page<UserMusicItem> findByUser_Card_ExtId(int userId, Pageable page);
}

View File

@ -12,7 +12,9 @@ import java.util.Optional;
*/
@Repository("OngekiUserOptionRepository")
public interface UserOptionRepository extends JpaRepository<UserOption, Long> {
Optional<UserOption> findByUser(UserData userData);
Optional<UserOption> findByUser_Card_ExtId(int userId);
}

View File

@ -13,7 +13,9 @@ import java.util.List;
*/
@Repository("OngekiUserPlaylogRepository")
public interface UserPlaylogRepository extends JpaRepository<UserPlaylog, Long> {
Page<UserPlaylog> findByUser_Card_ExtId(Integer userId, Pageable page);
List<UserPlaylog> findByUser_Card_ExtIdAndMusicIdAndLevel(Integer userId, int musicId, int level);
}

View File

@ -12,5 +12,7 @@ import java.util.Optional;
*/
@Repository("OngekiUserStoryRepository")
public interface UserStoryRepository extends JpaRepository<UserStory, Long> {
Optional<UserStory> findByUserAndStoryId(UserData userData, int storyId);
}

View File

@ -13,7 +13,9 @@ import java.util.Optional;
*/
@Repository("OngekiUserTrainingRoomRepository")
public interface UserTrainingRoomRepository extends JpaRepository<UserTrainingRoom, Long> {
Optional<UserTrainingRoom> findByUserAndRoomId(UserData user, int roomId);
List<UserTrainingRoom> findByUser_Card_ExtId(int userId);
}

View File

@ -40,14 +40,12 @@ public class GetGameEventHandler implements BaseHandler {
List<GameEvent> eventIdList = gameEventRepository.findAll();
List<GameEventItem> eventList = new ArrayList<>();
eventIdList.forEach(x -> {
eventList.add(new GameEventItem(
x.getId(),
type,
"2005-01-01 00:00:00.0",
"2099-01-01 05:00:00.0"
));
});
eventIdList.forEach(x -> eventList.add(new GameEventItem(
x.getId(),
type,
"2005-01-01 00:00:00.0",
"2099-01-01 05:00:00.0"
)));
Map<String, Object> resultMap = new LinkedHashMap<>();
resultMap.put("type", type);

View File

@ -5,7 +5,6 @@ import icu.samnyan.aqua.sega.general.dao.PropertyEntryRepository;
import icu.samnyan.aqua.sega.general.model.PropertyEntry;
import icu.samnyan.aqua.sega.ongeki.handler.BaseHandler;
import icu.samnyan.aqua.sega.ongeki.model.response.data.GameIdListItem;
import icu.samnyan.aqua.sega.ongeki.model.response.data.GameRankingItem;
import icu.samnyan.aqua.sega.util.jackson.BasicMapper;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;

View File

@ -3,7 +3,6 @@ package icu.samnyan.aqua.sega.ongeki.handler.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import icu.samnyan.aqua.sega.ongeki.dao.gamedata.GamePointRepository;
import icu.samnyan.aqua.sega.ongeki.handler.BaseHandler;
import icu.samnyan.aqua.sega.ongeki.model.common.GpProductID;
import icu.samnyan.aqua.sega.ongeki.model.gamedata.GamePoint;
import icu.samnyan.aqua.sega.util.jackson.BasicMapper;
import org.slf4j.Logger;
@ -11,7 +10,6 @@ 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;

View File

@ -10,7 +10,6 @@ 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;

View File

@ -3,7 +3,6 @@ package icu.samnyan.aqua.sega.ongeki.handler.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import icu.samnyan.aqua.sega.ongeki.dao.gamedata.GameRewardRepository;
import icu.samnyan.aqua.sega.ongeki.handler.BaseHandler;
import icu.samnyan.aqua.sega.ongeki.model.common.ItemType;
import icu.samnyan.aqua.sega.ongeki.model.gamedata.GameReward;
import icu.samnyan.aqua.sega.util.jackson.BasicMapper;
import org.slf4j.Logger;
@ -11,7 +10,6 @@ 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;

View File

@ -46,15 +46,13 @@ public class GetUserEventRankingHandler implements BaseHandler {
// TODO: query ranking from database
List<UserEventPoint> eventPointList = userEventPointRepository.findByUser_Card_ExtId(userId);
List<UserEventRankingItem> rankingItemList = new LinkedList<>();
eventPointList.forEach(x -> {
rankingItemList.add(new UserEventRankingItem(
x.getEventId(),
1, // Type 1 is latest ranking
time,
1,
x.getPoint()
));
});
eventPointList.forEach(x -> rankingItemList.add(new UserEventRankingItem(
x.getEventId(),
1, // Type 1 is latest ranking
time,
1,
x.getPoint()
)));
Map<String, Object> resultMap = new LinkedHashMap<>();
resultMap.put("userId", userId);

View File

@ -50,11 +50,9 @@ public class GetUserPreviewHandler implements BaseHandler {
GetUserPreviewResp resp = new GetUserPreviewResp();
resp.setUserId(userId);
if (userData.isEmpty()) {
/**
* From BaseDialogController.cs
* <code>if (string.IsNullOrEmpty(instance.userPreview.lastPlayDate))</code>
* so send a null value will trigger new user register
*/
// From BaseDialogController.cs
// <code>if (string.IsNullOrEmpty(instance.userPreview.lastPlayDate))</code>
// so send a null value will trigger new user register
resp.setLastPlayDate(null);
} else {

View File

@ -1,7 +1,7 @@
package icu.samnyan.aqua.sega.ongeki.handler.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import icu.samnyan.aqua.sega.chunithm.model.response.data.UserRecentRating;
import icu.samnyan.aqua.sega.general.model.response.UserRecentRating;
import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserPlaylogRepository;
import icu.samnyan.aqua.sega.ongeki.handler.BaseHandler;
import icu.samnyan.aqua.sega.ongeki.model.userdata.UserPlaylog;

View File

@ -2,7 +2,7 @@ package icu.samnyan.aqua.sega.ongeki.handler.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import icu.samnyan.aqua.sega.chunithm.model.response.data.UserRecentRating;
import icu.samnyan.aqua.sega.general.model.response.UserRecentRating;
import icu.samnyan.aqua.sega.general.model.Card;
import icu.samnyan.aqua.sega.general.service.CardService;
import icu.samnyan.aqua.sega.ongeki.dao.userdata.*;
@ -21,10 +21,7 @@ import java.util.Map;
import java.util.Optional;
/**
* The handler for loading basic profile information.
* <p>
* return null if no profile exist
*
* The handler for saving all data of a ONGEKI profile
* @author samnyan (privateamusement@protonmail.com)
*/
@Component("OngekiUserAllHandler")
@ -451,7 +448,7 @@ public class UpsertUserAllHandler implements BaseHandler {
private void saveGeneralData(Map<String, Object> upsertUserAll, UserData newUserData, String jsonName, String key) {
List<Map<String, Object>> recordList = ((List<Map<String, Object>>) upsertUserAll.get(jsonName));
// User this recent rating class from chunithm
List<UserRecentRating> itemList = mapper.convert(recordList, new TypeReference<>() {
});
StringBuilder sb = new StringBuilder();

View File

@ -1,6 +1,5 @@
package icu.samnyan.aqua.sega.ongeki.model.gamedata;
import com.fasterxml.jackson.annotation.JsonIgnore;
import icu.samnyan.aqua.sega.ongeki.model.common.ItemType;
import lombok.AllArgsConstructor;
import lombok.Data;

View File

@ -5,7 +5,6 @@ import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
/**
* @author samnyan (privateamusement@protonmail.com)

View File

@ -1,7 +1,6 @@
package icu.samnyan.aqua.sega.ongeki.model.userdata;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

View File

@ -13,7 +13,6 @@ import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* @author samnyan (privateamusement@protonmail.com)

View File

@ -2,10 +2,12 @@ package icu.samnyan.aqua.sega.util.jackson;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.json.JsonWriteFeature;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.json.JsonMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
@ -25,16 +27,17 @@ public class StringMapper {
private final ObjectMapper mapper;
public StringMapper() {
mapper = new ObjectMapper().configure(JsonGenerator.Feature.WRITE_NUMBERS_AS_STRINGS, true);
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
mapper.configure(SerializationFeature.WRITE_ENUMS_USING_INDEX, true);
SimpleModule module = new SimpleModule();
module.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
module.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
module.addSerializer(Boolean.class, new BooleanStringSerializer());
module.addSerializer(boolean.class, new BooleanStringSerializer());
module.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
mapper.registerModule(module);
mapper = JsonMapper.builder()
.enable(JsonWriteFeature.WRITE_NUMBERS_AS_STRINGS)
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
.configure(SerializationFeature.WRITE_ENUMS_USING_INDEX, true)
.addModule(module)
.build();
}
public String write(Object o) throws JsonProcessingException {
@ -42,7 +45,7 @@ public class StringMapper {
}
public <T> T convert(Map<String, Object> map, Class<T> toClass) {
public <T> T convert(Object map, Class<T> toClass) {
return mapper.convertValue(map, toClass);
}