[RF] move userMusicFromList to GameApiController and add GenericUserMusicRepo

This commit is contained in:
Clansty
2025-01-05 19:54:15 +08:00
parent 7083e1a117
commit ccd88a10ab
14 changed files with 42 additions and 18 deletions

View File

@@ -4,8 +4,10 @@ package icu.samnyan.aqua.sega.chusan.model
import icu.samnyan.aqua.net.games.GenericPlaylogRepo
import icu.samnyan.aqua.net.games.GenericUserDataRepo
import icu.samnyan.aqua.net.games.GenericUserMusicRepo
import icu.samnyan.aqua.net.games.IUserRepo
import icu.samnyan.aqua.sega.chusan.model.userdata.*
import icu.samnyan.aqua.sega.maimai2.model.userdata.Mai2UserMusicDetail
import org.springframework.data.domain.Page
import org.springframework.data.domain.Pageable
import org.springframework.data.jpa.repository.JpaRepository
@@ -104,7 +106,7 @@ interface Chu3UserMapRepo : Chu3UserLinked<UserMap> {
fun findAllByUserCardExtIdAndMapAreaIdIn(user: Long, mapAreaIds: List<Int>): List<UserMap>
}
interface Chu3UserMusicDetailRepo : Chu3UserLinked<UserMusicDetail> {
interface Chu3UserMusicDetailRepo : Chu3UserLinked<UserMusicDetail>, GenericUserMusicRepo<UserMusicDetail> {
fun findTopByUserAndMusicIdAndLevelOrderByIdDesc(user: Chu3UserData, musicId: Int, level: Int): Optional<UserMusicDetail>
fun findByUserAndMusicIdAndLevel(user: Chu3UserData, musicId: Int, level: Int): UserMusicDetail?

View File

@@ -2,6 +2,7 @@ package icu.samnyan.aqua.sega.chusan.model.userdata
import com.fasterxml.jackson.annotation.JsonProperty
import com.fasterxml.jackson.databind.annotation.JsonDeserialize
import icu.samnyan.aqua.net.games.IGenericUserMusic
import icu.samnyan.aqua.sega.util.jackson.BooleanToIntegerDeserializer
import jakarta.persistence.Entity
import jakarta.persistence.Table
@@ -15,8 +16,8 @@ import jakarta.persistence.UniqueConstraint
name = "chusan_user_music_detail",
uniqueConstraints = [UniqueConstraint(columnNames = ["user_id", "music_id", "level"])]
)
class UserMusicDetail : Chu3UserEntity() {
var musicId = 0
class UserMusicDetail : Chu3UserEntity(), IGenericUserMusic {
override var musicId = 0
var level = 0
var playCount = 0
var scoreMax = 0

View File

@@ -4,6 +4,7 @@ package icu.samnyan.aqua.sega.maimai2.model
import icu.samnyan.aqua.net.games.GenericPlaylogRepo
import icu.samnyan.aqua.net.games.GenericUserDataRepo
import icu.samnyan.aqua.net.games.GenericUserMusicRepo
import icu.samnyan.aqua.net.games.IUserRepo
import icu.samnyan.aqua.sega.general.model.Card
import icu.samnyan.aqua.sega.maimai2.model.userdata.*
@@ -90,13 +91,11 @@ interface Mai2UserMapRepo : Mai2UserLinked<Mai2UserMap> {
fun findByUserAndMapId(user: Mai2UserDetail, mapId: Int): Optional<Mai2UserMap>
}
interface Mai2UserMusicDetailRepo : Mai2UserLinked<Mai2UserMusicDetail> {
interface Mai2UserMusicDetailRepo : Mai2UserLinked<Mai2UserMusicDetail>, GenericUserMusicRepo<Mai2UserMusicDetail> {
fun findByUser_Card_ExtIdAndMusicId(userId: Long, id: Int): List<Mai2UserMusicDetail>
fun findByUserAndMusicIdAndLevel(user: Mai2UserDetail, musicId: Int, level: Int): Optional<Mai2UserMusicDetail>
fun findByUser_Card_ExtIdAndMusicIdIn(userId: Long, musicId: List<Int>): List<Mai2UserMusicDetail>
fun findByUserId(userId: Long): List<Mai2UserMusicDetail>
}

View File

@@ -8,6 +8,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
import com.fasterxml.jackson.annotation.JsonPropertyOrder
import icu.samnyan.aqua.net.games.BaseEntity
import icu.samnyan.aqua.net.games.IGenericGamePlaylog
import icu.samnyan.aqua.net.games.IGenericUserMusic
import icu.samnyan.aqua.net.games.IUserEntity
import icu.samnyan.aqua.sega.general.IntegerListConverter
import jakarta.persistence.*
@@ -294,9 +295,9 @@ class Mai2UserMap : Mai2UserEntity() {
@Table(name = "maimai2_user_music_detail")
@Data @Entity
class Mai2UserMusicDetail : Mai2UserEntity() {
class Mai2UserMusicDetail : Mai2UserEntity(), IGenericUserMusic {
var musicId = 0
override var musicId = 0
var level = 0
var playCount = 0
var achievement = 0

View File

@@ -1,5 +1,6 @@
package icu.samnyan.aqua.sega.ongeki.dao.userdata;
import icu.samnyan.aqua.net.games.GenericUserMusicRepo;
import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData;
import icu.samnyan.aqua.sega.ongeki.model.userdata.UserMusicDetail;
import org.springframework.data.domain.Page;
@@ -15,7 +16,7 @@ import java.util.Optional;
* @author samnyan (privateamusement@protonmail.com)
*/
@Repository("OngekiUserMusicDetailRepository")
public interface UserMusicDetailRepository extends JpaRepository<UserMusicDetail, Long> {
public interface UserMusicDetailRepository extends JpaRepository<UserMusicDetail, Long>, GenericUserMusicRepo<UserMusicDetail> {
List<UserMusicDetail> findByUser_Card_ExtId(long userId);

View File

@@ -2,6 +2,7 @@ package icu.samnyan.aqua.sega.ongeki.model.userdata;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import icu.samnyan.aqua.net.games.IGenericUserMusic;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@@ -17,7 +18,7 @@ import java.io.Serializable;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserMusicDetail implements Serializable {
public class UserMusicDetail implements Serializable, IGenericUserMusic {
private static final long serialVersionUID = 1L;

View File

@@ -2,6 +2,7 @@ package icu.samnyan.aqua.sega.wacca.model.db
import icu.samnyan.aqua.net.games.GenericPlaylogRepo
import icu.samnyan.aqua.net.games.GenericUserDataRepo
import icu.samnyan.aqua.net.games.GenericUserMusicRepo
import jakarta.transaction.Transactional
import org.springframework.data.jpa.repository.JpaRepository
import org.springframework.data.jpa.repository.Query
@@ -32,7 +33,7 @@ interface WcUserItemRepo : IWaccaUserLinked<WcUserItem> {
fun findByUserAndType(user: WaccaUser, type: Int): List<WcUserItem>
fun findByUserAndItemIdAndType(user: WaccaUser, itemId: Int, type: Int): WcUserItem?
}
interface WcUserBestScoreRepo : IWaccaUserLinked<WcUserScore> {
interface WcUserBestScoreRepo : IWaccaUserLinked<WcUserScore>, GenericUserMusicRepo<WcUserScore> {
fun findByUserAndMusicIdAndLevel(user: WaccaUser, songId: Int, level: Int): WcUserScore?
@Query("SELECT SUM(achievement) FROM WcUserScore WHERE user = :user")
fun sumScoreByUser(user: WaccaUser): Long

View File

@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore
import ext.*
import icu.samnyan.aqua.net.games.BaseEntity
import icu.samnyan.aqua.net.games.IGenericGamePlaylog
import icu.samnyan.aqua.net.games.IGenericUserMusic
import icu.samnyan.aqua.sega.general.IntegerListConverter
import icu.samnyan.aqua.sega.wacca.WaccaItemType
import icu.samnyan.aqua.sega.wacca.WaccaItemType.*
@@ -92,8 +93,8 @@ class WcUserItem(
}
@Entity @Table(name = "wacca_user_score", uniqueConstraints = [UC("", ["user_id", "music_id", "level"])])
class WcUserScore : WaccaUserEntity() {
var musicId = 0
class WcUserScore : WaccaUserEntity(), IGenericUserMusic {
override var musicId = 0
var level = 0 // aka difficulty
var achievement = 0