diff --git a/cufit-api/src/main/kotlin/com/official/cufitapi/domain/api/dto/MemberInfoResponse.kt b/cufit-api/src/main/kotlin/com/official/cufitapi/domain/api/dto/MemberInfoResponse.kt index ea4d7bb..0c8e99e 100644 --- a/cufit-api/src/main/kotlin/com/official/cufitapi/domain/api/dto/MemberInfoResponse.kt +++ b/cufit-api/src/main/kotlin/com/official/cufitapi/domain/api/dto/MemberInfoResponse.kt @@ -1,10 +1,17 @@ package com.official.cufitapi.domain.api.dto +import com.official.cufitapi.domain.enums.MatchMakerCandidateRelationType import io.swagger.v3.oas.annotations.media.Schema @Schema(name = "사용자 정보 응답") data class MemberInfoResponse( + @Schema(name = "이름") val name: String, + @Schema(name = "email") val email: String, + @Schema(name = "초대자 이름") + val inviteeName: String, + @Schema(name = "초대한 사람과의 관계") + val relationWithInvitee: MatchMakerCandidateRelationType ) diff --git a/cufit-api/src/main/kotlin/com/official/cufitapi/domain/api/dto/connection/ConnectionApplyRequest.kt b/cufit-api/src/main/kotlin/com/official/cufitapi/domain/api/dto/connection/ConnectionApplyRequest.kt new file mode 100644 index 0000000..d30ba03 --- /dev/null +++ b/cufit-api/src/main/kotlin/com/official/cufitapi/domain/api/dto/connection/ConnectionApplyRequest.kt @@ -0,0 +1,6 @@ +package com.official.cufitapi.domain.api.dto.connection + +data class ConnectionApplyRequest( + val name: String +) { +} \ No newline at end of file diff --git a/cufit-api/src/main/kotlin/com/official/cufitapi/domain/application/ConnectionService.kt b/cufit-api/src/main/kotlin/com/official/cufitapi/domain/application/ConnectionService.kt index 4dd491c..d14921f 100644 --- a/cufit-api/src/main/kotlin/com/official/cufitapi/domain/application/ConnectionService.kt +++ b/cufit-api/src/main/kotlin/com/official/cufitapi/domain/application/ConnectionService.kt @@ -1,5 +1,6 @@ package com.official.cufitapi.domain.application +import com.official.cufitapi.domain.api.dto.connection.ConnectionApplyRequest import org.springframework.stereotype.Service import org.springframework.transaction.annotation.Transactional @@ -7,6 +8,11 @@ import org.springframework.transaction.annotation.Transactional @Transactional(readOnly = true) class ConnectionService { + fun apply(memberId: Long, request: ConnectionApplyRequest) { + // 요청 정보 DB에 저장 + // 알림 + } + fun reject() { // 연결 요청 제거 // push diff --git a/cufit-api/src/main/kotlin/com/official/cufitapi/domain/application/MemberService.kt b/cufit-api/src/main/kotlin/com/official/cufitapi/domain/application/MemberService.kt index 8f6948e..d2aabed 100644 --- a/cufit-api/src/main/kotlin/com/official/cufitapi/domain/application/MemberService.kt +++ b/cufit-api/src/main/kotlin/com/official/cufitapi/domain/application/MemberService.kt @@ -1,7 +1,9 @@ package com.official.cufitapi.domain.application +import com.official.cufitapi.common.exception.InvalidRequestException import com.official.cufitapi.domain.api.dto.MemberInfoResponse import com.official.cufitapi.domain.api.dto.MemberProfileRequest +import com.official.cufitapi.domain.infrastructure.repository.InvitationJpaRepository import com.official.cufitapi.domain.infrastructure.repository.MemberJpaRepository import org.springframework.stereotype.Service import org.springframework.transaction.annotation.Transactional @@ -9,18 +11,25 @@ import org.springframework.transaction.annotation.Transactional @Service @Transactional(readOnly = true) class MemberService( - private val memberJpaRepository: MemberJpaRepository + private val memberJpaRepository: MemberJpaRepository, + private val invitationJpaRepository: InvitationJpaRepository ) { + fun getMemberInfo(memberId: Long): MemberInfoResponse { + val member = memberJpaRepository.findById(memberId) + .orElseThrow { InvalidRequestException("존재하지 않는 사용자 id: $memberId") } + val invitee = memberJpaRepository.findById(member.inviteeId) + .orElseThrow { InvalidRequestException("존재하지 않는 사용자 id: $memberId") } + val invitation = invitationJpaRepository.findByMemberId(memberId) ?: throw InvalidRequestException("존재하지 않는 사용자 id: $memberId") - fun getMemberInfo() : MemberInfoResponse { return MemberInfoResponse( - name = "", - email = "" + name = member.name, + email = member.email, + inviteeName = invitee.name, + relationWithInvitee = invitation.relationType ) } fun updateMemberProfile(memberId: Long, request: MemberProfileRequest) { - + // Implementation for updating member profile } - -} \ No newline at end of file +} diff --git a/cufit-api/src/main/kotlin/com/official/cufitapi/domain/infrastructure/entity/Invitation.kt b/cufit-api/src/main/kotlin/com/official/cufitapi/domain/infrastructure/entity/Invitation.kt index 8662954..9ebb792 100644 --- a/cufit-api/src/main/kotlin/com/official/cufitapi/domain/infrastructure/entity/Invitation.kt +++ b/cufit-api/src/main/kotlin/com/official/cufitapi/domain/infrastructure/entity/Invitation.kt @@ -18,11 +18,11 @@ class Invitation( */ val code: String, /* - 초대한 사람과의 관계 + 초대하는 사람과의 관계 */ val relationType: MatchMakerCandidateRelationType, /* - 초대한 사용자 ID + 초대하는 사용자 ID */ val memberId: Long, /* @@ -33,7 +33,6 @@ class Invitation( ) : BaseTimeEntity() { - fun deactivate() { - } + } \ No newline at end of file diff --git a/cufit-api/src/main/kotlin/com/official/cufitapi/domain/infrastructure/entity/MakerCandidateRelation.kt b/cufit-api/src/main/kotlin/com/official/cufitapi/domain/infrastructure/entity/MakerCandidateRelation.kt new file mode 100644 index 0000000..678e639 --- /dev/null +++ b/cufit-api/src/main/kotlin/com/official/cufitapi/domain/infrastructure/entity/MakerCandidateRelation.kt @@ -0,0 +1,17 @@ +package com.official.cufitapi.domain.infrastructure.entity + +import com.official.cufitapi.domain.enums.MatchMakerCandidateRelationType +import jakarta.persistence.Entity +import jakarta.persistence.GeneratedValue +import jakarta.persistence.Id + +@Entity +class MakerCandidateRelation( + @Id @GeneratedValue + val id: Long? = null, + val makerId: Long, + val candidateId: Long, + val relationType: MatchMakerCandidateRelationType +) { + +} \ No newline at end of file diff --git a/cufit-api/src/main/kotlin/com/official/cufitapi/domain/infrastructure/entity/MatchCandidate.kt b/cufit-api/src/main/kotlin/com/official/cufitapi/domain/infrastructure/entity/MatchCandidate.kt index 5bc5724..dd80987 100644 --- a/cufit-api/src/main/kotlin/com/official/cufitapi/domain/infrastructure/entity/MatchCandidate.kt +++ b/cufit-api/src/main/kotlin/com/official/cufitapi/domain/infrastructure/entity/MatchCandidate.kt @@ -11,12 +11,14 @@ import jakarta.persistence.Id class MatchCandidate( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long? = null, + /* + 사용자 id + */ val memberId: Long, - /* - 후보자 Table + 이상형 정보 */ - val matchMakerId: Long + ) { } \ No newline at end of file diff --git a/cufit-api/src/main/kotlin/com/official/cufitapi/domain/infrastructure/entity/MatchMaker.kt b/cufit-api/src/main/kotlin/com/official/cufitapi/domain/infrastructure/entity/MatchMaker.kt index 0a29c23..9865ed9 100644 --- a/cufit-api/src/main/kotlin/com/official/cufitapi/domain/infrastructure/entity/MatchMaker.kt +++ b/cufit-api/src/main/kotlin/com/official/cufitapi/domain/infrastructure/entity/MatchMaker.kt @@ -11,6 +11,10 @@ import jakarta.persistence.Id @Entity class MatchMaker( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - val id: Long? = null + val id: Long? = null, + /* + 사용자 id + */ + val memberId: Long ) { } \ No newline at end of file diff --git a/cufit-api/src/main/kotlin/com/official/cufitapi/domain/infrastructure/entity/Member.kt b/cufit-api/src/main/kotlin/com/official/cufitapi/domain/infrastructure/entity/Member.kt index 7a15530..29283fa 100644 --- a/cufit-api/src/main/kotlin/com/official/cufitapi/domain/infrastructure/entity/Member.kt +++ b/cufit-api/src/main/kotlin/com/official/cufitapi/domain/infrastructure/entity/Member.kt @@ -21,20 +21,14 @@ class Member( val name: String, /* - 나를 초대한 유저의 id - */ - val inviteeId: Long, - - /* - 키 + 사용자 email */ - val height: Int, + val email: String, /* - 나이 + 나를 초대한 유저의 id */ - val age: Int - + val inviteeId: Long, ) : BaseTimeEntity() { } \ No newline at end of file diff --git a/cufit-api/src/main/kotlin/com/official/cufitapi/domain/infrastructure/repository/InvitationJpaRepository.kt b/cufit-api/src/main/kotlin/com/official/cufitapi/domain/infrastructure/repository/InvitationJpaRepository.kt index 91a135d..afdbb49 100644 --- a/cufit-api/src/main/kotlin/com/official/cufitapi/domain/infrastructure/repository/InvitationJpaRepository.kt +++ b/cufit-api/src/main/kotlin/com/official/cufitapi/domain/infrastructure/repository/InvitationJpaRepository.kt @@ -7,4 +7,5 @@ interface InvitationJpaRepository : JpaRepository { fun existsByMemberIdAndCodeAndActivatedIsTrue(memberId: Long, code: String) : Boolean fun findByCode(code: String) : Invitation? + fun findByMemberId(memberId: Long) : Invitation? } \ No newline at end of file