Skip to content

Commit

Permalink
javadoc "쿠폰 javadoc 설정"
Browse files Browse the repository at this point in the history
  • Loading branch information
kihoo-ni committed Jul 31, 2024
1 parent cb2eb97 commit 02ceaad
Show file tree
Hide file tree
Showing 16 changed files with 574 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,17 @@

import com.nhnacademy.bookstorecoupon.categorycoupon.domain.entity.CategoryCoupon;



/**
* @author 이기훈
* 카테고리 쿠폰 테이블에 있는 정보를 querydsl을 통해 가져오는 custom repository
*/
public interface CustomCategoryCouponRepository {

/**
* 카테고리 쿠폰 테이블에 있는 정보를 querydsl을 통해 가져오는 custom repository
* @return 쿠폰정책 아이디, 카테고리 아이디, 카테고리 이름
*/
Map<Long, CategoryCoupon.CategoryInfo> fetchCategoryIdMap();
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,14 @@
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;




/**
* @author 이기훈
* 쿠폰정책관련 기능을 수행하는 컨트롤러입니다.
*/
@Tag(name = "CouponPolicy", description = "쿠폰 정책관련 API")
@RestController
@RequestMapping("/coupons/policies")
Expand All @@ -39,6 +47,12 @@ public CouponPolicyController(CouponPolicyService couponPolicyService) {
this.couponPolicyService = couponPolicyService;
}



/**
* 웰컴쿠폰 정책을 생성하는 컨트롤러
* @param couponPolicyRequestDTO 쿠폰정책 생성 dto
*/
@Operation(
summary = "웰컴쿠폰정책 생성",
description = "웰컴쿠폰정책을 생성합니다"
Expand All @@ -55,6 +69,14 @@ public ResponseEntity<Void> issueWelcomeCoupon(
couponPolicyService.issueWelcomeCoupon(couponPolicyRequestDTO);
return ResponseEntity.status(HttpStatus.CREATED).build();
}




/**
* 생일쿠폰 정책을 생성하는 컨트롤러
* @param couponPolicyRequestDTO 쿠폰정책 생성 dto
*/
@Operation(
summary = "생일쿠폰정책 생성",
description = "생일쿠폰정책을 생성합니다"
Expand All @@ -73,6 +95,10 @@ public ResponseEntity<Void> issueBirthdayCoupon(
}


/**
* 도서쿠폰 정책을 생성하는 컨트롤러
* @param couponPolicyRequestDTO 쿠폰정책 생성 dto
*/
@Operation(summary = "도서 쿠폰 발행", description = "특정 도서에 대한 도서쿠폰을 발행합니다.")
@ApiResponses(value = {
@ApiResponse(responseCode = "201", description = "도서쿠폰이 성공적으로 발행되었습니다."),
Expand All @@ -91,6 +117,12 @@ public ResponseEntity<Void> issueSpecificBookCoupon(
return ResponseEntity.status(HttpStatus.CREATED).build();
}



/**
* 카테고리쿠폰 정책을 생성하는 컨트롤러
* @param couponPolicyRequestDTO 쿠폰정책 생성 dto
*/
@Operation(summary = "카테고리 쿠폰 발행", description = "특정 카테고리에 대한 카테고리쿠폰을 발행합니다.")
@ApiResponses(value = {
@ApiResponse(responseCode = "201", description = "카테고리쿠폰이 성공적으로 발행되었습니다."),
Expand All @@ -110,6 +142,11 @@ public ResponseEntity<Void> issueSpecificCategoryCoupon(
}



/**
* 할인쿠폰 정책을 생성하는 컨트롤러
* @param couponPolicyRequestDTO 쿠폰정책 생성 dto
*/
@Operation(summary = "할인 쿠폰 발행", description = "할인 쿠폰을 발행합니다.")
@ApiResponses(value = {
@ApiResponse(responseCode = "201", description = "할인쿠폰이 성공적으로 발행되었습니다."),
Expand All @@ -124,6 +161,12 @@ public ResponseEntity<Void> issueDiscountCoupon(
return ResponseEntity.status(HttpStatus.CREATED).build();
}



/**
* 모든 쿠폰 정책을 불러오는 컨트롤러
* @param pageable 페이지 정보
*/
@Operation(summary = "모든 쿠폰 정책 조회", description = "페이징을 통해 모든 쿠폰 정책을 조회합니다.")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "성공적으로 조회되었습니다.")
Expand All @@ -137,6 +180,10 @@ public ResponseEntity<Page<CouponPolicyResponseDTO>> getAllCouponPolicies(@Param



/**
* 쿠폰정책을 수정하는 컨트롤러
* @param requestDTO 쿠폰 업데이트 dto
*/
@Operation(summary = "쿠폰 정책 업데이트", description = "쿠폰 정책을 업데이트합니다.")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "성공적으로 업데이트되었습니다."),
Expand All @@ -159,6 +206,10 @@ public ResponseEntity<Void> updateCouponPolicy(
}


/**
* 쿠폰정책생성 유효성을 검사하는 메소드
* @param requestDTO 쿠폰정책생성 dto
*/
// SalePrice와 SaleRate 유효성 검사 메서드 추가
private void validateSaleFields(CouponPolicyRequestDTO requestDTO) {
if ((requestDTO.salePrice() == null && requestDTO.saleRate() == null && requestDTO.maxSalePrice() == null) ||
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,30 @@
import com.nhnacademy.bookstorecoupon.couponpolicy.domain.dto.response.CouponPolicyResponseDTO;
import com.nhnacademy.bookstorecoupon.couponpolicy.domain.entity.CouponPolicy;




/**
* @author 이기훈
* 쿠폰정책 테이블에 있는 정보를 querydsl을 통해 가져오는 custom repository
*/
public interface CustomCouponPolicyRepository {


/**
* 쿠폰 정책 테이블에 있는 정보를 querydsl을 통해 가져오는 custom repository method
* @param pageable 페이지정보
* @param bookIdMap 도서관련 정보
* @param categoryIdMap 카테고리관련 정보
* @return 쿠폰정책 응답 dto
*/
Page<CouponPolicyResponseDTO> findAllWithBooksAndCategories(Pageable pageable, Map<Long, BookCoupon.BookInfo> bookIdMap, Map<Long, CategoryCoupon.CategoryInfo> categoryIdMap);


/**
* 해당 쿠폰타입에서 가장 최신의 정책을 불러오는 method
* @param type 쿠폰정책 타입
* @return 쿠폰정책 entity
*/
Optional<CouponPolicy> findLatestCouponPolicyByType(String type);
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,61 @@
import com.nhnacademy.bookstorecoupon.couponpolicy.domain.dto.request.CouponPolicyUpdateRequestDTO;
import com.nhnacademy.bookstorecoupon.couponpolicy.domain.dto.response.CouponPolicyResponseDTO;


/**
* 쿠폰 정책을 관리하는 서비스 레이어를 나타내는 인터페이스입니다.
*
* @author 이기훈
*/
public interface CouponPolicyService {
/**
* 주어진 요청 데이터에 기반하여 환영 쿠폰을 발급합니다.
*
* @param requestDTO 환영 쿠폰 발급에 필요한 데이터 전송 객체
*/
void issueWelcomeCoupon(CouponPolicyRequestDTO requestDTO);

/**
* 주어진 요청 데이터에 기반하여 생일 쿠폰을 발급합니다.
*
* @param requestDTO 생일 쿠폰 발급에 필요한 데이터 전송 객체
*/
void issueBirthdayCoupon(CouponPolicyRequestDTO requestDTO);

/**
* 주어진 요청 데이터에 기반하여 특정 도서에 대한 쿠폰을 발급합니다.
*
* @param requestDTO 특정 도서 쿠폰 발급에 필요한 데이터 전송 객체
*/
void issueSpecificBookCoupon(CouponPolicyRequestDTO requestDTO);

/**
* 주어진 요청 데이터에 기반하여 특정 카테고리에 대한 쿠폰을 발급합니다.
*
* @param requestDTO 특정 카테고리 쿠폰 발급에 필요한 데이터 전송 객체
*/
void issueSpecificCategoryCoupon(CouponPolicyRequestDTO requestDTO);

/**
* 주어진 요청 데이터에 기반하여 할인 쿠폰을 발급합니다.
*
* @param requestDTO 할인 쿠폰 발급에 필요한 데이터 전송 객체
*/
void issueDiscountCoupon(CouponPolicyRequestDTO requestDTO);

/**
* 페이지네이션을 지원하여 모든 쿠폰 정책을 조회합니다.
*
* @param pageable 페이지 번호, 페이지 크기, 정렬 정보 등을 포함하는 페이지네이션 정보
* @return 쿠폰 정책 응답 데이터 전송 객체의 페이지
*/
Page<CouponPolicyResponseDTO> getAllCouponPolicies(Pageable pageable);



/**
* 주어진 ID를 가진 기존 쿠폰 정책을 새 데이터로 업데이트합니다.
*
* @param id 업데이트할 쿠폰 정책의 ID
* @param requestDTO 쿠폰 정책에 대한 업데이트된 데이터 전송 객체
*/
void updateCouponPolicy(Long id, CouponPolicyUpdateRequestDTO requestDTO);


}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,14 @@
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;


/**
* 쿠폰 템플릿과 관련된 API를 제공하는 컨트롤러입니다.
* 쿠폰 템플릿 생성 및 조회를 위한 엔드포인트를 제공합니다.
*
* @author 이기훈
*/
@Tag(name = "CouponTemplate", description = "쿠폰템플릿관련 API")
@RestController
@RequestMapping("/coupons")
Expand All @@ -38,6 +46,12 @@ public CouponTemplateController(CouponTemplateService couponTemplateService) {



/**
* 새로운 쿠폰 템플릿을 생성합니다.
*
* @param requestDTO 쿠폰 템플릿 발행에 필요한 데이터 전송 객체
* @return 쿠폰 템플릿 생성 결과를 담고 있는 HTTP 응답
*/
@Operation(summary = "쿠폰 템플릿 생성", description = "새로운 쿠폰 템플릿을 생성합니다.")
@ApiResponses(value = {
@ApiResponse(responseCode = "201", description = "쿠폰 템플릿이 성공적으로 생성되었습니다."),
Expand All @@ -51,6 +65,12 @@ public ResponseEntity<Void> createCouponTemplate(@Parameter(description = "쿠
}


/**
* 유저 기준으로 페이징된 모든 쿠폰 템플릿을 조회합니다.
*
* @param pageable 페이지 번호와 페이지 크기 정보
* @return {@link ResponseEntity} 페이징된 쿠폰 템플릿 목록을 담고 있는 HTTP 응답
*/
@Operation(summary = "유저 페이징으로 모든 쿠폰 템플릿 조회", description = "유저 기준으로 페이징된 모든 쿠폰 템플릿을 조회합니다.")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "쿠폰 템플릿 조회 성공"),
Expand All @@ -64,7 +84,12 @@ public ResponseEntity<Page<CouponTemplateResponseDTO>> getAllCouponTemplatesByUs

}


/**
* 관리자 기준으로 페이징된 모든 쿠폰 템플릿을 조회합니다.
*
* @param pageable 페이지 번호와 페이지 크기 정보
* @return {@link ResponseEntity} 페이징된 쿠폰 템플릿 목록을 담고 있는 HTTP 응답
*/
@Operation(summary = "관리자 페이징으로 모든 쿠폰 템플릿 조회", description = "관리자 기준으로 페이징된 모든 쿠폰 템플릿을 조회합니다.")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "쿠폰 템플릿 조회 성공"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,33 @@
import com.nhnacademy.bookstorecoupon.categorycoupon.domain.entity.CategoryCoupon;
import com.nhnacademy.bookstorecoupon.coupontemplate.domain.dto.response.CouponTemplateResponseDTO;

/**
* 쿠폰 템플릿과 관련된 사용자 정의 데이터 접근 레이어 인터페이스입니다.
* 이 인터페이스는 사용자와 관리자가 페이징된 쿠폰 템플릿을 조회할 수 있도록 하는 메소드를 제공합니다.
*
* @author 이기훈
*/
public interface CustomCouponTemplateRepository {
/**
* 사용자 기준으로 페이징된 모든 쿠폰 템플릿을 조회합니다.
*
* @param pageable 페이지 번호와 페이지 크기 정보
* @param bookIdMap 책 ID와 관련된 쿠폰 정보 맵
* @param categoryIdMap 카테고리 ID와 관련된 쿠폰 정보 맵
* @return 페이징된 쿠폰 템플릿 목록
*/
Page<CouponTemplateResponseDTO> findAllTemplatesByUserPaging(Pageable pageable,
Map<Long, BookCoupon.BookInfo> bookIdMap,
Map<Long, CategoryCoupon.CategoryInfo> categoryIdMap);

/**
* 관리자 기준으로 페이징된 모든 쿠폰 템플릿을 조회합니다.
*
* @param pageable 페이지 번호와 페이지 크기 정보
* @param bookIdMap 책 ID와 관련된 쿠폰 정보 맵
* @param categoryIdMap 카테고리 ID와 관련된 쿠폰 정보 맵
* @return 페이징된 쿠폰 템플릿 목록
*/
Page<CouponTemplateResponseDTO> findAllTemplatesByManagerPaging(Pageable pageable,
Map<Long, BookCoupon.BookInfo> bookIdMap,
Map<Long, CategoryCoupon.CategoryInfo> categoryIdMap);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,40 @@
import com.nhnacademy.bookstorecoupon.coupontemplate.domain.dto.request.CouponTemplateRequestDTO;
import com.nhnacademy.bookstorecoupon.coupontemplate.domain.dto.response.CouponTemplateResponseDTO;

/**
* 쿠폰 템플릿과 관련된 서비스 인터페이스입니다.
* 이 인터페이스는 쿠폰 템플릿을 생성하고, 페이징된 쿠폰 템플릿 목록을 관리하는 기능을 제공합니다.
*
* @author 이기훈
*/

public interface CouponTemplateService {


/**
* 새로운 쿠폰 템플릿을 생성합니다.
*
* @param requestDTO 생성할 쿠폰 템플릿의 요청 데이터
*/
void createCouponTemplate(CouponTemplateRequestDTO requestDTO);


/**
* 관리자를 기준으로 페이징된 모든 쿠폰 템플릿을 조회합니다.
*
* @param pageable 페이지 번호와 페이지 크기 정보
* @return 관리자가 조회할 수 있는 페이징된 쿠폰 템플릿 목록
*/
Page<CouponTemplateResponseDTO> getAllCouponTemplatesByManagerPaging(Pageable pageable);



/**
* 사용자를 기준으로 페이징된 모든 쿠폰 템플릿을 조회합니다.
*
* @param pageable 페이지 번호와 페이지 크기 정보
* @return 사용자가 조회할 수 있는 페이징된 쿠폰 템플릿 목록
*/
Page<CouponTemplateResponseDTO> getAllCouponTemplatesByUserPaging(Pageable pageable);


Expand Down
Loading

0 comments on commit 02ceaad

Please sign in to comment.