Skip to content

Commit

Permalink
[REFACTOR] Controller, Entity 리팩토링
Browse files Browse the repository at this point in the history
  • Loading branch information
unanchoi committed Jan 9, 2024
1 parent 525a2b1 commit 594d073
Show file tree
Hide file tree
Showing 24 changed files with 155 additions and 101 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package com.startlion.startlionserver.controller;

import com.startlion.startlionserver.dto.request.application.ApplicationPage1PutRequest;
import com.startlion.startlionserver.dto.request.application.ApplicationPage2PutRequest;
import com.startlion.startlionserver.dto.request.application.ApplicationPage3PutRequest;
import com.startlion.startlionserver.dto.request.application.ApplicationPage4PutRequest;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import java.security.Principal;

@Tag(name = "[Application] 지원서 관련 API")
public interface ApplicationApi {

@Operation(summary = "지원서 정보 가져오기 (저장된 지원서가 없을 시(applicationId = 0), 지원서 1페이지 질문 가져오기)")
Object getApplication(
@PathVariable(required = false) Long applicationId,
@RequestParam(required = false) Integer page,
Principal principal);

@Operation(summary = "지원서 저장하기 1페이지 -> GET application/으로 접근했을 때 사용")
ResponseEntity<String> postApplicationPage1(@RequestBody ApplicationPage1PutRequest request, Principal principal);

@Operation(summary = "지원서 저장하기 1페이지 -> GET application/{applicationId}으로 접근했을 때 사용")
ResponseEntity<String> updateApplicationPage1(@PathVariable @Parameter(description = "지원서 ID") Long applicationId, @RequestBody ApplicationPage1PutRequest request, Principal principal);

@Operation(summary = "지원서 저장하기 2페이지")
ResponseEntity<String> updateApplicationPage2(@PathVariable @Parameter(description = "지원서 ID") Long applicationId, @RequestBody ApplicationPage2PutRequest request, Principal principal);

@Operation(summary = "지원서 저장하기 3페이지")
ResponseEntity<String> updateApplicationPage3(@PathVariable @Parameter(description = "지원서 ID") Long applicationId, @RequestBody ApplicationPage3PutRequest request, Principal principal);

@Operation(summary = "지원서 저장하기 4페이지 -> 제출")
ResponseEntity<String> updateApplicationPage4(@PathVariable @Parameter(description = "지원서 ID") Long applicationId, @RequestBody ApplicationPage4PutRequest request, Principal principal);

}
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
package com.startlion.startlionserver.controller;

