Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,6 @@ public record ModifyUserInfoRequest(
@Schema(description = "블로그 주소", example = "https://blog.example.com")
String blogUrl,

@Schema(description = "프로필 이미지 URL", example = "https://cdn.example.com/images/profile.jpg")
String profileImageUrl,

@Schema(description = "자기소개", example = "안녕하세요, 백엔드 개발자입니다.")
String introduction,

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,8 @@ public class UserGitubAutoPushResponse {
private final String message;
@Schema(description = "현재 상태", example = "true")
private final boolean gitPushStatus;
@Schema(description = "선택된 레포", example = "myRepo")
private final String githubRepoName;
@Schema(description = "선택된 브랜치", example = "dev")
private final String branch;
}
Original file line number Diff line number Diff line change
Expand Up @@ -73,16 +73,26 @@ public UserInfoResponse getUserInfo(AuthUser authUser) {
}

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

user.modifyUserInfo(
modifyUserInfoRequest.nickname(),
modifyUserInfoRequest.githubUrl(),
modifyUserInfoRequest.blogUrl(),
modifyUserInfoRequest.profileImageUrl(),
modifyUserInfoRequest.introduction(),
modifyUserInfoRequest.age());
request.nickname(),
request.githubUrl(),
request.blogUrl(),
request.introduction(),
request.age());

if (image != null && !image.isEmpty()) {
String profileImageUrl = uploadProfileImage(image);
String oldImageUrl = user.getProfileImageUrl();

user.modifyProfileImage(profileImageUrl);
if (oldImageUrl!=null) {
s3Uploader.delete(user.getProfileImageUrl(), "profile");
}

}

return UserInfoResponse.builder()
.username(user.getUsername())
Expand Down Expand Up @@ -142,18 +152,6 @@ public void resetAllUsersTokensWeekly(LocalDateTime startDateTime, LocalDateTime
userDomainService.resetReviewTokensForUsers(UsersByWeek.from(counts, weekLength));
}

@Transactional
public UserProfileImageResponse uploadUserProfileImage(AuthUser authUser, MultipartFile image) {
User user = userDomainService.getUserById(authUser.getId());
if (user.getProfileImageUrl()!=null) {
s3Uploader.delete(user.getProfileImageUrl(), "profile");
}
String profileImageUrl = uploadProfileImage(image);

user.modifyProfileImage(profileImageUrl);
return new UserProfileImageResponse(profileImageUrl);
}

private String uploadProfileImage(MultipartFile image) {
try {
return s3Uploader.upload(image, S3Directory.PROFILE.getDir());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,11 +152,10 @@ public User(String email, String password, String username, String nickname,
유저 정보 업데이트
- 만약 입력 값이 없다면, 기존 값 유지
*/
public void modifyUserInfo(String nickname, String githubUrl, String blogUrl, String profileImageUrl, String introduction, Integer age){
public void modifyUserInfo(String nickname, String githubUrl, String blogUrl, String introduction, Integer age){
this.nickname = (nickname == null || nickname.isBlank()) ? this.nickname : nickname;
this.githubUrl = (githubUrl == null || githubUrl.isBlank()) ? this.githubUrl : githubUrl;
this.blogUrl = (blogUrl == null || blogUrl.isBlank()) ? this.blogUrl : blogUrl;
this.profileImageUrl = (profileImageUrl == null || profileImageUrl.isBlank()) ? this.profileImageUrl : profileImageUrl;
this.introduction = (introduction == null || introduction.isBlank()) ? this.introduction : introduction;
this.age = (age == null) ? this.age : age;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,9 @@ public List<UserGithubRepoResponse> getGithubRepos(AuthUser authUser) throws Exc
@Transactional
public UserGithubRepoResponse selectGithubRepo(AuthUser authUser, UserGithubRepoSelectRequest request) throws
Exception {
UserGithubInfo userGithub = userGithubInfoRepository.getUserGithubInfo(authUser.getId());
UserGithubInfo userGithubInfo = userGithubInfoRepository.getUserGithubInfo(authUser.getId());

if (userGithub == null) {
if (userGithubInfo == null) {
throw new UserException(UserExceptionCode.NO_GITHUB_INFO);
}

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

userGithub.setGithubRepo(request.repositoryName(), selectedRepo.getDefaultBranch());
userGithubInfo.setGithubRepo(request.repositoryName(), selectedRepo.getDefaultBranch());

userGithubInfoRepository.updateGithubInfo(userGithub);
userGithubInfoRepository.updateGithubInfo(userGithubInfo);

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

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

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

public UserGitubAutoPushResponse getAutoPushStatus(AuthUser authUser) {
Expand All @@ -133,6 +133,6 @@ public UserGitubAutoPushResponse getAutoPushStatus(AuthUser authUser) {
throw new UserException(UserExceptionCode.NO_GITHUB_INFO);
}
User user = userGithubInfo.getUser();
return new UserGitubAutoPushResponse("현재 githubAutoPush 설정", user.getGitPushStatus());
return new UserGitubAutoPushResponse("현재 githubAutoPush 설정", user.getGitPushStatus(),userGithubInfo.getRepo(), userGithubInfo.getBranch());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -52,21 +52,10 @@ public ResponseEntity<UserInfoResponse> getUserInfo(@AuthenticationPrincipal Aut
@PutMapping("/users")
public ResponseEntity<UserInfoResponse> modifyUserInfo(
@AuthenticationPrincipal AuthUser authUser,
@RequestBody ModifyUserInfoRequest modifyUserInfoRequest
){
return ResponseEntity.status(HttpStatus.OK).body(userService.modifyUserInfo(authUser, modifyUserInfoRequest));
}

//유저 프로필 이미지 등록
@Operation(
summary = "프로필 이미지 등록",
description = "유저의 프로필 이미지를 등록합니다. 기존의 이미지가 있는 경우, 기존 이미지가 삭제되고 새로운 이미지로 교체됩니다.")
@PutMapping("/users/profile")
public ResponseEntity<UserProfileImageResponse> uploadUserProfileImage(
@AuthenticationPrincipal AuthUser authUser,
@Valid @RequestPart("request") ModifyUserInfoRequest request,
@RequestPart(value = "image", required = false) MultipartFile image
){
return ResponseEntity.status(HttpStatus.OK).body(userService.uploadUserProfileImage(authUser, image));
return ResponseEntity.status(HttpStatus.OK).body(userService.modifyUserInfo(authUser, request, image));
}

@Operation(
Expand Down