[ongeki] Add ongeki basic support and api endpoint.

This commit is contained in:
samnyan
2020-03-21 01:05:42 +09:00
parent c27a45a4d4
commit d3223309e3
91 changed files with 7322 additions and 16 deletions

View File

@@ -0,0 +1,82 @@
package icu.samnyan.aqua.api.controller.sega.game.ongeki;
import icu.samnyan.aqua.sega.ongeki.dao.gamedata.*;
import icu.samnyan.aqua.sega.ongeki.model.gamedata.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@RestController
@RequestMapping("api/game/ongeki/data")
public class ApiOngekiGameDataController {
private final GameCardRepository gameCardRepository;
private final GameCharaRepository gameCharaRepository;
private final GameEventRepository gameEventRepository;
private final GameMusicRepository gameMusicRepository;
private final GameSkillRepository gameSkillRepository;
public ApiOngekiGameDataController(GameCardRepository gameCardRepository, GameCharaRepository gameCharaRepository, GameEventRepository gameEventRepository, GameMusicRepository gameMusicRepository, GameSkillRepository gameSkillRepository) {
this.gameCardRepository = gameCardRepository;
this.gameCharaRepository = gameCharaRepository;
this.gameEventRepository = gameEventRepository;
this.gameMusicRepository = gameMusicRepository;
this.gameSkillRepository = gameSkillRepository;
}
@GetMapping("cardList")
public List<GameCard> getCardList() {
return gameCardRepository.findAll();
}
@GetMapping("charaList")
public List<GameChara> getCharaList() {
return gameCharaRepository.findAll();
}
@GetMapping("eventList")
public List<GameEvent> getEventList() {
return gameEventRepository.findAll();
}
@GetMapping("musicList")
public List<GameMusic> getMusicList() {
return gameMusicRepository.findAll();
}
@GetMapping("skillList")
public List<GameSkill> getSkillList() {
return gameSkillRepository.findAll();
}
//
// @PostMapping("cardList")
// public List<GameCard> getCardList(@RequestBody List<GameCard> req) {
// return gameCardRepository.saveAll(req);
// }
//
// @PostMapping("charaList")
// public List<GameChara> getCharaList(@RequestBody List<GameChara> req) {
// return gameCharaRepository.saveAll(req);
// }
//
// @PostMapping("eventList")
// public List<GameEvent> getEventList(@RequestBody List<GameEvent> req) {
// return gameEventRepository.saveAll(req);
// }
//
// @PostMapping("musicList")
// public List<GameMusic> getMusicList(@RequestBody List<GameMusic> req) {
// return gameMusicRepository.saveAll(req);
// }
//
// @PostMapping("skillList")
// public List<GameSkill> getSkillList(@RequestBody List<GameSkill> req) {
// return gameSkillRepository.saveAll(req);
// }
}

View File

