Skip to content

Commit ccfa3cf

Browse files
committed
조회 api 작업 중
1 parent 7e6dd15 commit ccfa3cf

11 files changed

Lines changed: 55 additions & 11 deletions

File tree

src/main/java/com/icd/survey/api/controller/survey/SurveyController.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
import com.icd.survey.api.dto.survey.request.CreateSurveyRequest;
44
import com.icd.survey.api.dto.survey.request.UpdateSurveyUpdateRequest;
5+
import com.icd.survey.api.entity.survey.dto.SurveyDto;
56
import com.icd.survey.api.service.survey.SurveyService;
7+
import com.icd.survey.common.response.ApiResponse;
68
import lombok.RequiredArgsConstructor;
79
import lombok.extern.slf4j.Slf4j;
810
import org.springframework.validation.annotation.Validated;
@@ -16,9 +18,7 @@ public class SurveyController {
1618

1719
private final SurveyService surveyService;
1820

19-
/*
20-
* 디렉토리 구조나 아키텍처, 디자인 패턴 등 전반적인 리뷰를 듣고 싶습니다.
21-
* */
21+
2222
@PostMapping
2323
public void createSurvey(@Validated @RequestBody CreateSurveyRequest requestDto) {
2424
surveyService.createSurvey(requestDto);
@@ -29,4 +29,9 @@ public void updateSurvey(@Validated @RequestBody UpdateSurveyUpdateRequest reque
2929
surveyService.updateSurvey(requestDto);
3030
}
3131

32+
@GetMapping("/{surveySeq}")
33+
public ApiResponse<SurveyDto> getSurveyAnswer(@PathVariable Long surveySeq) {
34+
return new ApiResponse<>(surveyService.getSurveyAnswer(surveySeq));
35+
}
36+
3237
}

src/main/java/com/icd/survey/api/entity/survey/ItemAnswer.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import jakarta.persistence.*;
55
import lombok.Getter;
66
import lombok.NoArgsConstructor;
7+
import lombok.ToString;
78
import org.hibernate.annotations.DynamicInsert;
89
import org.hibernate.annotations.DynamicUpdate;
910

@@ -13,6 +14,7 @@
1314
@DynamicUpdate
1415
@NoArgsConstructor
1516
@Table(name = "item_answer")
17+
@ToString
1618
public class ItemAnswer {
1719
@Id
1820
@Column(name = "answer_seq", nullable = false)

src/main/java/com/icd/survey/api/entity/survey/Survey.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
@DynamicUpdate
1919
@NoArgsConstructor
2020
@Table(name = "survey")
21+
@ToString
2122
public class Survey extends BaseEntity {
2223
@Id
2324
@Column(name = "survey_seq")

src/main/java/com/icd/survey/api/entity/survey/SurveyItem.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import jakarta.persistence.*;
66
import lombok.Getter;
77
import lombok.NoArgsConstructor;
8+
import lombok.ToString;
89
import org.hibernate.annotations.DynamicInsert;
910
import org.hibernate.annotations.DynamicUpdate;
1011

@@ -16,6 +17,7 @@
1617
@DynamicUpdate
1718
@NoArgsConstructor
1819
@Table(name = "survey_item")
20+
@ToString
1921
public class SurveyItem extends BaseEntity {
2022
@Id
2123
@Column(name = "item_seq", nullable = false)
@@ -46,7 +48,7 @@ public class SurveyItem extends BaseEntity {
4648

4749
@OneToMany(fetch = FetchType.LAZY)
4850
@JoinColumn(name = "item_seq")
49-
private List<ItemAnswer> responseList;
51+
private List<ItemAnswer> answerList;
5052

5153
public void disable() {
5254
if(Boolean.FALSE.equals(getIsDeleted())){

src/main/java/com/icd/survey/api/repository/survey/ItemAnswerRepository.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,8 @@
33
import com.icd.survey.api.entity.survey.ItemAnswer;
44
import org.springframework.data.jpa.repository.JpaRepository;
55

6+
import java.util.Optional;
7+
68
public interface ItemAnswerRepository extends JpaRepository<ItemAnswer, Long> {
9+
710
}

src/main/java/com/icd/survey/api/repository/survey/SurveyItemRepository.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,18 @@
22

33
import com.icd.survey.api.entity.survey.SurveyItem;
44
import org.springframework.data.jpa.repository.JpaRepository;
5+
import org.springframework.data.jpa.repository.Query;
6+
import org.springframework.data.repository.query.Param;
57

68
import java.util.List;
79
import java.util.Optional;
810

911
public interface SurveyItemRepository extends JpaRepository<SurveyItem, Long> {
10-
1112
Optional<List<SurveyItem>> findAllBySurveySeq(Long surveySeq);
13+
14+
@Query("SELECT ao FROM SurveyItem si " +
15+
"JOIN si.responseList ao " +
16+
"WHERE si.surveySeq = :surveySeq")
17+
Optional<List<SurveyItem>> findAnswerOptionsBySurveySeq(@Param("surveySeq") Long surveySeq);
18+
Optional<List<SurveyItem>> findSurveyItemsWithAnswers(@Param("surveySeq") Long surveySeq);
1219
}

src/main/java/com/icd/survey/api/repository/survey/SurveyRepository.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.icd.survey.api.entity.survey.Survey;
44
import org.springframework.data.jpa.repository.JpaRepository;
5+
import org.springframework.data.jpa.repository.Query;
56

67
import java.util.Optional;
78

src/main/java/com/icd/survey/api/service/survey/SurveyService.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import com.icd.survey.api.dto.survey.request.UpdateSurveyUpdateRequest;
77
import com.icd.survey.api.entity.survey.Survey;
88
import com.icd.survey.api.entity.survey.SurveyItem;
9+
import com.icd.survey.api.entity.survey.dto.SurveyDto;
10+
import com.icd.survey.api.entity.survey.dto.SurveyItemDto;
911
import com.icd.survey.api.service.survey.business.SurveyActionBusiness;
1012
import com.icd.survey.api.service.survey.business.SurveyQueryBusiness;
1113
import com.icd.survey.common.CommonUtils;
@@ -101,6 +103,23 @@ public void submitSurvey(SubmitSurveyRequest request) {
101103

102104
}
103105

106+
public SurveyDto getSurveyAnswer(Long surveySeq) {
107+
Survey survey = surveyQueryBusiness.findSurveyById(surveySeq)
108+
.orElseThrow(() -> new ApiException(ExceptionResponseType.ENTITY_NOT_FNOUND));
109+
110+
surveyValidCheck(survey);
111+
112+
List<SurveyItem> itemList = surveyQueryBusiness.findAllItemInfoBySurveySeq(surveySeq)
113+
.orElseThrow(() -> new ApiException(ExceptionResponseType.ENTITY_NOT_FNOUND));
114+
115+
116+
/* todo : entity to dto and return 너무 하기 싫어서.... 담주에 하자..*/
117+
118+
SurveyDto result = survey.of();
119+
120+
return null;
121+
}
122+
104123
public void surveyValidCheck(Survey survey) {
105124
if (survey.getIsDeleted() != null && Boolean.TRUE.equals(survey.getIsDeleted())) {
106125
throw new ApiException(ExceptionResponseType.ENTITY_NOT_FNOUND);

src/main/java/com/icd/survey/api/service/survey/business/SurveyQueryBusiness.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.icd.survey.api.service.survey.business;
22

3+
import com.icd.survey.api.entity.survey.ItemAnswer;
34
import com.icd.survey.api.entity.survey.ItemAnswerOption;
45
import com.icd.survey.api.entity.survey.Survey;
56
import com.icd.survey.api.entity.survey.SurveyItem;
@@ -23,18 +24,23 @@ public class SurveyQueryBusiness {
2324
private final ItemAnswerRepository itemAnswerRepository;
2425
private final AnswerOptionRepository answerOptionRepository;
2526

27+
2628
public Optional<Survey> findSurveyById(Long surveySeq) {
2729
return surveyRepository.findById(surveySeq);
2830
}
2931

30-
public Optional<Survey> findUserSurvey(String surveyName, String userSeq) {
31-
return surveyRepository.findBySurveyNameAndIpAddress(surveyName, userSeq);
32+
public Optional<List<SurveyItem>> findAllItemInfoBySurveySeq(Long surveySeq) {
33+
return surveyItemRepository.findSurveyItemsWithAnswers(surveySeq);
3234
}
3335

3436
public Optional<List<SurveyItem>> findItemAllBySurveySeq(Long surveySeq) {
3537
return surveyItemRepository.findAllBySurveySeq(surveySeq);
3638
}
3739

40+
public Optional<List<ItemAnswer>> findAnswerListBySurveySeq(Long surveySeq) {
41+
return null;
42+
}
43+
3844
public Optional<List<ItemAnswerOption>> findOptionAllByItemSeq(Long itemSeq) {
3945
return answerOptionRepository.findAllByItemSeq(itemSeq);
4046
}
@@ -51,8 +57,5 @@ public Optional<SurveyItem> findSurveyItemById(Long itemSeq) {
5157
return surveyItemRepository.findById(itemSeq);
5258
}
5359

54-
public Optional<ItemAnswerOption> findAnswerOptionById(Long answerSeq) {
55-
return answerOptionRepository.findById(answerSeq);
56-
}
5760

5861
}

src/main/java/com/icd/survey/exception/handler/GlobalExceptionHandler.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ protected ResponseEntity<ExceptionResponse> handleCustomApiException(ApiExceptio
4848
@ExceptionHandler(RuntimeException.class)
4949
protected ResponseEntity<ExceptionResponse> handleRuntimeException(RuntimeException e) {
5050
logError(e);
51+
e.printStackTrace();
5152
return ResponseEntity
5253
.internalServerError()
5354
.body(ExceptionResponse

0 commit comments

Comments
 (0)