Skip to content

Commit

Permalink
[fix] #15 - InvitationService, Controller 수정 -> 필수 정보, 이미지 저장 완성 (acc…
Browse files Browse the repository at this point in the history
…ount, URL 부분 제외)
  • Loading branch information
leeseulgi0208 committed Jan 18, 2025
1 parent 6579d6d commit ee58e06
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 57 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,24 @@

import java.util.List;

import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import com.wedit.weditapp.domain.invitation.domain.Invitation;
import com.wedit.weditapp.domain.invitation.dto.request.InvitationCreateRequestDTO;

import com.wedit.weditapp.domain.invitation.service.InvitationService;
import com.wedit.weditapp.domain.member.domain.Member;
import com.wedit.weditapp.global.response.GlobalResponseDto;

import io.swagger.v3.oas.annotations.Operation;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;

Expand All @@ -25,20 +29,15 @@
public class InvitationController {
private final InvitationService invitationService;

@PostMapping
public ResponseEntity<Long> createInvitation(
@RequestParam("images") List<MultipartFile> images,
@Validated @ModelAttribute InvitationCreateRequestDTO request
) {
// Member 객체는 인증 정보를 통해 가져와야 함
Member member = getAuthenticatedMember();

Invitation invitation = invitationService.saveInvitationWithImages(member, request, images);
return ResponseEntity.ok(invitation.getId());
}
@PostMapping(path="/{memberId}", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@Operation(summary = "필수 정보 등록", description = "")
public ResponseEntity<GlobalResponseDto<Void>> createInvitation(
@RequestPart("images") List<MultipartFile> images,
@Valid @RequestPart("content") InvitationCreateRequestDTO request,
@PathVariable Long memberId) {
//@AuthenticationPrincipal UserDetails userDetail

private Member getAuthenticatedMember() {
// TODO: 인증된 사용자 정보를 가져오는 로직 구현
return new Member();
return ResponseEntity.status(HttpStatus.CREATED)
.body(GlobalResponseDto.success(invitationService.createInvitation(memberId, request, images)));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@ public class Invitation extends BaseTimeEntity {
@Column
private String extraAddress; // 세부 주소

@Column(nullable = false)
private LocalDate date; // 결혼식 날짜

@Enumerated(EnumType.STRING)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,10 @@
package com.wedit.weditapp.domain.invitation.dto.request;

import com.wedit.weditapp.domain.invitation.domain.Invitation;
import jakarta.validation.constraints.NotBlank;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.time.LocalDate;
import java.util.List;

import org.springframework.web.multipart.MultipartFile;

@Getter
@NoArgsConstructor
Expand All @@ -33,7 +28,6 @@ public class InvitationCreateRequestDTO {

private String extraAddress; // 상세 주소

@NotBlank(message = "date cannot be blank")
private LocalDate date; // 결혼식 날짜

@NotBlank(message = "theme cannot be blank")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package com.wedit.weditapp.domain.invitation.dto.request;

import com.wedit.weditapp.domain.invitation.domain.Invitation;
import jakarta.validation.constraints.NotBlank;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,58 +2,63 @@

import java.util.List;

import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import com.wedit.weditapp.domain.image.service.ImageService;
import com.wedit.weditapp.domain.invitation.domain.Invitation;
import com.wedit.weditapp.domain.invitation.domain.repository.InvitationRepository;
import com.wedit.weditapp.domain.invitation.dto.request.InvitationCreateRequestDTO;
import com.wedit.weditapp.domain.invitation.dto.response.InvitationResponseDTO;
import com.wedit.weditapp.domain.member.domain.Member;
import com.wedit.weditapp.domain.member.domain.repository.MemberRepository;
import com.wedit.weditapp.domain.shared.Theme;
import com.wedit.weditapp.global.error.ErrorCode;
import com.wedit.weditapp.global.error.exception.CommonException;

import jakarta.transaction.Transactional;
import lombok.RequiredArgsConstructor;

@Service
@Transactional
@RequiredArgsConstructor
public class InvitationService {
private final InvitationRepository invitationRepository;
private final ImageService imageService;
private final MemberRepository memberRepository;

/**
* Invitation 저장 및 이미지 처리
*
* @param member 요청한 사용자 정보
* @param request Invitation 생성 요청 DTO
* @param images 업로드할 이미지 리스트
* @return 저장된 Invitation
*/
@Transactional
public Invitation saveInvitationWithImages(Member member, InvitationCreateRequestDTO request, List<MultipartFile> images) {
public Void createInvitation(Long memberId, InvitationCreateRequestDTO request, List<MultipartFile> images) {
Member member = getMember(memberId);
// Invitation 생성
Invitation invitation = Invitation.builder()
.member(member)
.groom(request.getGroom())
.bride(request.getBride())
.groomF(request.getGroomF())
.groomM(request.getGroomM())
.brideF(request.getBrideF())
.brideM(request.getBrideM())
.address(request.getAddress())
.extraAddress(request.getExtraAddress())
.date(request.getDate())
.theme(Theme.valueOf(request.getTheme()))
.guestBookOption(request.isGuestBookOption())
.decisionOption(request.isDecisionOption())
.accountOption(request.isAccountOption())
.build();

invitation = invitationRepository.save(invitation);
Invitation invitation = Invitation.createInvitation(
member,
request.getGroom(),
request.getBride(),
request.getGroomF(),
request.getGroomM(),
request.getBrideF(),
request.getBrideM(),
request.getAddress(),
request.getExtraAddress(),
request.getDate(),
Theme.valueOf(request.getTheme()), // 문자열을 Enum으로 변환
request.getDistribution(),
request.isGuestBookOption(),
request.isDecisionOption(),
request.isAccountOption()
);

invitationRepository.save(invitation);
// 이미지 저장
imageService.saveImages(images, invitation);

return invitation;
return null;
//return InvitationResponseDTO.from(invitationRepository.save(invitation));
}

private Member getMember(Long memberId) {
return memberRepository.findById(memberId)
.orElseThrow(() -> new CommonException(ErrorCode.USER_NOT_FOUND));
}
}

0 comments on commit ee58e06

Please sign in to comment.