forked from Cookies_Github_mirror/AquaDX
[api] Add Chusan API
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
package icu.samnyan.aqua.sega.chusan.dao.gamedata;
|
||||
|
||||
import icu.samnyan.aqua.sega.chusan.model.gamedata.AvatarAcc;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* @author samnyan (privateamusement@protonmail.com)
|
||||
*/
|
||||
@Repository("ChusanGameAvatarAccRepository")
|
||||
public interface GameAvatarAccRepository extends JpaRepository<AvatarAcc, Long> {
|
||||
|
||||
Optional<AvatarAcc> findById(int trophyId);
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package icu.samnyan.aqua.sega.chusan.dao.gamedata;
|
||||
|
||||
import icu.samnyan.aqua.sega.chusan.model.gamedata.Character;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
/**
|
||||
* @author samnyan (privateamusement@protonmail.com)
|
||||
*/
|
||||
@Repository("ChusanGameCharacterRepository")
|
||||
public interface GameCharacterRepository extends JpaRepository<Character, Long> {
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package icu.samnyan.aqua.sega.chusan.dao.gamedata;
|
||||
|
||||
import icu.samnyan.aqua.sega.chusan.model.gamedata.Frame;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* @author samnyan (privateamusement@protonmail.com)
|
||||
*/
|
||||
@Repository("ChusanGameFrameRepository")
|
||||
public interface GameFrameRepository extends JpaRepository<Frame, Long> {
|
||||
|
||||
Optional<Frame> findById(int trophyId);
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package icu.samnyan.aqua.sega.chusan.dao.gamedata;
|
||||
|
||||
import icu.samnyan.aqua.sega.chusan.model.gamedata.MapIcon;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* @author samnyan (privateamusement@protonmail.com)
|
||||
*/
|
||||
@Repository("ChusanGameMapIconRepository")
|
||||
public interface GameMapIconRepository extends JpaRepository<MapIcon, Long> {
|
||||
|
||||
Optional<MapIcon> findById(int mapIconId);
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package icu.samnyan.aqua.sega.chusan.dao.gamedata;
|
||||
|
||||
import icu.samnyan.aqua.sega.chusan.model.gamedata.Music;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* @author samnyan (privateamusement@protonmail.com)
|
||||
*/
|
||||
@Repository("ChusanGameMusicRepository")
|
||||
public interface GameMusicRepository extends JpaRepository<Music, Long> {
|
||||
|
||||
Optional<Music> findByMusicId(int musicId);
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package icu.samnyan.aqua.sega.chusan.dao.gamedata;
|
||||
|
||||
import icu.samnyan.aqua.sega.chusan.model.gamedata.NamePlate;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* @author samnyan (privateamusement@protonmail.com)
|
||||
*/
|
||||
@Repository("ChusanGameNamePlateRepository")
|
||||
public interface GameNamePlateRepository extends JpaRepository<NamePlate, Long> {
|
||||
|
||||
Optional<NamePlate> findById(int trophyId);
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package icu.samnyan.aqua.sega.chusan.dao.gamedata;
|
||||
|
||||
import icu.samnyan.aqua.sega.chusan.model.gamedata.SystemVoice;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* @author samnyan (privateamusement@protonmail.com)
|
||||
*/
|
||||
@Repository("ChusanGameSystemVoiceRepository")
|
||||
public interface GameSystemVoiceRepository extends JpaRepository<SystemVoice, Long> {
|
||||
|
||||
Optional<SystemVoice> findById(int trophyId);
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package icu.samnyan.aqua.sega.chusan.dao.gamedata;
|
||||
|
||||
import icu.samnyan.aqua.sega.chusan.model.gamedata.Trophy;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* @author samnyan (privateamusement@protonmail.com)
|
||||
*/
|
||||
@Repository("ChusanGameTrophyRepository")
|
||||
public interface GameTrophyRepository extends JpaRepository<Trophy, Long> {
|
||||
|
||||
Optional<Trophy> findById(int trophyId);
|
||||
}
|
||||
@@ -22,5 +22,7 @@ public interface UserItemRepository extends JpaRepository<UserItem, Long> {
|
||||
|
||||
List<UserItem> findAllByUser_Card_ExtId(Long extId);
|
||||
|
||||
List<UserItem> findAllByUser_Card_ExtIdAndItemKind(Long extId, int itemKind);
|
||||
|
||||
Page<UserItem> findByUser_Card_ExtId(Long extId, Pageable pageable);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
package icu.samnyan.aqua.sega.chusan.model.gamedata;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author samnyan (privateamusement@protonmail.com)
|
||||
*/
|
||||
@Entity(name = "AvatarAcc")
|
||||
@Table(name = "chusan_avatar")
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class AvatarAcc implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Id
|
||||
private long id;
|
||||
|
||||
private String name;
|
||||
|
||||
private int category;
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package icu.samnyan.aqua.sega.chusan.model.gamedata;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author samnyan (privateamusement@protonmail.com)
|
||||
*/
|
||||
@Entity(name = "ChusanCharacter")
|
||||
@Table(name = "chusan_game_character")
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class Character implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Id
|
||||
private long id;
|
||||
|
||||
private String name;
|
||||
|
||||
private String releaseTag;
|
||||
|
||||
private String worksName;
|
||||
|
||||
private String illustratorName;
|
||||
|
||||
private String addImages;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package icu.samnyan.aqua.sega.chusan.model.gamedata;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author samnyan (privateamusement@protonmail.com)
|
||||
*/
|
||||
@Entity(name = "ChusanFrame")
|
||||
@Table(name = "chusan_frame")
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class Frame implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Id
|
||||
private long id;
|
||||
|
||||
private String name;
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package icu.samnyan.aqua.sega.chusan.model.gamedata;
|
||||
|
||||
/**
|
||||
* @author samnyan (privateamusement@protonmail.com)
|
||||
*/
|
||||
public enum Genre {
|
||||
POPS_ANIME("POPS & ANIME"),
|
||||
GAME("GAME"),
|
||||
NICONICO("niconico"),
|
||||
TOUHOU("東方Project"),
|
||||
RESERVE2("Reserve2"),
|
||||
ORIGINAL("Original"),
|
||||
VARIETY("Variety"),
|
||||
IRODORI("イロドリミドリ"),
|
||||
KOTONOHA("言ノ葉Project"),
|
||||
GEKICHUMA("ゲキマイ");
|
||||
|
||||
private String displayName;
|
||||
|
||||
Genre(String displayName) {
|
||||
this.displayName = displayName;
|
||||
}
|
||||
|
||||
public String displayName() {
|
||||
return displayName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return displayName;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
package icu.samnyan.aqua.sega.chusan.model.gamedata;
|
||||
|
||||
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 = "ChusanMusicLevel")
|
||||
@Table(name = "chusan_music_level")
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class Level implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
@JsonIgnore
|
||||
private long id;
|
||||
|
||||
@JsonIgnore
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "music_id")
|
||||
private Music music;
|
||||
|
||||
private boolean enable;
|
||||
|
||||
private int level;
|
||||
|
||||
private int levelDecimal;
|
||||
|
||||
private int diff;
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package icu.samnyan.aqua.sega.chusan.model.gamedata;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author samnyan (privateamusement@protonmail.com)
|
||||
*/
|
||||
@Entity(name = "ChusanMapIcon")
|
||||
@Table(name = "chusan_mapicon")
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class MapIcon implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Id
|
||||
private long id;
|
||||
|
||||
private String name;
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
package icu.samnyan.aqua.sega.chusan.model.gamedata;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.io.Serializable;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author samnyan (privateamusement@protonmail.com)
|
||||
*/
|
||||
@Entity(name = "ChusanMusic")
|
||||
@Table(name = "chusan_music")
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class Music implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Id
|
||||
private int musicId;
|
||||
|
||||
private String name;
|
||||
|
||||
private String sortName;
|
||||
|
||||
private String artistName;
|
||||
|
||||
private Genre genre;
|
||||
|
||||
private String releaseVersion;
|
||||
|
||||
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "music")
|
||||
@MapKey(name = "diff")
|
||||
private Map<Integer, Level> levels;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package icu.samnyan.aqua.sega.chusan.model.gamedata;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author samnyan (privateamusement@protonmail.com)
|
||||
*/
|
||||
@Entity(name = "ChusanNamePlate")
|
||||
@Table(name = "chusan_nameplate")
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class NamePlate implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Id
|
||||
private long id;
|
||||
|
||||
private String name;
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package icu.samnyan.aqua.sega.chusan.model.gamedata;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author samnyan (privateamusement@protonmail.com)
|
||||
*/
|
||||
@Entity(name = "ChusanSystemVoice")
|
||||
@Table(name = "chusan_voice")
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class SystemVoice implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Id
|
||||
private long id;
|
||||
|
||||
private String name;
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package icu.samnyan.aqua.sega.chusan.model.gamedata;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author samnyan (privateamusement@protonmail.com)
|
||||
*/
|
||||
@Entity(name = "ChusanTrophy")
|
||||
@Table(name = "chusan_trophy")
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class Trophy implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Id
|
||||
private long id;
|
||||
|
||||
private String name;
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package icu.samnyan.aqua.sega.chusan.service;
|
||||
|
||||
import icu.samnyan.aqua.sega.chusan.dao.gamedata.GameMusicRepository;
|
||||
import icu.samnyan.aqua.sega.chusan.model.gamedata.Music;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.cache.annotation.Cacheable;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* @author samnyan (privateamusement@protonmail.com)
|
||||
*/
|
||||
@Service("ChusanGameMusicService")
|
||||
public class GameMusicService {
|
||||
|
||||
private final GameMusicRepository gameMusicRepository;
|
||||
|
||||
@Autowired
|
||||
public GameMusicService(GameMusicRepository gameMusicRepository) {
|
||||
this.gameMusicRepository = gameMusicRepository;
|
||||
}
|
||||
|
||||
public Music save(Music music) {
|
||||
return gameMusicRepository.save(music);
|
||||
}
|
||||
|
||||
public List<Music> saveAll(List<Music> musicList) {
|
||||
return gameMusicRepository.saveAll(musicList);
|
||||
}
|
||||
|
||||
@Cacheable("music")
|
||||
public List<Music> getAll() {
|
||||
return gameMusicRepository.findAll();
|
||||
}
|
||||
|
||||
public Map<Integer, Music> getIdMap() {
|
||||
Map<Integer, Music> musicMap = new LinkedHashMap<>();
|
||||
getAll().forEach(music -> musicMap.put(music.getMusicId(), music));
|
||||
return musicMap;
|
||||
}
|
||||
|
||||
public Optional<Music> getById(String musicId) {
|
||||
return getById(Integer.parseInt(musicId));
|
||||
}
|
||||
|
||||
public Optional<Music> getById(int musicId) {
|
||||
return gameMusicRepository.findByMusicId(musicId);
|
||||
}
|
||||
}
|
||||
@@ -44,6 +44,10 @@ public class UserItemService {
|
||||
Pageable page = PageRequest.of(pageNumber, maxCount);
|
||||
return userItemRepository.findAllByUser_Card_ExtIdAndItemKind(Long.parseLong(userId), kind, page);
|
||||
}
|
||||
|
||||
public List<UserItem> getByUserAndItemKind(String userId, int kind) {
|
||||
return userItemRepository.findAllByUser_Card_ExtIdAndItemKind(Long.parseLong(userId), kind);
|
||||
}
|
||||
|
||||
public Page<UserItem> getByUserId(String userId, int page, int size) {
|
||||
return userItemRepository.findByUser_Card_ExtId(Long.parseLong(userId), PageRequest.of(page, size));
|
||||
|
||||
Reference in New Issue
Block a user