Skip to content

Commit

Permalink
#19 [Update] 업장 등록 수정
Browse files Browse the repository at this point in the history
이미지 파일 유효성 검사 추가
이미지 등록 로직 수정
사용하지 않는 메소드 제거
  • Loading branch information
Anna-Jin committed Jul 20, 2022
1 parent 283e8d6 commit 910e280
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 39 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

@RestController
@RequestMapping("/store")
Expand All @@ -26,6 +29,17 @@ public ResponseEntity<String> registerStore(
@ModelAttribute UserRegisterStoreRequestDto userRegisterStoreRequestDto,
@AuthenticationPrincipal User userDetails) {

/*
* 이미지 파일 리스트 유효성 체크
* @Valid 어노테이션은 Collection 에는 적용할 수 없으므로 직접 유효성 체크를 해준다.
*/
List<MultipartFile> userRegisterStoreImageList = userRegisterStoreRequestDto.getUserRegisterStoreImageList();
for (MultipartFile multipartFile : userRegisterStoreImageList) {
if (multipartFile.isEmpty()) {
throw new NullPointerException();
}
}

userRegisterStoreService.registerStore(userRegisterStoreRequestDto, userDetails.getUsername());
return new ResponseEntity<>("업장 등록 성공", HttpStatus.OK);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,4 @@ public class UserRegisterStoreImgDto {
public UserRegisterStoreImgDto(String userRegisterStoreImageUrl) {
this.userRegisterStoreImageUrl = userRegisterStoreImageUrl;
}

public UserRegisterStoreImgDto(UserRegisterStoreImg userRegisterStoreImg) {
this.userRegisterStoreImageUrl = userRegisterStoreImg.getUserRegisterStoreImageUrl();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import com.mpnp.baechelin.util.AwsS3Manager;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import javax.transaction.Transactional;
import java.util.ArrayList;
Expand All @@ -29,6 +30,7 @@ public class UserRegisterStoreService {
/**
* 유저 업장 등록
* @param userRegisterStoreRequestDto
* @param socialId
*/
public void registerStore(UserRegisterStoreRequestDto userRegisterStoreRequestDto, String socialId) {
User user = userRepository.findBySocialId(socialId);
Expand All @@ -45,21 +47,22 @@ public void registerStore(UserRegisterStoreRequestDto userRegisterStoreRequestDt
.build();

// 업장의 이미지 여러개 등록
// s3에 이미지 업로드 후 url 반환
List<String> uploadedImage = awsS3Manager.uploadFile(userRegisterStoreRequestDto.getUserRegisterStoreImageList());

// saveAll을 위해 userRegisterStoreImg List에 저장
List<UserRegisterStoreImg> userRegisterStoreImgList = new ArrayList<>();

for (String image : uploadedImage) {
// 유저가 등록한 업장 이미지 리스트
List<MultipartFile> userRegisterStoreImageFiles = userRegisterStoreRequestDto.getUserRegisterStoreImageList();

for (MultipartFile userRegisterStoreImageFile : userRegisterStoreImageFiles) {
UserRegisterStoreImg userRegisterStoreImg = UserRegisterStoreImg.builder()
.userRegisterStoreImageUrl(image)
.userRegisterStoreImageUrl(awsS3Manager.uploadFile(userRegisterStoreImageFile)) // 유저가 등록한 업장 이미지 url 변환
.userRegisterStore(userRegisterStore)
.build();

userRegisterStoreImgList.add(userRegisterStoreImg);
}


userRegisterStoreRepository.save(userRegisterStore);
userRegisterStoreImgRepository.saveAll(userRegisterStoreImgList);
}
Expand Down
30 changes: 0 additions & 30 deletions src/main/java/com/mpnp/baechelin/util/AwsS3Manager.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,36 +29,6 @@ public class AwsS3Manager {

private final AmazonS3 amazonS3;


// 이미지 여러장 저장
public List<String> uploadFile(List<MultipartFile> multipartFile) {
List<String> fileNameList = new ArrayList<>();

// 파일이 넘어오지 않으면 빈 리스트 반환
if (multipartFile == null) {
return fileNameList;
}

// forEach 구문을 통해 multipartFile로 넘어온 파일들 하나씩 fileNameList에 추가
multipartFile.forEach(file -> {
String fileName = createFileName(file.getOriginalFilename());
ObjectMetadata objectMetadata = new ObjectMetadata();
objectMetadata.setContentLength(file.getSize());
objectMetadata.setContentType(file.getContentType());

try(InputStream inputStream = file.getInputStream()) {
amazonS3.putObject(new PutObjectRequest(bucket, fileName, inputStream, objectMetadata)
.withCannedAcl(CannedAccessControlList.PublicRead));
} catch(IOException e) {
throw new ResponseStatusException(HttpStatus.INTERNAL_SERVER_ERROR, "파일 업로드에 실패했습니다.");
}

fileNameList.add(String.format("https://%s.s3.amazonaws.com/%s", bucket, fileName));
});

return fileNameList;
}

// 이미지 단건 저장
public String uploadFile(MultipartFile file) {
if (Objects.equals(file.getOriginalFilename(), "")) {
Expand Down

0 comments on commit 910e280

Please sign in to comment.