Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@
import com.fastcampus.mini9.domain.accommodation.controller.dto.response.GetRoomsResponse;
import com.fastcampus.mini9.domain.accommodation.service.usecase.AccommodationQuery;
import com.fastcampus.mini9.domain.accommodation.service.usecase.RoomQuery;
import com.fastcampus.mini9.domain.member.entity.Member;
import com.fastcampus.mini9.domain.member.exception.NotFoundMemberException;
import com.fastcampus.mini9.domain.member.service.MemberService;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Content;
Expand All @@ -40,6 +43,7 @@ public class AccommodationController {
private final AccommodationQuery accommodationQuery;
private final RoomQuery roomQuery;
private final AccommodationDtoMapper mapper;
private final MemberService memberService;

@Operation(summary = "숙소 검색")
@ApiResponses(value = {
Expand Down Expand Up @@ -69,10 +73,14 @@ public DataResponseBody<GetAccommodationsResponse> getAccommodations(
@RequestParam(name = "page_num", defaultValue = "1") @Min(value = 1, message = "page_num은 최소 1 이상이여야 합니다.") Integer pageNum,
@RequestParam(name = "page_size", defaultValue = "10") @Min(value = 1, message = "page_size는 최소 1 이상이여야 합니다.") Integer pageSize,
@AuthenticationPrincipal UserPrincipal userPrincipal) {
Member member = null;
try {
member = memberService.findById(userPrincipal.id());
} catch (NotFoundMemberException ignored) {
}
SearchAccommodationsRequest searchRequest = new SearchAccommodationsRequest(region, district, startDate,
endDate, category, keyword, pageNum, pageSize);
SearchAccommodationsResponse searchResult = accommodationQuery.searchAccommodations(searchRequest,
userPrincipal);
endDate, category, keyword, pageNum, pageSize, member);
SearchAccommodationsResponse searchResult = accommodationQuery.searchAccommodations(searchRequest);
GetAccommodationsResponse result = mapper.searchResultToResponseDto(searchResult);
return DataResponseBody.success(result, "SUCCESS");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,11 @@
import org.springframework.transaction.annotation.Transactional;

import com.fastcampus.mini9.common.exception.EntityNotFoundException;
import com.fastcampus.mini9.config.security.token.UserPrincipal;
import com.fastcampus.mini9.domain.accommodation.entity.accommodation.Accommodation;
import com.fastcampus.mini9.domain.accommodation.repository.AccommodationRepository;
import com.fastcampus.mini9.domain.accommodation.service.usecase.AccommodationQuery;
import com.fastcampus.mini9.domain.accommodation.service.util.AccommodationServiceMapper;
import com.fastcampus.mini9.domain.member.entity.Member;
import com.fastcampus.mini9.domain.member.exception.NotFoundMemberException;
import com.fastcampus.mini9.domain.member.repository.MemberRepository;

import lombok.RequiredArgsConstructor;

Expand All @@ -25,12 +22,10 @@
@RequiredArgsConstructor
public class AccommodationService implements AccommodationQuery {
private final AccommodationRepository accommodationRepository;
private final MemberRepository memberRepository;
private final AccommodationServiceMapper mapper;

@Override
public SearchAccommodationsResponse searchAccommodations(SearchAccommodationsRequest searchAccommodationsRequest,
UserPrincipal userPrincipal) {
public SearchAccommodationsResponse searchAccommodations(SearchAccommodationsRequest searchAccommodationsRequest) {
String region = searchAccommodationsRequest.region();
String district = searchAccommodationsRequest.district();
LocalDate startDate = searchAccommodationsRequest.startDate() != null ?
Expand All @@ -41,6 +36,7 @@ public SearchAccommodationsResponse searchAccommodations(SearchAccommodationsReq
String keyword = searchAccommodationsRequest.keyword();
Integer pageNum = searchAccommodationsRequest.pageNum();
Integer pageSize = searchAccommodationsRequest.pageSize();
Member member = searchAccommodationsRequest.member();

// TODO: 검색 쿼리(QueryDSL) 구현.
// 1.해당 지역에 /
Expand All @@ -56,11 +52,9 @@ public SearchAccommodationsResponse searchAccommodations(SearchAccommodationsReq
);

// TODO: 현재 로그인 상태면 검색된 accommodation에 좋아요 표시. 1안:UserPrincipal->Member. 2안:MemberService에 구현. 3안: 여기에 구현
if (userPrincipal.id() != 0L) {
Member loginMember = memberRepository.findById(userPrincipal.id())
.orElseThrow(NotFoundMemberException::new);
if (member != null) {
Page<SearchAccommodation> result = all
.map(Accommodation -> SearchAccommodation.fromEntity(Accommodation, loginMember));
.map(Accommodation -> SearchAccommodation.fromEntity(Accommodation, member));
return new SearchAccommodationsResponse(result.toList(), result.getNumber(), result.getSize(),
result.getTotalPages(), result.getTotalElements(), result.isFirst(), result.isLast());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import com.fastcampus.mini9.domain.member.entity.Member;

public interface AccommodationQuery {
SearchAccommodationsResponse searchAccommodations(SearchAccommodationsRequest request, UserPrincipal userPrincipal);
SearchAccommodationsResponse searchAccommodations(SearchAccommodationsRequest request);

FindAccommodationResponse findAccommodation(FindAccommodationRequest request);

Expand All @@ -21,7 +21,8 @@ record SearchAccommodationsRequest(
String category,
String keyword,
Integer pageNum,
Integer pageSize
Integer pageSize,
Member member
) {
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
import com.fastcampus.mini9.domain.cart.dto.CreateOrderRequest;
import com.fastcampus.mini9.domain.cart.dto.FindCartResponse;
import com.fastcampus.mini9.domain.cart.service.CartService;
import com.fastcampus.mini9.domain.member.entity.Member;
import com.fastcampus.mini9.domain.member.service.MemberService;
import com.fastcampus.mini9.domain.reservation.dto.FindPaymentResponse;

import io.swagger.v3.oas.annotations.Operation;
Expand All @@ -34,6 +36,7 @@
public class CartController {

private final CartService cartService;
private final MemberService memberService;

@Operation(summary = "장바구니 조회")
@GetMapping
Expand All @@ -45,7 +48,8 @@ public DataResponseBody<List<FindCartResponse>> findAll(@AuthenticationPrincipal
@PostMapping
public BaseResponseBody createCart(@RequestBody @Valid CreateCartRequest createCartRequest,
@AuthenticationPrincipal UserPrincipal userPrincipal) {
cartService.addCart(createCartRequest, userPrincipal.id());
Member member = memberService.findById(userPrincipal.id());
cartService.addCart(createCartRequest, member);
return BaseResponseBody.success();
}

Expand Down Expand Up @@ -86,7 +90,8 @@ public DataResponseBody<List<FindCartResponse>> findOrders(@RequestBody CartIdsR
public BaseResponseBody createOrders(
@RequestBody @Valid CreateOrderRequest createOrderRequest,
@AuthenticationPrincipal UserPrincipal userPrincipal) {
cartService.createOrder(createOrderRequest, userPrincipal.id());
Member member = memberService.findById(userPrincipal.id());
cartService.createOrder(createOrderRequest, member);

return DataResponseBody.success();
}
Expand All @@ -97,14 +102,16 @@ public BaseResponseBody createOrders(
public DataResponseBody<List<FindPaymentResponse>> findRecentOrders(
@AuthenticationPrincipal UserPrincipal userPrincipal,
@RequestParam @Min(value = 1, message = "count는 1 이상이여야 합니다.") int count) {
return DataResponseBody.success(cartService.findRecentOrders(userPrincipal.id(), count), "SUCCESS");
Member member = memberService.findById(userPrincipal.id());
return DataResponseBody.success(cartService.findRecentOrders(member.getId(), count), "SUCCESS");
}

@Operation(summary = "바로 결제 버튼")
@PostMapping("/orders/payments-eager")
public BaseResponseBody createOrdersEager(@RequestBody @Valid CreateCartRequest createCartRequest,
@AuthenticationPrincipal UserPrincipal userPrincipal) {
Long cartId = cartService.addCart(createCartRequest, userPrincipal.id());
Member member = memberService.findById(userPrincipal.id());
Long cartId = cartService.addCart(createCartRequest, member);

return DataResponseBody.success(cartService.findOrders(new CartIdsRequest(List.of(cartId))), "SUCCESS");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,6 @@
import com.fastcampus.mini9.domain.cart.entity.Cart;
import com.fastcampus.mini9.domain.cart.repository.CartRepository;
import com.fastcampus.mini9.domain.member.entity.Member;
import com.fastcampus.mini9.domain.member.exception.NotFoundMemberException;
import com.fastcampus.mini9.domain.member.repository.MemberRepository;
import com.fastcampus.mini9.domain.payment.entity.Payment;
import com.fastcampus.mini9.domain.payment.entity.PaymentStatus;
import com.fastcampus.mini9.domain.payment.repository.PaymentRepository;
Expand All @@ -42,7 +40,6 @@
public class CartService {

private final CartRepository cartRepository;
private final MemberRepository memberRepository;
private final RoomRepository roomRepository;
private final ReservationRepository reservationRepository;
private final PaymentRepository paymentRepository;
Expand Down Expand Up @@ -86,9 +83,7 @@ private FindCartResponse mapToFindCartResponse(List<Cart> carts) {
}

@Transactional
public Long addCart(CreateCartRequest dto, Long id) {
Member member = memberRepository.findById(id)
.orElseThrow(NotFoundMemberException::new);
public Long addCart(CreateCartRequest dto, Member member) {
Room room = roomRepository.findById(dto.roomId())
.orElseThrow(() -> new EntityNotFoundException("해당 객실을 찾을 수 없습니다."));

Expand Down Expand Up @@ -157,12 +152,10 @@ public void decreaseCart(CartIdRequest dto) {
}

@Transactional
public void createOrder(CreateOrderRequest dto, Long memberId) {
public void createOrder(CreateOrderRequest dto, Member member) {

// TODO: 숙박일 검증

Member member = memberRepository.findById(memberId)
.orElseThrow(NotFoundMemberException::new);
List<Cart> carts = cartRepository.findAllById(dto.cartIds());

if (carts.size() != dto.cartIds().size()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import com.fastcampus.mini9.domain.member.controller.dto.response.LoginResponseDto;
import com.fastcampus.mini9.domain.member.controller.dto.response.MemberInfoResponseDto;
import com.fastcampus.mini9.domain.member.controller.dto.response.MemberSaveResponseDto;
import com.fastcampus.mini9.domain.member.entity.Member;
import com.fastcampus.mini9.domain.member.service.MemberService;
import com.fastcampus.mini9.domain.member.service.dto.response.MemberDto;

Expand Down Expand Up @@ -130,7 +131,7 @@ public BaseResponseBody logout() {
public DataResponseBody<MemberInfoResponseDto> memberInfo(
@AuthenticationPrincipal UserPrincipal principal
) {
MemberDto response = memberService.getProfile(principal.getName());
return DataResponseBody.success(mapper.memberToMemberInfoResponse(response));
Member member = memberService.findById(principal.id());
return DataResponseBody.success(mapper.memberToMemberInfoResponse(member));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.fastcampus.mini9.domain.member.controller.dto.request.SignupRequestDto;
import com.fastcampus.mini9.domain.member.controller.dto.response.MemberInfoResponseDto;
import com.fastcampus.mini9.domain.member.controller.dto.response.MemberSaveResponseDto;
import com.fastcampus.mini9.domain.member.entity.Member;
import com.fastcampus.mini9.domain.member.service.dto.request.MemberSaveDto;
import com.fastcampus.mini9.domain.member.service.dto.response.MemberDto;

Expand All @@ -22,5 +23,5 @@ public interface MemberDtoMapper {

MemberSaveResponseDto memberToMemberSaveResponse(MemberDto dto);

MemberInfoResponseDto memberToMemberInfoResponse(MemberDto dto);
MemberInfoResponseDto memberToMemberInfoResponse(Member member);
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,8 @@ public MemberDto save(MemberSaveDto dto) {
}

@Transactional(readOnly = true)
public MemberDto getProfile(String email) {
Member member = findByEmail(email);
return MemberDto.toDto(member);
}

public Member findByEmail(String email) {
return memberRepository.findByEmail(email)
public Member findById(Long id) {
return memberRepository.findById(id)
.orElseThrow(NotFoundMemberException::new);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
import com.fastcampus.mini9.common.response.BaseResponseBody;
import com.fastcampus.mini9.common.response.DataResponseBody;
import com.fastcampus.mini9.config.security.token.UserPrincipal;
import com.fastcampus.mini9.domain.member.entity.Member;
import com.fastcampus.mini9.domain.member.service.MemberService;
import com.fastcampus.mini9.domain.payment.dto.FindAllPaymentResponse;
import com.fastcampus.mini9.domain.payment.dto.FindDetailPaymentResponse;
import com.fastcampus.mini9.domain.payment.service.PaymentService;
Expand All @@ -25,12 +27,14 @@
public class PaymentController {

private final PaymentService paymentService;
private final MemberService memberService;

@Operation(summary = "예약, 결제 전체 내역 조회")
@GetMapping
public DataResponseBody<List<FindAllPaymentResponse>> findAll(
@AuthenticationPrincipal UserPrincipal userPrincipal) {
return DataResponseBody.success(paymentService.findAll(userPrincipal.id()));
Member member = memberService.findById(userPrincipal.id());
return DataResponseBody.success(paymentService.findAll(member.getId()));
}

@Operation(summary = "예약, 결제 상세 내역 조회")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
import com.fastcampus.mini9.domain.accommodation.entity.accommodation.Accommodation;
import com.fastcampus.mini9.domain.accommodation.service.usecase.AccommodationQuery;
import com.fastcampus.mini9.domain.accommodation.service.util.AccommodationServiceMapper;
import com.fastcampus.mini9.domain.member.entity.Member;
import com.fastcampus.mini9.domain.member.service.MemberService;
import com.fastcampus.mini9.domain.wish.entity.Wish;
import com.fastcampus.mini9.domain.wish.service.WishService;

Expand All @@ -28,6 +30,7 @@
public class WishController {

private final WishService wishService;
private final MemberService memberService;
private final AccommodationServiceMapper serviceMapper;
private final AccommodationDtoMapper dtoMapper;

Expand All @@ -36,7 +39,8 @@ public BaseResponseBody addWish(
@PathVariable Long accommodationId,
@AuthenticationPrincipal UserPrincipal principal
) {
wishService.addWish(accommodationId, principal);
Member member = memberService.findById(principal.id());
wishService.addWish(accommodationId, member);
return BaseResponseBody.success("위시 등록 완료");
}

Expand All @@ -45,14 +49,16 @@ public BaseResponseBody deleteWish(
@PathVariable Long accommodationId,
@AuthenticationPrincipal UserPrincipal principal
) {
wishService.deleteWish(accommodationId, principal);
Member member = memberService.findById(principal.id());
wishService.deleteWish(accommodationId, member);
return BaseResponseBody.success("위시 해제 완료");
}

@GetMapping("/wishes")
public DataResponseBody<List<GetAccommodationsResponse.GetAccommodation>> findWishes(
@AuthenticationPrincipal UserPrincipal userPrincipal) {
List<Wish> wishes = wishService.findWishes(userPrincipal);
Member member = memberService.findById(userPrincipal.id());
List<Wish> wishes = wishService.findWishes(member);
List<Accommodation> collect = wishes.stream().map(Wish::getAccommodation).collect(Collectors.toList());
List<AccommodationQuery.SearchAccommodation> searchAccommodations = serviceMapper.entityListToResponseList(
collect);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,9 @@
import org.springframework.transaction.annotation.Transactional;

import com.fastcampus.mini9.common.exception.EntityNotFoundException;
import com.fastcampus.mini9.config.security.token.UserPrincipal;
import com.fastcampus.mini9.domain.accommodation.entity.accommodation.Accommodation;
import com.fastcampus.mini9.domain.accommodation.repository.AccommodationRepository;
import com.fastcampus.mini9.domain.member.entity.Member;
import com.fastcampus.mini9.domain.member.exception.NotFoundMemberException;
import com.fastcampus.mini9.domain.member.repository.MemberRepository;
import com.fastcampus.mini9.domain.wish.entity.Wish;
import com.fastcampus.mini9.domain.wish.exception.AlreadyWishException;
import com.fastcampus.mini9.domain.wish.repository.WishRepository;
Expand All @@ -25,13 +22,10 @@ public class WishService {

private final WishRepository wishRepository;
private final AccommodationRepository accommodationRepository;
private final MemberRepository memberRepository;

public void addWish(Long accommodationId, UserPrincipal userPrincipal) {
public void addWish(Long accommodationId, Member member) {
Accommodation accommodation = accommodationRepository.findById(accommodationId)
.orElseThrow(() -> new EntityNotFoundException("해당 숙소가 존재하지 않습니다."));
Member member = memberRepository.findById(userPrincipal.id())
.orElseThrow(NotFoundMemberException::new);

if (wishRepository.existsByAccommodationAndMember(accommodation, member)) {
throw new AlreadyWishException();
Expand All @@ -41,11 +35,9 @@ public void addWish(Long accommodationId, UserPrincipal userPrincipal) {
wishRepository.saveAndFlush(newWish);
}

public void deleteWish(Long accommodationId, UserPrincipal userPrincipal) {
public void deleteWish(Long accommodationId, Member member) {
Accommodation accommodation = accommodationRepository.findById(accommodationId)
.orElseThrow(() -> new EntityNotFoundException("해당 숙소가 존재하지 않습니다."));
Member member = memberRepository.findById(userPrincipal.id())
.orElseThrow(NotFoundMemberException::new);

if (!wishRepository.existsByAccommodationAndMember(accommodation, member)) {
throw new AlreadyWishException("등록되지 않은 숙소");
Expand All @@ -54,10 +46,7 @@ public void deleteWish(Long accommodationId, UserPrincipal userPrincipal) {
wishRepository.deleteByAccommodationAndMember(accommodation, member);
}

public List<Wish> findWishes(UserPrincipal userPrincipal) {
Member member = memberRepository.findById(userPrincipal.id())
.orElseThrow(NotFoundMemberException::new);
List<Wish> allByMember = wishRepository.findAllByMember(member);
return allByMember;
public List<Wish> findWishes(Member member) {
return wishRepository.findAllByMember(member);
}
}