-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[REFACTOR] MemberService 순환 참조 문제 #272
Merged
Merged
Changes from 6 commits
Commits
Show all changes
8 commits
Select commit
Hold shift + click to select a range
974a46d
[ADD] DollFinder 추가
Chan531 6863a8a
[ADD] MemberDeleter 추가
Chan531 95eecd0
[ADD] ConversationFinder 추가
Chan531 96540a7
[ADD] MemberDollSaver 추가
Chan531 d0aa4b0
[REFACTOR] MemberService 순환참조 문제 해결
Chan531 590600b
[TEST] MemberService 테스트 임시 수정
Chan531 906206f
[CHORE] deleteMember 메소드명 변경
Chan531 5e06b42
[CHORE] routine 변수 분리
Chan531 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
19 changes: 19 additions & 0 deletions
19
src/main/java/com/soptie/server/conversation/adapter/ConversationFinder.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
package com.soptie.server.conversation.adapter; | ||
|
||
import com.soptie.server.common.support.RepositoryAdapter; | ||
import com.soptie.server.conversation.entity.Conversation; | ||
import com.soptie.server.conversation.repository.ConversationRepository; | ||
import lombok.RequiredArgsConstructor; | ||
|
||
import java.util.List; | ||
|
||
@RepositoryAdapter | ||
@RequiredArgsConstructor | ||
public class ConversationFinder { | ||
|
||
private final ConversationRepository conversationRepository; | ||
|
||
public List<Conversation> findAll() { | ||
return conversationRepository.findAll(); | ||
} | ||
} |
22 changes: 22 additions & 0 deletions
22
src/main/java/com/soptie/server/doll/adapter/DollFinder.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
package com.soptie.server.doll.adapter; | ||
|
||
import com.soptie.server.common.support.RepositoryAdapter; | ||
import com.soptie.server.doll.entity.Doll; | ||
import com.soptie.server.doll.entity.DollType; | ||
import com.soptie.server.doll.exception.DollException; | ||
import com.soptie.server.doll.repository.DollRepository; | ||
import lombok.RequiredArgsConstructor; | ||
|
||
import static com.soptie.server.doll.message.ErrorCode.INVALID_TYPE; | ||
|
||
@RepositoryAdapter | ||
@RequiredArgsConstructor | ||
public class DollFinder { | ||
|
||
private final DollRepository dollRepository; | ||
|
||
public Doll findByType(DollType type) { | ||
return dollRepository.findByDollType(type) | ||
.orElseThrow(() -> new DollException(INVALID_TYPE)); | ||
} | ||
} |
17 changes: 17 additions & 0 deletions
17
src/main/java/com/soptie/server/member/adapter/MemberDeleter.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
package com.soptie.server.member.adapter; | ||
|
||
import com.soptie.server.common.support.RepositoryAdapter; | ||
import com.soptie.server.member.entity.Member; | ||
import com.soptie.server.member.repository.MemberRepository; | ||
import lombok.RequiredArgsConstructor; | ||
|
||
@RepositoryAdapter | ||
@RequiredArgsConstructor | ||
public class MemberDeleter { | ||
|
||
private final MemberRepository memberRepository; | ||
|
||
public void deleteMember(Member member) { | ||
memberRepository.delete(member); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,12 @@ | ||
package com.soptie.server.member.service; | ||
|
||
import com.soptie.server.conversation.adapter.ConversationFinder; | ||
import com.soptie.server.conversation.entity.Conversation; | ||
import com.soptie.server.conversation.repository.ConversationRepository; | ||
import com.soptie.server.doll.adapter.DollFinder; | ||
import com.soptie.server.doll.entity.DollType; | ||
import com.soptie.server.member.adapter.MemberDeleter; | ||
import com.soptie.server.member.adapter.MemberFinder; | ||
import com.soptie.server.member.service.dto.request.CottonGiveServiceRequest; | ||
import com.soptie.server.member.service.dto.request.MemberHomeInfoGetServiceRequest; | ||
import com.soptie.server.member.service.dto.response.MemberCottonCountGetServiceResponse; | ||
|
@@ -10,9 +15,13 @@ | |
import com.soptie.server.member.entity.Member; | ||
import com.soptie.server.member.exception.MemberException; | ||
import com.soptie.server.member.repository.MemberRepository; | ||
import com.soptie.server.memberDoll.adapter.MemberDollSaver; | ||
import com.soptie.server.memberDoll.entity.MemberDoll; | ||
import com.soptie.server.memberDoll.service.MemberDollService; | ||
import com.soptie.server.memberRoutine.adapter.MemberRoutineSaver; | ||
import com.soptie.server.memberRoutine.service.MemberRoutineCreateService; | ||
|
||
import com.soptie.server.routine.adapter.RoutineFinder; | ||
import lombok.RequiredArgsConstructor; | ||
import lombok.val; | ||
import org.springframework.stereotype.Service; | ||
|
@@ -27,48 +36,56 @@ | |
@Transactional(readOnly = true) | ||
public class MemberServiceImpl implements MemberService { | ||
|
||
private final MemberDollService memberDollService; | ||
private final MemberRoutineCreateService memberRoutineCreateService; | ||
private final MemberRepository memberRepository; | ||
private final ConversationRepository conversationRepository; | ||
private final ConversationFinder conversationFinder; | ||
private final MemberFinder memberFinder; | ||
private final MemberDeleter memberDeleter; | ||
private final DollFinder dollFinder; | ||
private final RoutineFinder routineFinder; | ||
private final MemberDollSaver memberDollSaver; | ||
private final MemberRoutineSaver memberRoutineSaver; | ||
|
||
@Override | ||
@Transactional | ||
public void createMemberProfile(MemberProfileCreateServiceRequest request) { | ||
val member = findMember(request.memberId()); | ||
val member = memberFinder.findById(request.memberId()); | ||
member.checkMemberDollNonExist(); | ||
memberRoutineCreateService.createDailyRoutines(member, request.routines()); | ||
memberDollService.createMemberDoll(member, request.dollType(), request.name()); | ||
createDailyRoutines(member, request.routines()); | ||
createMemberDoll(member, request.dollType(), request.name()); | ||
} | ||
|
||
@Override | ||
@Transactional | ||
public MemberCottonCountGetServiceResponse giveCotton(CottonGiveServiceRequest request) { | ||
val member = findMember(request.memberId()); | ||
val member = memberFinder.findById(request.memberId()); | ||
val cottonCount = member.subtractAndGetCotton(request.cottonType()); | ||
return MemberCottonCountGetServiceResponse.of(cottonCount); | ||
} | ||
|
||
@Override | ||
public MemberHomeInfoGetServiceResponse getMemberHomeInfo(MemberHomeInfoGetServiceRequest request) { | ||
val member = findMember(request.memberId()); | ||
val member = memberFinder.findById(request.memberId()); | ||
member.checkMemberDollExist(); | ||
val conversations = getConversations(); | ||
return MemberHomeInfoGetServiceResponse.of(member, conversations); | ||
} | ||
|
||
@Override | ||
public void deleteMember(Member member) { | ||
memberRepository.delete(member); | ||
memberDeleter.deleteMember(member); | ||
} | ||
|
||
private Member findMember(long id) { | ||
return memberRepository.findById(id) | ||
.orElseThrow(() -> new MemberException(INVALID_MEMBER)); | ||
private void createDailyRoutines(Member member, List<Long> routineIds) { | ||
routineIds.forEach(id -> memberRoutineSaver.checkHasDeletedAndSave(member, routineFinder.findById(id))); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 메소드로 말씀이신가요?? |
||
} | ||
|
||
private void createMemberDoll(Member member, DollType dollType, String name) { | ||
val doll = dollFinder.findByType(dollType); | ||
val memberDoll = new MemberDoll(member, doll, name); | ||
memberDollSaver.save(memberDoll); | ||
} | ||
|
||
private List<String> getConversations() { | ||
return conversationRepository.findAll().stream() | ||
return conversationFinder.findAll().stream() | ||
.map(Conversation::getContent) | ||
.toList(); | ||
} | ||
|
17 changes: 17 additions & 0 deletions
17
src/main/java/com/soptie/server/memberDoll/adapter/MemberDollSaver.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
package com.soptie.server.memberDoll.adapter; | ||
|
||
import com.soptie.server.common.support.RepositoryAdapter; | ||
import com.soptie.server.memberDoll.entity.MemberDoll; | ||
import com.soptie.server.memberDoll.repository.MemberDollRepository; | ||
import lombok.RequiredArgsConstructor; | ||
|
||
@RepositoryAdapter | ||
@RequiredArgsConstructor | ||
public class MemberDollSaver { | ||
|
||
private final MemberDollRepository memberDollRepository; | ||
|
||
public void save(MemberDoll memberDoll) { | ||
memberDollRepository.save(memberDoll); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
둘 다 완료했습니다!