diff --git a/src/main/java/com/project/domain/admin/controller/AdminController.java b/src/main/java/com/project/domain/admin/controller/AdminController.java index 9d28a9de..1b27ed52 100644 --- a/src/main/java/com/project/domain/admin/controller/AdminController.java +++ b/src/main/java/com/project/domain/admin/controller/AdminController.java @@ -2,10 +2,12 @@ import jakarta.validation.Valid; +import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; import com.project.common.api.response.ApiResponse; @@ -47,10 +49,11 @@ public ApiResponse signIn( } @PostMapping("/signup") + @ResponseStatus(HttpStatus.CREATED) @Operation(summary = "관리자 회원가입", description = "관리자 이메일/비밀번호로 회원가입합니다.") public ApiResponse signUp( @Valid @RequestBody AdminSignInRequest signInRequest) { - return ApiResponse.success( + return ApiResponse.created( adminService.signUp(signInRequest.email(), signInRequest.password())); } diff --git a/src/main/java/com/project/domain/appeal/controller/AppealController.java b/src/main/java/com/project/domain/appeal/controller/AppealController.java index 0a46e2d2..693a3d68 100644 --- a/src/main/java/com/project/domain/appeal/controller/AppealController.java +++ b/src/main/java/com/project/domain/appeal/controller/AppealController.java @@ -4,6 +4,7 @@ import jakarta.validation.constraints.Max; import jakarta.validation.constraints.Min; +import org.springframework.http.HttpStatus; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PatchMapping; @@ -12,6 +13,7 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; import com.project.common.api.response.ApiResponse; @@ -97,6 +99,7 @@ public ApiResponse getAppealDetail( /** 이의제기 생성 처리 */ @PostMapping + @ResponseStatus(HttpStatus.CREATED) @Operation(summary = "이의제기 생성") public ApiResponse createAppeal( @Parameter(hidden = true) @CustomerId Long customerId, @@ -121,6 +124,7 @@ public ApiResponse respondAppeal( /** 이의제기 댓글 작성 처리 */ @PostMapping("/{appealId}/comments") + @ResponseStatus(HttpStatus.CREATED) @Operation(summary = "이의제기 댓글 작성") public ApiResponse createComment( @Parameter(hidden = true) @CustomerId Long customerId, @@ -143,6 +147,7 @@ public ApiResponse cancelAppeal( /** 긴급 쿼터 요청 처리 */ @PostMapping("/emergency") + @ResponseStatus(HttpStatus.CREATED) @Operation(summary = "긴급 쿼터 요청") public ApiResponse requestEmergencyQuota( @Parameter(hidden = true) @CustomerId Long customerId, diff --git a/src/main/java/com/project/domain/customer/controller/CustomerController.java b/src/main/java/com/project/domain/customer/controller/CustomerController.java index 259c086e..a6489da8 100644 --- a/src/main/java/com/project/domain/customer/controller/CustomerController.java +++ b/src/main/java/com/project/domain/customer/controller/CustomerController.java @@ -2,11 +2,13 @@ import jakarta.validation.Valid; +import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; import com.project.common.api.response.ApiResponse; @@ -48,10 +50,11 @@ public ApiResponse signIn( } @PostMapping("/signup") + @ResponseStatus(HttpStatus.CREATED) @Operation(summary = "사용자 회원가입", description = "사용자 이메일/비밀번호로 회원가입합니다.") public ApiResponse signUp( @Valid @RequestBody CustomerSignUpRequest requestDto) { - return ApiResponse.success(customerService.signUp(requestDto)); + return ApiResponse.created(customerService.signUp(requestDto)); } @PostMapping("/refresh") diff --git a/src/main/java/com/project/domain/mission/controller/MissionController.java b/src/main/java/com/project/domain/mission/controller/MissionController.java index 1546ce5c..1ce9af5a 100644 --- a/src/main/java/com/project/domain/mission/controller/MissionController.java +++ b/src/main/java/com/project/domain/mission/controller/MissionController.java @@ -4,6 +4,7 @@ import jakarta.validation.constraints.Max; import jakarta.validation.constraints.Min; +import org.springframework.http.HttpStatus; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; @@ -12,6 +13,7 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; import com.project.common.api.response.ApiResponse; @@ -89,6 +91,7 @@ public ApiResponse getMissionRequestHistory( /** OWNER가 미션을 생성한다. */ @OwnerOnly @PostMapping + @ResponseStatus(HttpStatus.CREATED) @Operation(summary = "미션 생성") public ApiResponse createMission( @Parameter(hidden = true) @CustomerId Long customerId, @@ -111,11 +114,12 @@ public ApiResponse cancelMission( /** MEMBER가 본인 미션 완료 요청을 생성한다. */ @PostMapping("/{missionId}/request") + @ResponseStatus(HttpStatus.CREATED) @Operation(summary = "미션 완료 요청") public ApiResponse requestMissionApproval( @Parameter(hidden = true) @CustomerId Long customerId, @PathVariable Long missionId) { AuthContext auth = authContextService.resolve(customerId); MissionRequestResult result = missionService.requestMissionApproval(auth, missionId); - return ApiResponse.success(MissionRequestResponse.from(result)); + return ApiResponse.created(MissionRequestResponse.from(result)); } } diff --git a/src/main/java/com/project/domain/policy/controller/PolicyController.java b/src/main/java/com/project/domain/policy/controller/PolicyController.java index b25fb179..e2ead07d 100644 --- a/src/main/java/com/project/domain/policy/controller/PolicyController.java +++ b/src/main/java/com/project/domain/policy/controller/PolicyController.java @@ -5,6 +5,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.web.PageableDefault; +import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @@ -12,6 +13,7 @@ import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; import com.fasterxml.jackson.core.JsonProcessingException; @@ -56,11 +58,12 @@ public ApiResponse getPolicyList( @PostMapping @AdminOnly + @ResponseStatus(HttpStatus.CREATED) @Operation(summary = "정책 생성", description = "새로운 정책 템플릿을 생성합니다.") public ApiResponse createPolicy( @Valid @RequestBody PolicyRequest.Create policyRequest) { Policy policy = policyService.createPolicy(policyRequest); - return ApiResponse.success(PolicyResponse.Create.from(policy)); + return ApiResponse.created(PolicyResponse.Create.from(policy)); } @PutMapping("/{policyId}") diff --git a/src/main/java/com/project/domain/reward/controller/AdminRewardTemplateController.java b/src/main/java/com/project/domain/reward/controller/AdminRewardTemplateController.java index 2cdcaaaa..1b685524 100644 --- a/src/main/java/com/project/domain/reward/controller/AdminRewardTemplateController.java +++ b/src/main/java/com/project/domain/reward/controller/AdminRewardTemplateController.java @@ -78,7 +78,6 @@ public ApiResponse updateTemplate( @DeleteMapping("/{id}") @AdminOnly - @ResponseStatus(HttpStatus.NO_CONTENT) @Operation(summary = "보상 템플릿 삭제", description = "보상 템플릿을 삭제합니다. (Soft Delete)") public ApiResponse deleteTemplate( @Parameter(description = "보상 템플릿 ID", required = true) @PathVariable("id") Long id) { diff --git a/src/test/java/com/project/domain/mission/controller/MissionControllerIntegrationTest.java b/src/test/java/com/project/domain/mission/controller/MissionControllerIntegrationTest.java index c00b502b..82388f0d 100644 --- a/src/test/java/com/project/domain/mission/controller/MissionControllerIntegrationTest.java +++ b/src/test/java/com/project/domain/mission/controller/MissionControllerIntegrationTest.java @@ -178,7 +178,7 @@ void missionFlowKeepsRewardShape() throws Exception { .header("Authorization", "Bearer " + OWNER_TOKEN) .contentType(MediaType.APPLICATION_JSON) .content(createBody)) - .andExpect(status().isOk()) + .andExpect(status().isCreated()) .andReturn(); Long createdMissionId = objectMapper @@ -192,7 +192,7 @@ void missionFlowKeepsRewardShape() throws Exception { mockMvc.perform( post("/missions/{missionId}/request", mission.getId()) .header("Authorization", "Bearer " + MEMBER_TOKEN)) - .andExpect(status().isOk()) + .andExpect(status().isCreated()) .andReturn(); JsonNode requestData = objectMapper diff --git a/src/test/java/com/project/domain/reward/controller/RewardControllerIntegrationTest.java b/src/test/java/com/project/domain/reward/controller/RewardControllerIntegrationTest.java index c235503d..5f40507d 100644 --- a/src/test/java/com/project/domain/reward/controller/RewardControllerIntegrationTest.java +++ b/src/test/java/com/project/domain/reward/controller/RewardControllerIntegrationTest.java @@ -162,7 +162,7 @@ void rewardFlowKeepsRewardShape() throws Exception { mockMvc.perform( post("/missions/{missionId}/request", mission.getId()) .header("Authorization", "Bearer " + MEMBER_TOKEN)) - .andExpect(status().isOk()) + .andExpect(status().isCreated()) .andReturn(); Long requestId = objectMapper