Skip to content

Commit d16d016

Browse files
authored
refactor : 유저 이미지 변경도 유저 정보 수정에 포함 (#179)
* refactor : 유저 이미지 변경도 유저 정보 수정에 포함 * refactor : 깃허브 auto push 여부 선택 시, 유저의 레포와 브랜치 노출. 선택된 값이 없으면 null 출력 * refactor : 이미지 업로드 로직 변경
1 parent d712e78 commit d16d016

File tree

6 files changed

+31
-44
lines changed

6 files changed

+31
-44
lines changed

src/main/java/org/ezcode/codetest/application/usermanagement/user/dto/request/ModifyUserInfoRequest.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,6 @@ public record ModifyUserInfoRequest(
1313
@Schema(description = "블로그 주소", example = "https://blog.example.com")
1414
String blogUrl,
1515

16-
@Schema(description = "프로필 이미지 URL", example = "https://cdn.example.com/images/profile.jpg")
17-
String profileImageUrl,
18-
1916
@Schema(description = "자기소개", example = "안녕하세요, 백엔드 개발자입니다.")
2017
String introduction,
2118

src/main/java/org/ezcode/codetest/application/usermanagement/user/dto/response/UserGitubAutoPushResponse.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,8 @@ public class UserGitubAutoPushResponse {
1212
private final String message;
1313
@Schema(description = "현재 상태", example = "true")
1414
private final boolean gitPushStatus;
15+
@Schema(description = "선택된 레포", example = "myRepo")
16+
private final String githubRepoName;
17+
@Schema(description = "선택된 브랜치", example = "dev")
18+
private final String branch;
1519
}

src/main/java/org/ezcode/codetest/application/usermanagement/user/service/UserService.java

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -73,16 +73,26 @@ public UserInfoResponse getUserInfo(AuthUser authUser) {
7373
}
7474

7575
@Transactional
76-
public UserInfoResponse modifyUserInfo(AuthUser authUser, ModifyUserInfoRequest modifyUserInfoRequest) {
76+
public UserInfoResponse modifyUserInfo(AuthUser authUser, ModifyUserInfoRequest request, MultipartFile image) {
7777
User user = userDomainService.getUserById(authUser.getId());
7878

7979
user.modifyUserInfo(
80-
modifyUserInfoRequest.nickname(),
81-
modifyUserInfoRequest.githubUrl(),
82-
modifyUserInfoRequest.blogUrl(),
83-
modifyUserInfoRequest.profileImageUrl(),
84-
modifyUserInfoRequest.introduction(),
85-
modifyUserInfoRequest.age());
80+
request.nickname(),
81+
request.githubUrl(),
82+
request.blogUrl(),
83+
request.introduction(),
84+
request.age());
85+
86+
if (image != null && !image.isEmpty()) {
87+
String profileImageUrl = uploadProfileImage(image);
88+
String oldImageUrl = user.getProfileImageUrl();
89+
90+
user.modifyProfileImage(profileImageUrl);
91+
if (oldImageUrl!=null) {
92+
s3Uploader.delete(user.getProfileImageUrl(), "profile");
93+
}
94+
95+
}
8696

8797
return UserInfoResponse.builder()
8898
.username(user.getUsername())
@@ -142,18 +152,6 @@ public void resetAllUsersTokensWeekly(LocalDateTime startDateTime, LocalDateTime
142152
userDomainService.resetReviewTokensForUsers(UsersByWeek.from(counts, weekLength));
143153
}
144154

145-
@Transactional
146-
public UserProfileImageResponse uploadUserProfileImage(AuthUser authUser, MultipartFile image) {
147-
User user = userDomainService.getUserById(authUser.getId());
148-
if (user.getProfileImageUrl()!=null) {
149-
s3Uploader.delete(user.getProfileImageUrl(), "profile");
150-
}
151-
String profileImageUrl = uploadProfileImage(image);
152-
153-
user.modifyProfileImage(profileImageUrl);
154-
return new UserProfileImageResponse(profileImageUrl);
155-
}
156-
157155
private String uploadProfileImage(MultipartFile image) {
158156
try {
159157
return s3Uploader.upload(image, S3Directory.PROFILE.getDir());

src/main/java/org/ezcode/codetest/domain/user/model/entity/User.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,11 +152,10 @@ public User(String email, String password, String username, String nickname,
152152
유저 정보 업데이트
153153
- 만약 입력 값이 없다면, 기존 값 유지
154154
*/
155-
public void modifyUserInfo(String nickname, String githubUrl, String blogUrl, String profileImageUrl, String introduction, Integer age){
155+
public void modifyUserInfo(String nickname, String githubUrl, String blogUrl, String introduction, Integer age){
156156
this.nickname = (nickname == null || nickname.isBlank()) ? this.nickname : nickname;
157157
this.githubUrl = (githubUrl == null || githubUrl.isBlank()) ? this.githubUrl : githubUrl;
158158
this.blogUrl = (blogUrl == null || blogUrl.isBlank()) ? this.blogUrl : blogUrl;
159-
this.profileImageUrl = (profileImageUrl == null || profileImageUrl.isBlank()) ? this.profileImageUrl : profileImageUrl;
160159
this.introduction = (introduction == null || introduction.isBlank()) ? this.introduction : introduction;
161160
this.age = (age == null) ? this.age : age;
162161
}

src/main/java/org/ezcode/codetest/domain/user/service/UserGithubService.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -90,9 +90,9 @@ public List<UserGithubRepoResponse> getGithubRepos(AuthUser authUser) throws Exc
9090
@Transactional
9191
public UserGithubRepoResponse selectGithubRepo(AuthUser authUser, UserGithubRepoSelectRequest request) throws
9292
Exception {
93-
UserGithubInfo userGithub = userGithubInfoRepository.getUserGithubInfo(authUser.getId());
93+
UserGithubInfo userGithubInfo = userGithubInfoRepository.getUserGithubInfo(authUser.getId());
9494

95-
if (userGithub == null) {
95+
if (userGithubInfo == null) {
9696
throw new UserException(UserExceptionCode.NO_GITHUB_INFO);
9797
}
9898

@@ -103,11 +103,11 @@ public UserGithubRepoResponse selectGithubRepo(AuthUser authUser, UserGithubRepo
103103
.findFirst()
104104
.orElseThrow(() -> new UserException(UserExceptionCode.NO_GITHUB_REPO));
105105

106-
userGithub.setGithubRepo(request.repositoryName(), selectedRepo.getDefaultBranch());
106+
userGithubInfo.setGithubRepo(request.repositoryName(), selectedRepo.getDefaultBranch());
107107

108-
userGithubInfoRepository.updateGithubInfo(userGithub);
108+
userGithubInfoRepository.updateGithubInfo(userGithubInfo);
109109

110-
User user = userGithub.getUser();
110+
User user = userGithubInfo.getUser();
111111
user.setGitPushStatus(true); //레포를 선택하면 자동으로 push 설정이 true
112112

113113
return selectedRepo;
@@ -124,7 +124,7 @@ public UserGitubAutoPushResponse changeAutoPushSetting(AuthUser authUser) {
124124
user.setGitPushStatus(!userGitPushStatus);
125125
log.info("기존 status: {} || 변경 status : {}", userGitPushStatus, user.getGitPushStatus());
126126

127-
return new UserGitubAutoPushResponse("변경되었습니다", user.getGitPushStatus());
127+
return new UserGitubAutoPushResponse("변경되었습니다", user.getGitPushStatus(), userGithubInfo.getRepo(), userGithubInfo.getBranch());
128128
}
129129

130130
public UserGitubAutoPushResponse getAutoPushStatus(AuthUser authUser) {
@@ -133,6 +133,6 @@ public UserGitubAutoPushResponse getAutoPushStatus(AuthUser authUser) {
133133
throw new UserException(UserExceptionCode.NO_GITHUB_INFO);
134134
}
135135
User user = userGithubInfo.getUser();
136-
return new UserGitubAutoPushResponse("현재 githubAutoPush 설정", user.getGitPushStatus());
136+
return new UserGitubAutoPushResponse("현재 githubAutoPush 설정", user.getGitPushStatus(),userGithubInfo.getRepo(), userGithubInfo.getBranch());
137137
}
138138
}

src/main/java/org/ezcode/codetest/presentation/usermanagement/UserController.java

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -52,21 +52,10 @@ public ResponseEntity<UserInfoResponse> getUserInfo(@AuthenticationPrincipal Aut
5252
@PutMapping("/users")
5353
public ResponseEntity<UserInfoResponse> modifyUserInfo(
5454
@AuthenticationPrincipal AuthUser authUser,
55-
@RequestBody ModifyUserInfoRequest modifyUserInfoRequest
56-
){
57-
return ResponseEntity.status(HttpStatus.OK).body(userService.modifyUserInfo(authUser, modifyUserInfoRequest));
58-
}
59-
60-
//유저 프로필 이미지 등록
61-
@Operation(
62-
summary = "프로필 이미지 등록",
63-
description = "유저의 프로필 이미지를 등록합니다. 기존의 이미지가 있는 경우, 기존 이미지가 삭제되고 새로운 이미지로 교체됩니다.")
64-
@PutMapping("/users/profile")
65-
public ResponseEntity<UserProfileImageResponse> uploadUserProfileImage(
66-
@AuthenticationPrincipal AuthUser authUser,
55+
@Valid @RequestPart("request") ModifyUserInfoRequest request,
6756
@RequestPart(value = "image", required = false) MultipartFile image
6857
){
69-
return ResponseEntity.status(HttpStatus.OK).body(userService.uploadUserProfileImage(authUser, image));
58+
return ResponseEntity.status(HttpStatus.OK).body(userService.modifyUserInfo(authUser, request, image));
7059
}
7160

7261
@Operation(

0 commit comments

Comments
 (0)