[Ongeki] Implement proper endpoint for some new APIs

pull/1/head
Dom Eori 2021-06-28 01:39:26 +09:00
parent e7ae5de92c
commit 90a8c3bb58
19 changed files with 598 additions and 25 deletions

View File

@ -0,0 +1,24 @@
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.UserEventMusic;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Optional;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Repository("OngekiUserEventMusicRepository")
public interface UserEventMusicRepository extends JpaRepository<UserEventMusic, Long> {
List<UserEventMusic> findByUser_Card_ExtId(long userId);
Optional<UserEventMusic> findByUserAndEventIdAndTypeAndMusicId(UserData userData, int eventId, int type, int musicId);
@Transactional
void deleteByUser(UserData user);
}

View File

@ -0,0 +1,24 @@
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.UserKop;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Optional;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Repository("OngekiUserKopRepository")
public interface UserKopRepository extends JpaRepository<UserKop, Long> {
List<UserKop> findByUser_Card_ExtId(long userId);
Optional<UserKop> findByUserAndKopIdAndAreaId(UserData userData, int kopId, int areaId);
@Transactional
void deleteByUser(UserData user);
}

View File

@ -0,0 +1,24 @@
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.UserTechEvent;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Optional;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Repository("OngekiUserTechEventRepository")
public interface UserTechEventRepository extends JpaRepository<UserTechEvent, Long> {
List<UserTechEvent> findByUser_Card_ExtId(long userId);
Optional<UserTechEvent> findByUserAndEventId(UserData userData, int eventId);
@Transactional
void deleteByUser(UserData user);
}

View File

@ -0,0 +1,26 @@
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.UserTradeItem;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Optional;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Repository("OngekiUserTradeItemRepository")
public interface UserTradeItemRepository extends JpaRepository<UserTradeItem, Long> {
List<UserTradeItem> findByUser_Card_ExtId(long userId);
List<UserTradeItem> findByUser_Card_ExtIdAndChapterIdGreaterThanEqualAndChapterIdLessThanEqual(long userId, int startChapterId, int endChapterId);
Optional<UserTradeItem> findByUserAndChapterIdAndTradeItemId(UserData userData, int chapterId, int tradeItemId);
@Transactional
void deleteByUser(UserData user);
}

View File