@@ -0,0 +1,149 @@
package icu.samnyan.aqua.api.controller.sega.game.ongeki;
import com.fasterxml.jackson.core.type.TypeReference;
import icu.samnyan.aqua.api.model.ReducedPageResponse;
import icu.samnyan.aqua.api.model.resp.sega.ongeki.ProfileResp;
import icu.samnyan.aqua.api.util.ApiMapper;
import icu.samnyan.aqua.sega.ongeki.dao.gamedata.GameCardRepository;
import icu.samnyan.aqua.sega.ongeki.dao.userdata.*;
import icu.samnyan.aqua.sega.ongeki.model.gamedata.GameCard;
import icu.samnyan.aqua.sega.ongeki.model.userdata.*;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@RestController
@RequestMapping("api/game/ongeki")
public class ApiOngekiPlayerDataController {
private final ApiMapper mapper;
private final UserActivityRepository userActivityRepository;
private final UserCardRepository userCardRepository;
private final UserCharacterRepository userCharacterRepository;
private final UserDataRepository userDataRepository;
private final UserDeckRepository userDeckRepository;
private final UserEventPointRepository userEventPointRepository;
private final UserItemRepository userItemRepository;
private final UserMusicDetailRepository userMusicDetailRepository;
private final UserOptionRepository userOptionRepository;
private final UserPlaylogRepository userPlaylogRepository;
private final GameCardRepository gameCardRepository;
public ApiOngekiPlayerDataController(ApiMapper mapper, UserActivityRepository userActivityRepository, UserCardRepository userCardRepository, UserCharacterRepository userCharacterRepository, UserDataRepository userDataRepository, UserDeckRepository userDeckRepository, UserEventPointRepository userEventPointRepository, UserItemRepository userItemRepository, UserMusicDetailRepository userMusicDetailRepository, UserOptionRepository userOptionRepository, UserPlaylogRepository userPlaylogRepository, GameCardRepository gameCardRepository) {
this.mapper = mapper;
this.userActivityRepository = userActivityRepository;
this.userCardRepository = userCardRepository;
this.userCharacterRepository = userCharacterRepository;
this.userDataRepository = userDataRepository;
this.userDeckRepository = userDeckRepository;
this.userEventPointRepository = userEventPointRepository;
this.userItemRepository = userItemRepository;
this.userMusicDetailRepository = userMusicDetailRepository;
this.userOptionRepository = userOptionRepository;
this.userPlaylogRepository = userPlaylogRepository;
this.gameCardRepository = gameCardRepository;
}
@GetMapping("profile")
public ProfileResp getProfile(@RequestParam Integer aimeId) {
return mapper.convert(userDataRepository.findByCard_ExtId(aimeId).orElseThrow(), new TypeReference<>() {
});
}
@PostMapping("profile/userName")
public UserData updateName(@RequestBody Map<String, Object> request) {
UserData profile = userDataRepository.findByCard_ExtId((Integer) request.get("aimeId")).orElseThrow();
profile.setUserName((String) request.get("userName"));
return userDataRepository.save(profile);
}
@PostMapping("profile/plate")
public UserData updatePlate(@RequestBody Map<String, Object> request) {
UserData profile = userDataRepository.findByCard_ExtId((Integer) request.get("aimeId")).orElseThrow();
profile.setNameplateId((Integer) request.get("nameplateId"));
return userDataRepository.save(profile);
}
@PostMapping("profile/trophy")
public UserData updateTrophy(@RequestBody Map<String, Object> request) {
UserData profile = userDataRepository.findByCard_ExtId((Integer) request.get("aimeId")).orElseThrow();
profile.setTrophyId((Integer) request.get("trophyId"));
return userDataRepository.save(profile);
}
@PostMapping("profile/card")
public UserData updateCard(@RequestBody Map<String, Object> request) {
UserData profile = userDataRepository.findByCard_ExtId((Integer) request.get("aimeId")).orElseThrow();
profile.setCardId((Integer) request.get("cardId"));
return userDataRepository.save(profile);
}
@GetMapping("card")
public ReducedPageResponse<UserCard> getCard(@RequestParam Integer aimeId,
@RequestParam(required = false, defaultValue = "0") int page,
@RequestParam(required = false, defaultValue = "10") int size) {
Page<UserCard> cards = userCardRepository.findByUser_Card_ExtId(aimeId, PageRequest.of(page,size));
return new ReducedPageResponse<>(cards.getContent(), cards.getPageable().getPageNumber(), cards.getTotalPages(), cards.getTotalElements());
}
@PostMapping("insert")
public UserCard insertCard(@RequestBody Map<String, Object> request) {
UserData profile = userDataRepository.findByCard_ExtId((Integer) request.get("aimeId")).orElseThrow();
Integer cardId = (Integer) request.get("cardId");
GameCard card = gameCardRepository.findById(cardId.longValue()).orElseThrow();
return userCardRepository.save(new UserCard(
profile,
cardId,
card.getSkillId()
));
}
@GetMapping("character")
public ReducedPageResponse<UserCharacter> getCharacter(@RequestParam Integer aimeId,
@RequestParam(required = false, defaultValue = "0") int page,
@RequestParam(required = false, defaultValue = "10") int size) {
Page<UserCharacter> characters = userCharacterRepository.findByUser_Card_ExtId(aimeId, PageRequest.of(page,size));
return new ReducedPageResponse<>(characters.getContent(), characters.getPageable().getPageNumber(), characters.getTotalPages(), characters.getTotalElements());
}
@GetMapping("item")
public ReducedPageResponse<UserItem> getItem(@RequestParam Integer aimeId,
@RequestParam(required = false, defaultValue = "0") int page,
@RequestParam(required = false, defaultValue = "10") int size) {
Page<UserItem> items = userItemRepository.findByUser_Card_ExtId(aimeId, PageRequest.of(page,size));
return new ReducedPageResponse<>(items.getContent(), items.getPageable().getPageNumber(), items.getTotalPages(), items.getTotalElements());
}
@GetMapping("recent")
public ReducedPageResponse<UserPlaylog> getRecent(@RequestParam Integer aimeId,
@RequestParam(required = false, defaultValue = "0") int page,
@RequestParam(required = false, defaultValue = "10") int size) {
Page<UserPlaylog> playlogs = userPlaylogRepository.findByUser_Card_ExtId(aimeId,PageRequest.of(page,size, Sort.Direction.DESC, "id"));
return new ReducedPageResponse<>(playlogs.getContent(), playlogs.getPageable().getPageNumber(), playlogs.getTotalPages(), playlogs.getTotalElements());
}
@GetMapping("song/{id}")
public List<UserMusicDetail> getSongDetail(@RequestParam Integer aimeId, @PathVariable int id) {
return userMusicDetailRepository.findByUser_Card_ExtIdAndMusicId(aimeId, id);
}
@GetMapping("song/{id}/{level}")
public List<UserPlaylog> getLevelPlaylog(@RequestParam Integer aimeId, @PathVariable int id, @PathVariable int level) {
return userPlaylogRepository.findByUser_Card_ExtIdAndMusicIdAndLevel(aimeId, id, level);
}
@GetMapping("options")
public UserOption getOptions(@RequestParam Integer aimeId) {
return userOptionRepository.findByUser_Card_ExtId(aimeId).orElseThrow();
}
}

View File

@@ -0,0 +1,69 @@
package icu.samnyan.aqua.api.model.resp.sega.ongeki;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ProfileResp {
private String userName;
private int level;
private long exp;
private long point;
private long totalPoint;
private int playCount;
private int jewelCount;
private int totalJewelCount;
private int playerRating;
private int highestRating;
private int battlePoint;
private int nameplateId;
private int trophyId;
private int cardId;
private int characterId;
private long sumTechHighScore;
private long sumTechBasicHighScore;
private long sumTechAdvancedHighScore;
private long sumTechExpertHighScore;
private long sumTechMasterHighScore;
private long sumTechLunaticHighScore;
private long sumBattleHighScore;
private long sumBattleBasicHighScore;
private long sumBattleAdvancedHighScore;
private long sumBattleExpertHighScore;
private long sumBattleMasterHighScore;
private long sumBattleLunaticHighScore;
}