From bb66260552cdb65af9060ea7b8951f79e5dcf3fb Mon Sep 17 00:00:00 2001 From: ahyeungii Date: Sun, 2 Feb 2025 04:27:52 +0900 Subject: [PATCH 01/31] =?UTF-8?q?feat=20:=20FormField,=20FormAnswer=20?= =?UTF-8?q?=EC=97=94=ED=8B=B0=ED=8B=B0=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/form/entity/FormAnswer.java | 39 +++++++++++++++ .../domain/form/entity/FormResponse.java | 49 +++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 src/main/java/ddingdong/ddingdongBE/domain/form/entity/FormAnswer.java create mode 100644 src/main/java/ddingdong/ddingdongBE/domain/form/entity/FormResponse.java diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/entity/FormAnswer.java b/src/main/java/ddingdong/ddingdongBE/domain/form/entity/FormAnswer.java new file mode 100644 index 00000000..c1347501 --- /dev/null +++ b/src/main/java/ddingdong/ddingdongBE/domain/form/entity/FormAnswer.java @@ -0,0 +1,39 @@ +package ddingdong.ddingdongBE.domain.form.entity; + +import ddingdong.ddingdongBE.common.BaseEntity; +import jakarta.persistence.*; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@Getter +public class FormAnswer extends BaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(nullable = false) + private String value; + + @Column(nullable = false) + private String valueType; + + @ManyToOne(fetch = FetchType.LAZY) + private FormResponse formResponse; + + @ManyToOne(fetch = FetchType.LAZY) + private FormField formField; + + @Builder + private FormAnswer(String value, String valueType, FormResponse formResponse, FormField formField) { + this.value = value; + this.valueType = valueType; + this.formResponse = formResponse; + this.formField = formField; + } + +} diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/entity/FormResponse.java b/src/main/java/ddingdong/ddingdongBE/domain/form/entity/FormResponse.java new file mode 100644 index 00000000..3b4f114e --- /dev/null +++ b/src/main/java/ddingdong/ddingdongBE/domain/form/entity/FormResponse.java @@ -0,0 +1,49 @@ +package ddingdong.ddingdongBE.domain.form.entity; + +import ddingdong.ddingdongBE.common.BaseEntity; +import jakarta.persistence.*; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +@Entity +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@Getter +public class FormResponse extends BaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(nullable = false) + private LocalDateTime submittedAt; + + @Column(nullable = false) + private String name; + + @Column(nullable = false) + private String studentNumber; + + @Column(nullable = false) + private String department; + + @Enumerated(EnumType.STRING) + @Column(nullable = false) + private ApplicationStatus status; + + @ManyToOne(fetch = FetchType.LAZY) + private Form form; + + @Builder + private FormResponse(LocalDateTime submittedAt, String name, String studentNumber, String department, ApplicationStatus status, Form form) { + this.submittedAt = submittedAt; + this.name = name; + this.studentNumber = studentNumber; + this.department = department; + this.status = status; + this.form = form; + } +} From 2fb9efcf8f631e4e16bc4f1caba75c24d5cc4c8f Mon Sep 17 00:00:00 2001 From: ahyeungii Date: Sun, 2 Feb 2025 04:31:55 +0900 Subject: [PATCH 02/31] =?UTF-8?q?feat=20:=20FormResponseRepository,=20Form?= =?UTF-8?q?AnswerRepository=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/form/repository/FormAnswerRepository.java | 7 +++++++ .../domain/form/repository/FormResponseRepository.java | 8 ++++++++ 2 files changed, 15 insertions(+) create mode 100644 src/main/java/ddingdong/ddingdongBE/domain/form/repository/FormAnswerRepository.java create mode 100644 src/main/java/ddingdong/ddingdongBE/domain/form/repository/FormResponseRepository.java diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/repository/FormAnswerRepository.java b/src/main/java/ddingdong/ddingdongBE/domain/form/repository/FormAnswerRepository.java new file mode 100644 index 00000000..dc5a1487 --- /dev/null +++ b/src/main/java/ddingdong/ddingdongBE/domain/form/repository/FormAnswerRepository.java @@ -0,0 +1,7 @@ +package ddingdong.ddingdongBE.domain.form.repository; + +import ddingdong.ddingdongBE.domain.form.entity.FormAnswer; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface FormAnswerRepository extends JpaRepository { +} diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/repository/FormResponseRepository.java b/src/main/java/ddingdong/ddingdongBE/domain/form/repository/FormResponseRepository.java new file mode 100644 index 00000000..1975e2f8 --- /dev/null +++ b/src/main/java/ddingdong/ddingdongBE/domain/form/repository/FormResponseRepository.java @@ -0,0 +1,8 @@ +package ddingdong.ddingdongBE.domain.form.repository; + +import ddingdong.ddingdongBE.domain.form.entity.FormField; +import ddingdong.ddingdongBE.domain.form.entity.FormResponse; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface FormResponseRepository extends JpaRepository { +} From 392b08530367d9ceeae018ea7279ecd52216f2e4 Mon Sep 17 00:00:00 2001 From: ahyeungii Date: Sun, 2 Feb 2025 04:35:00 +0900 Subject: [PATCH 03/31] =?UTF-8?q?feat=20:=20=EC=A7=80=EC=9B=90=ED=95=98?= =?UTF-8?q?=EA=B8=B0=20API=EC=97=90=20=ED=95=84=EC=9A=94=ED=95=9C=20?= =?UTF-8?q?=EC=84=9C=EB=B9=84=EC=8A=A4=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit develop 브랜치 풀 받아야 해서 미완성인 상태로 커밋했습니다. --- .../form/service/FacadeUserFormService.java | 9 ++++++++ .../service/FacadeUserFormServiceImpl.java | 22 +++++++++++++++++++ .../form/service/FormAnswerService.java | 4 ++++ .../form/service/FormResponseService.java | 7 ++++++ 4 files changed, 42 insertions(+) create mode 100644 src/main/java/ddingdong/ddingdongBE/domain/form/service/FacadeUserFormService.java create mode 100644 src/main/java/ddingdong/ddingdongBE/domain/form/service/FacadeUserFormServiceImpl.java create mode 100644 src/main/java/ddingdong/ddingdongBE/domain/form/service/FormAnswerService.java create mode 100644 src/main/java/ddingdong/ddingdongBE/domain/form/service/FormResponseService.java diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/service/FacadeUserFormService.java b/src/main/java/ddingdong/ddingdongBE/domain/form/service/FacadeUserFormService.java new file mode 100644 index 00000000..3f89ab02 --- /dev/null +++ b/src/main/java/ddingdong/ddingdongBE/domain/form/service/FacadeUserFormService.java @@ -0,0 +1,9 @@ +package ddingdong.ddingdongBE.domain.form.service; + +import ddingdong.ddingdongBE.domain.form.service.dto.command.CreateFormResponseCommand; + +public interface FacadeUserFormService { + + void createFormResponse(CreateFormResponseCommand createFormResponseCommand); + +} diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/service/FacadeUserFormServiceImpl.java b/src/main/java/ddingdong/ddingdongBE/domain/form/service/FacadeUserFormServiceImpl.java new file mode 100644 index 00000000..d22286f1 --- /dev/null +++ b/src/main/java/ddingdong/ddingdongBE/domain/form/service/FacadeUserFormServiceImpl.java @@ -0,0 +1,22 @@ +package ddingdong.ddingdongBE.domain.form.service; + +import ddingdong.ddingdongBE.domain.form.controller.dto.request.CreateFormResponseRequest; +import ddingdong.ddingdongBE.domain.form.entity.Form; +import ddingdong.ddingdongBE.domain.form.service.dto.command.CreateFormResponseCommand; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@RequiredArgsConstructor +@Transactional(readOnly = true) +public class FacadeUserFormServiceImpl implements FacadeUserFormService { + + private final FormResponseService formResponseService; + private final FormAnswerService formAnswerService; + + @Override + public void createFormResponse(CreateFormResponseCommand createFormResponseCommand) { + + } +} diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/service/FormAnswerService.java b/src/main/java/ddingdong/ddingdongBE/domain/form/service/FormAnswerService.java new file mode 100644 index 00000000..e7b3741b --- /dev/null +++ b/src/main/java/ddingdong/ddingdongBE/domain/form/service/FormAnswerService.java @@ -0,0 +1,4 @@ +package ddingdong.ddingdongBE.domain.form.service; + +public interface FormAnswerService { +} diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/service/FormResponseService.java b/src/main/java/ddingdong/ddingdongBE/domain/form/service/FormResponseService.java new file mode 100644 index 00000000..400b7e3c --- /dev/null +++ b/src/main/java/ddingdong/ddingdongBE/domain/form/service/FormResponseService.java @@ -0,0 +1,7 @@ +package ddingdong.ddingdongBE.domain.form.service; + +import ddingdong.ddingdongBE.domain.form.entity.FormResponse; + +public interface FormResponseService { + +} From 237e9dda6923be8e6f3ffbf42612994c8a53f0c4 Mon Sep 17 00:00:00 2001 From: ahyeungii Date: Sun, 2 Feb 2025 04:39:51 +0900 Subject: [PATCH 04/31] =?UTF-8?q?feat=20:=20UserFormController=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/form/api/UserFormApi.java | 24 +++++++++++++++++++ .../controller/dto/UserFormController.java | 18 ++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 src/main/java/ddingdong/ddingdongBE/domain/form/api/UserFormApi.java create mode 100644 src/main/java/ddingdong/ddingdongBE/domain/form/controller/dto/UserFormController.java diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/api/UserFormApi.java b/src/main/java/ddingdong/ddingdongBE/domain/form/api/UserFormApi.java new file mode 100644 index 00000000..c64eea96 --- /dev/null +++ b/src/main/java/ddingdong/ddingdongBE/domain/form/api/UserFormApi.java @@ -0,0 +1,24 @@ +package ddingdong.ddingdongBE.domain.form.api; + +import ddingdong.ddingdongBE.domain.form.controller.dto.request.CreateFormResponseRequest; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import org.springframework.http.HttpStatus; +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; + +@Tag(name = "Form - User", description = "User Form API") +@RequestMapping("/server") +public interface UserFormApi { + + @Operation(summary = "지원하기 API") + @ApiResponse(responseCode = "201", description = "지원하기 성공") + @ResponseStatus(HttpStatus.CREATED) + @PostMapping + void createFormResponse(@Valid @RequestBody CreateFormResponseRequest request); + +} diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/controller/dto/UserFormController.java b/src/main/java/ddingdong/ddingdongBE/domain/form/controller/dto/UserFormController.java new file mode 100644 index 00000000..0051604d --- /dev/null +++ b/src/main/java/ddingdong/ddingdongBE/domain/form/controller/dto/UserFormController.java @@ -0,0 +1,18 @@ +package ddingdong.ddingdongBE.domain.form.controller.dto; + +import ddingdong.ddingdongBE.domain.form.api.UserFormApi; +import ddingdong.ddingdongBE.domain.form.controller.dto.request.CreateFormResponseRequest; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequiredArgsConstructor +public class UserFormController implements UserFormApi { + + @Override + public void createFormResponse( + CreateFormResponseRequest createFormResponseRequest + ) { + + } +} From 0a367c5971f77cb43c8b303f03758aa6395f1e19 Mon Sep 17 00:00:00 2001 From: ahyeungii Date: Sun, 2 Feb 2025 04:40:29 +0900 Subject: [PATCH 05/31] =?UTF-8?q?feat=20:=20=EC=A7=80=EC=9B=90=ED=95=98?= =?UTF-8?q?=EA=B8=B0=20API=EC=97=90=20=ED=95=84=EC=9A=94=ED=95=9C=20DTO=20?= =?UTF-8?q?=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../request/CreateFormResponseRequest.java | 70 +++++++++++++++++++ .../command/CreateFormResponseCommand.java | 45 ++++++++++++ 2 files changed, 115 insertions(+) create mode 100644 src/main/java/ddingdong/ddingdongBE/domain/form/controller/dto/request/CreateFormResponseRequest.java create mode 100644 src/main/java/ddingdong/ddingdongBE/domain/form/service/dto/command/CreateFormResponseCommand.java diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/controller/dto/request/CreateFormResponseRequest.java b/src/main/java/ddingdong/ddingdongBE/domain/form/controller/dto/request/CreateFormResponseRequest.java new file mode 100644 index 00000000..473481d0 --- /dev/null +++ b/src/main/java/ddingdong/ddingdongBE/domain/form/controller/dto/request/CreateFormResponseRequest.java @@ -0,0 +1,70 @@ +package ddingdong.ddingdongBE.domain.form.controller.dto.request; + +import ddingdong.ddingdongBE.domain.form.entity.FormField; +import ddingdong.ddingdongBE.domain.form.service.dto.command.CreateFormResponseCommand; +import ddingdong.ddingdongBE.domain.form.service.dto.command.CreateFormResponseCommand.CreateFormAnswerCommand; +import io.swagger.v3.oas.annotations.media.ArraySchema; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; + +import java.time.LocalDateTime; +import java.util.List; + +public record CreateFormResponseRequest( + @NotNull(message = "지원 일시는 null일 수 없습니다.") + @Schema(description = "지원 일시", example = "2025-01-01T00:00") + LocalDateTime submittedAt, + + @NotNull(message = "지원자 이름은 필수 입력 사항입니다.") + @Schema(description = "지원자 이름", example = "김띵동") + String name, + + @NotNull(message = "지원자 학번은 필수 입력 사항입니다.") + @Schema(description = "학번", example = "60200000") + String studentNumber, + + @NotNull(message = "지원자 학과는 필수 입력 사항입니다.") + @Schema(description = "학과", example = "융합소프트웨어학부 응용소프트웨어전공") + String department, + + @ArraySchema(schema = @Schema(implementation = CreateFormAnswerRequest.class)) + List formAnswers +) { + record CreateFormAnswerRequest( + @NotNull(message = "질문 id는 null이 될 수 없습니다.") + @Schema(description = "질문 id", example = "1") + FormField formField, + + @Schema(description = "답변 값") + String value, + + @NotNull(message = "질문 타입은 null이 될 수 없습니다.") + @Schema(description = "질문 타입", example = "RADIO") + String valueType + + ) { + public CreateFormAnswerCommand toCommand() { + return CreateFormAnswerCommand.builder() + .formField(formField) + .value(value) + .valueType(valueType) + .build(); + } + } + + public CreateFormResponseCommand toCommand() { + List createFormAnswerCommands = formAnswers.stream() + .map(CreateFormAnswerRequest::toCommand) + .toList(); + return CreateFormResponseCommand.builder() + .submittedAt(submittedAt) + .name(name) + .studentNumber(studentNumber) + .department(department) + .formAnswerCommands(createFormAnswerCommands) + .build(); + } + + } + + diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/service/dto/command/CreateFormResponseCommand.java b/src/main/java/ddingdong/ddingdongBE/domain/form/service/dto/command/CreateFormResponseCommand.java new file mode 100644 index 00000000..101a2015 --- /dev/null +++ b/src/main/java/ddingdong/ddingdongBE/domain/form/service/dto/command/CreateFormResponseCommand.java @@ -0,0 +1,45 @@ +package ddingdong.ddingdongBE.domain.form.service.dto.command; + +import ddingdong.ddingdongBE.domain.form.entity.Form; +import ddingdong.ddingdongBE.domain.form.entity.FormAnswer; +import ddingdong.ddingdongBE.domain.form.entity.FormField; +import ddingdong.ddingdongBE.domain.form.entity.FormResponse; +import lombok.Builder; + +import java.time.LocalDateTime; +import java.util.List; + +@Builder +public record CreateFormResponseCommand( + LocalDateTime submittedAt, + String name, + String studentNumber, + String department, + List formAnswerCommands +) { + @Builder + public record CreateFormAnswerCommand( + FormField formField, + String value, + String valueType + ) { + public FormAnswer toEntity(FormResponse formResponse) { + return FormAnswer.builder() + .formField(formField) + .value(value) + .valueType(valueType) + .build(); + } + } + + public FormResponse toEntity(Form form) { + return FormResponse.builder() + .submittedAt(submittedAt) + .name(name) + .studentNumber(studentNumber) + .department(department) + .form(form) + .build(); + } + +} From 17bc0c227d548ade060a0713c3afdf0a46d139fe Mon Sep 17 00:00:00 2001 From: ahyeungii Date: Sun, 2 Feb 2025 04:42:34 +0900 Subject: [PATCH 06/31] =?UTF-8?q?feat=20:=20FormResponse=20=EC=83=81?= =?UTF-8?q?=ED=83=9C=20enum=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ddingdongBE/domain/form/entity/FormResponse.java | 4 ++-- .../domain/form/entity/FormResponseStatus.java | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 src/main/java/ddingdong/ddingdongBE/domain/form/entity/FormResponseStatus.java diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/entity/FormResponse.java b/src/main/java/ddingdong/ddingdongBE/domain/form/entity/FormResponse.java index 3b4f114e..ac88b484 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/form/entity/FormResponse.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/form/entity/FormResponse.java @@ -32,13 +32,13 @@ public class FormResponse extends BaseEntity { @Enumerated(EnumType.STRING) @Column(nullable = false) - private ApplicationStatus status; + private FormResponseStatus status; @ManyToOne(fetch = FetchType.LAZY) private Form form; @Builder - private FormResponse(LocalDateTime submittedAt, String name, String studentNumber, String department, ApplicationStatus status, Form form) { + private FormResponse(LocalDateTime submittedAt, String name, String studentNumber, String department, FormResponseStatus status, Form form) { this.submittedAt = submittedAt; this.name = name; this.studentNumber = studentNumber; diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/entity/FormResponseStatus.java b/src/main/java/ddingdong/ddingdongBE/domain/form/entity/FormResponseStatus.java new file mode 100644 index 00000000..f27facf3 --- /dev/null +++ b/src/main/java/ddingdong/ddingdongBE/domain/form/entity/FormResponseStatus.java @@ -0,0 +1,8 @@ +package ddingdong.ddingdongBE.domain.form.entity; + +public enum FormResponseStatus { + SUBMITTED, + FIRST_PASS, + FINAL_PASS, + FAILURE +} From a9e4a7569c5b9c35844e14d513c7ba82f0bf0d10 Mon Sep 17 00:00:00 2001 From: ahyeungii Date: Sun, 2 Feb 2025 06:09:35 +0900 Subject: [PATCH 07/31] =?UTF-8?q?feat=20:=20=EC=A7=80=EC=9B=90=ED=95=98?= =?UTF-8?q?=EA=B8=B0=20=EC=8A=A4=ED=81=AC=EB=A6=BD=ED=8A=B8=20=EC=9E=91?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ..._create_form_response_and_answer_table.sql | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/main/resources/db/migration/V35_create_form_response_and_answer_table.sql diff --git a/src/main/resources/db/migration/V35_create_form_response_and_answer_table.sql b/src/main/resources/db/migration/V35_create_form_response_and_answer_table.sql new file mode 100644 index 00000000..35a56af7 --- /dev/null +++ b/src/main/resources/db/migration/V35_create_form_response_and_answer_table.sql @@ -0,0 +1,25 @@ +CREATE TABLE form_response +( + id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY, + submitted_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, + name VARCHAR(50) NOT NULL, + student_number VARCHAR(50) NOT NULL, + status VARCHAR(50) NOT NULL, + form_id BIGINT NOT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NULL, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NULL, + CONSTRAINT fk_response_form FOREIGN KEY (form_id) REFERENCES form (id) ON DELETE CASCADE +); + +CREATE TABLE form_answer +( + id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY, + value VARCHAR(255) NULL, + value_type VARCHAR(50) NOT NULL, + response_id BIGINT NOT NULL, + field_id BIGINT NOT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NULL, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NULL, + CONSTRAINT fk_answer_response FOREIGN KEY (response_id) REFERENCES form_response (id) ON DELETE CASCADE, + CONSTRAINT fk_answer_field FOREIGN KEY (field_id) REFERENCES form_field (id) ON DELETE CASCADE +); From 8297adc94556b0ba2d80be3c105803432009d6e0 Mon Sep 17 00:00:00 2001 From: ahyeungii Date: Sun, 2 Feb 2025 06:10:01 +0900 Subject: [PATCH 08/31] =?UTF-8?q?feat=20:=20=EC=A7=80=EC=9B=90=ED=95=98?= =?UTF-8?q?=EA=B8=B0=20API=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/FacadeUserFormServiceImpl.java | 18 +++++++++++++- .../form/service/FormAnswerService.java | 6 +++++ .../form/service/FormResponseService.java | 2 ++ .../domain/form/service/FormService.java | 2 ++ .../service/GeneralFormAnswerService.java | 24 +++++++++++++++++++ .../service/GeneralFormResponseService.java | 21 ++++++++++++++++ .../form/service/GeneralFormService.java | 6 +++++ .../command/CreateFormResponseCommand.java | 1 + 8 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 src/main/java/ddingdong/ddingdongBE/domain/form/service/GeneralFormAnswerService.java create mode 100644 src/main/java/ddingdong/ddingdongBE/domain/form/service/GeneralFormResponseService.java diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/service/FacadeUserFormServiceImpl.java b/src/main/java/ddingdong/ddingdongBE/domain/form/service/FacadeUserFormServiceImpl.java index d22286f1..5a575295 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/form/service/FacadeUserFormServiceImpl.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/form/service/FacadeUserFormServiceImpl.java @@ -1,12 +1,15 @@ package ddingdong.ddingdongBE.domain.form.service; -import ddingdong.ddingdongBE.domain.form.controller.dto.request.CreateFormResponseRequest; import ddingdong.ddingdongBE.domain.form.entity.Form; +import ddingdong.ddingdongBE.domain.form.entity.FormAnswer; +import ddingdong.ddingdongBE.domain.form.entity.FormResponse; import ddingdong.ddingdongBE.domain.form.service.dto.command.CreateFormResponseCommand; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; + @Service @RequiredArgsConstructor @Transactional(readOnly = true) @@ -14,9 +17,22 @@ public class FacadeUserFormServiceImpl implements FacadeUserFormService { private final FormResponseService formResponseService; private final FormAnswerService formAnswerService; + private final FormService formService; + @Transactional @Override public void createFormResponse(CreateFormResponseCommand createFormResponseCommand) { + Form form = formService.getById(createFormResponseCommand.form().getId()); + FormResponse formResponse = createFormResponseCommand.toEntity(form); + FormResponse savedFormResponse = formResponseService.create(formResponse); + + List formAnswers = toFormAnswers(savedFormResponse, createFormResponseCommand.formAnswerCommands()); + formAnswerService.createAll(formAnswers); + } + private List toFormAnswers(FormResponse savedFormResponse, List createFormAnswerCommands) { + return createFormAnswerCommands.stream() + .map(formAnswerCommand -> formAnswerCommand.toEntity(savedFormResponse)) + .toList(); } } diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/service/FormAnswerService.java b/src/main/java/ddingdong/ddingdongBE/domain/form/service/FormAnswerService.java index e7b3741b..35fc18b1 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/form/service/FormAnswerService.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/form/service/FormAnswerService.java @@ -1,4 +1,10 @@ package ddingdong.ddingdongBE.domain.form.service; +import ddingdong.ddingdongBE.domain.form.entity.FormAnswer; +import java.util.List; + public interface FormAnswerService { + + void createAll(List formAnswers); + } diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/service/FormResponseService.java b/src/main/java/ddingdong/ddingdongBE/domain/form/service/FormResponseService.java index 400b7e3c..ceeefc30 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/form/service/FormResponseService.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/form/service/FormResponseService.java @@ -4,4 +4,6 @@ public interface FormResponseService { + FormResponse create(FormResponse formResponse); + } diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/service/FormService.java b/src/main/java/ddingdong/ddingdongBE/domain/form/service/FormService.java index 059f43d7..efd16f93 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/form/service/FormService.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/form/service/FormService.java @@ -5,4 +5,6 @@ public interface FormService { Form create(Form form); + + Form getById(Long id); } diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/service/GeneralFormAnswerService.java b/src/main/java/ddingdong/ddingdongBE/domain/form/service/GeneralFormAnswerService.java new file mode 100644 index 00000000..2a7ac661 --- /dev/null +++ b/src/main/java/ddingdong/ddingdongBE/domain/form/service/GeneralFormAnswerService.java @@ -0,0 +1,24 @@ +package ddingdong.ddingdongBE.domain.form.service; + +import ddingdong.ddingdongBE.domain.form.entity.FormAnswer; +import ddingdong.ddingdongBE.domain.form.repository.FormAnswerRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Service +@RequiredArgsConstructor +@Transactional(readOnly = true) +public class GeneralFormAnswerService implements FormAnswerService { + + private final FormAnswerRepository formAnswerRepository; + + @Transactional + @Override + public void createAll(List formAnswers) { + formAnswerRepository.saveAll(formAnswers); + } + +} diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/service/GeneralFormResponseService.java b/src/main/java/ddingdong/ddingdongBE/domain/form/service/GeneralFormResponseService.java new file mode 100644 index 00000000..045b0c7b --- /dev/null +++ b/src/main/java/ddingdong/ddingdongBE/domain/form/service/GeneralFormResponseService.java @@ -0,0 +1,21 @@ +package ddingdong.ddingdongBE.domain.form.service; + +import ddingdong.ddingdongBE.domain.form.entity.FormResponse; +import ddingdong.ddingdongBE.domain.form.repository.FormResponseRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@RequiredArgsConstructor +@Transactional(readOnly = true) +public class GeneralFormResponseService implements FormResponseService { + + private final FormResponseRepository formResponseRepository; + + @Override + public FormResponse create(FormResponse formResponse) { + return formResponseRepository.save(formResponse); + } + +} diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/service/GeneralFormService.java b/src/main/java/ddingdong/ddingdongBE/domain/form/service/GeneralFormService.java index 922608ef..cd6bb3d6 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/form/service/GeneralFormService.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/form/service/GeneralFormService.java @@ -18,4 +18,10 @@ public class GeneralFormService implements FormService{ public Form create(Form form) { return formRepository.save(form); } + + @Transactional + @Override + public Form getById(Long id) { + return formRepository.getById(id); + } } diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/service/dto/command/CreateFormResponseCommand.java b/src/main/java/ddingdong/ddingdongBE/domain/form/service/dto/command/CreateFormResponseCommand.java index 101a2015..6ccc6454 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/form/service/dto/command/CreateFormResponseCommand.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/form/service/dto/command/CreateFormResponseCommand.java @@ -11,6 +11,7 @@ @Builder public record CreateFormResponseCommand( + Form form, LocalDateTime submittedAt, String name, String studentNumber, From 178793c41d2bb397b8a9d8f13ac22ae7d57ccb80 Mon Sep 17 00:00:00 2001 From: ahyeungii Date: Sun, 2 Feb 2025 07:04:13 +0900 Subject: [PATCH 09/31] =?UTF-8?q?feat=20:=20dto=EC=9D=98=20formField=20?= =?UTF-8?q?=EA=B0=9D=EC=B2=B4=EB=A5=BC=20fieldId=EB=A1=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/dto/request/CreateFormResponseRequest.java | 4 ++-- .../domain/form/service/FacadeUserFormServiceImpl.java | 8 +++++++- .../ddingdongBE/domain/form/service/FormFieldService.java | 3 +++ .../domain/form/service/GeneralFormFieldService.java | 8 ++++++++ .../service/dto/command/CreateFormResponseCommand.java | 6 +++--- 5 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/controller/dto/request/CreateFormResponseRequest.java b/src/main/java/ddingdong/ddingdongBE/domain/form/controller/dto/request/CreateFormResponseRequest.java index 473481d0..f968f52e 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/form/controller/dto/request/CreateFormResponseRequest.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/form/controller/dto/request/CreateFormResponseRequest.java @@ -33,7 +33,7 @@ public record CreateFormResponseRequest( record CreateFormAnswerRequest( @NotNull(message = "질문 id는 null이 될 수 없습니다.") @Schema(description = "질문 id", example = "1") - FormField formField, + Long fieldId, @Schema(description = "답변 값") String value, @@ -45,7 +45,7 @@ record CreateFormAnswerRequest( ) { public CreateFormAnswerCommand toCommand() { return CreateFormAnswerCommand.builder() - .formField(formField) + .fieldId(fieldId) .value(value) .valueType(valueType) .build(); diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/service/FacadeUserFormServiceImpl.java b/src/main/java/ddingdong/ddingdongBE/domain/form/service/FacadeUserFormServiceImpl.java index 5a575295..e2d0e218 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/form/service/FacadeUserFormServiceImpl.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/form/service/FacadeUserFormServiceImpl.java @@ -2,6 +2,7 @@ import ddingdong.ddingdongBE.domain.form.entity.Form; import ddingdong.ddingdongBE.domain.form.entity.FormAnswer; +import ddingdong.ddingdongBE.domain.form.entity.FormField; import ddingdong.ddingdongBE.domain.form.entity.FormResponse; import ddingdong.ddingdongBE.domain.form.service.dto.command.CreateFormResponseCommand; import lombok.RequiredArgsConstructor; @@ -18,6 +19,7 @@ public class FacadeUserFormServiceImpl implements FacadeUserFormService { private final FormResponseService formResponseService; private final FormAnswerService formAnswerService; private final FormService formService; + private final FormFieldService formFieldService; @Transactional @Override @@ -32,7 +34,11 @@ public void createFormResponse(CreateFormResponseCommand createFormResponseComma private List toFormAnswers(FormResponse savedFormResponse, List createFormAnswerCommands) { return createFormAnswerCommands.stream() - .map(formAnswerCommand -> formAnswerCommand.toEntity(savedFormResponse)) + .map(formAnswerCommand -> { + FormField formField = formFieldService.findById(formAnswerCommand.fieldId()) + .orElseThrow(() -> new IllegalArgumentException("해당 field를 id로 찾을 수 없습니다: " + formAnswerCommand.fieldId())); + return formAnswerCommand.toEntity(savedFormResponse, formField); + }) .toList(); } } diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/service/FormFieldService.java b/src/main/java/ddingdong/ddingdongBE/domain/form/service/FormFieldService.java index 72c4346e..7bf18fb6 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/form/service/FormFieldService.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/form/service/FormFieldService.java @@ -2,8 +2,11 @@ import ddingdong.ddingdongBE.domain.form.entity.FormField; import java.util.List; +import java.util.Optional; public interface FormFieldService { void createAll(List formFields); + + Optional findById(Long id); } diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/service/GeneralFormFieldService.java b/src/main/java/ddingdong/ddingdongBE/domain/form/service/GeneralFormFieldService.java index 2c0c1237..5729bd70 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/form/service/GeneralFormFieldService.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/form/service/GeneralFormFieldService.java @@ -3,6 +3,8 @@ import ddingdong.ddingdongBE.domain.form.entity.FormField; import ddingdong.ddingdongBE.domain.form.repository.FormFieldRepository; import java.util.List; +import java.util.Optional; + import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -19,4 +21,10 @@ public class GeneralFormFieldService implements FormFieldService { public void createAll(List formFields) { formFieldRepository.saveAll(formFields); } + + @Transactional + @Override + public Optional findById(Long id) { + return formFieldRepository.findById(id); + } } diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/service/dto/command/CreateFormResponseCommand.java b/src/main/java/ddingdong/ddingdongBE/domain/form/service/dto/command/CreateFormResponseCommand.java index 6ccc6454..963b2c3a 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/form/service/dto/command/CreateFormResponseCommand.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/form/service/dto/command/CreateFormResponseCommand.java @@ -20,15 +20,15 @@ public record CreateFormResponseCommand( ) { @Builder public record CreateFormAnswerCommand( - FormField formField, + Long fieldId, String value, String valueType ) { - public FormAnswer toEntity(FormResponse formResponse) { + public FormAnswer toEntity(FormResponse formResponse, FormField formField) { return FormAnswer.builder() - .formField(formField) .value(value) .valueType(valueType) + .formField(formField) .build(); } } From 0736cb2204f3696c16c2197b247f17ad5069157b Mon Sep 17 00:00:00 2001 From: ahyeungii Date: Sun, 2 Feb 2025 07:15:14 +0900 Subject: [PATCH 10/31] =?UTF-8?q?fix=20:=20FormAnswer=20=EB=B9=8C=EB=8D=94?= =?UTF-8?q?=EC=97=90=20=EB=88=84=EB=9D=BD=EB=90=9C=20=EC=97=B0=EA=B4=80?= =?UTF-8?q?=EA=B4=80=EA=B3=84=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form/service/dto/command/CreateFormResponseCommand.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/service/dto/command/CreateFormResponseCommand.java b/src/main/java/ddingdong/ddingdongBE/domain/form/service/dto/command/CreateFormResponseCommand.java index 963b2c3a..0d28897b 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/form/service/dto/command/CreateFormResponseCommand.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/form/service/dto/command/CreateFormResponseCommand.java @@ -29,6 +29,7 @@ public FormAnswer toEntity(FormResponse formResponse, FormField formField) { .value(value) .valueType(valueType) .formField(formField) + .formResponse(formResponse) .build(); } } From c995843565df2ee6f81dcbe61f025047250e6fbf Mon Sep 17 00:00:00 2001 From: ahyeungii Date: Sun, 2 Feb 2025 07:16:02 +0900 Subject: [PATCH 11/31] =?UTF-8?q?remove:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20import=EB=AC=B8=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form/controller/dto/request/CreateFormResponseRequest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/controller/dto/request/CreateFormResponseRequest.java b/src/main/java/ddingdong/ddingdongBE/domain/form/controller/dto/request/CreateFormResponseRequest.java index f968f52e..b3e861f2 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/form/controller/dto/request/CreateFormResponseRequest.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/form/controller/dto/request/CreateFormResponseRequest.java @@ -1,6 +1,5 @@ package ddingdong.ddingdongBE.domain.form.controller.dto.request; -import ddingdong.ddingdongBE.domain.form.entity.FormField; import ddingdong.ddingdongBE.domain.form.service.dto.command.CreateFormResponseCommand; import ddingdong.ddingdongBE.domain.form.service.dto.command.CreateFormResponseCommand.CreateFormAnswerCommand; import io.swagger.v3.oas.annotations.media.ArraySchema; From 786d71e87245a4dbd5dffc305a97c5af274804b4 Mon Sep 17 00:00:00 2001 From: ahyeungii Date: Mon, 3 Feb 2025 02:39:00 +0900 Subject: [PATCH 12/31] =?UTF-8?q?rename:=20formapplication=20=ED=8C=A8?= =?UTF-8?q?=ED=82=A4=EC=A7=80=EB=A1=9C=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form/repository/FormResponseRepository.java | 8 -------- .../domain/form/service/FacadeUserFormService.java | 9 --------- .../domain/form/service/FormAnswerService.java | 10 ---------- .../domain/form/service/FormResponseService.java | 9 --------- .../{form => formapplicaion}/api/UserFormApi.java | 4 ++-- .../controller}/UserFormController.java | 6 +++--- .../dto/request/CreateFormResponseRequest.java | 11 +++-------- .../{form => formapplicaion}/entity/FormAnswer.java | 3 ++- .../{form => formapplicaion}/entity/FormResponse.java | 11 +++-------- .../entity/FormResponseStatus.java | 2 +- .../repository/FormAnswerRepository.java | 4 ++-- .../repository/FormResponseRepository.java | 7 +++++++ .../formapplicaion/service/FacadeUserFormService.java | 9 +++++++++ .../service/FacadeUserFormServiceImpl.java | 10 ++++++---- .../formapplicaion/service/FormAnswerService.java | 10 ++++++++++ .../formapplicaion/service/FormResponseService.java | 9 +++++++++ .../service/GeneralFormAnswerService.java | 6 +++--- .../service/GeneralFormResponseService.java | 6 +++--- .../service/dto}/CreateFormResponseCommand.java | 9 +++------ 19 files changed, 66 insertions(+), 77 deletions(-) delete mode 100644 src/main/java/ddingdong/ddingdongBE/domain/form/repository/FormResponseRepository.java delete mode 100644 src/main/java/ddingdong/ddingdongBE/domain/form/service/FacadeUserFormService.java delete mode 100644 src/main/java/ddingdong/ddingdongBE/domain/form/service/FormAnswerService.java delete mode 100644 src/main/java/ddingdong/ddingdongBE/domain/form/service/FormResponseService.java rename src/main/java/ddingdong/ddingdongBE/domain/{form => formapplicaion}/api/UserFormApi.java (84%) rename src/main/java/ddingdong/ddingdongBE/domain/{form/controller/dto => formapplicaion/controller}/UserFormController.java (58%) rename src/main/java/ddingdong/ddingdongBE/domain/{form => formapplicaion}/controller/dto/request/CreateFormResponseRequest.java (81%) rename src/main/java/ddingdong/ddingdongBE/domain/{form => formapplicaion}/entity/FormAnswer.java (88%) rename src/main/java/ddingdong/ddingdongBE/domain/{form => formapplicaion}/entity/FormResponse.java (73%) rename src/main/java/ddingdong/ddingdongBE/domain/{form => formapplicaion}/entity/FormResponseStatus.java (61%) rename src/main/java/ddingdong/ddingdongBE/domain/{form => formapplicaion}/repository/FormAnswerRepository.java (52%) create mode 100644 src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/repository/FormResponseRepository.java create mode 100644 src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FacadeUserFormService.java rename src/main/java/ddingdong/ddingdongBE/domain/{form => formapplicaion}/service/FacadeUserFormServiceImpl.java (81%) create mode 100644 src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FormAnswerService.java create mode 100644 src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FormResponseService.java rename src/main/java/ddingdong/ddingdongBE/domain/{form => formapplicaion}/service/GeneralFormAnswerService.java (70%) rename src/main/java/ddingdong/ddingdongBE/domain/{form => formapplicaion}/service/GeneralFormResponseService.java (69%) rename src/main/java/ddingdong/ddingdongBE/domain/{form/service/dto/command => formapplicaion/service/dto}/CreateFormResponseCommand.java (79%) diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/repository/FormResponseRepository.java b/src/main/java/ddingdong/ddingdongBE/domain/form/repository/FormResponseRepository.java deleted file mode 100644 index 1975e2f8..00000000 --- a/src/main/java/ddingdong/ddingdongBE/domain/form/repository/FormResponseRepository.java +++ /dev/null @@ -1,8 +0,0 @@ -package ddingdong.ddingdongBE.domain.form.repository; - -import ddingdong.ddingdongBE.domain.form.entity.FormField; -import ddingdong.ddingdongBE.domain.form.entity.FormResponse; -import org.springframework.data.jpa.repository.JpaRepository; - -public interface FormResponseRepository extends JpaRepository { -} diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/service/FacadeUserFormService.java b/src/main/java/ddingdong/ddingdongBE/domain/form/service/FacadeUserFormService.java deleted file mode 100644 index 3f89ab02..00000000 --- a/src/main/java/ddingdong/ddingdongBE/domain/form/service/FacadeUserFormService.java +++ /dev/null @@ -1,9 +0,0 @@ -package ddingdong.ddingdongBE.domain.form.service; - -import ddingdong.ddingdongBE.domain.form.service.dto.command.CreateFormResponseCommand; - -public interface FacadeUserFormService { - - void createFormResponse(CreateFormResponseCommand createFormResponseCommand); - -} diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/service/FormAnswerService.java b/src/main/java/ddingdong/ddingdongBE/domain/form/service/FormAnswerService.java deleted file mode 100644 index 35fc18b1..00000000 --- a/src/main/java/ddingdong/ddingdongBE/domain/form/service/FormAnswerService.java +++ /dev/null @@ -1,10 +0,0 @@ -package ddingdong.ddingdongBE.domain.form.service; - -import ddingdong.ddingdongBE.domain.form.entity.FormAnswer; -import java.util.List; - -public interface FormAnswerService { - - void createAll(List formAnswers); - -} diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/service/FormResponseService.java b/src/main/java/ddingdong/ddingdongBE/domain/form/service/FormResponseService.java deleted file mode 100644 index ceeefc30..00000000 --- a/src/main/java/ddingdong/ddingdongBE/domain/form/service/FormResponseService.java +++ /dev/null @@ -1,9 +0,0 @@ -package ddingdong.ddingdongBE.domain.form.service; - -import ddingdong.ddingdongBE.domain.form.entity.FormResponse; - -public interface FormResponseService { - - FormResponse create(FormResponse formResponse); - -} diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/api/UserFormApi.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/api/UserFormApi.java similarity index 84% rename from src/main/java/ddingdong/ddingdongBE/domain/form/api/UserFormApi.java rename to src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/api/UserFormApi.java index c64eea96..30480783 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/form/api/UserFormApi.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/api/UserFormApi.java @@ -1,6 +1,6 @@ -package ddingdong.ddingdongBE.domain.form.api; +package ddingdong.ddingdongBE.domain.formapplicaion.api; -import ddingdong.ddingdongBE.domain.form.controller.dto.request.CreateFormResponseRequest; +import ddingdong.ddingdongBE.domain.formapplicaion.controller.dto.request.CreateFormResponseRequest; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/controller/dto/UserFormController.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/UserFormController.java similarity index 58% rename from src/main/java/ddingdong/ddingdongBE/domain/form/controller/dto/UserFormController.java rename to src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/UserFormController.java index 0051604d..9d0e2d43 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/form/controller/dto/UserFormController.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/UserFormController.java @@ -1,7 +1,7 @@ -package ddingdong.ddingdongBE.domain.form.controller.dto; +package ddingdong.ddingdongBE.domain.formapplicaion.controller; -import ddingdong.ddingdongBE.domain.form.api.UserFormApi; -import ddingdong.ddingdongBE.domain.form.controller.dto.request.CreateFormResponseRequest; +import ddingdong.ddingdongBE.domain.formapplicaion.api.UserFormApi; +import ddingdong.ddingdongBE.domain.formapplicaion.controller.dto.request.CreateFormResponseRequest; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.RestController; diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/controller/dto/request/CreateFormResponseRequest.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/dto/request/CreateFormResponseRequest.java similarity index 81% rename from src/main/java/ddingdong/ddingdongBE/domain/form/controller/dto/request/CreateFormResponseRequest.java rename to src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/dto/request/CreateFormResponseRequest.java index b3e861f2..040d4353 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/form/controller/dto/request/CreateFormResponseRequest.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/dto/request/CreateFormResponseRequest.java @@ -1,18 +1,14 @@ -package ddingdong.ddingdongBE.domain.form.controller.dto.request; +package ddingdong.ddingdongBE.domain.formapplicaion.controller.dto.request; -import ddingdong.ddingdongBE.domain.form.service.dto.command.CreateFormResponseCommand; -import ddingdong.ddingdongBE.domain.form.service.dto.command.CreateFormResponseCommand.CreateFormAnswerCommand; +import ddingdong.ddingdongBE.domain.formapplicaion.service.dto.CreateFormResponseCommand; +import ddingdong.ddingdongBE.domain.formapplicaion.service.dto.CreateFormResponseCommand.CreateFormAnswerCommand; import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; -import java.time.LocalDateTime; import java.util.List; public record CreateFormResponseRequest( - @NotNull(message = "지원 일시는 null일 수 없습니다.") - @Schema(description = "지원 일시", example = "2025-01-01T00:00") - LocalDateTime submittedAt, @NotNull(message = "지원자 이름은 필수 입력 사항입니다.") @Schema(description = "지원자 이름", example = "김띵동") @@ -56,7 +52,6 @@ public CreateFormResponseCommand toCommand() { .map(CreateFormAnswerRequest::toCommand) .toList(); return CreateFormResponseCommand.builder() - .submittedAt(submittedAt) .name(name) .studentNumber(studentNumber) .department(department) diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/entity/FormAnswer.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormAnswer.java similarity index 88% rename from src/main/java/ddingdong/ddingdongBE/domain/form/entity/FormAnswer.java rename to src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormAnswer.java index c1347501..c7cbbf15 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/form/entity/FormAnswer.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormAnswer.java @@ -1,6 +1,7 @@ -package ddingdong.ddingdongBE.domain.form.entity; +package ddingdong.ddingdongBE.domain.formapplicaion.entity; import ddingdong.ddingdongBE.common.BaseEntity; +import ddingdong.ddingdongBE.domain.form.entity.FormField; import jakarta.persistence.*; import lombok.AccessLevel; import lombok.Builder; diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/entity/FormResponse.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormResponse.java similarity index 73% rename from src/main/java/ddingdong/ddingdongBE/domain/form/entity/FormResponse.java rename to src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormResponse.java index ac88b484..fe55ed37 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/form/entity/FormResponse.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormResponse.java @@ -1,14 +1,13 @@ -package ddingdong.ddingdongBE.domain.form.entity; +package ddingdong.ddingdongBE.domain.formapplicaion.entity; import ddingdong.ddingdongBE.common.BaseEntity; +import ddingdong.ddingdongBE.domain.form.entity.Form; import jakarta.persistence.*; import lombok.AccessLevel; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; -import java.time.LocalDateTime; - @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter @@ -18,9 +17,6 @@ public class FormResponse extends BaseEntity { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - @Column(nullable = false) - private LocalDateTime submittedAt; - @Column(nullable = false) private String name; @@ -38,8 +34,7 @@ public class FormResponse extends BaseEntity { private Form form; @Builder - private FormResponse(LocalDateTime submittedAt, String name, String studentNumber, String department, FormResponseStatus status, Form form) { - this.submittedAt = submittedAt; + private FormResponse(String name, String studentNumber, String department, FormResponseStatus status, Form form) { this.name = name; this.studentNumber = studentNumber; this.department = department; diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/entity/FormResponseStatus.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormResponseStatus.java similarity index 61% rename from src/main/java/ddingdong/ddingdongBE/domain/form/entity/FormResponseStatus.java rename to src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormResponseStatus.java index f27facf3..8721f4f7 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/form/entity/FormResponseStatus.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormResponseStatus.java @@ -1,4 +1,4 @@ -package ddingdong.ddingdongBE.domain.form.entity; +package ddingdong.ddingdongBE.domain.formapplicaion.entity; public enum FormResponseStatus { SUBMITTED, diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/repository/FormAnswerRepository.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/repository/FormAnswerRepository.java similarity index 52% rename from src/main/java/ddingdong/ddingdongBE/domain/form/repository/FormAnswerRepository.java rename to src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/repository/FormAnswerRepository.java index dc5a1487..f4fb5865 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/form/repository/FormAnswerRepository.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/repository/FormAnswerRepository.java @@ -1,6 +1,6 @@ -package ddingdong.ddingdongBE.domain.form.repository; +package ddingdong.ddingdongBE.domain.formapplicaion.repository; -import ddingdong.ddingdongBE.domain.form.entity.FormAnswer; +import ddingdong.ddingdongBE.domain.formapplicaion.entity.FormAnswer; import org.springframework.data.jpa.repository.JpaRepository; public interface FormAnswerRepository extends JpaRepository { diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/repository/FormResponseRepository.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/repository/FormResponseRepository.java new file mode 100644 index 00000000..b27e788d --- /dev/null +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/repository/FormResponseRepository.java @@ -0,0 +1,7 @@ +package ddingdong.ddingdongBE.domain.formapplicaion.repository; + +import ddingdong.ddingdongBE.domain.formapplicaion.entity.FormResponse; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface FormResponseRepository extends JpaRepository { +} diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FacadeUserFormService.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FacadeUserFormService.java new file mode 100644 index 00000000..36b802a3 --- /dev/null +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FacadeUserFormService.java @@ -0,0 +1,9 @@ +package ddingdong.ddingdongBE.domain.formapplicaion.service; + +import ddingdong.ddingdongBE.domain.formapplicaion.service.dto.CreateFormResponseCommand; + +public interface FacadeUserFormService { + + void createFormResponse(CreateFormResponseCommand createFormResponseCommand); + +} diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/service/FacadeUserFormServiceImpl.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FacadeUserFormServiceImpl.java similarity index 81% rename from src/main/java/ddingdong/ddingdongBE/domain/form/service/FacadeUserFormServiceImpl.java rename to src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FacadeUserFormServiceImpl.java index e2d0e218..120669c4 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/form/service/FacadeUserFormServiceImpl.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FacadeUserFormServiceImpl.java @@ -1,10 +1,12 @@ -package ddingdong.ddingdongBE.domain.form.service; +package ddingdong.ddingdongBE.domain.formapplicaion.service; import ddingdong.ddingdongBE.domain.form.entity.Form; -import ddingdong.ddingdongBE.domain.form.entity.FormAnswer; +import ddingdong.ddingdongBE.domain.formapplicaion.entity.FormAnswer; import ddingdong.ddingdongBE.domain.form.entity.FormField; -import ddingdong.ddingdongBE.domain.form.entity.FormResponse; -import ddingdong.ddingdongBE.domain.form.service.dto.command.CreateFormResponseCommand; +import ddingdong.ddingdongBE.domain.formapplicaion.entity.FormResponse; +import ddingdong.ddingdongBE.domain.form.service.FormFieldService; +import ddingdong.ddingdongBE.domain.form.service.FormService; +import ddingdong.ddingdongBE.domain.formapplicaion.service.dto.CreateFormResponseCommand; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FormAnswerService.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FormAnswerService.java new file mode 100644 index 00000000..49c608e7 --- /dev/null +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FormAnswerService.java @@ -0,0 +1,10 @@ +package ddingdong.ddingdongBE.domain.formapplicaion.service; + +import ddingdong.ddingdongBE.domain.formapplicaion.entity.FormAnswer; +import java.util.List; + +public interface FormAnswerService { + + void createAll(List formAnswers); + +} diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FormResponseService.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FormResponseService.java new file mode 100644 index 00000000..9802ac32 --- /dev/null +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FormResponseService.java @@ -0,0 +1,9 @@ +package ddingdong.ddingdongBE.domain.formapplicaion.service; + +import ddingdong.ddingdongBE.domain.formapplicaion.entity.FormResponse; + +public interface FormResponseService { + + FormResponse create(FormResponse formResponse); + +} diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/service/GeneralFormAnswerService.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/GeneralFormAnswerService.java similarity index 70% rename from src/main/java/ddingdong/ddingdongBE/domain/form/service/GeneralFormAnswerService.java rename to src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/GeneralFormAnswerService.java index 2a7ac661..08c5b310 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/form/service/GeneralFormAnswerService.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/GeneralFormAnswerService.java @@ -1,7 +1,7 @@ -package ddingdong.ddingdongBE.domain.form.service; +package ddingdong.ddingdongBE.domain.formapplicaion.service; -import ddingdong.ddingdongBE.domain.form.entity.FormAnswer; -import ddingdong.ddingdongBE.domain.form.repository.FormAnswerRepository; +import ddingdong.ddingdongBE.domain.formapplicaion.entity.FormAnswer; +import ddingdong.ddingdongBE.domain.formapplicaion.repository.FormAnswerRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/service/GeneralFormResponseService.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/GeneralFormResponseService.java similarity index 69% rename from src/main/java/ddingdong/ddingdongBE/domain/form/service/GeneralFormResponseService.java rename to src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/GeneralFormResponseService.java index 045b0c7b..e999a7b7 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/form/service/GeneralFormResponseService.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/GeneralFormResponseService.java @@ -1,7 +1,7 @@ -package ddingdong.ddingdongBE.domain.form.service; +package ddingdong.ddingdongBE.domain.formapplicaion.service; -import ddingdong.ddingdongBE.domain.form.entity.FormResponse; -import ddingdong.ddingdongBE.domain.form.repository.FormResponseRepository; +import ddingdong.ddingdongBE.domain.formapplicaion.entity.FormResponse; +import ddingdong.ddingdongBE.domain.formapplicaion.repository.FormResponseRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/service/dto/command/CreateFormResponseCommand.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/dto/CreateFormResponseCommand.java similarity index 79% rename from src/main/java/ddingdong/ddingdongBE/domain/form/service/dto/command/CreateFormResponseCommand.java rename to src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/dto/CreateFormResponseCommand.java index 0d28897b..e8cf9bb2 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/form/service/dto/command/CreateFormResponseCommand.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/dto/CreateFormResponseCommand.java @@ -1,18 +1,16 @@ -package ddingdong.ddingdongBE.domain.form.service.dto.command; +package ddingdong.ddingdongBE.domain.formapplicaion.service.dto; import ddingdong.ddingdongBE.domain.form.entity.Form; -import ddingdong.ddingdongBE.domain.form.entity.FormAnswer; +import ddingdong.ddingdongBE.domain.formapplicaion.entity.FormAnswer; import ddingdong.ddingdongBE.domain.form.entity.FormField; -import ddingdong.ddingdongBE.domain.form.entity.FormResponse; +import ddingdong.ddingdongBE.domain.formapplicaion.entity.FormResponse; import lombok.Builder; -import java.time.LocalDateTime; import java.util.List; @Builder public record CreateFormResponseCommand( Form form, - LocalDateTime submittedAt, String name, String studentNumber, String department, @@ -36,7 +34,6 @@ public FormAnswer toEntity(FormResponse formResponse, FormField formField) { public FormResponse toEntity(Form form) { return FormResponse.builder() - .submittedAt(submittedAt) .name(name) .studentNumber(studentNumber) .department(department) From 0b071f66dab4c901b32b5a49ce3f074da40eb0c0 Mon Sep 17 00:00:00 2001 From: ahyeungii Date: Mon, 3 Feb 2025 02:39:53 +0900 Subject: [PATCH 13/31] =?UTF-8?q?fix:=20=EC=A7=80=EC=9B=90=ED=95=98?= =?UTF-8?q?=EA=B8=B0=20API=EC=9D=98=20=EB=88=84=EB=9D=BD=EB=90=9C=20url=20?= =?UTF-8?q?=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ddingdongBE/domain/formapplicaion/api/UserFormApi.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/api/UserFormApi.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/api/UserFormApi.java index 30480783..4e5bf09e 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/api/UserFormApi.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/api/UserFormApi.java @@ -18,7 +18,7 @@ public interface UserFormApi { @Operation(summary = "지원하기 API") @ApiResponse(responseCode = "201", description = "지원하기 성공") @ResponseStatus(HttpStatus.CREATED) - @PostMapping + @PostMapping("/forms/{formId}/applications") void createFormResponse(@Valid @RequestBody CreateFormResponseRequest request); } From 438292b9f8a444dcb047227c521b2c14247e7801 Mon Sep 17 00:00:00 2001 From: ahyeungii Date: Mon, 3 Feb 2025 02:45:14 +0900 Subject: [PATCH 14/31] =?UTF-8?q?fix:=20UserFormController=EC=97=90?= =?UTF-8?q?=EC=84=9C=20createFormResponse=20=ED=98=B8=EC=B6=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../formapplicaion/controller/UserFormController.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/UserFormController.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/UserFormController.java index 9d0e2d43..7479e436 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/UserFormController.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/UserFormController.java @@ -2,6 +2,7 @@ import ddingdong.ddingdongBE.domain.formapplicaion.api.UserFormApi; import ddingdong.ddingdongBE.domain.formapplicaion.controller.dto.request.CreateFormResponseRequest; +import ddingdong.ddingdongBE.domain.formapplicaion.service.FacadeUserFormService; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.RestController; @@ -9,10 +10,12 @@ @RequiredArgsConstructor public class UserFormController implements UserFormApi { + private final FacadeUserFormService facadeUserFormService; + @Override - public void createFormResponse( - CreateFormResponseRequest createFormResponseRequest - ) { + public void createFormResponse(CreateFormResponseRequest createFormResponseRequest) { + + facadeUserFormService.createFormResponse(createFormResponseRequest.toCommand()); } } From d0f9d6afa5dbf6d1aff6d9a229a5326b5e983ca1 Mon Sep 17 00:00:00 2001 From: ahyeungii Date: Mon, 3 Feb 2025 02:54:46 +0900 Subject: [PATCH 15/31] =?UTF-8?q?rename:=20FormResponse=EB=A5=BC=20FormApp?= =?UTF-8?q?lication=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../formapplicaion/api/UserFormApi.java | 4 ++-- .../controller/UserFormController.java | 6 +++--- ...java => CreateFormApplicationRequest.java} | 10 +++++----- .../formapplicaion/entity/FormAnswer.java | 6 +++--- ...FormResponse.java => FormApplication.java} | 6 +++--- ...Status.java => FormApplicationStatus.java} | 2 +- .../repository/FormApplicationRepository.java | 7 +++++++ .../repository/FormResponseRepository.java | 7 ------- .../service/FacadeUserFormService.java | 4 ++-- .../service/FacadeUserFormServiceImpl.java | 20 +++++++++---------- .../service/FormApplicationService.java | 9 +++++++++ .../service/FormResponseService.java | 9 --------- ...ava => GeneralFormApplicationService.java} | 8 ++++---- ...java => CreateFormApplicationCommand.java} | 12 +++++------ 14 files changed, 55 insertions(+), 55 deletions(-) rename src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/dto/request/{CreateFormResponseRequest.java => CreateFormApplicationRequest.java} (90%) rename src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/{FormResponse.java => FormApplication.java} (81%) rename src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/{FormResponseStatus.java => FormApplicationStatus.java} (77%) create mode 100644 src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/repository/FormApplicationRepository.java delete mode 100644 src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/repository/FormResponseRepository.java create mode 100644 src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FormApplicationService.java delete mode 100644 src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FormResponseService.java rename src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/{GeneralFormResponseService.java => GeneralFormApplicationService.java} (61%) rename src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/dto/{CreateFormResponseCommand.java => CreateFormApplicationCommand.java} (73%) diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/api/UserFormApi.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/api/UserFormApi.java index 4e5bf09e..f2eb04fe 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/api/UserFormApi.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/api/UserFormApi.java @@ -1,6 +1,6 @@ package ddingdong.ddingdongBE.domain.formapplicaion.api; -import ddingdong.ddingdongBE.domain.formapplicaion.controller.dto.request.CreateFormResponseRequest; +import ddingdong.ddingdongBE.domain.formapplicaion.controller.dto.request.CreateFormApplicationRequest; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; @@ -19,6 +19,6 @@ public interface UserFormApi { @ApiResponse(responseCode = "201", description = "지원하기 성공") @ResponseStatus(HttpStatus.CREATED) @PostMapping("/forms/{formId}/applications") - void createFormResponse(@Valid @RequestBody CreateFormResponseRequest request); + void createFormResponse(@Valid @RequestBody CreateFormApplicationRequest request); } diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/UserFormController.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/UserFormController.java index 7479e436..62987adb 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/UserFormController.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/UserFormController.java @@ -1,7 +1,7 @@ package ddingdong.ddingdongBE.domain.formapplicaion.controller; import ddingdong.ddingdongBE.domain.formapplicaion.api.UserFormApi; -import ddingdong.ddingdongBE.domain.formapplicaion.controller.dto.request.CreateFormResponseRequest; +import ddingdong.ddingdongBE.domain.formapplicaion.controller.dto.request.CreateFormApplicationRequest; import ddingdong.ddingdongBE.domain.formapplicaion.service.FacadeUserFormService; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.RestController; @@ -13,9 +13,9 @@ public class UserFormController implements UserFormApi { private final FacadeUserFormService facadeUserFormService; @Override - public void createFormResponse(CreateFormResponseRequest createFormResponseRequest) { + public void createFormResponse(CreateFormApplicationRequest createFormApplicationRequest) { - facadeUserFormService.createFormResponse(createFormResponseRequest.toCommand()); + facadeUserFormService.createFormResponse(createFormApplicationRequest.toCommand()); } } diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/dto/request/CreateFormResponseRequest.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/dto/request/CreateFormApplicationRequest.java similarity index 90% rename from src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/dto/request/CreateFormResponseRequest.java rename to src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/dto/request/CreateFormApplicationRequest.java index 040d4353..80804c09 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/dto/request/CreateFormResponseRequest.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/dto/request/CreateFormApplicationRequest.java @@ -1,14 +1,14 @@ package ddingdong.ddingdongBE.domain.formapplicaion.controller.dto.request; -import ddingdong.ddingdongBE.domain.formapplicaion.service.dto.CreateFormResponseCommand; -import ddingdong.ddingdongBE.domain.formapplicaion.service.dto.CreateFormResponseCommand.CreateFormAnswerCommand; +import ddingdong.ddingdongBE.domain.formapplicaion.service.dto.CreateFormApplicationCommand; +import ddingdong.ddingdongBE.domain.formapplicaion.service.dto.CreateFormApplicationCommand.CreateFormAnswerCommand; import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; import java.util.List; -public record CreateFormResponseRequest( +public record CreateFormApplicationRequest( @NotNull(message = "지원자 이름은 필수 입력 사항입니다.") @Schema(description = "지원자 이름", example = "김띵동") @@ -47,11 +47,11 @@ public CreateFormAnswerCommand toCommand() { } } - public CreateFormResponseCommand toCommand() { + public CreateFormApplicationCommand toCommand() { List createFormAnswerCommands = formAnswers.stream() .map(CreateFormAnswerRequest::toCommand) .toList(); - return CreateFormResponseCommand.builder() + return CreateFormApplicationCommand.builder() .name(name) .studentNumber(studentNumber) .department(department) diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormAnswer.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormAnswer.java index c7cbbf15..cd0f918c 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormAnswer.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormAnswer.java @@ -24,16 +24,16 @@ public class FormAnswer extends BaseEntity { private String valueType; @ManyToOne(fetch = FetchType.LAZY) - private FormResponse formResponse; + private FormApplication formApplication; @ManyToOne(fetch = FetchType.LAZY) private FormField formField; @Builder - private FormAnswer(String value, String valueType, FormResponse formResponse, FormField formField) { + private FormAnswer(String value, String valueType, FormApplication formApplication, FormField formField) { this.value = value; this.valueType = valueType; - this.formResponse = formResponse; + this.formApplication = formApplication; this.formField = formField; } diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormResponse.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormApplication.java similarity index 81% rename from src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormResponse.java rename to src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormApplication.java index fe55ed37..191b97e0 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormResponse.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormApplication.java @@ -11,7 +11,7 @@ @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter -public class FormResponse extends BaseEntity { +public class FormApplication extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -28,13 +28,13 @@ public class FormResponse extends BaseEntity { @Enumerated(EnumType.STRING) @Column(nullable = false) - private FormResponseStatus status; + private FormApplicationStatus status; @ManyToOne(fetch = FetchType.LAZY) private Form form; @Builder - private FormResponse(String name, String studentNumber, String department, FormResponseStatus status, Form form) { + private FormApplication(String name, String studentNumber, String department, FormApplicationStatus status, Form form) { this.name = name; this.studentNumber = studentNumber; this.department = department; diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormResponseStatus.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormApplicationStatus.java similarity index 77% rename from src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormResponseStatus.java rename to src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormApplicationStatus.java index 8721f4f7..5421e661 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormResponseStatus.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormApplicationStatus.java @@ -1,6 +1,6 @@ package ddingdong.ddingdongBE.domain.formapplicaion.entity; -public enum FormResponseStatus { +public enum FormApplicationStatus { SUBMITTED, FIRST_PASS, FINAL_PASS, diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/repository/FormApplicationRepository.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/repository/FormApplicationRepository.java new file mode 100644 index 00000000..d37b9a83 --- /dev/null +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/repository/FormApplicationRepository.java @@ -0,0 +1,7 @@ +package ddingdong.ddingdongBE.domain.formapplicaion.repository; + +import ddingdong.ddingdongBE.domain.formapplicaion.entity.FormApplication; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface FormApplicationRepository extends JpaRepository { +} diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/repository/FormResponseRepository.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/repository/FormResponseRepository.java deleted file mode 100644 index b27e788d..00000000 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/repository/FormResponseRepository.java +++ /dev/null @@ -1,7 +0,0 @@ -package ddingdong.ddingdongBE.domain.formapplicaion.repository; - -import ddingdong.ddingdongBE.domain.formapplicaion.entity.FormResponse; -import org.springframework.data.jpa.repository.JpaRepository; - -public interface FormResponseRepository extends JpaRepository { -} diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FacadeUserFormService.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FacadeUserFormService.java index 36b802a3..0b88f5be 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FacadeUserFormService.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FacadeUserFormService.java @@ -1,9 +1,9 @@ package ddingdong.ddingdongBE.domain.formapplicaion.service; -import ddingdong.ddingdongBE.domain.formapplicaion.service.dto.CreateFormResponseCommand; +import ddingdong.ddingdongBE.domain.formapplicaion.service.dto.CreateFormApplicationCommand; public interface FacadeUserFormService { - void createFormResponse(CreateFormResponseCommand createFormResponseCommand); + void createFormApplication(CreateFormApplicationCommand createFormApplicationCommand); } diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FacadeUserFormServiceImpl.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FacadeUserFormServiceImpl.java index 120669c4..d6aaf33d 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FacadeUserFormServiceImpl.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FacadeUserFormServiceImpl.java @@ -3,10 +3,10 @@ import ddingdong.ddingdongBE.domain.form.entity.Form; import ddingdong.ddingdongBE.domain.formapplicaion.entity.FormAnswer; import ddingdong.ddingdongBE.domain.form.entity.FormField; -import ddingdong.ddingdongBE.domain.formapplicaion.entity.FormResponse; +import ddingdong.ddingdongBE.domain.formapplicaion.entity.FormApplication; import ddingdong.ddingdongBE.domain.form.service.FormFieldService; import ddingdong.ddingdongBE.domain.form.service.FormService; -import ddingdong.ddingdongBE.domain.formapplicaion.service.dto.CreateFormResponseCommand; +import ddingdong.ddingdongBE.domain.formapplicaion.service.dto.CreateFormApplicationCommand; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -18,28 +18,28 @@ @Transactional(readOnly = true) public class FacadeUserFormServiceImpl implements FacadeUserFormService { - private final FormResponseService formResponseService; + private final FormApplicationService formApplicationService; private final FormAnswerService formAnswerService; private final FormService formService; private final FormFieldService formFieldService; @Transactional @Override - public void createFormResponse(CreateFormResponseCommand createFormResponseCommand) { - Form form = formService.getById(createFormResponseCommand.form().getId()); - FormResponse formResponse = createFormResponseCommand.toEntity(form); - FormResponse savedFormResponse = formResponseService.create(formResponse); + public void createFormApplication(CreateFormApplicationCommand createFormApplicationCommand) { + Form form = formService.getById(createFormApplicationCommand.form().getId()); + FormApplication formApplication = createFormApplicationCommand.toEntity(form); + FormApplication savedFormApplication = formApplicationService.create(formApplication); - List formAnswers = toFormAnswers(savedFormResponse, createFormResponseCommand.formAnswerCommands()); + List formAnswers = toFormAnswers(savedFormApplication, createFormApplicationCommand.formAnswerCommands()); formAnswerService.createAll(formAnswers); } - private List toFormAnswers(FormResponse savedFormResponse, List createFormAnswerCommands) { + private List toFormAnswers(FormApplication savedFormApplication, List createFormAnswerCommands) { return createFormAnswerCommands.stream() .map(formAnswerCommand -> { FormField formField = formFieldService.findById(formAnswerCommand.fieldId()) .orElseThrow(() -> new IllegalArgumentException("해당 field를 id로 찾을 수 없습니다: " + formAnswerCommand.fieldId())); - return formAnswerCommand.toEntity(savedFormResponse, formField); + return formAnswerCommand.toEntity(savedFormApplication, formField); }) .toList(); } diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FormApplicationService.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FormApplicationService.java new file mode 100644 index 00000000..0de7d8a1 --- /dev/null +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FormApplicationService.java @@ -0,0 +1,9 @@ +package ddingdong.ddingdongBE.domain.formapplicaion.service; + +import ddingdong.ddingdongBE.domain.formapplicaion.entity.FormApplication; + +public interface FormApplicationService { + + FormApplication create(FormApplication formApplication); + +} diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FormResponseService.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FormResponseService.java deleted file mode 100644 index 9802ac32..00000000 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FormResponseService.java +++ /dev/null @@ -1,9 +0,0 @@ -package ddingdong.ddingdongBE.domain.formapplicaion.service; - -import ddingdong.ddingdongBE.domain.formapplicaion.entity.FormResponse; - -public interface FormResponseService { - - FormResponse create(FormResponse formResponse); - -} diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/GeneralFormResponseService.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/GeneralFormApplicationService.java similarity index 61% rename from src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/GeneralFormResponseService.java rename to src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/GeneralFormApplicationService.java index e999a7b7..90a66d7d 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/GeneralFormResponseService.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/GeneralFormApplicationService.java @@ -1,6 +1,6 @@ package ddingdong.ddingdongBE.domain.formapplicaion.service; -import ddingdong.ddingdongBE.domain.formapplicaion.entity.FormResponse; +import ddingdong.ddingdongBE.domain.formapplicaion.entity.FormApplication; import ddingdong.ddingdongBE.domain.formapplicaion.repository.FormResponseRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -9,13 +9,13 @@ @Service @RequiredArgsConstructor @Transactional(readOnly = true) -public class GeneralFormResponseService implements FormResponseService { +public class GeneralFormApplicationService implements FormApplicationService { private final FormResponseRepository formResponseRepository; @Override - public FormResponse create(FormResponse formResponse) { - return formResponseRepository.save(formResponse); + public FormApplication create(FormApplication formApplication) { + return formResponseRepository.save(formApplication); } } diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/dto/CreateFormResponseCommand.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/dto/CreateFormApplicationCommand.java similarity index 73% rename from src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/dto/CreateFormResponseCommand.java rename to src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/dto/CreateFormApplicationCommand.java index e8cf9bb2..e6e45152 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/dto/CreateFormResponseCommand.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/dto/CreateFormApplicationCommand.java @@ -3,13 +3,13 @@ import ddingdong.ddingdongBE.domain.form.entity.Form; import ddingdong.ddingdongBE.domain.formapplicaion.entity.FormAnswer; import ddingdong.ddingdongBE.domain.form.entity.FormField; -import ddingdong.ddingdongBE.domain.formapplicaion.entity.FormResponse; +import ddingdong.ddingdongBE.domain.formapplicaion.entity.FormApplication; import lombok.Builder; import java.util.List; @Builder -public record CreateFormResponseCommand( +public record CreateFormApplicationCommand( Form form, String name, String studentNumber, @@ -22,18 +22,18 @@ public record CreateFormAnswerCommand( String value, String valueType ) { - public FormAnswer toEntity(FormResponse formResponse, FormField formField) { + public FormAnswer toEntity(FormApplication formApplication, FormField formField) { return FormAnswer.builder() .value(value) .valueType(valueType) .formField(formField) - .formResponse(formResponse) + .formApplication(formApplication) .build(); } } - public FormResponse toEntity(Form form) { - return FormResponse.builder() + public FormApplication toEntity(Form form) { + return FormApplication.builder() .name(name) .studentNumber(studentNumber) .department(department) From fbefe2b07aebe0a8785ed4d23be2677100fce88d Mon Sep 17 00:00:00 2001 From: ahyeungii Date: Mon, 3 Feb 2025 02:55:10 +0900 Subject: [PATCH 16/31] =?UTF-8?q?rename:=20FormResponse=EB=A5=BC=20FormApp?= =?UTF-8?q?lication=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/formapplicaion/controller/UserFormController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/UserFormController.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/UserFormController.java index 62987adb..4b84dd56 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/UserFormController.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/UserFormController.java @@ -15,7 +15,7 @@ public class UserFormController implements UserFormApi { @Override public void createFormResponse(CreateFormApplicationRequest createFormApplicationRequest) { - facadeUserFormService.createFormResponse(createFormApplicationRequest.toCommand()); + facadeUserFormService.createFormApplication(createFormApplicationRequest.toCommand()); } } From cfecc45858af6af39b9d7a4dbd8027e67855429e Mon Sep 17 00:00:00 2001 From: ahyeungii Date: Mon, 3 Feb 2025 02:55:55 +0900 Subject: [PATCH 17/31] =?UTF-8?q?rename:=20FormResponse=EB=A5=BC=20FormApp?= =?UTF-8?q?lication=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/GeneralFormApplicationService.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/GeneralFormApplicationService.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/GeneralFormApplicationService.java index 90a66d7d..3f6e2ee4 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/GeneralFormApplicationService.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/GeneralFormApplicationService.java @@ -1,7 +1,7 @@ package ddingdong.ddingdongBE.domain.formapplicaion.service; import ddingdong.ddingdongBE.domain.formapplicaion.entity.FormApplication; -import ddingdong.ddingdongBE.domain.formapplicaion.repository.FormResponseRepository; +import ddingdong.ddingdongBE.domain.formapplicaion.repository.FormApplicationRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -11,11 +11,11 @@ @Transactional(readOnly = true) public class GeneralFormApplicationService implements FormApplicationService { - private final FormResponseRepository formResponseRepository; + private final FormApplicationRepository formApplicationRepository; @Override public FormApplication create(FormApplication formApplication) { - return formResponseRepository.save(formApplication); + return formApplicationRepository.save(formApplication); } } From 331668eca65814348e8150f368011964f2be0eb6 Mon Sep 17 00:00:00 2001 From: ahyeungii Date: Mon, 3 Feb 2025 04:14:04 +0900 Subject: [PATCH 18/31] =?UTF-8?q?fix:=20valueType=EC=9D=98=20=ED=83=80?= =?UTF-8?q?=EC=9E=85=EC=9D=84=20FieldType=EC=9C=BC=EB=A1=9C=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/request/CreateFormApplicationRequest.java | 3 ++- .../domain/formapplicaion/entity/FormAnswer.java | 6 ++++-- .../service/dto/CreateFormApplicationCommand.java | 3 ++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/dto/request/CreateFormApplicationRequest.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/dto/request/CreateFormApplicationRequest.java index 80804c09..7511249b 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/dto/request/CreateFormApplicationRequest.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/dto/request/CreateFormApplicationRequest.java @@ -1,5 +1,6 @@ package ddingdong.ddingdongBE.domain.formapplicaion.controller.dto.request; +import ddingdong.ddingdongBE.domain.form.entity.FieldType; import ddingdong.ddingdongBE.domain.formapplicaion.service.dto.CreateFormApplicationCommand; import ddingdong.ddingdongBE.domain.formapplicaion.service.dto.CreateFormApplicationCommand.CreateFormAnswerCommand; import io.swagger.v3.oas.annotations.media.ArraySchema; @@ -35,7 +36,7 @@ record CreateFormAnswerRequest( @NotNull(message = "질문 타입은 null이 될 수 없습니다.") @Schema(description = "질문 타입", example = "RADIO") - String valueType + FieldType valueType ) { public CreateFormAnswerCommand toCommand() { diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormAnswer.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormAnswer.java index cd0f918c..7f6d050b 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormAnswer.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormAnswer.java @@ -1,6 +1,7 @@ package ddingdong.ddingdongBE.domain.formapplicaion.entity; import ddingdong.ddingdongBE.common.BaseEntity; +import ddingdong.ddingdongBE.domain.form.entity.FieldType; import ddingdong.ddingdongBE.domain.form.entity.FormField; import jakarta.persistence.*; import lombok.AccessLevel; @@ -20,8 +21,9 @@ public class FormAnswer extends BaseEntity { @Column(nullable = false) private String value; + @Enumerated(EnumType.STRING) @Column(nullable = false) - private String valueType; + private FieldType valueType; @ManyToOne(fetch = FetchType.LAZY) private FormApplication formApplication; @@ -30,7 +32,7 @@ public class FormAnswer extends BaseEntity { private FormField formField; @Builder - private FormAnswer(String value, String valueType, FormApplication formApplication, FormField formField) { + private FormAnswer(String value, FieldType valueType, FormApplication formApplication, FormField formField) { this.value = value; this.valueType = valueType; this.formApplication = formApplication; diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/dto/CreateFormApplicationCommand.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/dto/CreateFormApplicationCommand.java index e6e45152..694e1b2e 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/dto/CreateFormApplicationCommand.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/dto/CreateFormApplicationCommand.java @@ -1,5 +1,6 @@ package ddingdong.ddingdongBE.domain.formapplicaion.service.dto; +import ddingdong.ddingdongBE.domain.form.entity.FieldType; import ddingdong.ddingdongBE.domain.form.entity.Form; import ddingdong.ddingdongBE.domain.formapplicaion.entity.FormAnswer; import ddingdong.ddingdongBE.domain.form.entity.FormField; @@ -20,7 +21,7 @@ public record CreateFormApplicationCommand( public record CreateFormAnswerCommand( Long fieldId, String value, - String valueType + FieldType valueType ) { public FormAnswer toEntity(FormApplication formApplication, FormField formField) { return FormAnswer.builder() From 0f29123ca86d64cb601163c8fbd2cc731034787e Mon Sep 17 00:00:00 2001 From: ahyeungii Date: Mon, 3 Feb 2025 05:37:09 +0900 Subject: [PATCH 19/31] =?UTF-8?q?fix:=20=EC=97=94=ED=84=B0=ED=8B=B0=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95=EA=B3=BC=20=EB=8B=A4=EB=A5=B8=20ddl=EB=AC=B8?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../migration/V35_create_form_response_and_answer_table.sql | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/resources/db/migration/V35_create_form_response_and_answer_table.sql b/src/main/resources/db/migration/V35_create_form_response_and_answer_table.sql index 35a56af7..66802f85 100644 --- a/src/main/resources/db/migration/V35_create_form_response_and_answer_table.sql +++ b/src/main/resources/db/migration/V35_create_form_response_and_answer_table.sql @@ -5,7 +5,7 @@ CREATE TABLE form_response name VARCHAR(50) NOT NULL, student_number VARCHAR(50) NOT NULL, status VARCHAR(50) NOT NULL, - form_id BIGINT NOT NULL, + form_id BIGINT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NULL, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NULL, CONSTRAINT fk_response_form FOREIGN KEY (form_id) REFERENCES form (id) ON DELETE CASCADE @@ -16,8 +16,8 @@ CREATE TABLE form_answer id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY, value VARCHAR(255) NULL, value_type VARCHAR(50) NOT NULL, - response_id BIGINT NOT NULL, - field_id BIGINT NOT NULL, + response_id BIGINT, + field_id BIGINT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NULL, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NULL, CONSTRAINT fk_answer_response FOREIGN KEY (response_id) REFERENCES form_response (id) ON DELETE CASCADE, From 4aa5d56a48d40b0f00f6078d76ccffaa9fab20e7 Mon Sep 17 00:00:00 2001 From: ahyeungii Date: Mon, 3 Feb 2025 05:40:29 +0900 Subject: [PATCH 20/31] =?UTF-8?q?fix:=20FormApplicationStatus=20=EC=BB=AC?= =?UTF-8?q?=EB=9F=BC=EB=AA=85=20=EC=A7=80=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/formapplicaion/entity/FormApplication.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormApplication.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormApplication.java index 191b97e0..5f471268 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormApplication.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormApplication.java @@ -27,7 +27,7 @@ public class FormApplication extends BaseEntity { private String department; @Enumerated(EnumType.STRING) - @Column(nullable = false) + @Column(nullable = false, name = "status") private FormApplicationStatus status; @ManyToOne(fetch = FetchType.LAZY) From 05b6525e59fe2051ccd3ec9b7dbff37bb714f67d Mon Sep 17 00:00:00 2001 From: ahyeungii Date: Mon, 3 Feb 2025 05:44:56 +0900 Subject: [PATCH 21/31] =?UTF-8?q?fix:=20@Transactional=20=EC=98=AC?= =?UTF-8?q?=EB=B0=94=EB=A5=B4=EA=B2=8C=20=EC=82=AC=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ddingdongBE/domain/form/service/GeneralFormFieldService.java | 1 - .../ddingdongBE/domain/form/service/GeneralFormService.java | 1 - .../formapplicaion/service/GeneralFormApplicationService.java | 1 + 3 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/service/GeneralFormFieldService.java b/src/main/java/ddingdong/ddingdongBE/domain/form/service/GeneralFormFieldService.java index 5729bd70..48deac8d 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/form/service/GeneralFormFieldService.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/form/service/GeneralFormFieldService.java @@ -22,7 +22,6 @@ public void createAll(List formFields) { formFieldRepository.saveAll(formFields); } - @Transactional @Override public Optional findById(Long id) { return formFieldRepository.findById(id); diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/service/GeneralFormService.java b/src/main/java/ddingdong/ddingdongBE/domain/form/service/GeneralFormService.java index cd6bb3d6..b95d7f75 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/form/service/GeneralFormService.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/form/service/GeneralFormService.java @@ -19,7 +19,6 @@ public Form create(Form form) { return formRepository.save(form); } - @Transactional @Override public Form getById(Long id) { return formRepository.getById(id); diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/GeneralFormApplicationService.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/GeneralFormApplicationService.java index 3f6e2ee4..928b3999 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/GeneralFormApplicationService.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/GeneralFormApplicationService.java @@ -13,6 +13,7 @@ public class GeneralFormApplicationService implements FormApplicationService { private final FormApplicationRepository formApplicationRepository; + @Transactional @Override public FormApplication create(FormApplication formApplication) { return formApplicationRepository.save(formApplication); From 7701b45f0ebd2c15a96392ac5dce4f4263793df4 Mon Sep 17 00:00:00 2001 From: ahyeungii Date: Mon, 3 Feb 2025 05:50:09 +0900 Subject: [PATCH 22/31] =?UTF-8?q?fix:=20dto=EC=97=90=EC=84=9C=20status=20?= =?UTF-8?q?=EC=B4=88=EA=B8=B0=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit null값 방지를 위해서 초기화 --- .../controller/dto/request/CreateFormApplicationRequest.java | 2 ++ .../service/dto/CreateFormApplicationCommand.java | 3 +++ 2 files changed, 5 insertions(+) diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/dto/request/CreateFormApplicationRequest.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/dto/request/CreateFormApplicationRequest.java index 7511249b..ece7bf22 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/dto/request/CreateFormApplicationRequest.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/dto/request/CreateFormApplicationRequest.java @@ -1,6 +1,7 @@ package ddingdong.ddingdongBE.domain.formapplicaion.controller.dto.request; import ddingdong.ddingdongBE.domain.form.entity.FieldType; +import ddingdong.ddingdongBE.domain.formapplicaion.entity.FormApplicationStatus; import ddingdong.ddingdongBE.domain.formapplicaion.service.dto.CreateFormApplicationCommand; import ddingdong.ddingdongBE.domain.formapplicaion.service.dto.CreateFormApplicationCommand.CreateFormAnswerCommand; import io.swagger.v3.oas.annotations.media.ArraySchema; @@ -56,6 +57,7 @@ public CreateFormApplicationCommand toCommand() { .name(name) .studentNumber(studentNumber) .department(department) + .status(FormApplicationStatus.SUBMITTED) .formAnswerCommands(createFormAnswerCommands) .build(); } diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/dto/CreateFormApplicationCommand.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/dto/CreateFormApplicationCommand.java index 694e1b2e..0c19889a 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/dto/CreateFormApplicationCommand.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/dto/CreateFormApplicationCommand.java @@ -5,6 +5,7 @@ import ddingdong.ddingdongBE.domain.formapplicaion.entity.FormAnswer; import ddingdong.ddingdongBE.domain.form.entity.FormField; import ddingdong.ddingdongBE.domain.formapplicaion.entity.FormApplication; +import ddingdong.ddingdongBE.domain.formapplicaion.entity.FormApplicationStatus; import lombok.Builder; import java.util.List; @@ -15,6 +16,7 @@ public record CreateFormApplicationCommand( String name, String studentNumber, String department, + FormApplicationStatus status, List formAnswerCommands ) { @Builder @@ -38,6 +40,7 @@ public FormApplication toEntity(Form form) { .name(name) .studentNumber(studentNumber) .department(department) + .status(status) .form(form) .build(); } From 37626bfe6489385d49e9d45c97a62be4e5da4aae Mon Sep 17 00:00:00 2001 From: ahyeungii Date: Mon, 3 Feb 2025 13:20:07 +0900 Subject: [PATCH 23/31] =?UTF-8?q?fix:=20FormAnswer=EC=9D=98=20value=20?= =?UTF-8?q?=ED=83=80=EC=9E=85=20List=EC=9C=BC=EB=A1=9C=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/request/CreateFormApplicationRequest.java | 2 +- .../domain/formapplicaion/entity/FormAnswer.java | 7 +++++-- .../service/dto/CreateFormApplicationCommand.java | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/dto/request/CreateFormApplicationRequest.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/dto/request/CreateFormApplicationRequest.java index ece7bf22..bcbae6d7 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/dto/request/CreateFormApplicationRequest.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/dto/request/CreateFormApplicationRequest.java @@ -33,7 +33,7 @@ record CreateFormAnswerRequest( Long fieldId, @Schema(description = "답변 값") - String value, + List value, @NotNull(message = "질문 타입은 null이 될 수 없습니다.") @Schema(description = "질문 타입", example = "RADIO") diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormAnswer.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormAnswer.java index 7f6d050b..9b31da6c 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormAnswer.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormAnswer.java @@ -1,6 +1,7 @@ package ddingdong.ddingdongBE.domain.formapplicaion.entity; import ddingdong.ddingdongBE.common.BaseEntity; +import ddingdong.ddingdongBE.common.converter.StringListConverter; import ddingdong.ddingdongBE.domain.form.entity.FieldType; import ddingdong.ddingdongBE.domain.form.entity.FormField; import jakarta.persistence.*; @@ -8,6 +9,7 @@ import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; +import java.util.List; @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) @@ -19,7 +21,8 @@ public class FormAnswer extends BaseEntity { private Long id; @Column(nullable = false) - private String value; + @Convert(converter = StringListConverter.class) + private List value; @Enumerated(EnumType.STRING) @Column(nullable = false) @@ -32,7 +35,7 @@ public class FormAnswer extends BaseEntity { private FormField formField; @Builder - private FormAnswer(String value, FieldType valueType, FormApplication formApplication, FormField formField) { + private FormAnswer(List value, FieldType valueType, FormApplication formApplication, FormField formField) { this.value = value; this.valueType = valueType; this.formApplication = formApplication; diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/dto/CreateFormApplicationCommand.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/dto/CreateFormApplicationCommand.java index 0c19889a..b4d6327e 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/dto/CreateFormApplicationCommand.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/dto/CreateFormApplicationCommand.java @@ -22,7 +22,7 @@ public record CreateFormApplicationCommand( @Builder public record CreateFormAnswerCommand( Long fieldId, - String value, + List value, FieldType valueType ) { public FormAnswer toEntity(FormApplication formApplication, FormField formField) { From 816006162c80522ef36b37651648c46f8f868d31 Mon Sep 17 00:00:00 2001 From: ahyeungii Date: Mon, 3 Feb 2025 13:25:05 +0900 Subject: [PATCH 24/31] =?UTF-8?q?fix:=20value=20=EA=B8=B8=EC=9D=B4=201500?= =?UTF-8?q?=EC=9E=90=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../db/migration/V35_create_form_response_and_answer_table.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/db/migration/V35_create_form_response_and_answer_table.sql b/src/main/resources/db/migration/V35_create_form_response_and_answer_table.sql index 66802f85..2f061fc1 100644 --- a/src/main/resources/db/migration/V35_create_form_response_and_answer_table.sql +++ b/src/main/resources/db/migration/V35_create_form_response_and_answer_table.sql @@ -14,7 +14,7 @@ CREATE TABLE form_response CREATE TABLE form_answer ( id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY, - value VARCHAR(255) NULL, + value VARCHAR(1500) NULL, value_type VARCHAR(50) NOT NULL, response_id BIGINT, field_id BIGINT, From 0fe9e3710eb989f3ffe0cb8fa373e728b378c899 Mon Sep 17 00:00:00 2001 From: ahyeungii Date: Mon, 3 Feb 2025 13:38:59 +0900 Subject: [PATCH 25/31] =?UTF-8?q?fix:=20=EC=84=9C=EB=B9=84=EC=8A=A4=20?= =?UTF-8?q?=EB=82=B4=EC=97=90=EC=84=9C=20=EC=98=88=EC=99=B8=20=EC=B2=98?= =?UTF-8?q?=EB=A6=AC=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ddingdongBE/domain/form/service/FormFieldService.java | 3 +++ .../domain/form/service/GeneralFormFieldService.java | 6 ++++++ .../formapplicaion/service/FacadeUserFormServiceImpl.java | 3 +-- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/service/FormFieldService.java b/src/main/java/ddingdong/ddingdongBE/domain/form/service/FormFieldService.java index 7bf18fb6..7bc60e73 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/form/service/FormFieldService.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/form/service/FormFieldService.java @@ -9,4 +9,7 @@ public interface FormFieldService { void createAll(List formFields); Optional findById(Long id); + + FormField getById(Long id); + } diff --git a/src/main/java/ddingdong/ddingdongBE/domain/form/service/GeneralFormFieldService.java b/src/main/java/ddingdong/ddingdongBE/domain/form/service/GeneralFormFieldService.java index 48deac8d..f144cca6 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/form/service/GeneralFormFieldService.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/form/service/GeneralFormFieldService.java @@ -26,4 +26,10 @@ public void createAll(List formFields) { public Optional findById(Long id) { return formFieldRepository.findById(id); } + + @Override + public FormField getById(Long id) { + return formFieldRepository.findById(id) + .orElseThrow(() -> new IllegalArgumentException("해당 field를 id로 찾을 수 없습니다: " + id)); + } } diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FacadeUserFormServiceImpl.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FacadeUserFormServiceImpl.java index d6aaf33d..a4cd59e9 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FacadeUserFormServiceImpl.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FacadeUserFormServiceImpl.java @@ -37,8 +37,7 @@ public void createFormApplication(CreateFormApplicationCommand createFormApplica private List toFormAnswers(FormApplication savedFormApplication, List createFormAnswerCommands) { return createFormAnswerCommands.stream() .map(formAnswerCommand -> { - FormField formField = formFieldService.findById(formAnswerCommand.fieldId()) - .orElseThrow(() -> new IllegalArgumentException("해당 field를 id로 찾을 수 없습니다: " + formAnswerCommand.fieldId())); + FormField formField = formFieldService.getById(formAnswerCommand.fieldId()); return formAnswerCommand.toEntity(savedFormApplication, formField); }) .toList(); From 62b2f0080a331d7150e886e2f951ef3aa69015ff Mon Sep 17 00:00:00 2001 From: ahyeungii Date: Mon, 3 Feb 2025 13:46:22 +0900 Subject: [PATCH 26/31] =?UTF-8?q?fix:=20FormAnswer=EC=9D=98=20valueType=20?= =?UTF-8?q?=EC=86=8D=EC=84=B1=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/request/CreateFormApplicationRequest.java | 9 +-------- .../domain/formapplicaion/entity/FormAnswer.java | 7 +------ .../service/dto/CreateFormApplicationCommand.java | 1 - 3 files changed, 2 insertions(+), 15 deletions(-) diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/dto/request/CreateFormApplicationRequest.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/dto/request/CreateFormApplicationRequest.java index bcbae6d7..26d510d7 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/dto/request/CreateFormApplicationRequest.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/dto/request/CreateFormApplicationRequest.java @@ -1,6 +1,5 @@ package ddingdong.ddingdongBE.domain.formapplicaion.controller.dto.request; -import ddingdong.ddingdongBE.domain.form.entity.FieldType; import ddingdong.ddingdongBE.domain.formapplicaion.entity.FormApplicationStatus; import ddingdong.ddingdongBE.domain.formapplicaion.service.dto.CreateFormApplicationCommand; import ddingdong.ddingdongBE.domain.formapplicaion.service.dto.CreateFormApplicationCommand.CreateFormAnswerCommand; @@ -33,18 +32,12 @@ record CreateFormAnswerRequest( Long fieldId, @Schema(description = "답변 값") - List value, - - @NotNull(message = "질문 타입은 null이 될 수 없습니다.") - @Schema(description = "질문 타입", example = "RADIO") - FieldType valueType - + List value ) { public CreateFormAnswerCommand toCommand() { return CreateFormAnswerCommand.builder() .fieldId(fieldId) .value(value) - .valueType(valueType) .build(); } } diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormAnswer.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormAnswer.java index 9b31da6c..1bc15417 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormAnswer.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/entity/FormAnswer.java @@ -24,10 +24,6 @@ public class FormAnswer extends BaseEntity { @Convert(converter = StringListConverter.class) private List value; - @Enumerated(EnumType.STRING) - @Column(nullable = false) - private FieldType valueType; - @ManyToOne(fetch = FetchType.LAZY) private FormApplication formApplication; @@ -35,9 +31,8 @@ public class FormAnswer extends BaseEntity { private FormField formField; @Builder - private FormAnswer(List value, FieldType valueType, FormApplication formApplication, FormField formField) { + private FormAnswer(List value, FormApplication formApplication, FormField formField) { this.value = value; - this.valueType = valueType; this.formApplication = formApplication; this.formField = formField; } diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/dto/CreateFormApplicationCommand.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/dto/CreateFormApplicationCommand.java index b4d6327e..a1f8cb1f 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/dto/CreateFormApplicationCommand.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/dto/CreateFormApplicationCommand.java @@ -28,7 +28,6 @@ public record CreateFormAnswerCommand( public FormAnswer toEntity(FormApplication formApplication, FormField formField) { return FormAnswer.builder() .value(value) - .valueType(valueType) .formField(formField) .formApplication(formApplication) .build(); From 97b93f0cd8dabd0294aa130e261053d8eda9f3f1 Mon Sep 17 00:00:00 2001 From: ahyeungii Date: Mon, 3 Feb 2025 13:49:57 +0900 Subject: [PATCH 27/31] =?UTF-8?q?style:=20=EB=8E=81=EC=8A=A4=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../request/CreateFormApplicationRequest.java | 56 +++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/dto/request/CreateFormApplicationRequest.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/dto/request/CreateFormApplicationRequest.java index 26d510d7..9e9577ad 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/dto/request/CreateFormApplicationRequest.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/dto/request/CreateFormApplicationRequest.java @@ -26,35 +26,35 @@ public record CreateFormApplicationRequest( @ArraySchema(schema = @Schema(implementation = CreateFormAnswerRequest.class)) List formAnswers ) { - record CreateFormAnswerRequest( - @NotNull(message = "질문 id는 null이 될 수 없습니다.") - @Schema(description = "질문 id", example = "1") - Long fieldId, - - @Schema(description = "답변 값") - List value - ) { - public CreateFormAnswerCommand toCommand() { - return CreateFormAnswerCommand.builder() - .fieldId(fieldId) - .value(value) - .build(); - } - } - - public CreateFormApplicationCommand toCommand() { - List createFormAnswerCommands = formAnswers.stream() - .map(CreateFormAnswerRequest::toCommand) - .toList(); - return CreateFormApplicationCommand.builder() - .name(name) - .studentNumber(studentNumber) - .department(department) - .status(FormApplicationStatus.SUBMITTED) - .formAnswerCommands(createFormAnswerCommands) - .build(); - } + record CreateFormAnswerRequest( + @NotNull(message = "질문 id는 null이 될 수 없습니다.") + @Schema(description = "질문 id", example = "1") + Long fieldId, + + @Schema(description = "답변 값") + List value + ) { + public CreateFormAnswerCommand toCommand() { + return CreateFormAnswerCommand.builder() + .fieldId(fieldId) + .value(value) + .build(); + } + } + public CreateFormApplicationCommand toCommand() { + List createFormAnswerCommands = formAnswers.stream() + .map(CreateFormAnswerRequest::toCommand) + .toList(); + return CreateFormApplicationCommand.builder() + .name(name) + .studentNumber(studentNumber) + .department(department) + .status(FormApplicationStatus.SUBMITTED) + .formAnswerCommands(createFormAnswerCommands) + .build(); } +} + From 0c61cdd4169f0bd5754b33969b39d6f8a647c2b6 Mon Sep 17 00:00:00 2001 From: ahyeungii Date: Mon, 3 Feb 2025 13:54:44 +0900 Subject: [PATCH 28/31] =?UTF-8?q?style:=20FacadeUserFormServiceImpl=20?= =?UTF-8?q?=EB=82=B4=EC=97=90=20CreateFormAnswerCommand=20=EC=9E=84?= =?UTF-8?q?=ED=8F=AC=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../formapplicaion/service/FacadeUserFormServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FacadeUserFormServiceImpl.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FacadeUserFormServiceImpl.java index a4cd59e9..a0f97af3 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FacadeUserFormServiceImpl.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FacadeUserFormServiceImpl.java @@ -7,6 +7,7 @@ import ddingdong.ddingdongBE.domain.form.service.FormFieldService; import ddingdong.ddingdongBE.domain.form.service.FormService; import ddingdong.ddingdongBE.domain.formapplicaion.service.dto.CreateFormApplicationCommand; +import ddingdong.ddingdongBE.domain.formapplicaion.service.dto.CreateFormApplicationCommand.CreateFormAnswerCommand; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -34,7 +35,7 @@ public void createFormApplication(CreateFormApplicationCommand createFormApplica formAnswerService.createAll(formAnswers); } - private List toFormAnswers(FormApplication savedFormApplication, List createFormAnswerCommands) { + private List toFormAnswers(FormApplication savedFormApplication, List createFormAnswerCommands) { return createFormAnswerCommands.stream() .map(formAnswerCommand -> { FormField formField = formFieldService.getById(formAnswerCommand.fieldId()); From 22a50634834b1452f9fef12f61bad5f118499ee7 Mon Sep 17 00:00:00 2001 From: ahyeungii Date: Mon, 3 Feb 2025 14:33:53 +0900 Subject: [PATCH 29/31] =?UTF-8?q?style:=20=EB=88=84=EB=9D=BD=EB=90=9C=20pa?= =?UTF-8?q?th=20variable=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/formapplicaion/api/UserFormApi.java | 10 +++++----- .../formapplicaion/controller/UserFormController.java | 6 ++---- .../formapplicaion/service/FacadeUserFormService.java | 2 +- .../service/FacadeUserFormServiceImpl.java | 4 ++-- 4 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/api/UserFormApi.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/api/UserFormApi.java index f2eb04fe..cb72bbfd 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/api/UserFormApi.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/api/UserFormApi.java @@ -6,10 +6,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import org.springframework.http.HttpStatus; -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.*; @Tag(name = "Form - User", description = "User Form API") @RequestMapping("/server") @@ -19,6 +16,9 @@ public interface UserFormApi { @ApiResponse(responseCode = "201", description = "지원하기 성공") @ResponseStatus(HttpStatus.CREATED) @PostMapping("/forms/{formId}/applications") - void createFormResponse(@Valid @RequestBody CreateFormApplicationRequest request); + void createFormResponse( + @PathVariable Long formId, + @Valid @RequestBody CreateFormApplicationRequest request + ); } diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/UserFormController.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/UserFormController.java index 4b84dd56..d022247b 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/UserFormController.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/controller/UserFormController.java @@ -13,9 +13,7 @@ public class UserFormController implements UserFormApi { private final FacadeUserFormService facadeUserFormService; @Override - public void createFormResponse(CreateFormApplicationRequest createFormApplicationRequest) { - - facadeUserFormService.createFormApplication(createFormApplicationRequest.toCommand()); - + public void createFormResponse(Long formId, CreateFormApplicationRequest createFormApplicationRequest) { + facadeUserFormService.createFormApplication(formId, createFormApplicationRequest.toCommand()); } } diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FacadeUserFormService.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FacadeUserFormService.java index 0b88f5be..7b3cc98b 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FacadeUserFormService.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FacadeUserFormService.java @@ -4,6 +4,6 @@ public interface FacadeUserFormService { - void createFormApplication(CreateFormApplicationCommand createFormApplicationCommand); + void createFormApplication(Long formId, CreateFormApplicationCommand createFormApplicationCommand); } diff --git a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FacadeUserFormServiceImpl.java b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FacadeUserFormServiceImpl.java index a0f97af3..c5b75a55 100644 --- a/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FacadeUserFormServiceImpl.java +++ b/src/main/java/ddingdong/ddingdongBE/domain/formapplicaion/service/FacadeUserFormServiceImpl.java @@ -26,8 +26,8 @@ public class FacadeUserFormServiceImpl implements FacadeUserFormService { @Transactional @Override - public void createFormApplication(CreateFormApplicationCommand createFormApplicationCommand) { - Form form = formService.getById(createFormApplicationCommand.form().getId()); + public void createFormApplication(Long formId, CreateFormApplicationCommand createFormApplicationCommand) { + Form form = formService.getById(formId); FormApplication formApplication = createFormApplicationCommand.toEntity(form); FormApplication savedFormApplication = formApplicationService.create(formApplication); From 915c2378865fffe85a58938a912c31d90ea99bf0 Mon Sep 17 00:00:00 2001 From: ahyeungii Date: Mon, 3 Feb 2025 14:50:47 +0900 Subject: [PATCH 30/31] =?UTF-8?q?fix:=20SecurityConfig=20requestMatchers?= =?UTF-8?q?=EC=97=90=20forms=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ddingdongBE/common/config/SecurityConfig.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/ddingdong/ddingdongBE/common/config/SecurityConfig.java b/src/main/java/ddingdong/ddingdongBE/common/config/SecurityConfig.java index d606b656..e7c358e0 100644 --- a/src/main/java/ddingdong/ddingdongBE/common/config/SecurityConfig.java +++ b/src/main/java/ddingdong/ddingdongBE/common/config/SecurityConfig.java @@ -1,6 +1,7 @@ package ddingdong.ddingdongBE.common.config; import static org.springframework.http.HttpMethod.GET; +import static org.springframework.http.HttpMethod.POST; import ddingdong.ddingdongBE.auth.service.JwtAuthService; import ddingdong.ddingdongBE.common.filter.JwtAuthenticationFilter; @@ -46,7 +47,13 @@ public SecurityFilterChain filterChain(HttpSecurity http, JwtAuthService authSer API_PREFIX + "/banners/**", API_PREFIX + "/documents/**", API_PREFIX + "/questions/**", - API_PREFIX + "/feeds/**") + API_PREFIX + "/feeds/**", + API_PREFIX + "/forms/**" + ) + .permitAll() + .requestMatchers(POST, + API_PREFIX + "/forms/{formId}/applications" + ) .permitAll() .requestMatchers(API_PREFIX + "/internal/**") .permitAll() From 91ddb0a9dff17c21802121295c7a80eb9d0039ce Mon Sep 17 00:00:00 2001 From: ahyeungii Date: Mon, 3 Feb 2025 16:09:10 +0900 Subject: [PATCH 31/31] =?UTF-8?q?test:=20=EC=A7=80=EC=9B=90=ED=95=98?= =?UTF-8?q?=EA=B8=B0=20API=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FacadeUserFormServiceImplTest.java | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 src/test/java/ddingdong/ddingdongBE/domain/form/service/FacadeUserFormServiceImplTest.java diff --git a/src/test/java/ddingdong/ddingdongBE/domain/form/service/FacadeUserFormServiceImplTest.java b/src/test/java/ddingdong/ddingdongBE/domain/form/service/FacadeUserFormServiceImplTest.java new file mode 100644 index 00000000..d216782c --- /dev/null +++ b/src/test/java/ddingdong/ddingdongBE/domain/form/service/FacadeUserFormServiceImplTest.java @@ -0,0 +1,92 @@ +package ddingdong.ddingdongBE.domain.form.service; + +import com.navercorp.fixturemonkey.FixtureMonkey; +import ddingdong.ddingdongBE.common.support.FixtureMonkeyFactory; +import ddingdong.ddingdongBE.common.support.TestContainerSupport; +import ddingdong.ddingdongBE.domain.club.entity.Club; +import ddingdong.ddingdongBE.domain.club.repository.ClubRepository; +import ddingdong.ddingdongBE.domain.form.entity.Form; +import ddingdong.ddingdongBE.domain.form.repository.FormRepository; +import ddingdong.ddingdongBE.domain.formapplicaion.entity.FormAnswer; +import ddingdong.ddingdongBE.domain.formapplicaion.entity.FormApplication; +import ddingdong.ddingdongBE.domain.formapplicaion.repository.FormAnswerRepository; +import ddingdong.ddingdongBE.domain.formapplicaion.repository.FormApplicationRepository; +import ddingdong.ddingdongBE.domain.formapplicaion.service.FacadeUserFormService; +import ddingdong.ddingdongBE.domain.formapplicaion.service.dto.CreateFormApplicationCommand; +import ddingdong.ddingdongBE.domain.user.entity.Role; +import ddingdong.ddingdongBE.domain.user.entity.User; +import ddingdong.ddingdongBE.domain.user.repository.UserRepository; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import java.util.List; + +import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; + +@SpringBootTest +class FacadeUserFormServiceImplTest extends TestContainerSupport { + + @Autowired + private FacadeUserFormService facadeUserFormService; + + @Autowired + private FormApplicationRepository formApplicationRepository; + + @Autowired + private FormAnswerRepository formAnswerRepository; + + @Autowired + private FormRepository formRepository; + + @Autowired + private ClubRepository clubRepository; + + @Autowired + private UserRepository userRepository; + + private static final FixtureMonkey fixtureMonkey = FixtureMonkeyFactory.getNotNullBuilderIntrospectorMonkey(); + + @DisplayName("유저: 지원하기") + @Test + void createFormApplication() { + // given + User user = fixtureMonkey.giveMeBuilder(User.class) + .set("id", 1L) + .set("Role", Role.CLUB) + .set("deletedAt", null) + .sample(); + User savedUser = userRepository.save(user); + Club club = fixtureMonkey.giveMeBuilder(Club.class) + .set("id", 1L) + .set("user", savedUser) + .set("score", null) + .set("clubMembers", null) + .set("deletedAt", null) + .sample(); + clubRepository.save(club); + Club savedClub = clubRepository.save(club); + Form form = fixtureMonkey.giveMeBuilder(Form.class) + .set("id", 1L) + .set("title", "띵동 폼") + .set("description", "저희 동아리는 띵동입니다.") + .set("hasInterview", false) + .set("club", savedClub) + .sample(); + Form savedForm = formRepository.save(form); + CreateFormApplicationCommand createFormApplicationCommand = fixtureMonkey.giveMeBuilder(CreateFormApplicationCommand.class) + .set("form", savedForm) + .sample(); + // when + facadeUserFormService.createFormApplication(savedForm.getId(), createFormApplicationCommand); + // then + List formApplications = formApplicationRepository.findAll(); + List formAnswers = formAnswerRepository.findAll(); + + assertThat(formApplications).isNotEmpty(); + assertThat(formAnswers).isNotEmpty(); + } + + +} \ No newline at end of file