Skip to content
Merged
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
6 changes: 6 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,12 @@
</goals>
</execution>
</executions>
<configuration>
<excludes>
<exclude>**/Q*</exclude>
<exclude>**/generated-sources/**</exclude>
</excludes>
</configuration>
</plugin>

<plugin>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ public ResponseEntity<PublisherCreateResponseDto> registerPublisher(
*/
@Operation(summary = "전체 출판사 조회", description = "등록된 모든 출판사를 조회합니다.")
@GetMapping("/publishers")
public ResponseEntity<Page<PublisherResponseDto>> getAllPublishers(@PageableDefault(size = 10, sort = "id", direction = Sort.Direction.ASC) Pageable pageable) {
public ResponseEntity<Page<PublisherResponseDto>> getAllPublishers(Pageable pageable) {
Page<PublisherResponseDto> publishers = publisherService.getAllPublishers(pageable);
return ResponseEntity.status(HttpStatus.OK).body(publishers);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.nhnacademy.bookstore.bookset.publisher.dto.response.PublisherResponseDto;
import com.nhnacademy.bookstore.bookset.publisher.entity.Publisher;
import com.nhnacademy.bookstore.bookset.publisher.entity.QPublisher;
import com.querydsl.core.types.OrderSpecifier;
import com.querydsl.core.types.Projections;
import com.querydsl.jpa.impl.JPAQuery;
import jakarta.persistence.EntityManager;
Expand Down Expand Up @@ -31,22 +32,23 @@ public PublisherRepositoryImpl(EntityManager entityManager) {
public Page<PublisherResponseDto> findAllBy(Pageable pageable) {
// PublisherResponseDto 리스트를 조회하는 쿼리
JPAQuery<PublisherResponseDto> query = new JPAQuery<>(entityManager);
List<PublisherResponseDto> results = query
.select(Projections.constructor(PublisherResponseDto.class,

// 정렬 조건 추가
query.select(Projections.constructor(PublisherResponseDto.class,
publisher.publisherId,
publisher.name
))
.from(publisher)
.orderBy(publisher.publisherId.asc()) // 정렬 조건 추가
.offset(pageable.getOffset())
.limit(pageable.getPageSize())
.fetch();
.limit(pageable.getPageSize());

List<PublisherResponseDto> results = query.fetch();

// 전체 개수를 조회하는 쿼리
JPAQuery<Long> countQuery = new JPAQuery<>(entityManager);
long total = countQuery
.from(publisher)
.fetchCount();
long total = query.fetchCount();

return new PageImpl<>(results, pageable, total);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import jakarta.persistence.Embeddable;
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;

Expand All @@ -21,34 +22,11 @@
@Getter
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode
public class CouponCategoryId implements Serializable {

private Long couponId;
private Long categoryId;

/**
* equals 메서드
* CouponCategoryId 객체 간의 동일성을 비교합니다.
* couponId와 categoryId가 동일하면 두 객체는 같은 객체로 간주됩니다.
*
* @param o 비교할 객체
* @return 동일하면 true, 그렇지 않으면 false
*/
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof CouponCategoryId that)) return false;
return Objects.equals(couponId, that.couponId) && Objects.equals(categoryId, that.categoryId);
}

/**
* hashCode 메서드
* CouponCategoryId 객체의 해시 코드를 생성합니다. 해시 코드는 couponId와 categoryId에 기반하여 생성됩니다.
*
* @return 해시 코드 값
*/
@Override
public int hashCode() {
return Objects.hash(couponId, categoryId);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,8 @@ public List<MemberCouponResponseDto> getExpiredOrUsedMemberCoupons(Long customer
.and(memberCoupon.isUsed.eq(true) // 사용된 쿠폰
.or(memberCoupon.invalidTime.before(LocalDateTime.now()))) // 기간 만료된 쿠폰
)
.fetch(); }
.fetch();
}

/**
* 특정 회원의 모든 쿠폰을 조회하여 MemberCouponResponseDto 목록으로 반환합니다.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,7 @@ public ResponseEntity<List<OrderDetailResponseDto>> getOrderDetailsByOrderId(@Pa

@Operation(summary = "고객ID로 주문 상세 조회", description = "고객에 관련된 주문상세를 조회합니다.")
@GetMapping("/customer")
public ResponseEntity<Page<OrderDetailResponseDto>> getOrderDetailsByCustomerId(
@PageableDefault(size = 10, sort = "orderDetailId", direction = Sort.Direction.ASC) Pageable pageable,
public ResponseEntity<Page<OrderDetailResponseDto>> getOrderDetailsByCustomerId(Pageable pageable,
@RequestHeader("X-Customer-Id") String customerId) {
Page<OrderDetailResponseDto> orderDetails = orderDetailService.getOrderDetailByCustomerId(pageable, Long.valueOf(customerId));
return ResponseEntity.ok(orderDetails);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,14 @@
package com.nhnacademy.bookstore.orderset.order_detail.repository;

import com.nhnacademy.bookstore.orderset.order_detail.dto.response.OrderDetailResponseDto;
import com.nhnacademy.bookstore.orderset.order_detail.entity.OrderDetail;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.List;
import java.util.Optional;

public interface OrderDetailRepository extends JpaRepository<OrderDetail, Long>,OrderDetailRepositoryCustom {
@Query("SELECT od.book.bookId FROM OrderDetail od WHERE od.orderDetailId = :orderDetailId")
Optional<Long> findBookIdByOrderDetailId(@Param("orderDetailId") Long orderDetailId);


}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import com.nhnacademy.bookstore.orderset.order_detail.dto.response.OrderDetailResponseDto;
import com.nhnacademy.bookstore.orderset.order_detail.entity.OrderDetail;
import com.nhnacademy.bookstore.orderset.order_detail.entity.QOrderDetail;
import com.nhnacademy.bookstore.user.customer.entity.QCustomer;
import com.querydsl.core.types.OrderSpecifier;
import com.querydsl.core.types.Projections;
import com.querydsl.jpa.JPQLQuery;
import com.querydsl.jpa.impl.JPAQuery;
Expand Down Expand Up @@ -49,6 +49,7 @@ public List<OrderDetailResponseDto> findByOrderId(Long orderId) {
public Page<OrderDetailResponseDto> findByCustomerId(Pageable pageable, Long customerId) {
JPAQuery<OrderDetailResponseDto> query = new JPAQuery<>(getEntityManager());

// 기본 쿼리 작성
query.from(qOrderDetail)
.join(qOrderDetail.order, qOrder)
.join(qOrderDetail.book, qBook)
Expand All @@ -62,6 +63,10 @@ public Page<OrderDetailResponseDto> findByCustomerId(Pageable pageable, Long cus
qOrderDetail.finalPrice
));

OrderSpecifier<?> orderSpecifier;
orderSpecifier = qOrderDetail.orderDetailId.desc();
query.orderBy(orderSpecifier);

// 전체 개수 계산
long total = query.fetchCount();

Expand All @@ -74,5 +79,7 @@ public Page<OrderDetailResponseDto> findByCustomerId(Pageable pageable, Long cus
return new PageImpl<>(content, pageable, total);
}



}

Original file line number Diff line number Diff line change
Expand Up @@ -130,4 +130,6 @@ public ResponseEntity<MemberPointResponse> getPoint(@RequestHeader("X-Customer-I
MemberPointResponse response = memberService.getPointsOfMember(customerId);
return ResponseEntity.ok(response);
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -120,10 +120,7 @@ public MemberCreateSuccessResponseDto registerNewMember(MemberCreateRequestDto m
return new MemberCreateSuccessResponseDto(member.getNickname());
}

/**
* @param page
* @return
*/

@Transactional(readOnly = true)
@Override
public List<GetAllMembersResponse> getAllMembers(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.nhnacademy.bookstore.coupon.dto.response.CouponResponseDto;
import com.nhnacademy.bookstore.coupon.service.CouponService;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
Expand Down Expand Up @@ -57,6 +58,7 @@ void setUp() {
* @author Luha
*/
@Test
@DisplayName("쿠폰 생성 성공 - 유효한 요청 데이터로 쿠폰 생성")
void createCoupon_Success() throws Exception {
// given
CouponResponseDto responseDto = new CouponResponseDto(1L, "New Coupon", LocalDate.now(), LocalDate.now().plusDays(30), 10, null);
Expand All @@ -82,6 +84,7 @@ void createCoupon_Success() throws Exception {
* @author Luha
*/
@Test
@DisplayName("쿠폰 생성 실패 - 유효하지 않은 요청 데이터로 BadRequest 반환")
void createCoupon_BadRequest() throws Exception {
// given

Expand All @@ -101,6 +104,7 @@ void createCoupon_BadRequest() throws Exception {
* @author Luha
*/
@Test
@DisplayName("모든 쿠폰 조회 성공 - 쿠폰 데이터 목록 반환")
void getAllCoupons_Success() throws Exception {
// given
CouponResponseDto responseDto = new CouponResponseDto(1L, "Sample Coupon", LocalDate.now(), LocalDate.now().plusDays(10), 5, null);
Expand All @@ -124,6 +128,7 @@ void getAllCoupons_Success() throws Exception {
* author Luha
*/
@Test
@DisplayName("모든 쿠폰 조회 성공 - 쿠폰이 없을 경우 빈 목록 반환")
void getAllCoupons_EmptyList() throws Exception {
// given
when(couponService.getAllCouponse()).thenReturn(Collections.emptyList());
Expand Down
Loading
Loading