대외활동/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)));
    }