Skip to content

Commit 6e3efaf

Browse files
authored
[TNT-257] refactor: 데모데이 이후 전체적인 리팩토링 진행 (#68)
* [TNT-257] chore: 불필요 파일 삭제 * [TNT-257] refactor: 서비스 코드 리팩토링 진행 * [TNT-257] refactor: 테스트 코드 리팩토링 진행 * [TNT-257] refactor: 불필요한 주석 삭제 * [TNT-257] chore: 비동기 logger 활성화 * [TNT-257] refactor: PR 반영
1 parent ea958ec commit 6e3efaf

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+407
-551
lines changed

infra/Dockerfile

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ ENV SPRING_ACTIVE_PROFILE=${SPRING_ACTIVE_PROFILE}
66
COPY build/libs/TnT-0.0.1-SNAPSHOT.jar TnT.jar
77
COPY src/main/resources/config/agent.java/ agent.java
88

9-
ENTRYPOINT ["java", "-javaagent:agent.java/scouter.agent.jar", "-Dscouter.config=agent.java/conf/scouter.conf", "-Duser.timezone=Asia/Seoul", "-Dspring.profiles.active=${SPRING_ACTIVE_PROFILE}", "-jar", "/TnT.jar"]
9+
ENTRYPOINT ["java", "-javaagent:agent.java/scouter.agent.jar", "-Dscouter.config=agent.java/conf/scouter.conf", "-Duser.timezone=Asia/Seoul",
10+
"-DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector", "-Dspring.profiles.active=${SPRING_ACTIVE_PROFILE}", "-jar", "/TnT.jar"]

src/main/java/com/tnt/application/member/MemberService.java

+16-20
Original file line numberDiff line numberDiff line change
@@ -40,28 +40,17 @@ public class MemberService {
4040
private final TraineeService traineeService;
4141
private final PtGoalService ptGoalService;
4242
private final PtService ptService;
43+
4344
private final MemberRepository memberRepository;
4445
private final MemberSearchRepository memberSearchRepository;
4546

46-
@Transactional
47-
public Member saveMember(Member member) {
48-
return memberRepository.save(member);
49-
}
50-
51-
public void validateMemberNotExists(String socialId, SocialType socialType) {
52-
memberRepository.findBySocialIdAndSocialTypeAndDeletedAtIsNull(socialId, socialType)
53-
.ifPresent(member -> {
54-
throw new ConflictException(MEMBER_CONFLICT);
55-
});
56-
}
57-
5847
@Transactional(readOnly = true)
5948
public GetMemberInfoResponse getMemberInfo(Long memberId) {
60-
Member member = getMemberWithMemberId(memberId);
49+
Member member = getByMemberId(memberId);
6150
GetMemberInfoResponse memberInfo = null;
6251

6352
if (member.getMemberType() == TRAINER) {
64-
Trainer trainer = trainerService.getTrainerWithMemberId(memberId);
53+
Trainer trainer = trainerService.getByMemberId(memberId);
6554
List<PtTrainerTrainee> ptTrainerTrainees = ptService.getAllPtTrainerTraineeWithTrainerIdWithDeleted(
6655
trainer.getId());
6756

@@ -76,8 +65,8 @@ public GetMemberInfoResponse getMemberInfo(Long memberId) {
7665
memberInfo = new GetMemberInfoResponse(member.getName(), member.getEmail(), member.getProfileImageUrl(),
7766
member.getMemberType(), member.getSocialType(), trainerInfo, null);
7867
} else if (member.getMemberType() == TRAINEE) {
79-
Trainee trainee = traineeService.getTraineeWithMemberId(memberId);
80-
List<String> ptGoals = ptGoalService.getAllPtGoalsWithTraineeId(trainee.getId()).stream().map(
68+
Trainee trainee = traineeService.getByMemberId(memberId);
69+
List<String> ptGoals = ptGoalService.getAllByTraineeId(trainee.getId()).stream().map(
8170
PtGoal::getContent).toList();
8271
boolean isConnected = ptService.isPtTrainerTraineeExistWithTraineeId(trainee.getId());
8372

@@ -99,22 +88,29 @@ public CheckSessionResponse getMemberType(Long memberId) {
9988
boolean isConnected = false;
10089

10190
if (memberTypeDto.memberType() == TRAINER) {
102-
Trainer trainer = trainerService.getTrainerWithMemberId(memberId);
91+
Trainer trainer = trainerService.getByMemberId(memberId);
10392
isConnected = ptService.isPtTrainerTraineeExistWithTrainerId(trainer.getId());
10493
} else if (memberTypeDto.memberType() == TRAINEE) {
105-
Trainee trainee = traineeService.getTraineeWithMemberId(memberId);
94+
Trainee trainee = traineeService.getByMemberId(memberId);
10695
isConnected = ptService.isPtTrainerTraineeExistWithTraineeId(trainee.getId());
10796
}
10897

10998
return new CheckSessionResponse(memberTypeDto.memberType(), isConnected);
11099
}
111100

112-
public Member getMemberWithMemberId(Long memberId) {
101+
public void validateMemberNotExists(String socialId, SocialType socialType) {
102+
memberRepository.findBySocialIdAndSocialTypeAndDeletedAtIsNull(socialId, socialType)
103+
.ifPresent(member -> {
104+
throw new ConflictException(MEMBER_CONFLICT);
105+
});
106+
}
107+
108+
public Member getByMemberId(Long memberId) {
113109
return memberRepository.findByIdAndDeletedAtIsNull(memberId)
114110
.orElseThrow(() -> new NotFoundException(MEMBER_NOT_FOUND));
115111
}
116112

117-
public Member getMemberWithSocialIdAndSocialType(String socialId, SocialType socialType) {
113+
public Member getBySocialIdAndSocialType(String socialId, SocialType socialType) {
118114
return memberRepository.findBySocialIdAndSocialTypeAndDeletedAtIsNull(socialId, socialType)
119115
.orElseThrow(() -> new NotFoundException(MEMBER_NOT_FOUND));
120116
}

src/main/java/com/tnt/application/member/SignUpService.java

+15-11
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@
1212
import org.springframework.transaction.annotation.Transactional;
1313

1414
import com.tnt.application.trainee.PtGoalService;
15-
import com.tnt.application.trainee.TraineeService;
16-
import com.tnt.application.trainer.TrainerService;
1715
import com.tnt.domain.member.Member;
1816
import com.tnt.domain.member.MemberType;
1917
import com.tnt.domain.trainee.PtGoal;
@@ -22,6 +20,10 @@
2220
import com.tnt.dto.member.request.SignUpRequest;
2321
import com.tnt.dto.member.response.SignUpResponse;
2422
import com.tnt.gateway.service.SessionService;
23+
import com.tnt.infrastructure.mysql.repository.member.MemberRepository;
24+
import com.tnt.infrastructure.mysql.repository.pt.PtGoalRepository;
25+
import com.tnt.infrastructure.mysql.repository.trainee.TraineeRepository;
26+
import com.tnt.infrastructure.mysql.repository.trainer.TrainerRepository;
2527

2628
import lombok.RequiredArgsConstructor;
2729

@@ -31,10 +33,13 @@ public class SignUpService {
3133

3234
private final SessionService sessionService;
3335
private final MemberService memberService;
34-
private final TrainerService trainerService;
35-
private final TraineeService traineeService;
3636
private final PtGoalService ptGoalService;
3737

38+
private final MemberRepository memberRepository;
39+
private final TrainerRepository trainerRepository;
40+
private final TraineeRepository traineeRepository;
41+
private final PtGoalRepository ptGoalRepository;
42+
3843
@Transactional
3944
public Long signUp(SignUpRequest request) {
4045
memberService.validateMemberNotExists(request.socialId(), request.socialType());
@@ -47,9 +52,8 @@ public Long signUp(SignUpRequest request) {
4752
}
4853

4954
@Transactional
50-
public SignUpResponse finishSignUpWithImage(String profileImageUrl, Long memberId, MemberType memberType) {
51-
Member member = memberService.getMemberWithMemberId(memberId);
52-
55+
public SignUpResponse finishSignUpAfterImageUpload(String profileImageUrl, Long memberId, MemberType memberType) {
56+
Member member = memberService.getByMemberId(memberId);
5357
member.updateProfileImageUrl(profileImageUrl);
5458

5559
String sessionId = String.valueOf(getTsid());
@@ -65,7 +69,7 @@ private Long createTrainer(SignUpRequest request) {
6569
.member(member)
6670
.build();
6771

68-
trainerService.saveTrainer(trainer);
72+
trainerRepository.save(trainer);
6973

7074
return member.getId();
7175
}
@@ -79,7 +83,7 @@ private Long createTrainee(SignUpRequest request) {
7983
.cautionNote(request.cautionNote())
8084
.build();
8185

82-
trainee = traineeService.saveTrainee(trainee);
86+
trainee = traineeRepository.save(trainee);
8387

8488
createPtGoals(trainee, request.goalContents());
8589

@@ -101,7 +105,7 @@ private Member createMember(SignUpRequest request, String defaultImageUrl, Membe
101105
.memberType(memberType)
102106
.build();
103107

104-
return memberService.saveMember(member);
108+
return memberRepository.save(member);
105109
}
106110

107111
private void createPtGoals(Trainee trainee, List<String> goalContents) {
@@ -112,6 +116,6 @@ private void createPtGoals(Trainee trainee, List<String> goalContents) {
112116
.build())
113117
.toList();
114118

115-
ptGoalService.saveAllPtGoals(ptGoals);
119+
ptGoalRepository.saveAll(ptGoals);
116120
}
117121
}

src/main/java/com/tnt/application/member/WithdrawService.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public class WithdrawService {
4040

4141
@Transactional
4242
public WithdrawDto withdraw(Long memberId) {
43-
Member member = memberService.getMemberWithMemberId(memberId);
43+
Member member = memberService.getByMemberId(memberId);
4444

4545
deleteMemberData(member);
4646

@@ -51,7 +51,7 @@ public WithdrawDto withdraw(Long memberId) {
5151

5252
private void deleteMemberData(Member member) {
5353
if (member.getMemberType() == TRAINER) {
54-
Trainer trainer = trainerService.getTrainerWithMemberId(member.getId());
54+
Trainer trainer = trainerService.getByMemberId(member.getId());
5555

5656
if (ptService.isPtTrainerTraineeExistWithTrainerId(trainer.getId())) {
5757
List<PtTrainerTrainee> ptTrainerTrainee = ptService.getAllPtTrainerTraineeWithTrainerId(
@@ -69,9 +69,9 @@ private void deleteMemberData(Member member) {
6969
}
7070

7171
if (member.getMemberType() == TRAINEE) {
72-
Trainee trainee = traineeService.getTraineeWithMemberId(member.getId());
73-
List<PtGoal> ptGoals = ptGoalService.getAllPtGoalsWithTraineeId(trainee.getId());
74-
List<Diet> diets = dietService.getAllDietsWithTraineeId(trainee.getId());
72+
Trainee trainee = traineeService.getByMemberId(member.getId());
73+
List<PtGoal> ptGoals = ptGoalService.getAllByTraineeId(trainee.getId());
74+
List<Diet> diets = dietService.getAllByTraineeId(trainee.getId());
7575

7676
if (ptService.isPtTrainerTraineeExistWithTraineeId(trainee.getId())) {
7777
try {

src/main/java/com/tnt/application/pt/PtService.java

+23-45
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.tnt.application.pt;
22

33
import static com.tnt.common.error.model.ErrorMessage.DIET_DUPLICATE_TIME;
4+
import static com.tnt.common.error.model.ErrorMessage.PT_LESSON_CREATE_BEFORE_START;
45
import static com.tnt.common.error.model.ErrorMessage.PT_LESSON_DUPLICATE_TIME;
56
import static com.tnt.common.error.model.ErrorMessage.PT_LESSON_MORE_THAN_ONE_A_DAY;
67
import static com.tnt.common.error.model.ErrorMessage.PT_LESSON_NOT_FOUND;
@@ -37,9 +38,6 @@
3738
import com.tnt.domain.trainer.Trainer;
3839
import com.tnt.dto.trainee.TraineeProjection;
3940
import com.tnt.dto.trainee.request.ConnectWithTrainerRequest;
40-
import com.tnt.dto.trainee.request.CreateDietRequest;
41-
import com.tnt.dto.trainee.response.CreateDietResponse;
42-
import com.tnt.dto.trainee.response.GetDietResponse;
4341
import com.tnt.dto.trainee.response.GetTraineeCalendarPtLessonCountResponse;
4442
import com.tnt.dto.trainee.response.GetTraineeDailyRecordsResponse;
4543
import com.tnt.dto.trainer.ConnectWithTrainerDto;
@@ -57,6 +55,7 @@
5755
import com.tnt.infrastructure.mysql.repository.pt.PtLessonSearchRepository;
5856
import com.tnt.infrastructure.mysql.repository.pt.PtTrainerTraineeRepository;
5957
import com.tnt.infrastructure.mysql.repository.pt.PtTrainerTraineeSearchRepository;
58+
import com.tnt.infrastructure.mysql.repository.trainee.DietRepository;
6059

6160
import lombok.RequiredArgsConstructor;
6261

@@ -73,11 +72,12 @@ public class PtService {
7372
private final PtTrainerTraineeSearchRepository ptTrainerTraineeSearchRepository;
7473
private final PtLessonRepository ptLessonRepository;
7574
private final PtLessonSearchRepository ptLessonSearchRepository;
75+
private final DietRepository dietRepository;
7676

7777
@Transactional
7878
public ConnectWithTrainerDto connectWithTrainer(Long memberId, ConnectWithTrainerRequest request) {
79-
Trainer trainer = trainerService.getTrainerWithInvitationCode(request.invitationCode());
80-
Trainee trainee = traineeService.getTraineeWithMemberId(memberId);
79+
Trainer trainer = trainerService.getByInvitationCode(request.invitationCode());
80+
Trainee trainee = traineeService.getByMemberId(memberId);
8181

8282
validateNotAlreadyConnected(trainer.getId(), trainee.getId());
8383

@@ -103,13 +103,13 @@ public ConnectWithTraineeResponse getFirstTrainerTraineeConnect(Long memberId, L
103103
Long traineeId) {
104104
validateIfNotConnected(trainerId, traineeId);
105105

106-
Trainer trainer = trainerService.getTrainerWithMemberId(memberId);
107-
Trainee trainee = traineeService.getTraineeWithId(traineeId);
106+
Trainer trainer = trainerService.getByMemberId(memberId);
107+
Trainee trainee = traineeService.getByTraineeId(traineeId);
108108

109109
Member trainerMember = trainer.getMember(); // fetch join 으로 가져온 member
110110
Member traineeMember = trainee.getMember(); // fetch join 으로 가져온 member
111111

112-
List<PtGoal> ptGoals = ptGoalService.getAllPtGoalsWithTraineeId(traineeId);
112+
List<PtGoal> ptGoals = ptGoalService.getAllByTraineeId(traineeId);
113113
String ptGoal = ptGoals.stream().map(PtGoal::getContent).collect(Collectors.joining(", "));
114114

115115
return new ConnectWithTraineeResponse(
@@ -121,7 +121,7 @@ public ConnectWithTraineeResponse getFirstTrainerTraineeConnect(Long memberId, L
121121

122122
@Transactional(readOnly = true)
123123
public GetPtLessonsOnDateResponse getPtLessonsOnDate(Long memberId, LocalDate date) {
124-
Trainer trainer = trainerService.getTrainerWithMemberId(memberId);
124+
Trainer trainer = trainerService.getByMemberId(memberId);
125125

126126
List<PtLesson> ptLessons = ptLessonSearchRepository.findAllByTrainerIdAndDate(trainer.getId(), date);
127127

@@ -140,7 +140,7 @@ public GetPtLessonsOnDateResponse getPtLessonsOnDate(Long memberId, LocalDate da
140140

141141
@Transactional(readOnly = true)
142142
public GetCalendarPtLessonCountResponse getCalendarPtLessonCount(Long memberId, Integer year, Integer month) {
143-
Trainer trainer = trainerService.getTrainerWithMemberId(memberId);
143+
Trainer trainer = trainerService.getByMemberId(memberId);
144144

145145
List<PtLesson> ptLessons = ptLessonSearchRepository.findAllByTraineeIdForTrainerCalendar(trainer.getId(), year,
146146
month);
@@ -160,7 +160,7 @@ public GetCalendarPtLessonCountResponse getCalendarPtLessonCount(Long memberId,
160160

161161
@Transactional(readOnly = true)
162162
public GetActiveTraineesResponse getActiveTrainees(Long memberId) {
163-
Trainer trainer = trainerService.getTrainerWithMemberId(memberId);
163+
Trainer trainer = trainerService.getByMemberId(memberId);
164164

165165
List<Trainee> trainees = ptTrainerTraineeSearchRepository.findAllTrainees(trainer.getId());
166166

@@ -169,7 +169,7 @@ public GetActiveTraineesResponse getActiveTrainees(Long memberId) {
169169
trainee.getId())
170170
.orElseThrow(() -> new NotFoundException(TRAINEE_NOT_FOUND));
171171

172-
List<String> ptGoals = ptGoalService.getAllPtGoalsWithTraineeId(trainee.getId())
172+
List<String> ptGoals = ptGoalService.getAllByTraineeId(trainee.getId())
173173
.stream()
174174
.map(PtGoal::getContent)
175175
.toList();
@@ -216,43 +216,17 @@ public void completePtLesson(Long memberId, Long ptLessonId) {
216216
ptLesson.completeLesson(ptTrainerTrainee.getFinishedPtCount());
217217
}
218218

219-
@Transactional
220-
public CreateDietResponse createDiet(Long traineeId, CreateDietRequest request, String dietImageUrl) {
221-
Diet diet = Diet.builder()
222-
.traineeId(traineeId)
223-
.date(request.date())
224-
.dietImageUrl(dietImageUrl)
225-
.memo(request.memo())
226-
.dietType(request.dietType())
227-
.build();
228-
229-
Diet saveDiet = dietService.save(diet);
230-
231-
return new CreateDietResponse(saveDiet.getId(), saveDiet.getDate(), saveDiet.getDietImageUrl(),
232-
saveDiet.getDietType(), saveDiet.getMemo());
233-
}
234-
235-
@Transactional(readOnly = true)
236-
public GetDietResponse getDiet(Long memberId, Long dietId) {
237-
Trainee trainee = traineeService.getTraineeWithMemberId(memberId);
238-
239-
Diet diet = dietService.getDietWithTraineeIdAndDietId(dietId, trainee.getId());
240-
241-
return new GetDietResponse(diet.getId(), diet.getDate(), diet.getDietImageUrl(), diet.getDietType(),
242-
diet.getMemo());
243-
}
244-
245219
@Transactional(readOnly = true)
246220
public GetTraineeCalendarPtLessonCountResponse getTraineeCalendarPtLessonCount(Long memberId, LocalDate startDate,
247221
LocalDate endDate) {
248-
Trainee trainee = traineeService.getTraineeWithMemberId(memberId);
222+
Trainee trainee = traineeService.getByMemberId(memberId);
249223

250224
// 기간 내 PT 수업 조회
251225
List<PtLesson> ptLessons = ptLessonSearchRepository.findAllByTraineeIdForTraineeCalendar(trainee.getId(),
252226
startDate, endDate);
253227

254228
// 기간 내 식단 조회
255-
List<Diet> diets = dietService.getDietsWithTraineeIdForTraineeCalendar(trainee.getId(), startDate, endDate);
229+
List<Diet> diets = dietService.getAllByTraineeIdForTraineeCalendar(trainee.getId(), startDate, endDate);
256230

257231
// Mapping
258232
List<LocalDate> dates = Stream.concat(
@@ -272,7 +246,7 @@ public GetTraineeCalendarPtLessonCountResponse getTraineeCalendarPtLessonCount(L
272246

273247
@Transactional(readOnly = true)
274248
public GetTraineeDailyRecordsResponse getDailyRecords(Long memberId, LocalDate date) {
275-
Trainee trainee = traineeService.getTraineeWithMemberIdNoFetch(memberId);
249+
Trainee trainee = traineeService.getByMemberIdNoFetch(memberId);
276250

277251
// PT 정보 조회
278252
TraineeProjection.PtInfoDto ptResult = ptLessonSearchRepository.findAllByTraineeIdForDaily(trainee.getId(),
@@ -285,7 +259,7 @@ public GetTraineeDailyRecordsResponse getDailyRecords(Long memberId, LocalDate d
285259
ptResult.session(), ptResult.lessonStart(), ptResult.lessonEnd());
286260

287261
// 식단 정보 조회
288-
List<Diet> diets = dietService.getDietsWithTraineeIdForDaily(trainee.getId(), date);
262+
List<Diet> diets = dietService.getAllByTraineeIdForDaily(trainee.getId(), date);
289263

290264
// 식단 정보 Mapping to DietRecord
291265
List<GetTraineeDailyRecordsResponse.DietRecord> dietRecords = diets.stream()
@@ -296,10 +270,10 @@ public GetTraineeDailyRecordsResponse getDailyRecords(Long memberId, LocalDate d
296270
return new GetTraineeDailyRecordsResponse(date, ptInfo, dietRecords);
297271
}
298272

299-
public Long validateDuplicationDiet(Long memberId, LocalDateTime date) {
300-
Trainee trainee = traineeService.getTraineeWithMemberId(memberId);
273+
public Long validateDietDuplicateAndGetTraineeId(Long memberId, LocalDateTime date) {
274+
Trainee trainee = traineeService.getByMemberId(memberId);
301275

302-
if (dietService.isDietExistWithTraineeIdAndDate(trainee.getId(), date)) {
276+
if (dietService.isDietExistByTraineeIdAndDate(trainee.getId(), date)) {
303277
throw new ConflictException(DIET_DUPLICATE_TIME);
304278
}
305279

@@ -358,6 +332,10 @@ private void validateIfNotConnected(Long trainerId, Long traineeId) {
358332
}
359333

360334
private void validateLessonTime(PtTrainerTrainee ptTrainerTrainee, LocalDateTime start, LocalDateTime end) {
335+
if (ptTrainerTrainee.getStartedAt().isAfter(start.toLocalDate())) {
336+
throw new BadRequestException(PT_LESSON_CREATE_BEFORE_START);
337+
}
338+
361339
if (ptLessonSearchRepository.existsByStartAndEnd(ptTrainerTrainee, start, end)) {
362340
throw new ConflictException(PT_LESSON_DUPLICATE_TIME);
363341
}

src/main/java/com/tnt/application/s3/S3Service.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ public String uploadImage(String defaultImage, String folderPath, @Nullable Mult
8282
byte[] processedImage = processImage(image, extension);
8383
sw.stop();
8484

85-
log.info("========== 이미지 처리 시간: {}ms ==========", sw.getTotalTimeMillis());
85+
log.debug("========== 이미지 처리 시간: {}ms ==========", sw.getTotalTimeMillis());
8686

8787
return s3Adapter.uploadFile(processedImage, folderPath, extension);
8888
} catch (Exception e) {

0 commit comments

Comments
 (0)