클라이언트 서버에서 전송한 게시글 데이터를 데이터베이스에 저장
☃️ Controller
@RestController
@RequiredArgsConstructor
@Slf4j
@RequestMapping("/volunteers")
public class VolunteerController {
private final VolunteerService volunteerService;
// 봉사활동 구인글 작성
@PostMapping("/new")
public ResponseEntity<Map<String, Long>> addVolunteer(@Valid VolunteerSaveRequest request) throws IOException {
Long volunteerId = volunteerService.addVolunteer(request);
Map<String, Long> response = new HashMap<>();
response.put("volunteerId", volunteerId);
return ResponseEntity.ok(response);
}
}
· 게시글 저장 후 해당 게시글 id 반환하기
☃️ Service
@Service
@RequiredArgsConstructor
@Slf4j
@Transactional
public class VolunteerService {
private final VolunteerRepository volunteerRepository;
private final ImageService imageService;
private final UserRepository userRepository;
// 봉사활동 구인글 작성
public Long addVolunteer(VolunteerSaveRequest request) throws IOException {
User user = getUserOrThrow(request.getUserId());
String imageUUID = null;
if (!request.getImage().isEmpty()) {
imageUUID = imageService.uploadImage(request.getImage());
}
Volunteer volunteer = Volunteer.createVolunteer(request, user, imageUUID);
volunteerRepository.save(volunteer);
return volunteer.getId();
}
// 예외 처리 - 존재하는 User 인가
private User getUserOrThrow(Long userId) {
return userRepository.findById(userId)
.orElseThrow(() -> new CustomException(ErrorCode.NOT_FOUND_USER));
}
}
· S3 에 이미지 업로드 후 생긴 url 로 이미지 경로 저장하기
☃️ Repository
public interface VolunteerRepository extends JpaRepository<Volunteer, Long> {}
public interface UserRepository extends JpaRepository<User, Long> {}
☃️Dto
· 프론트 서버에서부터 들어오는 요청 데이터
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class VolunteerSaveRequest {
private String title;
private String content;
@NotNull
private String place;
@NotNull
private Long userId;
private MultipartFile image;
}
'Spring > [P] 눈치우기 봉사활동 매칭 플랫폼' 카테고리의 다른 글
게시글 삭제하기 (0) | 2024.02.19 |
---|---|
게시글 댓글 작성하기 (대댓글X) (0) | 2024.02.16 |
최신 게시글 3개 조회하기 (0) | 2024.02.14 |
게시글 상세 조회하기 (0) | 2024.02.13 |
게시글 전체 조회하기 (0) | 2024.02.12 |