대외활동/DRACONIST-백엔드
null처리 오류-회원정보 이미지 수정
피스타0204
2025. 3. 16. 02:00
회원정보에서 이미지를 수정하거나 삭제할때, isEmpty에 대한 null처리를 해주지 않아서 빈문자열이 반환되는 문제가 발생했습니다. 아무것도 들어있지 않을때 null이 되도록 처리해주었습니다.
// 회원 정보 수정 메소드
public void changeUserInfo(MemberInfoDTO userInfoDTO) {
if(userInfoDTO.getName()!=null) {
this.name = userInfoDTO.getName();
}
if(userInfoDTO.getAmPm()!=null) {
this.amPm= userInfoDTO.getAmPm();
}
if(userInfoDTO.getHours()!=null) {
this.hours= userInfoDTO.getHours();
}
if(userInfoDTO.getMinutes()!=null) {
this.minutes= userInfoDTO.getMinutes();
}
if(userInfoDTO.getKeywords() != null) { // keywords 업데이트
this.keywords = userInfoDTO.getKeywords();
}
}
}
@Transactional
public ResponseEntity<?> edit(MultipartFile image, @Valid MemberInfoDTO memberInfoDTO, String email) throws IOException {
// 1. 회원이 존재하는지 확인
log.info("회원 정보 수정 요청: {}", email); // 로그 추가
Member member = memberRepository.findMemberByEmail(email)
.orElseThrow(() -> new RuntimeException("회원 없음"));
// 2. 이미지 수정 시도 시, AWS에서 이미지 삭제
if (member.getProfileImage() != null) {
try {
awsS3Service.deleteFileByUrl(member.getProfileImage());
log.info("이미지 삭제 성공"); // 로그 추가
} catch (Exception e) {
throw new RuntimeException("이미지 삭제 실패");
}
}
// 3. 회원 정보 수정
member.changeUserInfo(memberInfoDTO);
// 4. 이미지 수정 시도 시, 데베에 이미지 삭제
if (image != null && !image.isEmpty()) {
try {
String newProfileImage = awsS3Service.uploadFile(image);
member.changeProfileImage(newProfileImage);
} catch (Exception e) {
member.changeProfileImage(null); // 실패 시 null로 설정
}
} else {
member.changeProfileImage(null);
}
memberRepository.save(member);
return ResponseEntity.ok().body(ApiResponse.onSuccess(memberConverter.toMemberInfo(member)));
}