model = new ExamQuestions(); } /** * 获取试题列表 * @param array $where * @return array */ public function getPage(array $where = []) { $field = 'id,title,question_type,question_content_type,correct_answer,question_content,option_json,created_at,updated_at'; $order = 'id desc'; $search_model = $this->model->withSearch(["title","question_type","created_at"], $where)->field($field)->order($order); $list = $this->pageQuery($search_model); return $list; } /** * 获取试题信息 * @param int $id * @return array */ public function getInfo(int $id) { $field = 'id,title,question_type,question_content_type,correct_answer,question_content,option_json,created_at,updated_at'; $info = $this->model->field($field)->where([['id', "=", $id]])->findOrEmpty()->toArray(); return $info; } /** * 添加试题 * @param array $data * @return mixed */ public function add(array $data) { $res = $this->model->create($data); return $res->id; } /** * 试题编辑 * @param int $id * @param array $data * @return bool */ public function edit(int $id, array $data) { $this->model->where([['id', '=', $id]])->update($data); return true; } /** * 删除试题 * @param int $id * @return bool */ public function del(int $id) { $model = $this->model->where([['id', '=', $id]])->find(); $res = $model->delete(); return $res; } public function random_questions_list(array $data){ $singleChoiceIds = $data['single_choice_count'] > 0 ? $this->model ->where([['question_type', '=', 'single_choice']]) ->orderRaw('RAND()') ->limit($data['single_choice_count']) ->column("id") : []; $multipleChoiceIds = $data['multiple_choice_count'] > 0 ? $this->model ->where([['question_type', '=', 'multiple_choice']]) ->orderRaw('RAND()') ->limit($data['multiple_choice_count']) ->column("id") : []; $trueFalseIds = $data['true_false_count'] > 0 ? $this->model ->where([['question_type', '=', 'true_false']]) ->orderRaw('RAND()') ->limit($data['true_false_count']) ->column("id") : []; $questions_ids = array_merge($singleChoiceIds, $multipleChoiceIds, $trueFalseIds); return success("随机成功", ['questions_ids' => implode(',', $questions_ids)]); } }