Skip to content

Commit

Permalink
hotfix : 이미지 수정 로직 변경
Browse files Browse the repository at this point in the history
  • Loading branch information
huncozyboy committed Nov 11, 2024
1 parent 7d20188 commit fd91880
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,4 @@ private void deleteLocalFile(File file) {
log.warn("Failed to delete local file: {}", file.getName());
}
}

private String generateFileUrl(String fileName) {
return String.format("https://%s.s3.%s.amazonaws.com/%s", bucketName, region, fileName);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -75,28 +75,26 @@ public ResponseEntity<ResponseDto<Void>> updateBasicInfo(@RequestBody @Valid Bas

@PostMapping("/upload-profile-image")
@Operation(summary = "프로필 이미지 업로드")
public ResponseEntity<ResponseDto<Void>> uploadProfileImage(
public ResponseEntity<ResponseDto<String>> uploadProfileImage(
@RequestParam("image") MultipartFile image,
@Parameter(hidden = true) @CurrentUser Long userId) {
String imageUrl = s3ImageService.uploadImage(image, "profile-images");
userProfileService.updateProfileImageUrl(userId, imageUrl);
return ResponseEntity.ok(
ResponseDto.response(IMAGE_UPLOAD_SUCCESS.getCode(),
IMAGE_UPLOAD_SUCCESS.getMessage())
IMAGE_UPLOAD_SUCCESS.getMessage(), imageUrl)
);
}

@PatchMapping("/update-profile-image")
@Operation(summary = "프로필 이미지 수정")
public ResponseEntity<ResponseDto<Void>> updateProfileImage(
public ResponseEntity<ResponseDto<String>> updateProfileImage(
@RequestParam("image") MultipartFile image,
@RequestParam("oldFileName") String oldFileName,
@Parameter(hidden = true) @CurrentUser Long userId) {
String imageUrl = s3ImageService.updateImage(image, oldFileName, "profile-images");
userProfileService.updateProfileImageUrl(userId, imageUrl);
String imageUrl = userProfileService.updateProfileImage(image, userId);
return ResponseEntity.ok(
ResponseDto.response(IMAGE_UPDATE_SUCCESS.getCode(),
IMAGE_UPDATE_SUCCESS.getMessage())
IMAGE_UPDATE_SUCCESS.getMessage(), imageUrl)
);
}

Expand Down
4 changes: 4 additions & 0 deletions src/main/java/land/leets/Carrot/domain/user/entity/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -55,4 +55,8 @@ public void updateBasicInfo(Gender gender, Integer birthYear) {
public void updateProfileImageUrl(String profileImageUrl) {
this.profileImageUrl = profileImageUrl;
}

public void updateProfileImage(String profileImageUrl) {
this.profileImageUrl = profileImageUrl;
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package land.leets.Carrot.domain.user.service;

import jakarta.transaction.Transactional;
import land.leets.Carrot.domain.image.service.S3ImageService;
import land.leets.Carrot.domain.user.dto.request.AdditionalInfoUpdateRequest;
import land.leets.Carrot.domain.user.dto.request.BasicInfoUpdateRequest;
import land.leets.Carrot.domain.user.dto.request.CareerUpdateRequest;
Expand All @@ -15,12 +16,20 @@
import land.leets.Carrot.domain.user.exception.UserNotFoundException;
import land.leets.Carrot.domain.user.repository.UserRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

@Service
@RequiredArgsConstructor
public class UserProfileService {
private final UserRepository userRepository;
private final S3ImageService s3ImageService;
@Value("${cloud.aws.s3.bucket}")
private String bucketName;

@Value("${cloud.aws.region.static}")
private String region;

@Transactional
public UserBasicInfoResponse check(Long userId) {
Expand Down Expand Up @@ -127,6 +136,36 @@ public void updateProfileImageUrl(Long userId, String imageUrl) {
user.updateProfileImageUrl(imageUrl); // 새로운 메서드를 통한 업데이트
}

@Transactional
public String updateProfileImage(MultipartFile image, Long userId) {
// 사용자 정보 조회
User user = userRepository.findById(userId)
.orElseThrow(UserNotFoundException::new);

// 기존 프로필 이미지 URL 가져오기
String priorUrl = user.getProfileImageUrl();

// 새로운 이미지 업로드
String newImageUrl = s3ImageService.uploadImage(image, "profile-images");

// 사용자 엔티티에 새로운 프로필 이미지 URL 업데이트
user.updateProfileImage(newImageUrl);
userRepository.save(user);

// 기존 이미지 삭제 (priorUrl이 존재할 경우)
if (priorUrl != null) {
String priorFileName = extractFileNameFromUrl(priorUrl, "profile-images");
s3ImageService.deleteImage(priorFileName);
}

return newImageUrl;
}

private String extractFileNameFromUrl(String url, String dirName) {
String baseUrl = String.format("https://%s.s3.%s.amazonaws.com/%s", bucketName, region, dirName);
return url.replace(baseUrl, ""); // URL에서 파일 이름만 추출
}

@Transactional
public EmployeeProfileResponse employeeAll(Long userId) {
User user = userRepository.findById(userId)
Expand Down

0 comments on commit fd91880

Please sign in to comment.