diff --git a/src/main/java/com/brainpix/post/controller/CollaborationHubController.java b/src/main/java/com/brainpix/post/controller/CollaborationHubController.java index 4281117c..586c86c2 100644 --- a/src/main/java/com/brainpix/post/controller/CollaborationHubController.java +++ b/src/main/java/com/brainpix/post/controller/CollaborationHubController.java @@ -15,6 +15,7 @@ import com.brainpix.api.ApiResponse; import com.brainpix.api.CommonPageResponse; +import com.brainpix.api.swagger.SwaggerPageable; import com.brainpix.post.converter.ApplyCollaborationDtoConverter; import com.brainpix.post.converter.GetCollaborationHubDetailDtoConverter; import com.brainpix.post.converter.GetCollaborationHubListDtoConverter; @@ -75,7 +76,12 @@ public ResponseEntity> updateCollaborationHub(@PathVariable("c return ResponseEntity.ok(ApiResponse.successWithNoData()); } - @Operation(summary = "협업 광장 전체 조회 [POST]", description = "json body로 검색 조건을 입력받고, 쿼리 파라미터로 페이징을 위한 page, size를 입력받아 전체 조회합니다.") + @SwaggerPageable + @Operation(summary = "협업 광장 전체 조회 [POST]", description = + "json body로 검색 조건을 입력받고, 쿼리 파라미터로 페이징을 위한 page, size를 입력받아 전체 조회합니다." + + "
category : ADVERTISING_PROMOTION, DESIGN, LESSON, MARKETING, DOCUMENT_WRITING, MEDIA_CONTENT," + + " TRANSLATION_INTERPRETATION, TAX_LAW_LABOR, CUSTOM_PRODUCTION, STARTUP_BUSINESS, FOOD_BEVERAGE, IT_TECH, OTHERS" + + "
sortType : NEWEST, OLDEST, POPULAR") @PostMapping("/search") public ResponseEntity>> getCollaborationHubList( @RequestBody GetCollaborationHubListDto.Request request, diff --git a/src/main/java/com/brainpix/post/controller/CommentController.java b/src/main/java/com/brainpix/post/controller/CommentController.java index aa588e00..22e11552 100644 --- a/src/main/java/com/brainpix/post/controller/CommentController.java +++ b/src/main/java/com/brainpix/post/controller/CommentController.java @@ -14,6 +14,7 @@ import com.brainpix.api.ApiResponse; import com.brainpix.api.CommonPageResponse; +import com.brainpix.api.swagger.SwaggerPageable; import com.brainpix.post.converter.CreateCommentDtoConverter; import com.brainpix.post.converter.CreateReplyDtoConverter; import com.brainpix.post.converter.DeleteCommentDtoConverter; @@ -39,6 +40,7 @@ public class CommentController { private final CommentService commentService; + @SwaggerPageable @AllUser @Operation(summary = "댓글 목록 조회 API", description = "경로변수로 postId를 입력받아 해당 게시글의 댓글 목록을 조회합니다.
페이징을 위한 page와 size는 쿼리 파라미터로 입력받습니다.") @GetMapping diff --git a/src/main/java/com/brainpix/post/controller/IdeaMarketController.java b/src/main/java/com/brainpix/post/controller/IdeaMarketController.java index aaf2328a..6d98368d 100644 --- a/src/main/java/com/brainpix/post/controller/IdeaMarketController.java +++ b/src/main/java/com/brainpix/post/controller/IdeaMarketController.java @@ -1,10 +1,12 @@ package com.brainpix.post.controller; +import org.springdoc.core.annotations.ParameterObject; import org.springframework.data.domain.Pageable; import org.springframework.data.web.PageableDefault; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; @@ -14,6 +16,7 @@ import com.brainpix.api.ApiResponse; import com.brainpix.api.CommonPageResponse; +import com.brainpix.api.swagger.SwaggerPageable; import com.brainpix.post.converter.GetIdeaDetailDtoConverter; import com.brainpix.post.converter.GetIdeaListDtoConverter; import com.brainpix.post.converter.GetPopularIdeaListDtoConverter; @@ -69,10 +72,17 @@ public ResponseEntity> deleteIdeaMarket(@PathVariable("ideaId" return ResponseEntity.ok(ApiResponse.successWithNoData()); } - @Operation(summary = "아이디어 전체 조회 [POST]", description = "json body로 아이디어 마켓 타입(IDEA_SOLUTION, MARKET_PLACE)과 검색 조건을 입력 받습니다.
페이징을 위한 page, size는 쿼리 파라미터로 입력받아 전체 조회합니다.") + @SwaggerPageable + @Operation(summary = "아이디어 전체 조회 [POST]", description = + "json body로 아이디어 마켓 타입과 검색 조건을 입력 받습니다." + + "
페이징을 위한 page, size는 쿼리 파라미터로 입력받아 전체 조회합니다." + + "
type : IDEA_SOLUTION, MARKET_PLACE" + + "
category : ADVERTISING_PROMOTION, DESIGN, LESSON, MARKETING, DOCUMENT_WRITING, MEDIA_CONTENT," + + " TRANSLATION_INTERPRETATION, TAX_LAW_LABOR, CUSTOM_PRODUCTION, STARTUP_BUSINESS, FOOD_BEVERAGE, IT_TECH, OTHERS" + + "
sortType : NEWEST, OLDEST, POPULAR, HIGHEST_PRICE, LOWEST_PRICE") @PostMapping("/search") public ResponseEntity>> getIdeaList( - @RequestBody GetIdeaListDto.Request request, + @RequestBody @Valid GetIdeaListDto.Request request, @PageableDefault(page = 0, size = 6) Pageable pageable) { GetIdeaListDto.Parameter parameter = GetIdeaListDtoConverter.toParameter(request, pageable); CommonPageResponse response = ideaMarketService.getIdeaList(parameter); @@ -91,10 +101,11 @@ public ResponseEntity> getIdeaDetail( return ResponseEntity.ok(ApiResponse.success(response)); } - @Operation(summary = "인기 아이디어 조회 [GET]", description = "쿼리 파라미터로 아이디어 마켓 타입(IDEA_SOLUTION, MARKET_PLACE)과 페이징을 위한 page, size를 입력받아 인기 아이디어를 조회합니다.") + @SwaggerPageable + @Operation(summary = "인기 아이디어 조회 [GET]", description = "쿼리 파라미터로 아이디어 마켓 타입과 페이징을 위한 page, size를 입력받아 인기 아이디어를 조회합니다.
type : IDEA_SOLUTION, MARKET_PLACE") @GetMapping("/search/popular") public ResponseEntity>> getPopularIdeaList( - GetPopularIdeaListDto.Request request, + @ModelAttribute @ParameterObject @Valid GetPopularIdeaListDto.Request request, @PageableDefault(page = 0, size = 3) Pageable pageable ) { GetPopularIdeaListDto.Parameter parameter = GetPopularIdeaListDtoConverter.toParameter(request, pageable); diff --git a/src/main/java/com/brainpix/post/controller/RequestTaskQueryController.java b/src/main/java/com/brainpix/post/controller/RequestTaskQueryController.java index ebd383f7..ca8c6d5c 100644 --- a/src/main/java/com/brainpix/post/controller/RequestTaskQueryController.java +++ b/src/main/java/com/brainpix/post/controller/RequestTaskQueryController.java @@ -1,9 +1,11 @@ package com.brainpix.post.controller; +import org.springdoc.core.annotations.ParameterObject; import org.springframework.data.domain.Pageable; import org.springframework.data.web.PageableDefault; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -12,6 +14,7 @@ import com.brainpix.api.ApiResponse; import com.brainpix.api.CommonPageResponse; +import com.brainpix.api.swagger.SwaggerPageable; import com.brainpix.post.converter.GetPopularRequestTaskListDtoConverter; import com.brainpix.post.converter.GetRequestTaskDetailDtoConverter; import com.brainpix.post.converter.GetRequestTaskListDtoConverter; @@ -24,6 +27,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; @RestController @@ -33,21 +37,31 @@ public class RequestTaskQueryController { private final RequestTaskQueryService requestTaskQueryService; - - @Operation(summary = "요청 과제 전체 조회 [POST]", description = "json body로 요청 과제 타입(OPEN_IDEA, TECH_ZONE)과 검색 조건을 입력받고, 페이징을 위한 page, size는 쿼리 파라미터로 입력받아 전체 조회합니다.") + + @SwaggerPageable + @Operation(summary = "요청 과제 전체 조회 [POST]", description = + "json body로 요청 과제 타입과 검색 조건을 입력받고, 페이징을 위한 page, size는 쿼리 파라미터로 입력받아 전체 조회합니다." + + "
type : OPEN_IDEA, TECH_ZONE" + + "
category : ADVERTISING_PROMOTION, DESIGN, LESSON, MARKETING, DOCUMENT_WRITING, MEDIA_CONTENT," + + " TRANSLATION_INTERPRETATION, TAX_LAW_LABOR, CUSTOM_PRODUCTION, STARTUP_BUSINESS, FOOD_BEVERAGE, IT_TECH, OTHERS" + + "
sortType : NEWEST, OLDEST, POPULAR") @PostMapping("/search") public ResponseEntity>> getRequestTaskList( - @RequestBody GetRequestTaskListDto.Request request, @PageableDefault(page = 0, size = 6) Pageable pageable) { + @RequestBody @Valid GetRequestTaskListDto.Request request, + @PageableDefault(page = 0, size = 6) Pageable pageable) { GetRequestTaskListDto.Parameter parameter = GetRequestTaskListDtoConverter.toParameter(request, pageable); CommonPageResponse response = requestTaskQueryService.getRequestTaskList( parameter); return ResponseEntity.ok(ApiResponse.success(response)); } - @Operation(summary = "인기 요청 과제 조회 [GET]", description = "쿼리 파라미터로 요청 과제 타입(OPEN_IDEA, TECH_ZONE)과 page, size를 입력받아 저장순으로 조회합니다.") + @SwaggerPageable + @Operation(summary = "인기 요청 과제 조회 [GET]", description = "쿼리 파라미터로 요청 과제 타입과 page, size를 입력받아 저장순으로 조회합니다." + + "
type : OPEN_IDEA, TECH_ZONE") @GetMapping("/search/popular") public ResponseEntity>> getPopularRequestTaskList( - GetPopularRequestTaskListDto.Request request, @PageableDefault(page = 0, size = 3) Pageable pageable) { + @ModelAttribute @ParameterObject @Valid GetPopularRequestTaskListDto.Request request, + @PageableDefault(page = 0, size = 3) Pageable pageable) { GetPopularRequestTaskListDto.Parameter parameter = GetPopularRequestTaskListDtoConverter.toParameter(request, pageable); CommonPageResponse response = requestTaskQueryService.getPopularRequestTaskList( diff --git a/src/main/java/com/brainpix/post/dto/GetIdeaListDto.java b/src/main/java/com/brainpix/post/dto/GetIdeaListDto.java index 0825febf..51909f15 100644 --- a/src/main/java/com/brainpix/post/dto/GetIdeaListDto.java +++ b/src/main/java/com/brainpix/post/dto/GetIdeaListDto.java @@ -6,6 +6,7 @@ import com.brainpix.post.enums.SortType; import com.brainpix.profile.entity.Specialization; +import jakarta.validation.constraints.NotBlank; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; @@ -15,6 +16,7 @@ public class GetIdeaListDto { @NoArgsConstructor @Getter public static class Request { + @NotBlank(message = "아이디어 타입은 필수입니다. (IDEA_SOLUTION, MARKET_PLACE)") private String type; // 아이디어 타입 private String keyword; // 검색 키워드 private String category; // 카테고리 diff --git a/src/main/java/com/brainpix/post/dto/GetPopularIdeaListDto.java b/src/main/java/com/brainpix/post/dto/GetPopularIdeaListDto.java index 8f85a677..7732d986 100644 --- a/src/main/java/com/brainpix/post/dto/GetPopularIdeaListDto.java +++ b/src/main/java/com/brainpix/post/dto/GetPopularIdeaListDto.java @@ -4,6 +4,7 @@ import com.brainpix.post.entity.idea_market.IdeaMarketType; +import jakarta.validation.constraints.NotBlank; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; @@ -15,6 +16,7 @@ public class GetPopularIdeaListDto { @Getter @Setter public static class Request { + @NotBlank(message = "아이디어 타입은 필수입니다. (IDEA_SOLUTION, MARKET_PLACE)") private String type; // 아이디어 타입 (IDEA_SOLUTION, MARKET_PLACE) } diff --git a/src/main/java/com/brainpix/post/dto/GetPopularRequestTaskListDto.java b/src/main/java/com/brainpix/post/dto/GetPopularRequestTaskListDto.java index dddcb33e..e8bdaa6a 100644 --- a/src/main/java/com/brainpix/post/dto/GetPopularRequestTaskListDto.java +++ b/src/main/java/com/brainpix/post/dto/GetPopularRequestTaskListDto.java @@ -4,6 +4,7 @@ import com.brainpix.post.entity.request_task.RequestTaskType; +import jakarta.validation.constraints.NotBlank; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; @@ -15,6 +16,7 @@ public class GetPopularRequestTaskListDto { @Getter @Setter public static class Request { + @NotBlank(message = "요청 과제 타입은 필수입니다. (OPEN_IDEA, TECH_ZONE)") private String type; // 요청 과제 타입 } diff --git a/src/main/java/com/brainpix/post/dto/GetRequestTaskListDto.java b/src/main/java/com/brainpix/post/dto/GetRequestTaskListDto.java index 45c032c3..677e55dc 100644 --- a/src/main/java/com/brainpix/post/dto/GetRequestTaskListDto.java +++ b/src/main/java/com/brainpix/post/dto/GetRequestTaskListDto.java @@ -6,6 +6,7 @@ import com.brainpix.post.enums.SortType; import com.brainpix.profile.entity.Specialization; +import jakarta.validation.constraints.NotBlank; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; @@ -15,6 +16,7 @@ public class GetRequestTaskListDto { @NoArgsConstructor @Getter public static class Request { + @NotBlank(message = "요청 과제 타입은 필수입니다. (OPEN_IDEA, TECH_ZONE)") private String type; // 요청 과제 타입 private String keyword; // 검색 키워드 private String category; // 카테고리