From 4f327a737969093eb3fb4256e2065ba81011ecb2 Mon Sep 17 00:00:00 2001 From: Kangmin Date: Fri, 17 Nov 2023 10:04:29 +0900 Subject: [PATCH 01/13] =?UTF-8?q?Chore:=20(#39)=20=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=9C=84=EC=B9=98=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/disease/domain/repository/DiseaseRepository.kt | 6 ------ .../domain/gameInfo/domain/repository/GameInfoRepository.kt | 6 ------ .../domain/person/domain/repository/PersonRepository.kt | 6 ------ .../personData/domain/repository/PersonDataRepository.kt | 6 ------ .../domain/progress/domain/repository/DiseaseRepository.kt | 6 ++++++ .../domain/progress/domain/repository/GameInfoRepository.kt | 6 ++++++ .../progress/domain/repository/PersonDataRepository.kt | 6 ++++++ .../domain/progress/domain/repository/PersonRepository.kt | 6 ++++++ .../{personData => progress}/domain/type/SymptomType.kt | 2 +- 9 files changed, 25 insertions(+), 25 deletions(-) delete mode 100644 src/main/kotlin/team/sfe/server/domain/disease/domain/repository/DiseaseRepository.kt delete mode 100644 src/main/kotlin/team/sfe/server/domain/gameInfo/domain/repository/GameInfoRepository.kt delete mode 100644 src/main/kotlin/team/sfe/server/domain/person/domain/repository/PersonRepository.kt delete mode 100644 src/main/kotlin/team/sfe/server/domain/personData/domain/repository/PersonDataRepository.kt create mode 100644 src/main/kotlin/team/sfe/server/domain/progress/domain/repository/DiseaseRepository.kt create mode 100644 src/main/kotlin/team/sfe/server/domain/progress/domain/repository/GameInfoRepository.kt create mode 100644 src/main/kotlin/team/sfe/server/domain/progress/domain/repository/PersonDataRepository.kt create mode 100644 src/main/kotlin/team/sfe/server/domain/progress/domain/repository/PersonRepository.kt rename src/main/kotlin/team/sfe/server/domain/{personData => progress}/domain/type/SymptomType.kt (62%) diff --git a/src/main/kotlin/team/sfe/server/domain/disease/domain/repository/DiseaseRepository.kt b/src/main/kotlin/team/sfe/server/domain/disease/domain/repository/DiseaseRepository.kt deleted file mode 100644 index cfeb5d9..0000000 --- a/src/main/kotlin/team/sfe/server/domain/disease/domain/repository/DiseaseRepository.kt +++ /dev/null @@ -1,6 +0,0 @@ -package team.sfe.server.domain.disease.domain.repository - -import org.springframework.data.repository.CrudRepository -import team.sfe.server.domain.disease.domain.Disease - -interface DiseaseRepository : CrudRepository diff --git a/src/main/kotlin/team/sfe/server/domain/gameInfo/domain/repository/GameInfoRepository.kt b/src/main/kotlin/team/sfe/server/domain/gameInfo/domain/repository/GameInfoRepository.kt deleted file mode 100644 index 183df10..0000000 --- a/src/main/kotlin/team/sfe/server/domain/gameInfo/domain/repository/GameInfoRepository.kt +++ /dev/null @@ -1,6 +0,0 @@ -package team.sfe.server.domain.gameInfo.domain.repository - -import org.springframework.data.repository.CrudRepository -import team.sfe.server.domain.gameInfo.domain.GameInfo - -interface GameInfoRepository : CrudRepository diff --git a/src/main/kotlin/team/sfe/server/domain/person/domain/repository/PersonRepository.kt b/src/main/kotlin/team/sfe/server/domain/person/domain/repository/PersonRepository.kt deleted file mode 100644 index 91b01a8..0000000 --- a/src/main/kotlin/team/sfe/server/domain/person/domain/repository/PersonRepository.kt +++ /dev/null @@ -1,6 +0,0 @@ -package team.sfe.server.domain.person.domain.repository - -import org.springframework.data.repository.CrudRepository -import team.sfe.server.domain.person.domain.Person - -interface PersonRepository : CrudRepository diff --git a/src/main/kotlin/team/sfe/server/domain/personData/domain/repository/PersonDataRepository.kt b/src/main/kotlin/team/sfe/server/domain/personData/domain/repository/PersonDataRepository.kt deleted file mode 100644 index 9465048..0000000 --- a/src/main/kotlin/team/sfe/server/domain/personData/domain/repository/PersonDataRepository.kt +++ /dev/null @@ -1,6 +0,0 @@ -package team.sfe.server.domain.personData.domain.repository - -import org.springframework.data.repository.CrudRepository -import team.sfe.server.domain.personData.domain.PersonData - -interface PersonDataRepository : CrudRepository diff --git a/src/main/kotlin/team/sfe/server/domain/progress/domain/repository/DiseaseRepository.kt b/src/main/kotlin/team/sfe/server/domain/progress/domain/repository/DiseaseRepository.kt new file mode 100644 index 0000000..6006260 --- /dev/null +++ b/src/main/kotlin/team/sfe/server/domain/progress/domain/repository/DiseaseRepository.kt @@ -0,0 +1,6 @@ +package team.sfe.server.domain.progress.domain.repository + +import org.springframework.data.repository.CrudRepository +import team.sfe.server.domain.progress.domain.DiseaseEntity + +interface DiseaseRepository : CrudRepository diff --git a/src/main/kotlin/team/sfe/server/domain/progress/domain/repository/GameInfoRepository.kt b/src/main/kotlin/team/sfe/server/domain/progress/domain/repository/GameInfoRepository.kt new file mode 100644 index 0000000..0bdd751 --- /dev/null +++ b/src/main/kotlin/team/sfe/server/domain/progress/domain/repository/GameInfoRepository.kt @@ -0,0 +1,6 @@ +package team.sfe.server.domain.progress.domain.repository + +import org.springframework.data.repository.CrudRepository +import team.sfe.server.domain.progress.domain.GameInfoEntity + +interface GameInfoRepository : CrudRepository diff --git a/src/main/kotlin/team/sfe/server/domain/progress/domain/repository/PersonDataRepository.kt b/src/main/kotlin/team/sfe/server/domain/progress/domain/repository/PersonDataRepository.kt new file mode 100644 index 0000000..3dcb43b --- /dev/null +++ b/src/main/kotlin/team/sfe/server/domain/progress/domain/repository/PersonDataRepository.kt @@ -0,0 +1,6 @@ +package team.sfe.server.domain.progress.domain.repository + +import org.springframework.data.repository.CrudRepository +import team.sfe.server.domain.progress.domain.PersonDataEntity + +interface PersonDataRepository : CrudRepository diff --git a/src/main/kotlin/team/sfe/server/domain/progress/domain/repository/PersonRepository.kt b/src/main/kotlin/team/sfe/server/domain/progress/domain/repository/PersonRepository.kt new file mode 100644 index 0000000..b59e0e4 --- /dev/null +++ b/src/main/kotlin/team/sfe/server/domain/progress/domain/repository/PersonRepository.kt @@ -0,0 +1,6 @@ +package team.sfe.server.domain.progress.domain.repository + +import org.springframework.data.repository.CrudRepository +import team.sfe.server.domain.progress.domain.PersonEntity + +interface PersonRepository : CrudRepository diff --git a/src/main/kotlin/team/sfe/server/domain/personData/domain/type/SymptomType.kt b/src/main/kotlin/team/sfe/server/domain/progress/domain/type/SymptomType.kt similarity index 62% rename from src/main/kotlin/team/sfe/server/domain/personData/domain/type/SymptomType.kt rename to src/main/kotlin/team/sfe/server/domain/progress/domain/type/SymptomType.kt index ccb7c95..2750ed4 100644 --- a/src/main/kotlin/team/sfe/server/domain/personData/domain/type/SymptomType.kt +++ b/src/main/kotlin/team/sfe/server/domain/progress/domain/type/SymptomType.kt @@ -1,4 +1,4 @@ -package team.sfe.server.domain.personData.domain.type +package team.sfe.server.domain.progress.domain.type enum class SymptomType { Nothing, From a423d6c8d4d8d8f8979020ce7e5726a11ba62be5 Mon Sep 17 00:00:00 2001 From: Kangmin Date: Fri, 17 Nov 2023 10:16:02 +0900 Subject: [PATCH 02/13] =?UTF-8?q?Chore:=20(#39)=20=EC=97=B0=EA=B4=80?= =?UTF-8?q?=EA=B4=80=EA=B3=84=20=EB=A7=A4=ED=95=91=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/domain/disease/domain/Disease.kt | 23 ---------- .../sfe/server/domain/person/domain/Person.kt | 27 ----------- .../domain/progress/domain/DiseaseEntity.kt | 43 +++++++++++++++++ .../domain/GameInfoEntity.kt} | 22 ++++++--- .../domain/PersonDataEntity.kt} | 22 ++++++--- .../domain/progress/domain/PersonEntity.kt | 46 +++++++++++++++++++ .../user/domain/{User.kt => UserEntity.kt} | 21 +-------- 7 files changed, 123 insertions(+), 81 deletions(-) delete mode 100644 src/main/kotlin/team/sfe/server/domain/disease/domain/Disease.kt delete mode 100644 src/main/kotlin/team/sfe/server/domain/person/domain/Person.kt create mode 100644 src/main/kotlin/team/sfe/server/domain/progress/domain/DiseaseEntity.kt rename src/main/kotlin/team/sfe/server/domain/{gameInfo/domain/GameInfo.kt => progress/domain/GameInfoEntity.kt} (56%) rename src/main/kotlin/team/sfe/server/domain/{personData/domain/PersonData.kt => progress/domain/PersonDataEntity.kt} (60%) create mode 100644 src/main/kotlin/team/sfe/server/domain/progress/domain/PersonEntity.kt rename src/main/kotlin/team/sfe/server/domain/user/domain/{User.kt => UserEntity.kt} (56%) diff --git a/src/main/kotlin/team/sfe/server/domain/disease/domain/Disease.kt b/src/main/kotlin/team/sfe/server/domain/disease/domain/Disease.kt deleted file mode 100644 index c7d8d9e..0000000 --- a/src/main/kotlin/team/sfe/server/domain/disease/domain/Disease.kt +++ /dev/null @@ -1,23 +0,0 @@ -package team.sfe.server.domain.disease.domain - -import jakarta.persistence.Column -import jakarta.persistence.Entity -import jakarta.validation.constraints.NotNull -import team.sfe.server.global.entity.BaseIdEntity - -@Entity -class Disease( - override val id: Long = 0L, - - @field:NotNull - @Column(columnDefinition = "FLOAT") - val infectWeight: Float, - - @field:NotNull - @Column(columnDefinition = "INT") - val infectivity: Int, - - @field:NotNull - @Column(columnDefinition = "FLOAT") - val infectPower: Float -) : BaseIdEntity(id) diff --git a/src/main/kotlin/team/sfe/server/domain/person/domain/Person.kt b/src/main/kotlin/team/sfe/server/domain/person/domain/Person.kt deleted file mode 100644 index f86c8a1..0000000 --- a/src/main/kotlin/team/sfe/server/domain/person/domain/Person.kt +++ /dev/null @@ -1,27 +0,0 @@ -package team.sfe.server.domain.person.domain - -import jakarta.persistence.Column -import jakarta.persistence.Entity -import jakarta.validation.constraints.NotNull -import team.sfe.server.global.entity.BaseIdEntity - -@Entity -class Person( - override val id: Long = 0L, - - @field:NotNull - @Column(columnDefinition = "INT") - val totalPerson: Int, - - @field:NotNull - @Column(columnDefinition = "INT") - val healthyPerson: Int, - - @field:NotNull - @Column(columnDefinition = "INT") - val deathPerson: Int, - - @field:NotNull - @Column(columnDefinition = "INT") - val infectedPerson: Int -) : BaseIdEntity(id) diff --git a/src/main/kotlin/team/sfe/server/domain/progress/domain/DiseaseEntity.kt b/src/main/kotlin/team/sfe/server/domain/progress/domain/DiseaseEntity.kt new file mode 100644 index 0000000..ad4b7d4 --- /dev/null +++ b/src/main/kotlin/team/sfe/server/domain/progress/domain/DiseaseEntity.kt @@ -0,0 +1,43 @@ +package team.sfe.server.domain.progress.domain + +import jakarta.persistence.Column +import jakarta.persistence.Entity +import jakarta.persistence.FetchType +import jakarta.persistence.JoinColumn +import jakarta.persistence.MapsId +import jakarta.persistence.OneToOne +import jakarta.validation.constraints.NotNull +import team.sfe.server.domain.progress.presentation.dto.Disease +import team.sfe.server.domain.user.domain.UserEntity +import team.sfe.server.global.entity.BaseIdEntity + +@Entity +class DiseaseEntity( + + override val id: Long = 0L, + + @MapsId + @OneToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "user_id") + val userEntity: UserEntity, + + @field:NotNull + @Column(columnDefinition = "FLOAT") + val infectWeight: Float, + + @field:NotNull + @Column(columnDefinition = "INT") + val infectivity: Int, + + @field:NotNull + @Column(columnDefinition = "FLOAT") + val infectPower: Float + +) : BaseIdEntity(id) { + + fun toDiseaseDto() = Disease( + infectWeight = this.infectWeight, + infectivity = this.infectivity, + infectPower = this.infectPower + ) +} diff --git a/src/main/kotlin/team/sfe/server/domain/gameInfo/domain/GameInfo.kt b/src/main/kotlin/team/sfe/server/domain/progress/domain/GameInfoEntity.kt similarity index 56% rename from src/main/kotlin/team/sfe/server/domain/gameInfo/domain/GameInfo.kt rename to src/main/kotlin/team/sfe/server/domain/progress/domain/GameInfoEntity.kt index 94dde37..883fa45 100644 --- a/src/main/kotlin/team/sfe/server/domain/gameInfo/domain/GameInfo.kt +++ b/src/main/kotlin/team/sfe/server/domain/progress/domain/GameInfoEntity.kt @@ -1,25 +1,35 @@ -package team.sfe.server.domain.gameInfo.domain +package team.sfe.server.domain.progress.domain import jakarta.persistence.Column import jakarta.persistence.Entity +import jakarta.persistence.FetchType +import jakarta.persistence.JoinColumn +import jakarta.persistence.MapsId +import jakarta.persistence.OneToOne import jakarta.validation.constraints.NotNull +import team.sfe.server.domain.user.domain.UserEntity import team.sfe.server.global.entity.BaseIdEntity @Entity -class GameInfo( +class GameInfoEntity( override val id: Long = 0L, + @MapsId + @OneToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "user_id") + val userEntity: UserEntity, + @field:NotNull @Column(columnDefinition = "TINYINT(1)") - val diseaseEnable: Boolean, + val diseaseEnabled: Boolean, @field:NotNull @Column(columnDefinition = "TINYINT(1)") - val pcrEnable: Boolean, + val pcrEnabled: Boolean, @field:NotNull @Column(columnDefinition = "TINYINT(1)") - val kitEnable: Boolean, + val kitEnabled: Boolean, @field:NotNull @Column(columnDefinition = "INT") @@ -27,7 +37,7 @@ class GameInfo( @field:NotNull @Column(columnDefinition = "TINYINT(1)") - val vaccineReserch: Boolean, + val vaccineResearch: Boolean, @field:NotNull @Column(columnDefinition = "TINYINT(1)") diff --git a/src/main/kotlin/team/sfe/server/domain/personData/domain/PersonData.kt b/src/main/kotlin/team/sfe/server/domain/progress/domain/PersonDataEntity.kt similarity index 60% rename from src/main/kotlin/team/sfe/server/domain/personData/domain/PersonData.kt rename to src/main/kotlin/team/sfe/server/domain/progress/domain/PersonDataEntity.kt index 5362eec..b22d070 100644 --- a/src/main/kotlin/team/sfe/server/domain/personData/domain/PersonData.kt +++ b/src/main/kotlin/team/sfe/server/domain/progress/domain/PersonDataEntity.kt @@ -1,4 +1,4 @@ -package team.sfe.server.domain.personData.domain +package team.sfe.server.domain.progress.domain import jakarta.persistence.Column import jakarta.persistence.Entity @@ -6,19 +6,20 @@ import jakarta.persistence.FetchType import jakarta.persistence.JoinColumn import jakarta.persistence.ManyToOne import jakarta.validation.constraints.NotNull -import team.sfe.server.domain.personData.domain.type.SymptomType -import team.sfe.server.domain.user.domain.User +import team.sfe.server.domain.progress.domain.type.SymptomType +import team.sfe.server.domain.progress.presentation.dto.PersonData +import team.sfe.server.domain.user.domain.UserEntity import team.sfe.server.global.entity.BaseIdEntity @Entity -class PersonData( +class PersonDataEntity( override val id: Long = 0L, @field:NotNull @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "user_id") - val user: User, + val userEntity: UserEntity, @field:NotNull @Column(columnDefinition = "INT") @@ -39,4 +40,13 @@ class PersonData( @field:NotNull @Column(columnDefinition = "FLOAT") val recoverWeight: Float -) : BaseIdEntity(id) +) : BaseIdEntity(id) { + + fun toPersonDataDto() = PersonData( + catchDate = this.catchData, + isInfected = this.isInfected, + symptomType = this.symptomType, + deathWeight = this.deathWeight, + recoverWeight = this.recoverWeight + ) +} diff --git a/src/main/kotlin/team/sfe/server/domain/progress/domain/PersonEntity.kt b/src/main/kotlin/team/sfe/server/domain/progress/domain/PersonEntity.kt new file mode 100644 index 0000000..e8a9525 --- /dev/null +++ b/src/main/kotlin/team/sfe/server/domain/progress/domain/PersonEntity.kt @@ -0,0 +1,46 @@ +package team.sfe.server.domain.progress.domain + +import jakarta.persistence.Column +import jakarta.persistence.Entity +import jakarta.persistence.FetchType +import jakarta.persistence.JoinColumn +import jakarta.persistence.MapsId +import jakarta.persistence.OneToOne +import jakarta.validation.constraints.NotNull +import team.sfe.server.domain.progress.presentation.dto.Person +import team.sfe.server.domain.user.domain.UserEntity +import team.sfe.server.global.entity.BaseIdEntity + +@Entity +class PersonEntity( + override val id: Long = 0L, + + @MapsId + @OneToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "user_id") + val userEntity: UserEntity, + + @field:NotNull + @Column(columnDefinition = "INT") + val totalPerson: Int, + + @field:NotNull + @Column(columnDefinition = "INT") + val healthyPerson: Int, + + @field:NotNull + @Column(columnDefinition = "INT") + val deathPerson: Int, + + @field:NotNull + @Column(columnDefinition = "INT") + val infectedPerson: Int +) : BaseIdEntity(id) { + + fun toPersonDto() = Person( + totalPerson = this.totalPerson, + healthyPerson = this.healthyPerson, + deathPerson = this.deathPerson, + infectedPerson = this.infectedPerson + ) +} diff --git a/src/main/kotlin/team/sfe/server/domain/user/domain/User.kt b/src/main/kotlin/team/sfe/server/domain/user/domain/UserEntity.kt similarity index 56% rename from src/main/kotlin/team/sfe/server/domain/user/domain/User.kt rename to src/main/kotlin/team/sfe/server/domain/user/domain/UserEntity.kt index cadd0c6..0143fb1 100644 --- a/src/main/kotlin/team/sfe/server/domain/user/domain/User.kt +++ b/src/main/kotlin/team/sfe/server/domain/user/domain/UserEntity.kt @@ -4,17 +4,12 @@ import jakarta.persistence.Column import jakarta.persistence.Entity import jakarta.persistence.EnumType import jakarta.persistence.Enumerated -import jakarta.persistence.JoinColumn -import jakarta.persistence.OneToOne import jakarta.validation.constraints.NotNull -import team.sfe.server.domain.disease.domain.Disease -import team.sfe.server.domain.gameInfo.domain.GameInfo -import team.sfe.server.domain.person.domain.Person import team.sfe.server.domain.user.domain.type.Authority import team.sfe.server.global.entity.BaseIdEntity @Entity -class User( +class UserEntity( override val id: Long = 0L, @field:NotNull @@ -27,17 +22,5 @@ class User( @Enumerated(EnumType.STRING) @Column(columnDefinition = "VARCHAR(5)") - val authority: Authority, - - @OneToOne - @JoinColumn(name = "id") - val disease: Disease? = null, - - @OneToOne - @JoinColumn(name = "id") - val gameInfo: GameInfo? = null, - - @OneToOne - @JoinColumn(name = "id") - val person: Person? = null + val authority: Authority ) : BaseIdEntity(id) From 4a5328fcd44b56044c32ca59c2c32ade31339541 Mon Sep 17 00:00:00 2001 From: Kangmin Date: Fri, 17 Nov 2023 10:16:36 +0900 Subject: [PATCH 03/13] =?UTF-8?q?Feat:=20(#39)=20=EC=9D=B8=EC=A6=9D?= =?UTF-8?q?=EB=90=9C=20=EC=9C=A0=EC=A0=80=20=EB=B6=88=EB=9F=AC=EC=98=A4?= =?UTF-8?q?=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../team/sfe/server/domain/user/facade/UserFacade.kt | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/team/sfe/server/domain/user/facade/UserFacade.kt b/src/main/kotlin/team/sfe/server/domain/user/facade/UserFacade.kt index 8043e48..91557c8 100644 --- a/src/main/kotlin/team/sfe/server/domain/user/facade/UserFacade.kt +++ b/src/main/kotlin/team/sfe/server/domain/user/facade/UserFacade.kt @@ -1,7 +1,9 @@ package team.sfe.server.domain.user.facade +import org.springframework.data.repository.findByIdOrNull +import org.springframework.security.core.context.SecurityContextHolder import org.springframework.stereotype.Component -import team.sfe.server.domain.user.domain.User +import team.sfe.server.domain.user.domain.UserEntity import team.sfe.server.domain.user.domain.repository.UserRepository import team.sfe.server.domain.user.exception.UserAlreadyExistsException import team.sfe.server.domain.user.exception.UserNotFoundException @@ -17,7 +19,12 @@ class UserFacade( } } - fun getUserByAccountId(accountId: String): User { + fun getUserByAccountId(accountId: String): UserEntity { return userRepository.findByAccountId(accountId) ?: throw UserNotFoundException } + + fun getCurrentUser(): UserEntity { + val id = SecurityContextHolder.getContext().authentication.name.toLong() + return userRepository.findByIdOrNull(id) ?: throw UserNotFoundException + } } From 16aa65350c8375d27c7abf05b1c2691872d3066f Mon Sep 17 00:00:00 2001 From: Kangmin Date: Fri, 17 Nov 2023 10:19:55 +0900 Subject: [PATCH 04/13] Init: (#39) SaveProgressRequest --- .../presentation/dto/SaveProgressRequest.kt | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 src/main/kotlin/team/sfe/server/domain/progress/presentation/dto/SaveProgressRequest.kt diff --git a/src/main/kotlin/team/sfe/server/domain/progress/presentation/dto/SaveProgressRequest.kt b/src/main/kotlin/team/sfe/server/domain/progress/presentation/dto/SaveProgressRequest.kt new file mode 100644 index 0000000..595ac94 --- /dev/null +++ b/src/main/kotlin/team/sfe/server/domain/progress/presentation/dto/SaveProgressRequest.kt @@ -0,0 +1,80 @@ +package team.sfe.server.domain.progress.presentation.dto + +import team.sfe.server.domain.progress.domain.DiseaseEntity +import team.sfe.server.domain.progress.domain.GameInfoEntity +import team.sfe.server.domain.progress.domain.PersonDataEntity +import team.sfe.server.domain.progress.domain.PersonEntity +import team.sfe.server.domain.progress.domain.type.SymptomType +import team.sfe.server.domain.user.domain.UserEntity + +data class SaveProgressRequest( + val disease: Disease, + val person: Person, + val persons: List, + val diseaseEnabled: Boolean, + val pcrEnabled: Boolean, + val kitEnabled: Boolean, + val kitChance: Int, + val vaccineResearch: Boolean, + val vaccineEnded: Boolean +) { + + fun toGameInfoEntity(userEntity: UserEntity) = GameInfoEntity( + userEntity = userEntity, + diseaseEnabled = this.diseaseEnabled, + pcrEnabled = this.pcrEnabled, + kitEnabled = this.kitEnabled, + kitChance = this.kitChance, + vaccineResearch = this.vaccineResearch, + vaccineEnded = this.vaccineEnded + ) + + fun toPersonData(userEntity: UserEntity) = persons.map { + PersonDataEntity( + userEntity = userEntity, + catchData = it.catchDate, + isInfected = it.isInfected, + symptomType = it.symptomType, + deathWeight = it.deathWeight, + recoverWeight = it.recoverWeight + ) + } +} + +data class Disease( + val infectWeight: Float, + val infectivity: Int, + val infectPower: Float +) { + + fun toDiseaseEntity(userEntity: UserEntity) = DiseaseEntity( + userEntity = userEntity, + infectWeight = this.infectWeight, + infectivity = this.infectivity, + infectPower = this.infectPower + ) +} + +data class Person( + val totalPerson: Int, + val healthyPerson: Int, + val deathPerson: Int, + val infectedPerson: Int +) { + + fun toPersonEntity(userEntity: UserEntity) = PersonEntity( + userEntity = userEntity, + totalPerson = this.totalPerson, + healthyPerson = this.healthyPerson, + deathPerson = this.deathPerson, + infectedPerson = this.infectedPerson + ) +} + +data class PersonData( + val catchDate: Int, + val isInfected: Boolean, + val symptomType: SymptomType, + val deathWeight: Float, + val recoverWeight: Float +) From 98f9df20546b74c513a77d704f2d706829fdb88d Mon Sep 17 00:00:00 2001 From: Kangmin Date: Fri, 17 Nov 2023 10:20:22 +0900 Subject: [PATCH 05/13] Init: (#39) ProgressNotFoundException --- .../domain/progress/exception/ProgressNotFoundException.kt | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 src/main/kotlin/team/sfe/server/domain/progress/exception/ProgressNotFoundException.kt diff --git a/src/main/kotlin/team/sfe/server/domain/progress/exception/ProgressNotFoundException.kt b/src/main/kotlin/team/sfe/server/domain/progress/exception/ProgressNotFoundException.kt new file mode 100644 index 0000000..02a00c1 --- /dev/null +++ b/src/main/kotlin/team/sfe/server/domain/progress/exception/ProgressNotFoundException.kt @@ -0,0 +1,5 @@ +package team.sfe.server.domain.progress.exception + +import team.sfe.server.global.error.CustomException + +object ProgressNotFoundException : CustomException(404, "게임 진행 상황을 찾지 못했습니다.") From 3a8cfbf40f0c4d66bf83bdbe3aee1f6630462861 Mon Sep 17 00:00:00 2001 From: Kangmin Date: Fri, 17 Nov 2023 10:24:53 +0900 Subject: [PATCH 06/13] Init: (#39) QueryProgressVO --- .../domain/progress/domain/vo/QueryProgressVO.kt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/main/kotlin/team/sfe/server/domain/progress/domain/vo/QueryProgressVO.kt diff --git a/src/main/kotlin/team/sfe/server/domain/progress/domain/vo/QueryProgressVO.kt b/src/main/kotlin/team/sfe/server/domain/progress/domain/vo/QueryProgressVO.kt new file mode 100644 index 0000000..a3518c2 --- /dev/null +++ b/src/main/kotlin/team/sfe/server/domain/progress/domain/vo/QueryProgressVO.kt @@ -0,0 +1,14 @@ +package team.sfe.server.domain.progress.domain.vo + +import com.querydsl.core.annotations.QueryProjection +import team.sfe.server.domain.progress.domain.DiseaseEntity +import team.sfe.server.domain.progress.domain.GameInfoEntity +import team.sfe.server.domain.progress.domain.PersonDataEntity +import team.sfe.server.domain.progress.domain.PersonEntity + +data class QueryProgressVO @QueryProjection constructor( + val diseaseEntity: DiseaseEntity, + val gameInfoEntity: GameInfoEntity, + val personDataEntity: List, + val personEntity: PersonEntity +) From aa4e7f057fe4ce88ced4d6e02cf8f77feafe9227 Mon Sep 17 00:00:00 2001 From: Kangmin Date: Fri, 17 Nov 2023 10:25:16 +0900 Subject: [PATCH 07/13] Init: (#39) GetProgressResponse --- .../presentation/dto/GetProgressResponse.kt | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/main/kotlin/team/sfe/server/domain/progress/presentation/dto/GetProgressResponse.kt diff --git a/src/main/kotlin/team/sfe/server/domain/progress/presentation/dto/GetProgressResponse.kt b/src/main/kotlin/team/sfe/server/domain/progress/presentation/dto/GetProgressResponse.kt new file mode 100644 index 0000000..b05bb9f --- /dev/null +++ b/src/main/kotlin/team/sfe/server/domain/progress/presentation/dto/GetProgressResponse.kt @@ -0,0 +1,33 @@ +package team.sfe.server.domain.progress.presentation.dto + +import team.sfe.server.domain.progress.domain.vo.QueryProgressVO + +data class GetProgressResponse( + val disease: Disease, + val person: Person, + val persons: List, + val diseaseEnabled: Boolean, + val pcrEnabled: Boolean, + val kitEnabled: Boolean, + val kitChance: Int, + val vaccineResearch: Boolean, + val vaccineEnded: Boolean +) { + + companion object { + + fun of(vo: QueryProgressVO) = GetProgressResponse( + disease = vo.diseaseEntity.toDiseaseDto(), + person = vo.personEntity.toPersonDto(), + persons = vo.personDataEntity.map { + it.toPersonDataDto() + }, + diseaseEnabled = vo.gameInfoEntity.diseaseEnabled, + pcrEnabled = vo.gameInfoEntity.pcrEnabled, + kitEnabled = vo.gameInfoEntity.kitEnabled, + kitChance = vo.gameInfoEntity.kitChance, + vaccineResearch = vo.gameInfoEntity.vaccineResearch, + vaccineEnded = vo.gameInfoEntity.vaccineEnded + ) + } +} From fa36eb6e96b17f222a475a4aa1a89359caeac3a3 Mon Sep 17 00:00:00 2001 From: Kangmin Date: Fri, 17 Nov 2023 10:25:43 +0900 Subject: [PATCH 08/13] Init: (#39) ProgressRepository --- .../progress/domain/ProgressRepository.kt | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/main/kotlin/team/sfe/server/domain/progress/domain/ProgressRepository.kt diff --git a/src/main/kotlin/team/sfe/server/domain/progress/domain/ProgressRepository.kt b/src/main/kotlin/team/sfe/server/domain/progress/domain/ProgressRepository.kt new file mode 100644 index 0000000..2727de3 --- /dev/null +++ b/src/main/kotlin/team/sfe/server/domain/progress/domain/ProgressRepository.kt @@ -0,0 +1,39 @@ +package team.sfe.server.domain.progress.domain + +import com.querydsl.core.group.GroupBy.groupBy +import com.querydsl.core.group.GroupBy.list +import com.querydsl.jpa.impl.JPAQueryFactory +import org.springframework.stereotype.Repository +import team.sfe.server.domain.progress.domain.QDiseaseEntity.diseaseEntity +import team.sfe.server.domain.progress.domain.QGameInfoEntity.gameInfoEntity +import team.sfe.server.domain.progress.domain.QPersonDataEntity.personDataEntity +import team.sfe.server.domain.progress.domain.QPersonEntity.personEntity +import team.sfe.server.domain.progress.domain.vo.QQueryProgressVO +import team.sfe.server.domain.progress.domain.vo.QueryProgressVO +import team.sfe.server.domain.user.domain.QUserEntity.userEntity + +@Repository +class ProgressRepository( + private val jpaQueryFactory: JPAQueryFactory +) { + + fun queryProgress(userId: Long): QueryProgressVO? { + return jpaQueryFactory + .selectFrom(userEntity) + .join(diseaseEntity.userEntity, userEntity) + .join(gameInfoEntity.userEntity, userEntity) + .join(personDataEntity.userEntity, userEntity) + .join(personEntity.userEntity, userEntity) + .where(userEntity.id.eq(userId)) + .transform( + groupBy(userEntity.id).list( + QQueryProgressVO( + diseaseEntity, + gameInfoEntity, + list(personDataEntity), + personEntity + ) + ) + )[0] + } +} From 5d837df2dd6161c34125123d292ba4be249aa057 Mon Sep 17 00:00:00 2001 From: Kangmin Date: Fri, 17 Nov 2023 10:26:50 +0900 Subject: [PATCH 09/13] =?UTF-8?q?Refactor:=20(#39)=20UserEntity=EB=A1=9C?= =?UTF-8?q?=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/domain/user/domain/repository/UserRepository.kt | 6 +++--- .../sfe/server/domain/user/service/UserSignUpService.kt | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/kotlin/team/sfe/server/domain/user/domain/repository/UserRepository.kt b/src/main/kotlin/team/sfe/server/domain/user/domain/repository/UserRepository.kt index 8d98132..2466754 100644 --- a/src/main/kotlin/team/sfe/server/domain/user/domain/repository/UserRepository.kt +++ b/src/main/kotlin/team/sfe/server/domain/user/domain/repository/UserRepository.kt @@ -1,11 +1,11 @@ package team.sfe.server.domain.user.domain.repository import org.springframework.data.repository.CrudRepository -import team.sfe.server.domain.user.domain.User +import team.sfe.server.domain.user.domain.UserEntity -interface UserRepository : CrudRepository { +interface UserRepository : CrudRepository { - fun findByAccountId(accountId: String): User? + fun findByAccountId(accountId: String): UserEntity? fun existsByAccountId(accountId: String): Boolean } diff --git a/src/main/kotlin/team/sfe/server/domain/user/service/UserSignUpService.kt b/src/main/kotlin/team/sfe/server/domain/user/service/UserSignUpService.kt index f3527d7..f06c8b2 100644 --- a/src/main/kotlin/team/sfe/server/domain/user/service/UserSignUpService.kt +++ b/src/main/kotlin/team/sfe/server/domain/user/service/UserSignUpService.kt @@ -3,7 +3,7 @@ package team.sfe.server.domain.user.service import org.springframework.security.crypto.password.PasswordEncoder import org.springframework.stereotype.Service import org.springframework.transaction.annotation.Transactional -import team.sfe.server.domain.user.domain.User +import team.sfe.server.domain.user.domain.UserEntity import team.sfe.server.domain.user.domain.repository.UserRepository import team.sfe.server.domain.user.domain.type.Authority import team.sfe.server.domain.user.facade.UserFacade @@ -23,7 +23,7 @@ class UserSignUpService( userFacade.isUserAlreadyExists(request.accountId) userRepository.save( - User( + UserEntity( accountId = request.accountId, password = passwordEncoder.encode(request.password), authority = Authority.USER From a802d1cf0d8b88f8316d4e8875fd5cff691f2d59 Mon Sep 17 00:00:00 2001 From: Kangmin Date: Fri, 17 Nov 2023 10:29:02 +0900 Subject: [PATCH 10/13] =?UTF-8?q?Feat:=20(#39)=20=EC=A7=84=ED=96=89=20?= =?UTF-8?q?=EC=83=81=ED=99=A9=20=EC=A0=80=EC=9E=A5=20=EB=B0=8F=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=20=EC=84=9C=EB=B9=84=EC=8A=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../progress/service/GetProgressService.kt | 24 +++++++++++ .../progress/service/SaveProgressService.kt | 41 +++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 src/main/kotlin/team/sfe/server/domain/progress/service/GetProgressService.kt create mode 100644 src/main/kotlin/team/sfe/server/domain/progress/service/SaveProgressService.kt diff --git a/src/main/kotlin/team/sfe/server/domain/progress/service/GetProgressService.kt b/src/main/kotlin/team/sfe/server/domain/progress/service/GetProgressService.kt new file mode 100644 index 0000000..6207bad --- /dev/null +++ b/src/main/kotlin/team/sfe/server/domain/progress/service/GetProgressService.kt @@ -0,0 +1,24 @@ +package team.sfe.server.domain.progress.service + +import org.springframework.stereotype.Service +import org.springframework.transaction.annotation.Transactional +import team.sfe.server.domain.progress.domain.ProgressRepository +import team.sfe.server.domain.progress.exception.ProgressNotFoundException +import team.sfe.server.domain.progress.presentation.dto.GetProgressResponse +import team.sfe.server.domain.user.facade.UserFacade + +@Service +class GetProgressService( + private val userFacade: UserFacade, + private val progressRepository: ProgressRepository +) { + + @Transactional(readOnly = true) + fun execute(): GetProgressResponse { + val currentUser = userFacade.getCurrentUser() + + val queryProgress = progressRepository.queryProgress(currentUser.id) ?: throw ProgressNotFoundException + + return GetProgressResponse.of(queryProgress) + } +} diff --git a/src/main/kotlin/team/sfe/server/domain/progress/service/SaveProgressService.kt b/src/main/kotlin/team/sfe/server/domain/progress/service/SaveProgressService.kt new file mode 100644 index 0000000..be23eec --- /dev/null +++ b/src/main/kotlin/team/sfe/server/domain/progress/service/SaveProgressService.kt @@ -0,0 +1,41 @@ +package team.sfe.server.domain.progress.service + +import org.springframework.stereotype.Service +import org.springframework.transaction.annotation.Transactional +import team.sfe.server.domain.progress.domain.repository.DiseaseRepository +import team.sfe.server.domain.progress.domain.repository.GameInfoRepository +import team.sfe.server.domain.progress.domain.repository.PersonDataRepository +import team.sfe.server.domain.progress.domain.repository.PersonRepository +import team.sfe.server.domain.progress.presentation.dto.SaveProgressRequest +import team.sfe.server.domain.user.facade.UserFacade + +@Service +class SaveProgressService( + private val diseaseRepository: DiseaseRepository, + private val gameInfoRepository: GameInfoRepository, + private val personDataRepository: PersonDataRepository, + private val personRepository: PersonRepository, + private val userFacade: UserFacade +) { + + @Transactional + fun execute(request: SaveProgressRequest) { + val currentUser = userFacade.getCurrentUser() + + diseaseRepository.save( + request.disease.toDiseaseEntity(currentUser) + ) + + gameInfoRepository.save( + request.toGameInfoEntity(currentUser) + ) + + personRepository.save( + request.person.toPersonEntity(currentUser) + ) + + personDataRepository.saveAll( + request.toPersonData(currentUser) + ) + } +} From bd39ea9b7d33cc90d7ec4f41f7a11069bcd7b19f Mon Sep 17 00:00:00 2001 From: Kangmin Date: Fri, 17 Nov 2023 10:29:19 +0900 Subject: [PATCH 11/13] =?UTF-8?q?Feat:=20(#39)=20=EC=A7=84=ED=96=89=20?= =?UTF-8?q?=EC=83=81=ED=99=A9=20=EC=A0=80=EC=9E=A5=20=EB=B0=8F=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=20API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/ProgressController.kt | 32 +++++++++++++++++++ .../server/global/security/SecurityConfig.kt | 9 +++++- 2 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 src/main/kotlin/team/sfe/server/domain/progress/presentation/ProgressController.kt diff --git a/src/main/kotlin/team/sfe/server/domain/progress/presentation/ProgressController.kt b/src/main/kotlin/team/sfe/server/domain/progress/presentation/ProgressController.kt new file mode 100644 index 0000000..d4ed466 --- /dev/null +++ b/src/main/kotlin/team/sfe/server/domain/progress/presentation/ProgressController.kt @@ -0,0 +1,32 @@ +package team.sfe.server.domain.progress.presentation + +import org.springframework.http.HttpStatus +import org.springframework.web.bind.annotation.GetMapping +import org.springframework.web.bind.annotation.PostMapping +import org.springframework.web.bind.annotation.RequestBody +import org.springframework.web.bind.annotation.RequestMapping +import org.springframework.web.bind.annotation.ResponseStatus +import org.springframework.web.bind.annotation.RestController +import team.sfe.server.domain.progress.presentation.dto.GetProgressResponse +import team.sfe.server.domain.progress.presentation.dto.SaveProgressRequest +import team.sfe.server.domain.progress.service.GetProgressService +import team.sfe.server.domain.progress.service.SaveProgressService + +@RequestMapping("/progresses") +@RestController +class ProgressController( + private val saveProgressService: SaveProgressService, + private val getProgressService: GetProgressService, +) { + + @ResponseStatus(HttpStatus.NO_CONTENT) + @PostMapping + fun saveProgress(@RequestBody request: SaveProgressRequest) { + saveProgressService.execute(request) + } + + @GetMapping + fun getProgress(): GetProgressResponse { + return getProgressService.execute() + } +} diff --git a/src/main/kotlin/team/sfe/server/global/security/SecurityConfig.kt b/src/main/kotlin/team/sfe/server/global/security/SecurityConfig.kt index 9bedc80..4e8d20b 100644 --- a/src/main/kotlin/team/sfe/server/global/security/SecurityConfig.kt +++ b/src/main/kotlin/team/sfe/server/global/security/SecurityConfig.kt @@ -11,6 +11,7 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder import org.springframework.security.crypto.password.PasswordEncoder import org.springframework.security.web.SecurityFilterChain import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter +import team.sfe.server.domain.user.domain.type.Authority.USER import team.sfe.server.global.filter.GlobalExceptionFilter import team.sfe.server.global.filter.JwtFilter import team.sfe.server.global.security.jwt.JwtParser @@ -18,7 +19,7 @@ import team.sfe.server.global.security.jwt.JwtParser @Configuration class SecurityConfig( private val jwtParser: JwtParser, - private val objectMapper: ObjectMapper + private val objectMapper: ObjectMapper, ) { @Bean @@ -31,6 +32,12 @@ class SecurityConfig( .authorizeHttpRequests { // health check it.requestMatchers(HttpMethod.GET, "/").permitAll() + it.requestMatchers(HttpMethod.POST, "/users/signup").permitAll() + it.requestMatchers(HttpMethod.POST, "/auth/tokens").permitAll() + it.requestMatchers(HttpMethod.PATCH, "/auth/tokens").permitAll() + it.requestMatchers(HttpMethod.PATCH, "/auth/tokens").hasAuthority(USER.name) + it.requestMatchers(HttpMethod.POST, "/progresses").hasAuthority(USER.name) + it.requestMatchers(HttpMethod.GET, "/progresses").hasAuthority(USER.name) .anyRequest().permitAll() } .addFilterBefore(JwtFilter(jwtParser), UsernamePasswordAuthenticationFilter::class.java) From 2b892acb76efb26b8d173d0a089ad4a251dc7787 Mon Sep 17 00:00:00 2001 From: Kangmin Date: Fri, 17 Nov 2023 19:03:30 +0900 Subject: [PATCH 12/13] =?UTF-8?q?Chore:=20(#39)=20=EC=9E=90=EC=9E=98?= =?UTF-8?q?=ED=95=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/progress/domain/DiseaseEntity.kt | 3 +- .../domain/progress/domain/GameInfoEntity.kt | 1 + .../progress/domain/PersonDataEntity.kt | 4 +- .../domain/progress/domain/PersonEntity.kt | 1 + .../domain/repository/DiseaseRepository.kt | 6 ++- .../domain/repository/GameInfoRepository.kt | 6 ++- .../domain/repository/PersonDataRepository.kt | 6 ++- .../domain/repository/PersonRepository.kt | 6 ++- .../presentation/ProgressController.kt | 2 +- .../progress/service/GetProgressService.kt | 21 +------- .../service/GetProgressServiceImpl.kt | 48 +++++++++++++++++++ 11 files changed, 77 insertions(+), 27 deletions(-) create mode 100644 src/main/kotlin/team/sfe/server/domain/progress/service/GetProgressServiceImpl.kt diff --git a/src/main/kotlin/team/sfe/server/domain/progress/domain/DiseaseEntity.kt b/src/main/kotlin/team/sfe/server/domain/progress/domain/DiseaseEntity.kt index ad4b7d4..2d159ff 100644 --- a/src/main/kotlin/team/sfe/server/domain/progress/domain/DiseaseEntity.kt +++ b/src/main/kotlin/team/sfe/server/domain/progress/domain/DiseaseEntity.kt @@ -13,9 +13,9 @@ import team.sfe.server.global.entity.BaseIdEntity @Entity class DiseaseEntity( - override val id: Long = 0L, + @field:NotNull @MapsId @OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "user_id") @@ -32,7 +32,6 @@ class DiseaseEntity( @field:NotNull @Column(columnDefinition = "FLOAT") val infectPower: Float - ) : BaseIdEntity(id) { fun toDiseaseDto() = Disease( diff --git a/src/main/kotlin/team/sfe/server/domain/progress/domain/GameInfoEntity.kt b/src/main/kotlin/team/sfe/server/domain/progress/domain/GameInfoEntity.kt index 883fa45..98c2cd4 100644 --- a/src/main/kotlin/team/sfe/server/domain/progress/domain/GameInfoEntity.kt +++ b/src/main/kotlin/team/sfe/server/domain/progress/domain/GameInfoEntity.kt @@ -14,6 +14,7 @@ import team.sfe.server.global.entity.BaseIdEntity class GameInfoEntity( override val id: Long = 0L, + @field:NotNull @MapsId @OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "user_id") diff --git a/src/main/kotlin/team/sfe/server/domain/progress/domain/PersonDataEntity.kt b/src/main/kotlin/team/sfe/server/domain/progress/domain/PersonDataEntity.kt index b22d070..234852a 100644 --- a/src/main/kotlin/team/sfe/server/domain/progress/domain/PersonDataEntity.kt +++ b/src/main/kotlin/team/sfe/server/domain/progress/domain/PersonDataEntity.kt @@ -2,6 +2,8 @@ package team.sfe.server.domain.progress.domain import jakarta.persistence.Column import jakarta.persistence.Entity +import jakarta.persistence.EnumType +import jakarta.persistence.Enumerated import jakarta.persistence.FetchType import jakarta.persistence.JoinColumn import jakarta.persistence.ManyToOne @@ -13,7 +15,6 @@ import team.sfe.server.global.entity.BaseIdEntity @Entity class PersonDataEntity( - override val id: Long = 0L, @field:NotNull @@ -30,6 +31,7 @@ class PersonDataEntity( val isInfected: Boolean, @field:NotNull + @Enumerated(EnumType.STRING) @Column(columnDefinition = "VARCHAR(10)") val symptomType: SymptomType, diff --git a/src/main/kotlin/team/sfe/server/domain/progress/domain/PersonEntity.kt b/src/main/kotlin/team/sfe/server/domain/progress/domain/PersonEntity.kt index e8a9525..b73534c 100644 --- a/src/main/kotlin/team/sfe/server/domain/progress/domain/PersonEntity.kt +++ b/src/main/kotlin/team/sfe/server/domain/progress/domain/PersonEntity.kt @@ -15,6 +15,7 @@ import team.sfe.server.global.entity.BaseIdEntity class PersonEntity( override val id: Long = 0L, + @field:NotNull @MapsId @OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "user_id") diff --git a/src/main/kotlin/team/sfe/server/domain/progress/domain/repository/DiseaseRepository.kt b/src/main/kotlin/team/sfe/server/domain/progress/domain/repository/DiseaseRepository.kt index 6006260..1a0313f 100644 --- a/src/main/kotlin/team/sfe/server/domain/progress/domain/repository/DiseaseRepository.kt +++ b/src/main/kotlin/team/sfe/server/domain/progress/domain/repository/DiseaseRepository.kt @@ -2,5 +2,9 @@ package team.sfe.server.domain.progress.domain.repository import org.springframework.data.repository.CrudRepository import team.sfe.server.domain.progress.domain.DiseaseEntity +import team.sfe.server.domain.user.domain.UserEntity -interface DiseaseRepository : CrudRepository +interface DiseaseRepository : CrudRepository { + + fun findByUserEntity(userEntity: UserEntity): DiseaseEntity? +} diff --git a/src/main/kotlin/team/sfe/server/domain/progress/domain/repository/GameInfoRepository.kt b/src/main/kotlin/team/sfe/server/domain/progress/domain/repository/GameInfoRepository.kt index 0bdd751..747a801 100644 --- a/src/main/kotlin/team/sfe/server/domain/progress/domain/repository/GameInfoRepository.kt +++ b/src/main/kotlin/team/sfe/server/domain/progress/domain/repository/GameInfoRepository.kt @@ -2,5 +2,9 @@ package team.sfe.server.domain.progress.domain.repository import org.springframework.data.repository.CrudRepository import team.sfe.server.domain.progress.domain.GameInfoEntity +import team.sfe.server.domain.user.domain.UserEntity -interface GameInfoRepository : CrudRepository +interface GameInfoRepository : CrudRepository { + + fun findByUserEntity(userEntity: UserEntity): GameInfoEntity? +} diff --git a/src/main/kotlin/team/sfe/server/domain/progress/domain/repository/PersonDataRepository.kt b/src/main/kotlin/team/sfe/server/domain/progress/domain/repository/PersonDataRepository.kt index 3dcb43b..ea7db9a 100644 --- a/src/main/kotlin/team/sfe/server/domain/progress/domain/repository/PersonDataRepository.kt +++ b/src/main/kotlin/team/sfe/server/domain/progress/domain/repository/PersonDataRepository.kt @@ -2,5 +2,9 @@ package team.sfe.server.domain.progress.domain.repository import org.springframework.data.repository.CrudRepository import team.sfe.server.domain.progress.domain.PersonDataEntity +import team.sfe.server.domain.user.domain.UserEntity -interface PersonDataRepository : CrudRepository +interface PersonDataRepository : CrudRepository { + + fun findAllByUserEntity(userEntity: UserEntity): List +} diff --git a/src/main/kotlin/team/sfe/server/domain/progress/domain/repository/PersonRepository.kt b/src/main/kotlin/team/sfe/server/domain/progress/domain/repository/PersonRepository.kt index b59e0e4..e36bb54 100644 --- a/src/main/kotlin/team/sfe/server/domain/progress/domain/repository/PersonRepository.kt +++ b/src/main/kotlin/team/sfe/server/domain/progress/domain/repository/PersonRepository.kt @@ -2,5 +2,9 @@ package team.sfe.server.domain.progress.domain.repository import org.springframework.data.repository.CrudRepository import team.sfe.server.domain.progress.domain.PersonEntity +import team.sfe.server.domain.user.domain.UserEntity -interface PersonRepository : CrudRepository +interface PersonRepository : CrudRepository { + + fun findByUserEntity(userEntity: UserEntity): PersonEntity? +} diff --git a/src/main/kotlin/team/sfe/server/domain/progress/presentation/ProgressController.kt b/src/main/kotlin/team/sfe/server/domain/progress/presentation/ProgressController.kt index d4ed466..726ad9a 100644 --- a/src/main/kotlin/team/sfe/server/domain/progress/presentation/ProgressController.kt +++ b/src/main/kotlin/team/sfe/server/domain/progress/presentation/ProgressController.kt @@ -19,7 +19,7 @@ class ProgressController( private val getProgressService: GetProgressService, ) { - @ResponseStatus(HttpStatus.NO_CONTENT) + @ResponseStatus(HttpStatus.CREATED) @PostMapping fun saveProgress(@RequestBody request: SaveProgressRequest) { saveProgressService.execute(request) diff --git a/src/main/kotlin/team/sfe/server/domain/progress/service/GetProgressService.kt b/src/main/kotlin/team/sfe/server/domain/progress/service/GetProgressService.kt index 6207bad..ad9d54f 100644 --- a/src/main/kotlin/team/sfe/server/domain/progress/service/GetProgressService.kt +++ b/src/main/kotlin/team/sfe/server/domain/progress/service/GetProgressService.kt @@ -1,24 +1,7 @@ package team.sfe.server.domain.progress.service -import org.springframework.stereotype.Service -import org.springframework.transaction.annotation.Transactional -import team.sfe.server.domain.progress.domain.ProgressRepository -import team.sfe.server.domain.progress.exception.ProgressNotFoundException import team.sfe.server.domain.progress.presentation.dto.GetProgressResponse -import team.sfe.server.domain.user.facade.UserFacade -@Service -class GetProgressService( - private val userFacade: UserFacade, - private val progressRepository: ProgressRepository -) { - - @Transactional(readOnly = true) - fun execute(): GetProgressResponse { - val currentUser = userFacade.getCurrentUser() - - val queryProgress = progressRepository.queryProgress(currentUser.id) ?: throw ProgressNotFoundException - - return GetProgressResponse.of(queryProgress) - } +interface GetProgressService { + fun execute(): GetProgressResponse } diff --git a/src/main/kotlin/team/sfe/server/domain/progress/service/GetProgressServiceImpl.kt b/src/main/kotlin/team/sfe/server/domain/progress/service/GetProgressServiceImpl.kt new file mode 100644 index 0000000..d9574b8 --- /dev/null +++ b/src/main/kotlin/team/sfe/server/domain/progress/service/GetProgressServiceImpl.kt @@ -0,0 +1,48 @@ +package team.sfe.server.domain.progress.service + +import org.springframework.stereotype.Service +import org.springframework.transaction.annotation.Transactional +import team.sfe.server.domain.progress.domain.repository.DiseaseRepository +import team.sfe.server.domain.progress.domain.repository.GameInfoRepository +import team.sfe.server.domain.progress.domain.repository.PersonDataRepository +import team.sfe.server.domain.progress.domain.repository.PersonRepository +import team.sfe.server.domain.progress.exception.ProgressNotFoundException +import team.sfe.server.domain.progress.presentation.dto.GetProgressResponse +import team.sfe.server.domain.user.facade.UserFacade + +@Service +class GetProgressServiceImpl( + private val userFacade: UserFacade, + private val diseaseRepository: DiseaseRepository, + private val gameInfoRepository: GameInfoRepository, + private val personDataRepository: PersonDataRepository, + private val personRepository: PersonRepository, +) : GetProgressService { + + @Transactional(readOnly = true) + override fun execute(): GetProgressResponse { + val currentUser = userFacade.getCurrentUser() + + val diseaseEntity = diseaseRepository.findByUserEntity(currentUser) ?: throw ProgressNotFoundException + + val gameInfoEntity = gameInfoRepository.findByUserEntity(currentUser) ?: throw ProgressNotFoundException + + val personData = personDataRepository.findAllByUserEntity(currentUser) + + val personEntity = personRepository.findByUserEntity(currentUser) ?: throw ProgressNotFoundException + + return GetProgressResponse( + disease = diseaseEntity.toDiseaseDto(), + person = personEntity.toPersonDto(), + persons = personData.map { + it.toPersonDataDto() + }, + diseaseEnabled = gameInfoEntity.diseaseEnabled, + pcrEnabled = gameInfoEntity.pcrEnabled, + kitEnabled = gameInfoEntity.kitEnabled, + kitChance = gameInfoEntity.kitChance, + vaccineResearch = gameInfoEntity.vaccineResearch, + vaccineEnded = gameInfoEntity.vaccineEnded + ) + } +} From 6f5257126e844e59dd88c3be1831b909c3814bcf Mon Sep 17 00:00:00 2001 From: Kangmin Date: Fri, 17 Nov 2023 19:19:03 +0900 Subject: [PATCH 13/13] =?UTF-8?q?Chore:=20(#39)=20ddl-auto=20none=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index ce73adb..5554cd5 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -7,11 +7,11 @@ spring: jpa: hibernate: - ddl-auto: update + ddl-auto: none properties: hibernate: format_sql: true - show_sql: ture + show_sql: true database-platform: org.hibernate.dialect.MySQL8Dialect redis: @@ -21,5 +21,5 @@ spring: jwt: secret-key: ${SECRET_KEY} - access-exp: ${ACCESS_EXP:1800} + access-exp: ${ACCESS_EXP:9999999} refresh_exp: ${REFRESH_EXP:1209600} \ No newline at end of file