Я работаю над игрой, в которой есть два типа пользователей;Администратор и пользователь, поэтому администратор может генерировать столько вопросов, сколько он хочет, поэтому эти вопросы могут быть NORMAL, MULTICHOICE, BINARI, SMALL_DESCRIPTION
, поэтому каждый раз, когда администратор хочет создать один, он должен решить, какой тип ответа хочет на этот вопрос, а также тему этогоВопрос (это может быть подтема).
Он может создать Викторину, способ создать Викторину состоит в том, что он должен выбрать вопросы, которые он создал ранее.
Также он может проверять историю пользователя, что означает, что при вызове конечной точки он должен иметь возможность проверить вопросы, которые задал этот пользователь (с оценкой, какой вопрос не удался, что он ответил).
Теперь у меня есть классы Question
и Answer
, но я застрял с вопросом о генерации вопроса с ответом, назначенным для темы, а затем с созданием викторины, потому что я пропустил также пользователя в обеих частях., чтобы узнать, какой пользователь создал вопрос / викторину и какой пользователь ответил на вопрос / викторину, и сохранить некоторые данные для ведения истории.
Мой класс вопросов имеет:
@Entity(name="question")
public class Question extends DateAudit {
@Id
@Column(name = "question_id")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "question_seq")
@SequenceGenerator(name = "question_seq", allocationSize = 1)
private Long id;
@Column(name = "text_question")
private String textQuestion; //The question itself "What's the name of ..."
@Column(name = "answerDescription")
@NotBlank(message = "Answer description")
private String answerDescription; //The answer to the question as an explanation
@Column(name = "isExamQuestion", nullable = false)
private Boolean isExamQuestion; //A flag for the user to filter when he wants to do a question he only will see those that are not isExamQuestion, isExamQuestion are the questions that are going to appear when he wants to create a Quiz
@OneToMany(fetch = FetchType.EAGER, cascade = { CascadeType.PERSIST, CascadeType.MERGE })
private Set<Answer> answers; //List of answers...
@Column(name = "answer_type", nullable = false)
private String answerType; //I don't know if it goes here, but the answerType mentioned before NORMAL,MULTICHOICE,.... is to render on the user app
ИОтвет
@Entity(name = "answer")
public class Answer extends DateAudit {
@Id
@Column(name = "answer_id")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "answer_seq")
@SequenceGenerator(name = "answer_seq", allocationSize = 1)
private Long id;
@Column(name = "answerToQuestion")
@NotBlank(message = "Answer to question name can not be blank")
private String answerToQuestion; //If the questions is what's 2*2 this could be 3
@ManyToOne
private Question question; //In what question appear that answer
//Here I'm wondering if I have to add a flag saying isCorrect to detect if it's the correct answer or not
Как вы можете видеть, я скучаю по материалам Темы, истории и тестам, и я не ссылаюсь на то, какой пользователь выполнил вопрос, или тест, или решил тест /вопрос, пожалуйста, сообщите мне, как это сделать?
РЕДАКТИРОВАТЬ
Вопросы, которые я получил:
вопрос предназначен только для одного пользователя или группы пользователей?
Для разностных пользователей можно ответить на один и тот же вопрос или вопрос, а это означает, что Q1 может выполнить 40 пользователей.
связаны ли вопросы с темой?
При создании теста вы выбираете тему, чтобы выбрать вопросы, которые имеют эту тему.Пример: создание теста «Изучить сумму». Мне нужно будет отфильтровать по теме: «Математика», а затем «Подтопическая сумма», чтобы я мог выбрать вопросы, которые нужно вставить в тест.
Как это сделать?Вы планируете создать тему или подтему?
Администратор должен иметь конечную точку для создания темы или подтемы, теперь есть только подтема, нет подтемы подтемы, теперь тема: Математическая подтема: Квадратный корень.Таким образом, перед созданием вопроса или викторины администратор должен сначала создать тему, а если он хочет добавить подтему, то создать ее, а затем, когда он пытается создать вопрос, он может сказать, что этот вопрос из X темы / подтемы.и этот вопрос можно отнести к этому.
Что вы имеете в виду под "историческим"?
Ну, это что-то для стороны администратора, у администратора должна быть конечная точка, которая с идентификатором или именем пользователя возвращает все вопросы викторины (первая конечная точка) или все вопросы (вторая конечная точка), которыепользователь сделал, с оценкой, количество неудач / количество правильных, но мне интересно, что это должен быть внешний интерфейс, чтобы выполнить вычисления, я имею в виду, что конечная точка возвращает всю эту информацию, итого вопросов / тестов выполнено, Оценка, какой вопрос не удалось, и т. Д., А затем во внешнем интерфейсе сделать больше расчетов.