From 3b0a8160ae021224dc38fa24bbe34c3abee1a18d Mon Sep 17 00:00:00 2001 From: wonjuneee Date: Sat, 28 Feb 2026 23:32:11 +0900 Subject: [PATCH 01/13] =?UTF-8?q?feat:=20=EA=B5=AC=EA=B8=80=ED=8F=BC=20?= =?UTF-8?q?=EC=84=A4=EB=AC=B8=20=EB=B3=80=ED=99=98=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 88c5a178c9d319a9ec955d6d4231331ee8e7029a) --- .../domain/survey/SurveyErrorCode.java | 3 +- .../formRequest/FormConversionPayload.java | 9 + .../formRequest/FormConversionResponse.java | 65 +++++ .../event/FormRequestConversionEvent.java | 9 + .../formRequest/FormCommandService.java | 7 + .../formRequest/FormRequestLambda.java | 234 ++++++++++++++++++ 6 files changed, 326 insertions(+), 1 deletion(-) create mode 100644 src/main/java/OneQ/OnSurvey/domain/survey/model/formRequest/FormConversionPayload.java create mode 100644 src/main/java/OneQ/OnSurvey/domain/survey/model/formRequest/FormConversionResponse.java create mode 100644 src/main/java/OneQ/OnSurvey/domain/survey/model/formRequest/event/FormRequestConversionEvent.java create mode 100644 src/main/java/OneQ/OnSurvey/domain/survey/service/formRequest/FormRequestLambda.java diff --git a/src/main/java/OneQ/OnSurvey/domain/survey/SurveyErrorCode.java b/src/main/java/OneQ/OnSurvey/domain/survey/SurveyErrorCode.java index dfad10ae..b913e471 100644 --- a/src/main/java/OneQ/OnSurvey/domain/survey/SurveyErrorCode.java +++ b/src/main/java/OneQ/OnSurvey/domain/survey/SurveyErrorCode.java @@ -29,7 +29,8 @@ public enum SurveyErrorCode implements ApiErrorCode { SURVEY_ANSWER_INVALID("SURVEY_ANSWER_400", "설문 답변이 올바르지 않습니다.", HttpStatus.BAD_REQUEST), SURVEY_FREE_PROMOTION_NOT_ALLOWED("SURVEY_PROMOTION_400", "무료 설문은 프로모션 지급 대상이 아닙니다.", HttpStatus.BAD_REQUEST), - FORM_REQUEST_NOT_FOUND("FORM_REQUEST_404", "구글 폼 신청을 찾을 수 없습니다.", HttpStatus.NOT_FOUND); + FORM_REQUEST_NOT_FOUND("FORM_REQUEST_404", "구글 폼 신청을 찾을 수 없습니다.", HttpStatus.NOT_FOUND), + FORM_CONVERSION_FAILED("FORM_REQUEST_001", "구글 폼 변환에 실패했습니다.", HttpStatus.BAD_REQUEST); private final String errorCode; private final String message; diff --git a/src/main/java/OneQ/OnSurvey/domain/survey/model/formRequest/FormConversionPayload.java b/src/main/java/OneQ/OnSurvey/domain/survey/model/formRequest/FormConversionPayload.java new file mode 100644 index 00000000..c04fd24c --- /dev/null +++ b/src/main/java/OneQ/OnSurvey/domain/survey/model/formRequest/FormConversionPayload.java @@ -0,0 +1,9 @@ +package OneQ.OnSurvey.domain.survey.model.formRequest; + +import java.util.List; + +public record FormConversionPayload ( + Long requestId, + List formUrls +) { +} diff --git a/src/main/java/OneQ/OnSurvey/domain/survey/model/formRequest/FormConversionResponse.java b/src/main/java/OneQ/OnSurvey/domain/survey/model/formRequest/FormConversionResponse.java new file mode 100644 index 00000000..59f91577 --- /dev/null +++ b/src/main/java/OneQ/OnSurvey/domain/survey/model/formRequest/FormConversionResponse.java @@ -0,0 +1,65 @@ +package OneQ.OnSurvey.domain.survey.model.formRequest; + +import java.util.List; + +public record FormConversionResponse( + int totalCount, + int successCount, + List results, + String error +) { + + public record Result( + String url, + String status, // "SUCCESS", "FAIL" + + // SUCCESS + Survey survey, + List unsupportedQuestions, + + // FAIL + String message + + ) { + public boolean isSuccess() { + return "SUCCESS".equals(status); + } + } + + public record Survey( + String title, + String description, + List
sections + ) { } + + public record Section( + String id, + int order, + String title, + String description, + Integer nextSectionOrder, + List questions + ) { } + + public record Question( + String id, + String title, + String description, + String type, + boolean required, + List