@ -32,6 +32,8 @@ public class GetGameTechMusicHandler implements BaseHandler {
public String handle(Map<String, Object> request) throws JsonProcessingException {
List<Object> techMusicList = new ArrayList<>();
// This endpoint seems related to "techchallengeevent" in game data, TBD
Map<String, Object> resultMap = new LinkedHashMap<>();
resultMap.put("length", 0);
resultMap.put("gameTechMusicList", techMusicList);

View File

@ -1,14 +1,16 @@
package icu.samnyan.aqua.sega.ongeki.handler.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserEventMusicRepository;
import icu.samnyan.aqua.sega.ongeki.handler.BaseHandler;
import icu.samnyan.aqua.sega.ongeki.model.userdata.UserEventMusic;
import icu.samnyan.aqua.sega.util.jackson.BasicMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@ -23,19 +25,22 @@ public class GetUserEventMusicHandler implements BaseHandler {
private final BasicMapper mapper;
private final UserEventMusicRepository userEventMusicRepository;
@Autowired
public GetUserEventMusicHandler(BasicMapper mapper) {
public GetUserEventMusicHandler(BasicMapper mapper, UserEventMusicRepository userEventMusicRepository) {
this.mapper = mapper;
this.userEventMusicRepository = userEventMusicRepository;
}
@Override
public String handle(Map<String, Object> request) throws JsonProcessingException {
long userId = ((Number) request.get("userId")).longValue();
List<Object> eventMusicList = new ArrayList<>();
List<UserEventMusic> eventMusicList = userEventMusicRepository.findByUser_Card_ExtId(userId);
Map<String, Object> resultMap = new LinkedHashMap<>();
resultMap.put("userId", userId);
resultMap.put("length", 0);
resultMap.put("length", eventMusicList.size());
resultMap.put("userEventMusicList", eventMusicList);
String json = mapper.write(resultMap);

View File

@ -1,14 +1,16 @@
package icu.samnyan.aqua.sega.ongeki.handler.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserKopRepository;
import icu.samnyan.aqua.sega.ongeki.handler.BaseHandler;
import icu.samnyan.aqua.sega.ongeki.model.userdata.UserKop;
import icu.samnyan.aqua.sega.util.jackson.BasicMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@ -23,19 +25,22 @@ public class GetUserKopHandler implements BaseHandler {
private final BasicMapper mapper;
private final UserKopRepository userKopRepository;
@Autowired
public GetUserKopHandler(BasicMapper mapper) {
public GetUserKopHandler(BasicMapper mapper, UserKopRepository userKopRepository) {
this.mapper = mapper;
this.userKopRepository = userKopRepository;
}
@Override
public String handle(Map<String, Object> request) throws JsonProcessingException {
long userId = ((Number) request.get("userId")).longValue();
List<Object> kopList = new ArrayList<>();
List<UserKop> kopList = userKopRepository.findByUser_Card_ExtId(userId);
Map<String, Object> resultMap = new LinkedHashMap<>();
resultMap.put("userId", userId);
resultMap.put("length", 0);
resultMap.put("length", kopList.size());
resultMap.put("userKopList", kopList);
String json = mapper.write(resultMap);

View File

@ -1,14 +1,16 @@
package icu.samnyan.aqua.sega.ongeki.handler.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserTechEventRepository;
import icu.samnyan.aqua.sega.ongeki.handler.BaseHandler;
import icu.samnyan.aqua.sega.ongeki.model.userdata.UserTechEvent;
import icu.samnyan.aqua.sega.util.jackson.BasicMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@ -23,19 +25,22 @@ public class GetUserTechEventHandler implements BaseHandler {
private final BasicMapper mapper;
private final UserTechEventRepository userTechEventRepository;
@Autowired
public GetUserTechEventHandler(BasicMapper mapper) {
public GetUserTechEventHandler(BasicMapper mapper, UserTechEventRepository userTechEventRepository) {
this.mapper = mapper;
this.userTechEventRepository = userTechEventRepository;
}
@Override
public String handle(Map<String, Object> request) throws JsonProcessingException {
long userId = ((Number) request.get("userId")).longValue();
List<Object> techEventList = new ArrayList<>();
List<UserTechEvent> techEventList = userTechEventRepository.findByUser_Card_ExtId(userId);
Map<String, Object> resultMap = new LinkedHashMap<>();
resultMap.put("userId", userId);
resultMap.put("length", 0);
resultMap.put("length", techEventList.size());
resultMap.put("userTechEventList", techEventList);
String json = mapper.write(resultMap);

View File

@ -1,13 +1,19 @@
package icu.samnyan.aqua.sega.ongeki.handler.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserTechEventRepository;
import icu.samnyan.aqua.sega.ongeki.handler.BaseHandler;
import icu.samnyan.aqua.sega.ongeki.model.response.data.UserTechEventRankingItem;
import icu.samnyan.aqua.sega.ongeki.model.userdata.UserTechEvent;
import icu.samnyan.aqua.sega.util.jackson.BasicMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
@ -23,19 +29,33 @@ public class GetUserTechEventRankingHandler implements BaseHandler {
private final BasicMapper mapper;
private final UserTechEventRepository userTechEventRepository;
@Autowired
public GetUserTechEventRankingHandler(BasicMapper mapper) {
public GetUserTechEventRankingHandler(BasicMapper mapper, UserTechEventRepository userTechEventRepository) {
this.mapper = mapper;
this.userTechEventRepository = userTechEventRepository;
}
@Override
public String handle(Map<String, Object> request) throws JsonProcessingException {
long userId = ((Number) request.get("userId")).longValue();
List<Object> techEventRankingList = new ArrayList<>();
String time = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.0"));
List<UserTechEvent> techEventList = userTechEventRepository.findByUser_Card_ExtId(userId);
List<UserTechEventRankingItem> techEventRankingList = new ArrayList<>();
techEventList.forEach(x -> techEventRankingList.add(new UserTechEventRankingItem(
x.getEventId(),
time,
1,
x.getTotalTechScore(),
x.getTotalPlatinumScore()
)));
Map<String, Object> resultMap = new LinkedHashMap<>();
resultMap.put("userId", userId);
resultMap.put("length", 0);
resultMap.put("length", techEventRankingList.size());
resultMap.put("userTechEventRankingList", techEventRankingList);
String json = mapper.write(resultMap);

View File

@ -1,14 +1,16 @@
package icu.samnyan.aqua.sega.ongeki.handler.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserTradeItemRepository;
import icu.samnyan.aqua.sega.ongeki.handler.BaseHandler;
import icu.samnyan.aqua.sega.ongeki.model.userdata.UserTradeItem;
import icu.samnyan.aqua.sega.util.jackson.BasicMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@ -23,19 +25,25 @@ public class GetUserTradeItemHandler implements BaseHandler {
private final BasicMapper mapper;
private final UserTradeItemRepository userTradeItemRepository;
@Autowired
public GetUserTradeItemHandler(BasicMapper mapper) {
public GetUserTradeItemHandler(BasicMapper mapper, UserTradeItemRepository userTradeItemRepository) {
this.mapper = mapper;
this.userTradeItemRepository = userTradeItemRepository;
}
@Override
public String handle(Map<String, Object> request) throws JsonProcessingException {
long userId = ((Number) request.get("userId")).longValue();
List<Object> tradeItemList = new ArrayList<>();
int startChapterId = ((Number) request.get("startChapterId")).intValue();
int endChapterId = ((Number) request.get("endChapterId")).intValue();
List<UserTradeItem> tradeItemList = userTradeItemRepository.findByUser_Card_ExtIdAndChapterIdGreaterThanEqualAndChapterIdLessThanEqual(userId, startChapterId, endChapterId);
Map<String, Object> resultMap = new LinkedHashMap<>();
resultMap.put("userId", userId);
resultMap.put("length", 0);
resultMap.put("length", tradeItemList.size());
resultMap.put("userTradeItemList", tradeItemList);
String json = mapper.write(resultMap);

View File

@ -53,10 +53,14 @@ public class UpsertUserAllHandler implements BaseHandler {
private final UserBossRepository userBossRepository;
private final UserScenarioRepository userScenarioRepository;
private final UserTechCountRepository userTechCountRepository;
private final UserTradeItemRepository userTradeItemRepository;
private final UserEventMusicRepository userEventMusicRepository;
private final UserTechEventRepository userTechEventRepository;
private final UserKopRepository userKopRepository;
@Autowired
public UpsertUserAllHandler(BasicMapper mapper,
CardService cardService, UserDataRepository userDataRepository, UserOptionRepository userOptionRepository, UserPlaylogRepository userPlaylogRepository, UserActivityRepository userActivityRepository, UserMusicDetailRepository userMusicDetailRepository, UserCharacterRepository userCharacterRepository, UserCardRepository userCardRepository, UserDeckRepository userDeckRepository, UserStoryRepository userStoryRepository, UserChapterRepository userChapterRepository, UserItemRepository userItemRepository, UserMusicItemRepository userMusicItemRepository, UserLoginBonusRepository userLoginBonusRepository, UserEventPointRepository userEventPointRepository, UserMissionPointRepository userMissionPointRepository, UserTrainingRoomRepository userTrainingRoomRepository, UserGeneralDataRepository userGeneralDataRepository, UserBossRepository userBossRepository, UserScenarioRepository userScenarioRepository, UserTechCountRepository userTechCountRepository) {
CardService cardService, UserDataRepository userDataRepository, UserOptionRepository userOptionRepository, UserPlaylogRepository userPlaylogRepository, UserActivityRepository userActivityRepository, UserMusicDetailRepository userMusicDetailRepository, UserCharacterRepository userCharacterRepository, UserCardRepository userCardRepository, UserDeckRepository userDeckRepository, UserStoryRepository userStoryRepository, UserChapterRepository userChapterRepository, UserItemRepository userItemRepository, UserMusicItemRepository userMusicItemRepository, UserLoginBonusRepository userLoginBonusRepository, UserEventPointRepository userEventPointRepository, UserMissionPointRepository userMissionPointRepository, UserTrainingRoomRepository userTrainingRoomRepository, UserGeneralDataRepository userGeneralDataRepository, UserBossRepository userBossRepository, UserScenarioRepository userScenarioRepository, UserTechCountRepository userTechCountRepository, UserTradeItemRepository userTradeItemRepository, UserEventMusicRepository userEventMusicRepository, UserTechEventRepository userTechEventRepository, UserKopRepository userKopRepository) {
this.mapper = mapper;
this.cardService = cardService;
this.userDataRepository = userDataRepository;
@ -79,6 +83,10 @@ public class UpsertUserAllHandler implements BaseHandler {
this.userBossRepository = userBossRepository;
this.userScenarioRepository = userScenarioRepository;
this.userTechCountRepository = userTechCountRepository;
this.userTradeItemRepository = userTradeItemRepository;
this.userEventMusicRepository = userEventMusicRepository;
this.userTechEventRepository = userTechEventRepository;
this.userKopRepository = userKopRepository;
}
@Override
@ -131,7 +139,7 @@ public class UpsertUserAllHandler implements BaseHandler {
userPlaylogRepository.saveAll(newUserPlaylogList);
// UserSessionlogList doesn't need to save for a private server
// UserSessionlogList, UserJewelboostlogLost doesn't need to save for a private server
// UserActivityList
@ -450,6 +458,73 @@ public class UpsertUserAllHandler implements BaseHandler {
userScenarioRepository.saveAll(newUserScenarioList);
}
// UserTradeItemList
List<UserTradeItem> userTradeItemList = upsertUserAll.getUserTradeItemList();
List<UserTradeItem> newUserTradeItemList = new ArrayList<>();
for (UserTradeItem newUserTradeItem : userTradeItemList) {
int chapterId = newUserTradeItem.getChapterId();
int tradeItemId = newUserTradeItem.getTradeItemId();
Optional<UserTradeItem> tradeItemOptional = userTradeItemRepository.findByUserAndChapterIdAndTradeItemId(newUserData, chapterId, tradeItemId);
UserTradeItem userTradeItem = tradeItemOptional.orElseGet(() -> new UserTradeItem(newUserData));
newUserTradeItem.setId(userTradeItem.getId());
newUserTradeItem.setUser(newUserData);
newUserTradeItemList.add(newUserTradeItem);
}
userTradeItemRepository.saveAll(newUserTradeItemList);
// UserEventMusicList
List<UserEventMusic> userEventMusicList = upsertUserAll.getUserEventMusicList();
List<UserEventMusic> newUserEventMusicList = new ArrayList<>();
for (UserEventMusic newUserEventMusic : userEventMusicList) {
int eventId = newUserEventMusic.getEventId();
int type = newUserEventMusic.getType();
int musicId = newUserEventMusic.getMusicId();
Optional<UserEventMusic> eventMusicOptional = userEventMusicRepository.findByUserAndEventIdAndTypeAndMusicId(newUserData, eventId, type, musicId);
UserEventMusic userEventMusic = eventMusicOptional.orElseGet(() -> new UserEventMusic(newUserData));
newUserEventMusic.setId(userEventMusic.getId());
newUserEventMusic.setUser(newUserData);
newUserEventMusicList.add(newUserEventMusic);
}
userEventMusicRepository.saveAll(newUserEventMusicList);
// UserTechEventList
List<UserTechEvent> userTechEventList = upsertUserAll.getUserTechEventList();
List<UserTechEvent> newUserTechEventList = new ArrayList<>();
for (UserTechEvent newUserTechEvent : userTechEventList) {
int eventId = newUserTechEvent.getEventId();
Optional<UserTechEvent> techEventOptional = userTechEventRepository.findByUserAndEventId(newUserData, eventId);
UserTechEvent userTechEvent = techEventOptional.orElseGet(() -> new UserTechEvent(newUserData));
newUserTechEvent.setId(userTechEvent.getId());
newUserTechEvent.setUser(newUserData);
newUserTechEventList.add(newUserTechEvent);
}
userTechEventRepository.saveAll(newUserTechEventList);
// UserKopList
List<UserKop> userKopList = upsertUserAll.getUserKopList();
List<UserKop> newUserKopList = new ArrayList<>();
for (UserKop newUserKop : userKopList) {
int kopId = newUserKop.getKopId();
int areaId = newUserKop.getAreaId();
Optional<UserKop> kopOptional = userKopRepository.findByUserAndKopIdAndAreaId(newUserData, kopId, areaId);
UserKop userKop = kopOptional.orElseGet(() -> new UserKop(newUserData));
newUserKop.setId(userKop.getId());
newUserKop.setUser(newUserData);
newUserKopList.add(newUserKop);
}
userKopRepository.saveAll(newUserKopList);
String json = mapper.write(new CodeResp(1, "upsertUserAll"));
logger.info("Response: " + json);

View File

@ -79,13 +79,13 @@ public class UpsertUserAll implements Serializable {
private List<UserScenario> userScenarioList;
private List<Map<String, Object>> userTradeItemList;
private List<UserTradeItem> userTradeItemList;
private List<Map<String, Object>> userEventMusicList;
private List<UserEventMusic> userEventMusicList;
private List<Map<String, Object>> userTechEventList;
private List<UserTechEvent> userTechEventList;
private List<Map<String, Object>> userKopList;
private List<UserKop> userKopList;
private Map<String, Object> clientSystemInfo;

View File

@ -0,0 +1,19 @@
package icu.samnyan.aqua.sega.ongeki.model.response.data;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserTechEventRankingItem {
private int eventId;
private String date;
private int rank;
private int totalTechScore;
private int totalPlatinumScore;
}

View File

@ -0,0 +1,55 @@
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;
import javax.persistence.*;
import java.io.Serializable;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Entity(name = "OngekiUserEventMusic")
@Table(name = "ongeki_user_event_music")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserEventMusic implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
private long id;
@JsonIgnore
@ManyToOne
@JoinColumn(name = "user_id")
private UserData user;
private int eventId;
private int type;
private int musicId;
private int level;
private int techScoreMax;
private int platinumScoreMax;
public String techRecordDate;
@JsonProperty("isTechNewRecord")
public boolean isTechNewRecord;
public UserEventMusic(UserData userData) {
this.user = userData;
}
}

View File

@ -0,0 +1,53 @@
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;
import javax.persistence.*;
import java.io.Serializable;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Entity(name = "OngekiUserKop")
@Table(name = "ongeki_user_kop")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserKop implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
private long id;
@JsonIgnore
@ManyToOne
@JoinColumn(name = "user_id")
private UserData user;
private String authKey;
private int kopId;
private int areaId;
private int totalTechScore;
private int totalPlatinumScore;
private String techRecordDate;
@JsonProperty("isTotalTechNewRecord")
private boolean isTotalTechNewRecord;
public UserKop(UserData userData) {
this.user = userData;
}
}

View File

@ -0,0 +1,52 @@
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;
import javax.persistence.*;
import java.io.Serializable;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Entity(name = "OngekiUserTechEvent")
@Table(name = "ongeki_user_tech_event")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserTechEvent implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
private long id;
@JsonIgnore
@ManyToOne
@JoinColumn(name = "user_id")
private UserData user;
private int eventId;
private int totalTechScore;
private int totalPlatinumScore;
private String techRecordDate;
@JsonProperty("isRankingRewarded")
private boolean isRankingRewarded;
@JsonProperty("isTotalTechNewRecord")
private boolean isTotalTechNewRecord;
public UserTechEvent(UserData userData) {
this.user = userData;
}
}

View File

@ -0,0 +1,42 @@
package icu.samnyan.aqua.sega.ongeki.model.userdata;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.io.Serializable;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Entity(name = "OngekiUserTradeItem")
@Table(name = "ongeki_user_trade_item")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserTradeItem implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
private long id;
@JsonIgnore
@ManyToOne
@JoinColumn(name = "user_id")
private UserData user;
private int chapterId;
private int tradeItemId;
private int tradeCount;
public UserTradeItem(UserData userData) {
this.user = userData;
}
}

View File

@ -0,0 +1,55 @@
CREATE TABLE ongeki_user_trade_item (
id BIGINT auto_increment PRIMARY KEY,
chapter_id INT,
trade_item_id INT,
trade_count INT,
user_id BIGINT,
CONSTRAINT UKUApE4XTzAn4TknhsyHbMoxk2vxr
UNIQUE (chapter_id, trade_item_id, user_id),
constraint FKjK4YZyUoHo397H35roV4y5xCGPL
foreign key (user_id) references ongeki_user_data (id) );
CREATE TABLE ongeki_user_tech_event (
id BIGINT auto_increment PRIMARY KEY,
event_id INT,
total_tech_score INT,
total_platinum_score INT,
tech_record_date VARCHAR (255),
is_ranking_rewarded BIT,
is_total_tech_new_record BIT,
user_id BIGINT,
CONSTRAINT UKMy7BYF82aAqh7gcbULDtNZQ3L9u
UNIQUE (event_id, user_id),
constraint FKeA3LffHizJP95rE8WLL4ANZZLfM
foreign key (user_id) references ongeki_user_data (id) );
CREATE TABLE ongeki_user_kop (
id BIGINT auto_increment PRIMARY KEY,
auth_key VARCHAR (255),
kop_id INT,
area_id INT,
total_tech_score INT,
total_platinum_score INT,
tech_record_date VARCHAR (255),
is_total_tech_new_record BIT,
user_id BIGINT,
CONSTRAINT UKhB9obeVojvBcG7iShsgrEb29W9R
UNIQUE (kop_id, area_id, user_id),
constraint FKNeHq3QCaKu7ipBCDEtZQ3QFgvBv
foreign key (user_id) references ongeki_user_data (id) );
CREATE TABLE ongeki_user_event_music (
id BIGINT auto_increment PRIMARY KEY,
event_id INT,
type INT,
music_id INT,
level INT,
tech_score_max INT,
platinum_score_max INT,
tech_record_date VARCHAR (255),
is_tech_new_record BIT,
user_id BIGINT,
CONSTRAINT UKo5PU3BgZeTKB8SNykq9U7xjfshp
UNIQUE (event_id, type, music_id, user_id),
constraint FKYyerzsu49pHUHJNvN67w4SGQbB2
foreign key (user_id) references ongeki_user_data (id) );

View File

@ -0,0 +1,79 @@
CREATE TABLE ongeki_user_trade_item (
id INTEGER,
chapter_id INTEGER,
trade_item_id INTEGER,
trade_count INTEGER,
user_id BIGINT REFERENCES ongeki_user_data (id) ON DELETE CASCADE,
PRIMARY KEY (
id
),
CONSTRAINT ongeki_user_trade_item_uq UNIQUE (
chapter_id,
trade_item_id,
user_id
)
ON CONFLICT REPLACE
);
CREATE TABLE ongeki_user_tech_event (
id INTEGER,
event_id INTEGER,
total_tech_score INTEGER,
total_platinum_score INTEGER,
tech_record_date VARCHAR (255),
is_ranking_rewarded BOOLEAN,
is_total_tech_new_record BOOLEAN,
user_id BIGINT REFERENCES ongeki_user_data (id) ON DELETE CASCADE,
PRIMARY KEY (
id
),
CONSTRAINT ongeki_user_tech_event_uq UNIQUE (
event_id,
user_id
)
ON CONFLICT REPLACE
);
CREATE TABLE ongeki_user_kop (
id INTEGER,
auth_key VARCHAR (255),
kop_id INTEGER,
area_id INTEGER,
total_tech_score INTEGER,
total_platinum_score INTEGER,
tech_record_date VARCHAR (255),
is_total_tech_new_record BOOLEAN,
user_id BIGINT REFERENCES ongeki_user_data (id) ON DELETE CASCADE,
PRIMARY KEY (
id
),
CONSTRAINT ongeki_user_kop_uq UNIQUE (
kop_id,
area_id,
user_id
)
ON CONFLICT REPLACE
);
CREATE TABLE ongeki_user_event_music (
id INTEGER,
event_id INTEGER,
type INTEGER,
music_id INTEGER,
level INTEGER,
tech_score_max INTEGER,
platinum_score_max INTEGER,
tech_record_date VARCHAR (255),
is_tech_new_record BOOLEAN,
user_id BIGINT REFERENCES ongeki_user_data (id) ON DELETE CASCADE,
PRIMARY KEY (
id
),
CONSTRAINT ongeki_user_event_music_uq UNIQUE (
event_id,
type,
music_id,
user_id
)
ON CONFLICT REPLACE
);