diff --git a/src/main/java/org/ezcode/codetest/application/usermanagement/user/dto/request/ModifyUserInfoRequest.java b/src/main/java/org/ezcode/codetest/application/usermanagement/user/dto/request/ModifyUserInfoRequest.java index f02bfcc5..6666fed7 100644 --- a/src/main/java/org/ezcode/codetest/application/usermanagement/user/dto/request/ModifyUserInfoRequest.java +++ b/src/main/java/org/ezcode/codetest/application/usermanagement/user/dto/request/ModifyUserInfoRequest.java @@ -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, diff --git a/src/main/java/org/ezcode/codetest/application/usermanagement/user/dto/response/UserGitubAutoPushResponse.java b/src/main/java/org/ezcode/codetest/application/usermanagement/user/dto/response/UserGitubAutoPushResponse.java index ad3b9f87..e5a08677 100644 --- a/src/main/java/org/ezcode/codetest/application/usermanagement/user/dto/response/UserGitubAutoPushResponse.java +++ b/src/main/java/org/ezcode/codetest/application/usermanagement/user/dto/response/UserGitubAutoPushResponse.java @@ -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; } diff --git a/src/main/java/org/ezcode/codetest/application/usermanagement/user/service/UserService.java b/src/main/java/org/ezcode/codetest/application/usermanagement/user/service/UserService.java index b9cc76f7..bef271dc 100644 --- a/src/main/java/org/ezcode/codetest/application/usermanagement/user/service/UserService.java +++ b/src/main/java/org/ezcode/codetest/application/usermanagement/user/service/UserService.java @@ -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()) @@ -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()); diff --git a/src/main/java/org/ezcode/codetest/domain/user/model/entity/User.java b/src/main/java/org/ezcode/codetest/domain/user/model/entity/User.java index 9550c092..14dc2333 100644 --- a/src/main/java/org/ezcode/codetest/domain/user/model/entity/User.java +++ b/src/main/java/org/ezcode/codetest/domain/user/model/entity/User.java @@ -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; } diff --git a/src/main/java/org/ezcode/codetest/domain/user/service/UserGithubService.java b/src/main/java/org/ezcode/codetest/domain/user/service/UserGithubService.java index d48b57b0..5cf0e0d2 100644 --- a/src/main/java/org/ezcode/codetest/domain/user/service/UserGithubService.java +++ b/src/main/java/org/ezcode/codetest/domain/user/service/UserGithubService.java @@ -90,9 +90,9 @@ public List 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); } @@ -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; @@ -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) { @@ -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()); } } diff --git a/src/main/java/org/ezcode/codetest/presentation/usermanagement/UserController.java b/src/main/java/org/ezcode/codetest/presentation/usermanagement/UserController.java index 96e58d96..7cb2cc30 100644 --- a/src/main/java/org/ezcode/codetest/presentation/usermanagement/UserController.java +++ b/src/main/java/org/ezcode/codetest/presentation/usermanagement/UserController.java @@ -52,21 +52,10 @@ public ResponseEntity getUserInfo(@AuthenticationPrincipal Aut @PutMapping("/users") public ResponseEntity 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 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(