feat: Quiz
퀴즈셋 단위로 퀴즈 등록 추가
This commit is contained in:
parent
1b21ed4289
commit
b9cd3de043
@ -1,7 +1,7 @@
|
|||||||
package com.edufocus.edufocus.lecture.controller;
|
package com.edufocus.edufocus.lecture.controller;
|
||||||
|
|
||||||
import com.edufocus.edufocus.lecture.entity.Lecture;
|
import com.edufocus.edufocus.lecture.entity.Lecture;
|
||||||
import com.edufocus.edufocus.lecture.entity.LectureRegist;
|
import com.edufocus.edufocus.lecture.entity.LectureCreateRequest;
|
||||||
import com.edufocus.edufocus.lecture.service.LectureService;
|
import com.edufocus.edufocus.lecture.service.LectureService;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@ -20,8 +20,8 @@ public class LectureController {
|
|||||||
private final LectureService lectureService;
|
private final LectureService lectureService;
|
||||||
|
|
||||||
@PostMapping
|
@PostMapping
|
||||||
public ResponseEntity<?> createLecture (@RequestBody long userId, @RequestBody LectureRegist lectureRegist) {
|
public ResponseEntity<?> createLecture (@RequestBody long userId, @RequestBody LectureCreateRequest lectureCreateRequest) {
|
||||||
lectureService.createLecture(userId, lectureRegist);
|
lectureService.createLecture(userId, lectureCreateRequest);
|
||||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ import java.util.Date;
|
|||||||
@Getter
|
@Getter
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class LectureRegist {
|
public class LectureCreateRequest {
|
||||||
|
|
||||||
private String title;
|
private String title;
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
package com.edufocus.edufocus.lecture.service;
|
package com.edufocus.edufocus.lecture.service;
|
||||||
|
|
||||||
import com.edufocus.edufocus.lecture.entity.Lecture;
|
import com.edufocus.edufocus.lecture.entity.Lecture;
|
||||||
import com.edufocus.edufocus.lecture.entity.LectureRegist;
|
import com.edufocus.edufocus.lecture.entity.LectureCreateRequest;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -10,7 +10,7 @@ import java.util.List;
|
|||||||
@Service
|
@Service
|
||||||
public interface LectureService {
|
public interface LectureService {
|
||||||
|
|
||||||
void createLecture(long userId, LectureRegist lectureRegist);
|
void createLecture(long userId, LectureCreateRequest lectureCreateRequest);
|
||||||
|
|
||||||
boolean deleteLecture(long userId, long LectureId);
|
boolean deleteLecture(long userId, long LectureId);
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package com.edufocus.edufocus.lecture.service;
|
package com.edufocus.edufocus.lecture.service;
|
||||||
|
|
||||||
import com.edufocus.edufocus.lecture.entity.Lecture;
|
import com.edufocus.edufocus.lecture.entity.Lecture;
|
||||||
import com.edufocus.edufocus.lecture.entity.LectureRegist;
|
import com.edufocus.edufocus.lecture.entity.LectureCreateRequest;
|
||||||
import com.edufocus.edufocus.lecture.repository.LectureRepository;
|
import com.edufocus.edufocus.lecture.repository.LectureRepository;
|
||||||
import com.edufocus.edufocus.user.model.entity.User;
|
import com.edufocus.edufocus.user.model.entity.User;
|
||||||
import com.edufocus.edufocus.user.model.repository.UserRepository;
|
import com.edufocus.edufocus.user.model.repository.UserRepository;
|
||||||
@ -21,18 +21,18 @@ public class LectureServiceImpl implements LectureService {
|
|||||||
private final UserRepository userRepository;
|
private final UserRepository userRepository;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void createLecture(long userId, LectureRegist lectureRegist) {
|
public void createLecture(long userId, LectureCreateRequest lectureCreateRequest) {
|
||||||
|
|
||||||
User user = userRepository.findById(userId).get();
|
User user = userRepository.findById(userId).get();
|
||||||
|
|
||||||
Lecture lecture = new Lecture();
|
Lecture lecture = new Lecture();
|
||||||
lecture.setUser(user);
|
lecture.setUser(user);
|
||||||
|
|
||||||
lecture.setTitle(lectureRegist.getTitle());
|
lecture.setTitle(lectureCreateRequest.getTitle());
|
||||||
lecture.setDescription(lectureRegist.getDescription());
|
lecture.setDescription(lectureCreateRequest.getDescription());
|
||||||
lecture.setStartDate(lectureRegist.getStartDate());
|
lecture.setStartDate(lectureCreateRequest.getStartDate());
|
||||||
lecture.setEndDate(lectureRegist.getEndDate());
|
lecture.setEndDate(lectureCreateRequest.getEndDate());
|
||||||
lecture.setPlan(lectureRegist.getPlan());
|
lecture.setPlan(lectureCreateRequest.getPlan());
|
||||||
|
|
||||||
lectureRepository.save(lecture);
|
lectureRepository.save(lecture);
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,46 @@
|
|||||||
package com.edufocus.edufocus.quiz.controller;
|
package com.edufocus.edufocus.quiz.controller;
|
||||||
|
|
||||||
|
import com.edufocus.edufocus.quiz.entity.*;
|
||||||
|
import com.edufocus.edufocus.quiz.service.QuizService;
|
||||||
|
import com.edufocus.edufocus.quiz.service.QuizSetService;
|
||||||
|
import com.edufocus.edufocus.user.model.service.UserService;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
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.RestController;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/quiz")
|
||||||
|
@Slf4j
|
||||||
|
@RequiredArgsConstructor
|
||||||
public class QuizController {
|
public class QuizController {
|
||||||
|
|
||||||
|
private final QuizService quizService;
|
||||||
|
|
||||||
|
private final QuizSetService quizSetService;
|
||||||
|
|
||||||
|
private final UserService userService;
|
||||||
|
|
||||||
|
@PostMapping
|
||||||
|
public ResponseEntity<?> createQuizSet(@RequestBody QuizSetCreateRequest quizSetCreateRequest) {
|
||||||
|
|
||||||
|
Long userId = 1L;
|
||||||
|
|
||||||
|
String title = quizSetCreateRequest.getTitle();
|
||||||
|
String image = quizSetCreateRequest.getImage();
|
||||||
|
|
||||||
|
SetCreateRequest setCreateRequest = new SetCreateRequest(userId, title, image);
|
||||||
|
|
||||||
|
QuizSet quizSet = quizSetService.createQuizSet(setCreateRequest);
|
||||||
|
|
||||||
|
for (QuizCreateRequest quizCreateRequest : quizSetCreateRequest.getQuizzes()) {
|
||||||
|
quizService.createQuiz(quizSet.getId(), quizCreateRequest);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,20 @@
|
|||||||
|
package com.edufocus.edufocus.quiz.entity;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.ToString;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class MutipleQuizCreateRequest extends QuizCreateRequest {
|
||||||
|
|
||||||
|
private String choice1;
|
||||||
|
|
||||||
|
private String choice2;
|
||||||
|
|
||||||
|
private String choice3;
|
||||||
|
|
||||||
|
private String choice4;
|
||||||
|
}
|
@ -11,7 +11,7 @@ public class Quiz {
|
|||||||
|
|
||||||
@Id
|
@Id
|
||||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
private int id;
|
private Long id;
|
||||||
|
|
||||||
@ManyToOne
|
@ManyToOne
|
||||||
@JoinColumn(name = "quizset_id")
|
@JoinColumn(name = "quizset_id")
|
||||||
|
@ -0,0 +1,23 @@
|
|||||||
|
package com.edufocus.edufocus.quiz.entity;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.ToString;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class QuizCreateRequest {
|
||||||
|
|
||||||
|
private String title;
|
||||||
|
|
||||||
|
private String description;
|
||||||
|
|
||||||
|
private boolean isSingle;
|
||||||
|
|
||||||
|
private String answer;
|
||||||
|
|
||||||
|
private String image;
|
||||||
|
|
||||||
|
}
|
@ -15,7 +15,7 @@ public class QuizSet {
|
|||||||
|
|
||||||
@Id
|
@Id
|
||||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
private int id;
|
private Long id;
|
||||||
|
|
||||||
@ManyToOne
|
@ManyToOne
|
||||||
@JoinColumn(name = "user_id")
|
@JoinColumn(name = "user_id")
|
||||||
|
@ -0,0 +1,22 @@
|
|||||||
|
package com.edufocus.edufocus.quiz.entity;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class QuizSetCreateRequest {
|
||||||
|
|
||||||
|
private Long UserId;
|
||||||
|
|
||||||
|
private String title;
|
||||||
|
|
||||||
|
private String image;
|
||||||
|
|
||||||
|
private List<QuizCreateRequest> quizzes;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
package com.edufocus.edufocus.quiz.entity;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class SetCreateRequest {
|
||||||
|
|
||||||
|
private Long UserId;
|
||||||
|
|
||||||
|
private String title;
|
||||||
|
|
||||||
|
private String image;
|
||||||
|
|
||||||
|
}
|
@ -1,4 +1,7 @@
|
|||||||
package com.edufocus.edufocus.quiz.repository;
|
package com.edufocus.edufocus.quiz.repository;
|
||||||
|
|
||||||
public interface QuizRepository {
|
import com.edufocus.edufocus.quiz.entity.Quiz;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
|
public interface QuizRepository extends JpaRepository<Quiz, Long> {
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,8 @@
|
|||||||
package com.edufocus.edufocus.quiz.repository;
|
package com.edufocus.edufocus.quiz.repository;
|
||||||
|
|
||||||
public interface QuizSetRepository {
|
import com.edufocus.edufocus.quiz.entity.QuizSet;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
|
public interface QuizSetRepository extends JpaRepository<QuizSet, Long> {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,14 @@
|
|||||||
package com.edufocus.edufocus.quiz.service;
|
package com.edufocus.edufocus.quiz.service;
|
||||||
|
|
||||||
|
import com.edufocus.edufocus.quiz.entity.MutipleQuizCreateRequest;
|
||||||
|
import com.edufocus.edufocus.quiz.entity.QuizCreateRequest;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service
|
||||||
public interface QuizService {
|
public interface QuizService {
|
||||||
|
|
||||||
|
void createQuiz(long quizSetId, QuizCreateRequest
|
||||||
|
QuizCreateRequest);
|
||||||
|
|
||||||
|
boolean deleteQuiz(long quizId);
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,49 @@
|
|||||||
package com.edufocus.edufocus.quiz.service;
|
package com.edufocus.edufocus.quiz.service;
|
||||||
|
|
||||||
public class QuizServiceImpl {
|
import com.edufocus.edufocus.quiz.entity.MutipleQuizCreateRequest;
|
||||||
|
import com.edufocus.edufocus.quiz.entity.Quiz;
|
||||||
|
import com.edufocus.edufocus.quiz.entity.QuizCreateRequest;
|
||||||
|
import com.edufocus.edufocus.quiz.entity.QuizSet;
|
||||||
|
import com.edufocus.edufocus.quiz.repository.QuizRepository;
|
||||||
|
import com.edufocus.edufocus.quiz.repository.QuizSetRepository;
|
||||||
|
import jakarta.transaction.Transactional;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@Transactional
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class QuizServiceImpl implements QuizService {
|
||||||
|
|
||||||
|
private final QuizRepository quizRepository;
|
||||||
|
|
||||||
|
private final QuizSetRepository quizSetRepository;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void createQuiz(long quizSetId, QuizCreateRequest quizCreateRequest) {
|
||||||
|
QuizSet quizSet = quizSetRepository.findById(quizSetId).get();
|
||||||
|
|
||||||
|
Quiz quiz = new Quiz();
|
||||||
|
|
||||||
|
quiz.setTitle(quizCreateRequest.getTitle());
|
||||||
|
quiz.setDescription(quizCreateRequest.getDescription());
|
||||||
|
quiz.setAnswer(quizCreateRequest.getAnswer());
|
||||||
|
quiz.setImage(quizCreateRequest.getImage());
|
||||||
|
|
||||||
|
|
||||||
|
quiz.setQuizSet(quizSet);
|
||||||
|
|
||||||
|
quizRepository.save(quiz);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean deleteQuiz(long quizId) {
|
||||||
|
// 유저 아이디 정보 조회 후 검증 로직 추가 예정
|
||||||
|
// jwt -> 로그인 유저 정보 조회
|
||||||
|
// quizId -> 퀴즈 정보 조회 -> 퀴즈셋 정보 조회
|
||||||
|
// 퀴즈셋 생성자와 로그인 유저의 id값이 일치하는지 확인 -> 불일치시 삭제 실패
|
||||||
|
|
||||||
|
quizRepository.deleteById(quizId);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,16 @@
|
|||||||
package com.edufocus.edufocus.quiz.service;
|
package com.edufocus.edufocus.quiz.service;
|
||||||
|
|
||||||
|
import com.edufocus.edufocus.quiz.entity.QuizSet;
|
||||||
|
import com.edufocus.edufocus.quiz.entity.SetCreateRequest;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service
|
||||||
public interface QuizSetService {
|
public interface QuizSetService {
|
||||||
|
|
||||||
|
QuizSet createQuizSet(SetCreateRequest setCreateRequest);
|
||||||
|
|
||||||
|
void updateQuizSet(QuizSet quizSet);
|
||||||
|
|
||||||
|
void deleteQuizSet(long quizSetId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,45 @@
|
|||||||
package com.edufocus.edufocus.quiz.service;
|
package com.edufocus.edufocus.quiz.service;
|
||||||
|
|
||||||
public class QuizSetServiceImpl {
|
import com.edufocus.edufocus.quiz.entity.QuizSet;
|
||||||
|
import com.edufocus.edufocus.quiz.entity.SetCreateRequest;
|
||||||
|
import com.edufocus.edufocus.quiz.repository.QuizSetRepository;
|
||||||
|
import com.edufocus.edufocus.user.model.entity.User;
|
||||||
|
import com.edufocus.edufocus.user.model.repository.UserRepository;
|
||||||
|
import jakarta.transaction.Transactional;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@Transactional
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class QuizSetServiceImpl implements QuizSetService {
|
||||||
|
|
||||||
|
private final QuizSetRepository quizSetRepository;
|
||||||
|
|
||||||
|
private final UserRepository userRepository;
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public QuizSet createQuizSet(SetCreateRequest setCreateRequest) {
|
||||||
|
QuizSet quizSet = new QuizSet();
|
||||||
|
|
||||||
|
User user = userRepository.findById(setCreateRequest.getUserId()).get();
|
||||||
|
|
||||||
|
quizSet.setUser(user);
|
||||||
|
|
||||||
|
quizSet.setTitle(setCreateRequest.getTitle());
|
||||||
|
quizSet.setImage(setCreateRequest.getImage());
|
||||||
|
|
||||||
|
return quizSetRepository.save(quizSet);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateQuizSet(QuizSet quizSet) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteQuizSet(long quizSetId) {
|
||||||
|
quizSetRepository.deleteById(quizSetId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user