import com.startlion.startlionserver.dto.request.application.*;
import com.startlion.startlionserver.dto.response.application.ApplicationPage1GetResponse;
import com.startlion.startlionserver.dto.request.application.ApplicationPage1PutRequest;
import com.startlion.startlionserver.dto.request.application.ApplicationPage2PutRequest;
import com.startlion.startlionserver.dto.request.application.ApplicationPage3PutRequest;
import com.startlion.startlionserver.dto.request.application.ApplicationPage4PutRequest;
import com.startlion.startlionserver.service.ApplicationService;
import com.startlion.startlionserver.util.UserUtil;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.net.URI;
Expand All @@ -19,15 +18,14 @@
@RestController
@RequestMapping(value = "/application")
@RequiredArgsConstructor
@Tag(name = "[Application] 지원서 관련 API")
public class ApplicationController {
public class ApplicationController implements ApplicationApi {

private final ApplicationService applicationService;

@Value("${global.generation}")
Long generation;

@Operation(summary = "지원서 정보 가져오기 (저장된 지원서가 없을 시(applicationId = 0), 지원서 1페이지 질문 가져오기)")
@Override
@GetMapping("/{applicationId}")
public Object getApplication(
@PathVariable(required = false) Long applicationId,
Expand All @@ -42,40 +40,39 @@ public Object getApplication(

// 지원서 저장하기의 경우 받아야 하는 Body 정보가 다르기 때문에, 4개의 API로 나누었습니다.
// 지원서 저장하기 1페이지

@Operation(summary = "지원서 저장하기 1페이지 -> GET application/으로 접근했을 때 사용")
@Override
@PostMapping
public ResponseEntity<String> postApplicationPage1(@RequestBody ApplicationPage1PutRequest request, Principal principal){
Long applicationId = applicationService.createApplicationPage1(request, generation, UserUtil.getUserId(principal));
URI uri = URI.create("/application/" + applicationId);
return ResponseEntity.created(uri).body("Application ID: " + applicationId);
}

@Operation(summary = "지원서 저장하기 1페이지 -> GET application/{applicationId}으로 접근했을 때 사용")
@Override
@PutMapping("/{applicationId}/page1")
public ResponseEntity<String> updateApplicationPage1(@PathVariable @Parameter(description = "지원서 ID") Long applicationId, @RequestBody ApplicationPage1PutRequest request, Principal principal){
URI uri = URI.create("/application/" + applicationService.updateApplicationPage1(applicationId, request, generation, UserUtil.getUserId(principal)));
return ResponseEntity.created(uri).body("지원서 1페이지 저장 완료");
}

// 지원서 저장하기 2페이지
@Operation(summary = "지원서 저장하기 2페이지")
@Override
@PutMapping("/{applicationId}/page2")
public ResponseEntity<String> updateApplicationPage2(@PathVariable @Parameter(description = "지원서 ID") Long applicationId, @RequestBody ApplicationPage2PutRequest request, Principal principal){
URI uri = URI.create("/application/" + applicationService.updateApplicationPage2(applicationId, request, UserUtil.getUserId(principal)));
return ResponseEntity.created(uri).body("지원서 2페이지 저장 완료");
}

// 지원서 저장하기 3페이지
@Operation(summary = "지원서 저장하기 3페이지")
@Override
@PutMapping("/{applicationId}/page3")
public ResponseEntity<String> updateApplicationPage3(@PathVariable @Parameter(description = "지원서 ID") Long applicationId, @RequestBody ApplicationPage3PutRequest request, Principal principal){
URI uri = URI.create("/application/" + applicationService.updateApplicationPage3(applicationId, request, UserUtil.getUserId(principal)));
return ResponseEntity.created(uri).body("지원서 3페이지 저장 완료");
}

// 지원서 저장하기 4페이지 -> 제출
@Operation(summary = "지원서 저장하기 4페이지 -> 제출")
@Override
@PutMapping("/{applicationId}/page4")
public ResponseEntity<String> updateApplicationPage4(@PathVariable @Parameter(description = "지원서 ID") Long applicationId, @RequestBody ApplicationPage4PutRequest request, Principal principal){
URI uri = URI.create("/application/" + applicationService.updateApplicationPage4(applicationId, request, UserUtil.getUserId(principal)));
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.startlion.startlionserver.controller;


import com.startlion.startlionserver.dto.response.interview.InterviewDetailResponse;
import com.startlion.startlionserver.dto.response.interview.InterviewResponse;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

@Tag(name = "[Interview] 인터뷰 관련 API")
public interface InterviewApi {

@Operation(summary = "interview 정보 조회")
ResponseEntity<List<InterviewResponse>> getInterviews(@RequestParam(required = false) String part);

@Operation(summary = "interviewId로 interview 정보 조회")
ResponseEntity<InterviewDetailResponse> getInterviewById(@PathVariable Long interviewId);

}
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@
import com.startlion.startlionserver.dto.response.interview.InterviewDetailResponse;
import com.startlion.startlionserver.dto.response.interview.InterviewResponse;
import com.startlion.startlionserver.service.InterviewService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.val;
import org.springframework.http.ResponseEntity;
Expand All @@ -15,21 +13,17 @@

@RestController
@RequiredArgsConstructor
@RequestMapping("api/interviews")
@Tag(name = "[Interview] 인터뷰 관련 API")
public class InterviewController {
@RequestMapping("/api/interviews")
public class InterviewController implements InterviewApi {

private final InterviewService interviewService;


@Operation(summary = "interview 정보 조회")
@GetMapping
public ResponseEntity<List<InterviewResponse>> getInterviews(@RequestParam(required = false) String part) {
val response = interviewService.getInterviews(part);
return ResponseEntity.ok(response);
}

@Operation(summary = "interviewId로 interview 정보 조회")
@GetMapping("/{interviewId}")
public ResponseEntity<InterviewDetailResponse> getInterviewById(@PathVariable Long interviewId) {
val response = interviewService.getInterviewById(interviewId);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.startlion.startlionserver.controller;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.multipart.MultipartFile;


@Tag(name = "[Interview] 인터뷰 파일 업로드 관련 API")
public interface InterviewFileUploadApi {

@Operation(summary = "파일 업로드")
ResponseEntity<String> uploadFile(@RequestPart MultipartFile file, @PathVariable Long interviewId);
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package com.startlion.startlionserver.controller;

import com.startlion.startlionserver.service.InterviewFileUploadService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
Expand All @@ -11,12 +9,10 @@
@RestController
@RequestMapping("api/interviews")
@RequiredArgsConstructor
@Tag(name = "[Interview] 인터뷰 파일 업로드 관련 API")
public class InterviewFileUploadController {

private final InterviewFileUploadService interviewFileUploadService;

@Operation(summary = "파일 업로드")
@PostMapping("{interviewId}/file")
public ResponseEntity<String> uploadFile(@RequestPart MultipartFile file, @PathVariable Long interviewId) {
interviewFileUploadService.uploadFile(file, interviewId);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.startlion.startlionserver.controller;

import com.startlion.startlionserver.dto.response.part.PartResponse;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PathVariable;

@Tag(name = "[Part] 파트 관련 API")
public interface PartApi {

@Operation(summary = "part 정보 조회")
@ApiResponses(
value = {
@ApiResponse(responseCode = "200", description = "성공"),
@ApiResponse(responseCode = "404", description = "찾을 수 없음"),
@ApiResponse(responseCode = "500", description = "서버 오류")
}
)
ResponseEntity<PartResponse> getPart(@PathVariable String name);


}
Original file line number Diff line number Diff line change
Expand Up @@ -2,31 +2,21 @@

import com.startlion.startlionserver.dto.response.part.PartResponse;
import com.startlion.startlionserver.service.PartService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.val;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequiredArgsConstructor
@RequestMapping("/api/parts")
@Tag(name = "[Part] 파트 관련 API")
public class PartController {
public class PartController implements PartApi {

private final PartService partService;

@Operation(summary = "part 정보 조회")
@ApiResponses(
value = {
@ApiResponse(responseCode = "200", description = "성공"),
@ApiResponse(responseCode = "404", description = "찾을 수 없음"),
@ApiResponse(responseCode = "500", description = "서버 오류")
}
)
@Override
@GetMapping("/{name}")
public ResponseEntity<PartResponse> getPart(@PathVariable String name) {
val response = partService.getPartByName(name);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.startlion.startlionserver.controller;

import com.startlion.startlionserver.dto.response.application.ApplicationListWithSubmittedResponse;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.http.ResponseEntity;

import java.security.Principal;

@Tag(name = "[User] 유저 관련 API")
public interface UserApi {

@Operation(summary = "내 정보 조회")
ResponseEntity<ApplicationListWithSubmittedResponse> getApplicationList(Principal principal);
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,22 @@
import com.startlion.startlionserver.dto.response.application.ApplicationListWithSubmittedResponse;
import com.startlion.startlionserver.service.UserService;
import com.startlion.startlionserver.util.UserUtil;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.val;
import org.aspectj.weaver.MemberUtils;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.security.Principal;

@RestController
@RequestMapping("api/users")
@RequestMapping("/api/users")
@RequiredArgsConstructor
@Tag(name = "[User] 유저 관련 API")
public class UserController {
public class UserController implements UserApi {

private final UserService userService;

@Operation(summary = "내 정보 조회")
@GetMapping("/me")
public ResponseEntity<ApplicationListWithSubmittedResponse> getApplicationList(
Principal principal) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
package com.startlion.startlionserver.domain;public enum PathType {
package com.startlion.startlionserver.domain;

public enum PathType {
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,39 +23,30 @@ public class Answer {
@JoinColumn(name = "application_id")
private Application application;

@Column(length = 500)
@ColumnDefault("''")
private String commonAnswer1;

@Column(length = 500)
@ColumnDefault("''")
private String commonAnswer2;

@Column(length = 500)
@ColumnDefault("''")
private String commonAnswer3;

@Column(length = 500)
@ColumnDefault("''")
private String commonAnswer4;

@Column(length = 500)
@ColumnDefault("''")
private String commonAnswer5;

@Column(length = 500)
@ColumnDefault("''")
private String partAnswer1;

@Column(length = 500)
@ColumnDefault("''")
private String partAnswer2;

@Column(length = 500)
@ColumnDefault("''")
private String partAnswer3;

@Column(length = 500)
@ColumnDefault("''")
private String partAnswer4;

Expand Down
Loading

0 comments on commit 594d073

Please sign in to comment.