Skip to content

Commit 189622f

Browse files
authored
[#27] refactor: 전체적인 구조 리팩토링 (#30)
* refactor: config 위치 변경 * refactor: config 위치 변경으로 인해 import 변경 * refactor: MemberType 추가 - SocialType으로 모든 로그인 타입 변경 (String) * refactor: 테스트 코드 수정 * refactor: 상수 위치 변경 * refactor: global -> common으로 변경 - 인증의 책임을 gateway로 모음 * refactor: 테스트 코드 패키지에 맞게 위치 변경 * refactor: config update * refactor: 기존 회원 로그인 시에도 정보 리턴
1 parent 5890ed1 commit 189622f

70 files changed

Lines changed: 430 additions & 498 deletions

File tree

Some content is hidden

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

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

Lines changed: 34 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
package com.tnt.application.member;
22

3-
import static com.tnt.domain.constant.Constant.TRAINEE;
4-
import static com.tnt.domain.constant.Constant.TRAINEE_DEFAULT_IMAGE;
5-
import static com.tnt.domain.constant.Constant.TRAINER;
6-
import static com.tnt.domain.constant.Constant.TRAINER_DEFAULT_IMAGE;
7-
import static com.tnt.global.error.model.ErrorMessage.MEMBER_CONFLICT;
8-
import static com.tnt.global.error.model.ErrorMessage.MEMBER_NOT_FOUND;
9-
import static com.tnt.global.error.model.ErrorMessage.UNSUPPORTED_MEMBER_TYPE;
3+
import static com.tnt.common.constant.ProfileConstant.TRAINEE_DEFAULT_IMAGE;
4+
import static com.tnt.common.constant.ProfileConstant.TRAINER_DEFAULT_IMAGE;
5+
import static com.tnt.common.error.model.ErrorMessage.MEMBER_CONFLICT;
6+
import static com.tnt.common.error.model.ErrorMessage.MEMBER_NOT_FOUND;
7+
import static com.tnt.common.error.model.ErrorMessage.UNSUPPORTED_MEMBER_TYPE;
8+
import static com.tnt.domain.member.MemberType.TRAINEE;
9+
import static com.tnt.domain.member.MemberType.TRAINER;
1010
import static io.hypersistence.tsid.TSID.Factory.getTsid;
1111
import static io.micrometer.common.util.StringUtils.isNotBlank;
1212

@@ -15,16 +15,17 @@
1515
import org.springframework.stereotype.Service;
1616
import org.springframework.transaction.annotation.Transactional;
1717

18-
import com.tnt.application.auth.SessionService;
18+
import com.tnt.common.error.exception.ConflictException;
19+
import com.tnt.common.error.exception.NotFoundException;
1920
import com.tnt.domain.member.Member;
21+
import com.tnt.domain.member.MemberType;
2022
import com.tnt.domain.member.SocialType;
2123
import com.tnt.domain.trainee.PtGoal;
2224
import com.tnt.domain.trainee.Trainee;
2325
import com.tnt.domain.trainer.Trainer;
2426
import com.tnt.dto.member.request.SignUpRequest;
2527
import com.tnt.dto.member.response.SignUpResponse;
26-
import com.tnt.global.error.exception.ConflictException;
27-
import com.tnt.global.error.exception.NotFoundException;
28+
import com.tnt.gateway.service.SessionService;
2829
import com.tnt.infrastructure.mysql.repository.member.MemberRepository;
2930
import com.tnt.infrastructure.mysql.repository.trainee.PtGoalRepository;
3031
import com.tnt.infrastructure.mysql.repository.trainee.TraineeRepository;
@@ -55,7 +56,7 @@ public Long signUp(SignUpRequest request) {
5556
}
5657

5758
@Transactional
58-
public SignUpResponse finishSignUpWithImage(String profileImageUrl, Long memberId, String memberType) {
59+
public SignUpResponse finishSignUpWithImage(String profileImageUrl, Long memberId, MemberType memberType) {
5960
Member member = memberRepository.findByIdAndDeletedAtIsNull(memberId)
6061
.orElseThrow(() -> new NotFoundException(MEMBER_NOT_FOUND));
6162

@@ -68,32 +69,15 @@ public SignUpResponse finishSignUpWithImage(String profileImageUrl, Long memberI
6869
return new SignUpResponse(memberType, sessionId, member.getName(), member.getProfileImageUrl());
6970
}
7071

71-
private void validateMemberNotExists(String socialId, String socialType) {
72-
memberRepository.findBySocialIdAndSocialTypeAndDeletedAtIsNull(socialId, SocialType.valueOf(socialType))
72+
private void validateMemberNotExists(String socialId, SocialType socialType) {
73+
memberRepository.findBySocialIdAndSocialTypeAndDeletedAtIsNull(socialId, socialType)
7374
.ifPresent(member -> {
7475
throw new ConflictException(MEMBER_CONFLICT);
7576
});
7677
}
7778

78-
private Member createMember(SignUpRequest request, String defaultImageUrl) {
79-
Member member = Member.builder()
80-
.socialId(request.socialId())
81-
.fcmToken(request.fcmToken())
82-
.email(request.socialEmail())
83-
.name(request.name())
84-
.profileImageUrl(defaultImageUrl)
85-
.birthday(request.birthday())
86-
.serviceAgreement(request.serviceAgreement())
87-
.collectionAgreement(request.collectionAgreement())
88-
.advertisementAgreement(request.advertisementAgreement())
89-
.socialType(SocialType.valueOf(request.socialType()))
90-
.build();
91-
92-
return memberRepository.save(member);
93-
}
94-
9579
private Long createTrainer(SignUpRequest request) {
96-
Member member = createMember(request, TRAINER_DEFAULT_IMAGE);
80+
Member member = createMember(request, TRAINER_DEFAULT_IMAGE, TRAINER);
9781
Trainer trainer = Trainer.builder()
9882
.member(member)
9983
.build();
@@ -104,7 +88,7 @@ private Long createTrainer(SignUpRequest request) {
10488
}
10589

10690
private Long createTrainee(SignUpRequest request) {
107-
Member member = createMember(request, TRAINEE_DEFAULT_IMAGE);
91+
Member member = createMember(request, TRAINEE_DEFAULT_IMAGE, TRAINEE);
10892
Trainee trainee = Trainee.builder()
10993
.member(member)
11094
.height(request.height())
@@ -119,6 +103,24 @@ private Long createTrainee(SignUpRequest request) {
119103
return member.getId();
120104
}
121105

106+
private Member createMember(SignUpRequest request, String defaultImageUrl, MemberType memberType) {
107+
Member member = Member.builder()
108+
.socialId(request.socialId())
109+
.fcmToken(request.fcmToken())
110+
.email(request.socialEmail())
111+
.name(request.name())
112+
.profileImageUrl(defaultImageUrl)
113+
.birthday(request.birthday())
114+
.serviceAgreement(request.serviceAgreement())
115+
.collectionAgreement(request.collectionAgreement())
116+
.advertisementAgreement(request.advertisementAgreement())
117+
.socialType(request.socialType())
118+
.memberType(memberType)
119+
.build();
120+
121+
return memberRepository.save(member);
122+
}
123+
122124
private void createPtGoals(Trainee trainee, List<String> goalContents) {
123125
List<PtGoal> ptGoals = goalContents.stream()
124126
.map(content -> PtGoal.builder()

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.tnt.application.pt;
22

3-
import static com.tnt.global.error.model.ErrorMessage.PT_TRAINEE_ALREADY_EXIST;
4-
import static com.tnt.global.error.model.ErrorMessage.PT_TRAINER_TRAINEE_ALREADY_EXIST;
3+
import static com.tnt.common.error.model.ErrorMessage.PT_TRAINEE_ALREADY_EXIST;
4+
import static com.tnt.common.error.model.ErrorMessage.PT_TRAINER_TRAINEE_ALREADY_EXIST;
55
import static java.util.Objects.isNull;
66

77
import java.time.LocalDate;
@@ -12,6 +12,9 @@
1212

1313
import com.tnt.application.trainee.TraineeService;
1414
import com.tnt.application.trainer.TrainerService;
15+
import com.tnt.common.error.exception.ConflictException;
16+
import com.tnt.common.error.exception.NotFoundException;
17+
import com.tnt.common.error.model.ErrorMessage;
1518
import com.tnt.domain.member.Member;
1619
import com.tnt.domain.pt.PtTrainerTrainee;
1720
import com.tnt.domain.trainee.PtGoal;
@@ -20,9 +23,6 @@
2023
import com.tnt.dto.trainer.ConnectWithTrainerDto;
2124
import com.tnt.dto.trainer.request.ConnectWithTrainerRequest;
2225
import com.tnt.dto.trainer.response.ConnectWithTraineeResponse;
23-
import com.tnt.global.error.exception.ConflictException;
24-
import com.tnt.global.error.exception.NotFoundException;
25-
import com.tnt.global.error.model.ErrorMessage;
2626
import com.tnt.infrastructure.mysql.repository.pt.PtTrainerTraineeRepository;
2727
import com.tnt.infrastructure.mysql.repository.trainee.PtGoalRepository;
2828

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

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package com.tnt.application.s3;
22

3-
import static com.tnt.domain.constant.Constant.*;
4-
import static com.tnt.global.error.model.ErrorMessage.IMAGE_NOT_FOUND;
5-
import static com.tnt.global.error.model.ErrorMessage.IMAGE_NOT_SUPPORT;
6-
import static com.tnt.global.error.model.ErrorMessage.UNSUPPORTED_MEMBER_TYPE;
3+
import static com.tnt.common.constant.ProfileConstant.TRAINEE_DEFAULT_IMAGE;
4+
import static com.tnt.common.constant.ProfileConstant.TRAINEE_S3_PROFILE_PATH;
5+
import static com.tnt.common.constant.ProfileConstant.TRAINER_DEFAULT_IMAGE;
6+
import static com.tnt.common.constant.ProfileConstant.TRAINER_S3_PROFILE_PATH;
7+
import static com.tnt.common.error.model.ErrorMessage.IMAGE_NOT_FOUND;
8+
import static com.tnt.common.error.model.ErrorMessage.IMAGE_NOT_SUPPORT;
9+
import static com.tnt.common.error.model.ErrorMessage.UNSUPPORTED_MEMBER_TYPE;
710
import static java.util.Objects.isNull;
811

912
import java.awt.image.BufferedImage;
@@ -20,7 +23,8 @@
2023

2124
import net.coobird.thumbnailator.Thumbnails;
2225

23-
import com.tnt.global.error.exception.ImageException;
26+
import com.tnt.common.error.exception.ImageException;
27+
import com.tnt.domain.member.MemberType;
2428
import com.tnt.infrastructure.s3.S3Adapter;
2529

2630
import lombok.RequiredArgsConstructor;
@@ -36,7 +40,7 @@ public class S3Service {
3640

3741
private final S3Adapter s3Adapter;
3842

39-
public String uploadProfileImage(@Nullable MultipartFile profileImage, String memberType) {
43+
public String uploadProfileImage(@Nullable MultipartFile profileImage, MemberType memberType) {
4044
String defaultImage;
4145
String folderPath;
4246

src/main/java/com/tnt/application/trainee/TraineeService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
package com.tnt.application.trainee;
22

3-
import static com.tnt.global.error.model.ErrorMessage.TRAINEE_NOT_FOUND;
3+
import static com.tnt.common.error.model.ErrorMessage.TRAINEE_NOT_FOUND;
44

55
import org.springframework.stereotype.Service;
66
import org.springframework.transaction.annotation.Transactional;
77

8+
import com.tnt.common.error.exception.NotFoundException;
89
import com.tnt.domain.trainee.Trainee;
9-
import com.tnt.global.error.exception.NotFoundException;
1010
import com.tnt.infrastructure.mysql.repository.trainee.TraineeSearchRepository;
1111

1212
import lombok.RequiredArgsConstructor;

src/main/java/com/tnt/application/trainer/TrainerService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
package com.tnt.application.trainer;
22

3-
import static com.tnt.global.error.model.ErrorMessage.TRAINER_NOT_FOUND;
3+
import static com.tnt.common.error.model.ErrorMessage.TRAINER_NOT_FOUND;
44

55
import org.springframework.stereotype.Service;
66
import org.springframework.transaction.annotation.Transactional;
77

8+
import com.tnt.common.error.exception.NotFoundException;
89
import com.tnt.domain.trainer.Trainer;
910
import com.tnt.dto.trainer.response.InvitationCodeResponse;
1011
import com.tnt.dto.trainer.response.InvitationCodeVerifyResponse;
11-
import com.tnt.global.error.exception.NotFoundException;
1212
import com.tnt.infrastructure.mysql.repository.trainer.TrainerRepository;
1313
import com.tnt.infrastructure.mysql.repository.trainer.TrainerSearchRepository;
1414

src/main/java/com/tnt/global/config/JpaConfig.java renamed to src/main/java/com/tnt/common/config/JpaConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.tnt.global.config;
1+
package com.tnt.common.config;
22

33
import org.springframework.context.annotation.Bean;
44
import org.springframework.context.annotation.Configuration;

src/main/java/com/tnt/global/config/SwaggerConfig.java renamed to src/main/java/com/tnt/common/config/SwaggerConfig.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.tnt.global.config;
1+
package com.tnt.common.config;
22

33
import org.springframework.context.annotation.Bean;
44
import org.springframework.context.annotation.Configuration;
@@ -13,7 +13,7 @@
1313

1414
@Configuration
1515
@Profile("dev")
16-
@OpenAPIDefinition(servers = {@Server(url = "http://dev-api.tntapp.co.kr")})
16+
@OpenAPIDefinition(servers = {@Server(url = "https://dev-api.tntapp.co.kr")})
1717
public class SwaggerConfig {
1818

1919
@Bean

src/main/java/com/tnt/global/config/WebClientConfig.java renamed to src/main/java/com/tnt/common/config/WebClientConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.tnt.global.config;
1+
package com.tnt.common.config;
22

33
import org.springframework.context.annotation.Bean;
44
import org.springframework.context.annotation.Configuration;

src/main/java/com/tnt/global/config/WebMvcConfig.java renamed to src/main/java/com/tnt/common/config/WebMvcConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.tnt.global.config;
1+
package com.tnt.common.config;
22

33
import java.util.List;
44

src/main/java/com/tnt/domain/constant/Constant.java renamed to src/main/java/com/tnt/common/constant/ProfileConstant.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,13 @@
1-
package com.tnt.domain.constant;
1+
package com.tnt.common.constant;
22

33
import lombok.AccessLevel;
44
import lombok.NoArgsConstructor;
55

66
@NoArgsConstructor(access = AccessLevel.PRIVATE)
7-
public class Constant {
7+
public class ProfileConstant {
88

9-
public static final String KAKAO = "KAKAO";
10-
public static final String APPLE = "APPLE";
11-
public static final String TRAINER = "trainer";
12-
public static final String TRAINEE = "trainee";
139
public static final String TRAINER_DEFAULT_IMAGE = "https://images.tntapp.co.kr/profiles/trainers/basic_profile_trainer.svg";
1410
public static final String TRAINEE_DEFAULT_IMAGE = "https://images.tntapp.co.kr/profiles/trainees/basic_profile_trainee.svg";
15-
public static final String IMAGE_BASE_URL = "https://images.tntapp.co.kr/";
1611
public static final String TRAINER_S3_PROFILE_PATH = "profiles/trainers";
1712
public static final String TRAINEE_S3_PROFILE_PATH = "profiles/trainees";
1813
}

0 commit comments

Comments
 (0)