diff --git a/src/main/java/com/example/Back/controller/ScriptController.java b/src/main/java/com/example/Back/controller/ScriptController.java index 55b3c00..7e40372 100644 --- a/src/main/java/com/example/Back/controller/ScriptController.java +++ b/src/main/java/com/example/Back/controller/ScriptController.java @@ -29,16 +29,33 @@ public ResponseEntity writeScript(@Valid @RequestBody ScriptRequestDto.Regist return scriptService.writeScript(script); } + // id 삭제 + /* + @GetMapping + public ResponseEntity readScript() { + + return scriptService.getScriptContents(); + } + */ + + // 특정 id를 가진 사람의 scripts들 모두 @GetMapping("/{id}") public ResponseEntity readScript(@PathVariable("id") Long id) { - return scriptService.getScriptContents(id); } + + @DeleteMapping("/{id}") public ResponseEntity deleteScript(@PathVariable Long id) { return scriptService.deleteScript(id); } + @GetMapping("/all/{socialId}") + public ResponseEntity readAllScript(@PathVariable("socialId") String socialId) { + + return scriptService.getAllScriptContents(socialId); + } + } diff --git a/src/main/java/com/example/Back/domain/Script.java b/src/main/java/com/example/Back/domain/Script.java index 7a9d415..3f4e899 100644 --- a/src/main/java/com/example/Back/domain/Script.java +++ b/src/main/java/com/example/Back/domain/Script.java @@ -25,10 +25,10 @@ public class Script extends BaseEntity { @Column(name="script_id") private Long scriptId; - // @ManyToOne(fetch = FetchType.LAZY) - // @JoinColumn(name = "member_id") + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "member_id") // @JsonBackReference - // private Member memberId; + private Member memberId; @Column private String title; diff --git a/src/main/java/com/example/Back/dto/request/ScriptRequestDto.java b/src/main/java/com/example/Back/dto/request/ScriptRequestDto.java index 788a938..ac013f1 100644 --- a/src/main/java/com/example/Back/dto/request/ScriptRequestDto.java +++ b/src/main/java/com/example/Back/dto/request/ScriptRequestDto.java @@ -13,17 +13,14 @@ public class ScriptRequestDto { @Setter public static class Register { - // @NotNull(message = "user id는 필수 입력값입니다.") - // private Long memberId; + @NotNull(message = "user id는 필수 입력값입니다.") + private String memberId; @NotNull(message = "title은 필수 입력값입니다.") private String script_title; private ArrayList contents; - // @NotNull(message = "type은 필수 입력값입니다.") - // private String type; - } @Getter @@ -33,8 +30,7 @@ public static class Update { @NotNull(message = "title은 필수 입력값입니다.") private String title; - // @NotNull(message = "type은 필수 입력값입니다.") - // private String type; + private ArrayList contents; } } diff --git a/src/main/java/com/example/Back/dto/response/ScriptResponseDto.java b/src/main/java/com/example/Back/dto/response/ScriptResponseDto.java index 57b2b18..f2f9cc5 100644 --- a/src/main/java/com/example/Back/dto/response/ScriptResponseDto.java +++ b/src/main/java/com/example/Back/dto/response/ScriptResponseDto.java @@ -19,8 +19,7 @@ public class ScriptResponseDto { private static class Body { private String result; - - private Long memberId; + private String socialId; private Long script_id; private String message; @@ -32,7 +31,7 @@ private static class ScriptBody { private String result; - private Long memberId; + private String socialId; private Long script_id; private String script_title; @@ -41,12 +40,29 @@ private static class ScriptBody { } + @Getter + @Builder + private static class ScriptBody2 { + + private String result; + + private String socialId; + private Long script_id; + + private String script_title; + private int content_cnt; + private String content; + + private LocalDateTime modified_date; + + } + // script 최초 생성 public ResponseEntity scriptCreateSuccess(Script script) { Body body = Body.builder() .result("success") - // .memberId(script.getMemberId().getId()) + .socialId(script.getMemberId().getSocialId()) .script_id(script.getScriptId()) .message("script가 성공적으로 저장되었습니다.") .build(); @@ -58,7 +74,7 @@ public ResponseEntity scriptDeleteSuccess(Script script) { Body body = Body.builder() .result("success") - // .memberId(script.getMemberId().getId()) + .socialId(script.getMemberId().getSocialId()) .script_id(script.getScriptId()) .message("script가 성공적으로 삭제되었습니다.") .build(); @@ -82,10 +98,9 @@ public ResponseEntity scriptSuccess(Script script) { contents.add(info); } - ScriptBody body = ScriptBody.builder() .result("success") - //.memberId(script.getMemberId().getId()) + .socialId(script.getMemberId().getSocialId()) .script_id(script.getScriptId()) .script_title(script.getTitle()) .content_cnt(script.getCnt()) @@ -97,6 +112,23 @@ public ResponseEntity scriptSuccess(Script script) { return ResponseEntity.ok(body); } + // script 전체 내용 1줄만 보여주기 보여주기 + public ResponseEntity scriptSuccess2(Script script) { + + List paragraphs = script.getParagraphs(); + + ScriptBody2 body = ScriptBody2.builder() + .result("success") + // .socialId(script.getMemberId().getSocialId()) + .script_id(script.getScriptId()) + .script_title(script.getTitle()) + .content_cnt(script.getCnt()) // 페이지 개수 + .content(paragraphs.get(0).getContents()) + .modified_date(script.getModifiedDate()) + .build(); + return ResponseEntity.ok(body); + } + /* public ResponseEntity success(Script script) { diff --git a/src/main/java/com/example/Back/exception/ResponseException.java b/src/main/java/com/example/Back/exception/ResponseException.java new file mode 100644 index 0000000..a60fad6 --- /dev/null +++ b/src/main/java/com/example/Back/exception/ResponseException.java @@ -0,0 +1,12 @@ +package com.example.Back.exception; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@AllArgsConstructor +public class ResponseException extends Exception{ //사용자정의 예외 던지기 위함 + private ResponseTemplateStatus status; +} \ No newline at end of file diff --git a/src/main/java/com/example/Back/exception/ResponseTemplate.java b/src/main/java/com/example/Back/exception/ResponseTemplate.java new file mode 100644 index 0000000..a54f8f1 --- /dev/null +++ b/src/main/java/com/example/Back/exception/ResponseTemplate.java @@ -0,0 +1,37 @@ +package com.example.Back.exception; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +@JsonPropertyOrder({"isSuccess", "code", "message", "data"}) +public class ResponseTemplate { + + @JsonProperty("isSuccess") + private final Boolean isSuccess; + private final String message; //메시지 전달 + private final int code; //내부 코드 + + @JsonInclude(JsonInclude.Include.NON_NULL) + private T data; + + //요청 성공 시 + public ResponseTemplate(T data) { + this.isSuccess = ResponseTemplateStatus.SUCCESS.isSuccess(); + this.message = ResponseTemplateStatus.SUCCESS.getMessage(); + this.code = ResponseTemplateStatus.SUCCESS.getCode(); + this.data = data; + + } + + //요청 실패시 + public ResponseTemplate(ResponseTemplateStatus status) { + this.isSuccess = status.isSuccess(); + this.message = status.getMessage(); + this.code = status.getCode(); + } +} \ No newline at end of file diff --git a/src/main/java/com/example/Back/exception/ResponseTemplateStatus.java b/src/main/java/com/example/Back/exception/ResponseTemplateStatus.java new file mode 100644 index 0000000..cb287ca --- /dev/null +++ b/src/main/java/com/example/Back/exception/ResponseTemplateStatus.java @@ -0,0 +1,22 @@ +package com.example.Back.exception; + +import lombok.Getter; + +@Getter +public enum ResponseTemplateStatus { + SUCCESS(true, "요청 성공", 1000), + FAIL(false, "요청 실패", 1004), + + //4000: 유저 부분 오류 + USER_NOT_FOUND(false, "유저를 찾을 수 없습니다.", 4005); + + private final boolean isSuccess; + private final String message; + private final int code; + + private ResponseTemplateStatus(boolean isSuccess, String message, int code){ + this.isSuccess = isSuccess; + this.code = code; + this.message = message; + } +} diff --git a/src/main/java/com/example/Back/repository/Impl/AssessmentQuestionRepositoryImpl.java b/src/main/java/com/example/Back/repository/Impl/AssessmentQuestionRepositoryImpl.java index e9ab561..f960aa7 100644 --- a/src/main/java/com/example/Back/repository/Impl/AssessmentQuestionRepositoryImpl.java +++ b/src/main/java/com/example/Back/repository/Impl/AssessmentQuestionRepositoryImpl.java @@ -7,6 +7,7 @@ import java.util.List; import static com.example.Back.domain.QAssessmentQuestion.assessmentQuestion; +// import static com.example.Back.domain.AssessmentQuestion.assessmentQuestion; public class AssessmentQuestionRepositoryImpl implements AssessmentQuestionRepositoryCustom { diff --git a/src/main/java/com/example/Back/service/ScriptService.java b/src/main/java/com/example/Back/service/ScriptService.java index 1b612ac..429d8b3 100644 --- a/src/main/java/com/example/Back/service/ScriptService.java +++ b/src/main/java/com/example/Back/service/ScriptService.java @@ -1,16 +1,20 @@ package com.example.Back.service; +import com.example.Back.domain.Member; import com.example.Back.domain.Paragraph; import com.example.Back.domain.Script; import com.example.Back.dto.request.ParagraphReq; import com.example.Back.dto.request.ScriptRequestDto; import com.example.Back.dto.response.ParagraphRes; import com.example.Back.dto.response.ScriptResponseDto; +import com.example.Back.exception.ResponseTemplate; import com.example.Back.repository.ParagraphRepository; import com.example.Back.repository.ScriptRepository; +import com.example.Back.repository.SocialMemberRepository; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -18,6 +22,10 @@ import javax.persistence.EntityManager; import java.util.ArrayList; import java.util.List; +import java.util.NoSuchElementException; +import java.util.Optional; + +import static com.example.Back.exception.ResponseTemplateStatus.USER_NOT_FOUND; @Service @RequiredArgsConstructor @@ -32,6 +40,8 @@ public class ScriptService { private final ScriptResponseDto scriptResponse; + private final SocialMemberRepository memberRepository; + // private final MemoService memoService; @@ -41,37 +51,43 @@ public class ScriptService { public ResponseEntity writeScript(ScriptRequestDto.Register script1) { - // Member script_member=memberRepository.getUser(script1.getMemberId()); ArrayList contents = script1.getContents(); int cnt_list = contents.size(); List paragraphs_list = new ArrayList(); + Optional cur_member = memberRepository.findBySocialId(script1.getMemberId()); - Script script=Script.builder() - // .memberId(script_member) - .title(script1.getScript_title()) - .cnt(cnt_list) - .deleted(false) - .build(); - - for (int idx=1; idx<=cnt_list; idx++) { - ParagraphReq paragraph_info = contents.get(idx-1); - Paragraph paragraph = Paragraph.builder() - .script(script) - .idx(idx) - .title(paragraph_info.getParagraph_title()) - .contents(paragraph_info.getParagraph_content()) + if (cur_member.isPresent()) { + Member member = cur_member.get(); + + Script script=Script.builder() + .memberId(member) + .title(script1.getScript_title()) + .cnt(cnt_list) .deleted(false) .build(); - paragraphRepository.save(paragraph); - paragraphs_list.add(paragraph); - } + for (int idx=1; idx<=cnt_list; idx++) { + ParagraphReq paragraph_info = contents.get(idx-1); + Paragraph paragraph = Paragraph.builder() + .script(script) + .idx(idx) + .title(paragraph_info.getParagraph_title()) + .contents(paragraph_info.getParagraph_content()) + .deleted(false) + .build(); + paragraphRepository.save(paragraph); - script.setParagraphs(paragraphs_list); - scriptRepository.save(script); + paragraphs_list.add(paragraph); + } + + script.setParagraphs(paragraphs_list); + scriptRepository.save(script); + + return scriptResponse.scriptCreateSuccess(script); + } - return scriptResponse.scriptCreateSuccess(script); + return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseTemplate<>(USER_NOT_FOUND)); } @@ -93,9 +109,39 @@ public ResponseEntity deleteScript(Long id) { @Transactional(readOnly = true) public ResponseEntity getScriptContents(Long scriptId){ Script script1= em.find(Script.class, scriptId); - return scriptResponse.scriptSuccess(script1); + return scriptResponse.scriptSuccess2(script1); } + @Transactional(readOnly = true) + public ResponseEntity getAllScriptContents(String socialId){ + Optional cur_member = memberRepository.findBySocialId(socialId); + + if (cur_member.isPresent()) { + Member member = cur_member.get(); + // return scriptResponse.scriptCreateSuccess(script); + } + return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseTemplate<>(USER_NOT_FOUND)); + } +/* + public List getPosts(Long albumId) { + Album cur_album = em.find(Album.class, albumId); + System.out.println("album id: "+albumId+", album name: "+cur_album.getAlbumName()); + List res_li = new ArrayList<>(); + + List post_li = cur_album.getPosts(); + System.out.println("post_li size: "+post_li.size()); + for (int idx=0 ; idx findByMemberId(Long memberId){