|
|
@@ -134,5 +134,106 @@ class TrainingQuestionsLogic extends BaseLogic
|
|
|
return $data??[];
|
|
|
}
|
|
|
|
|
|
+ public static function questionImport($questions)
|
|
|
+ {
|
|
|
+ $newQuestionArray = [];
|
|
|
+ $time = time();
|
|
|
+ foreach ($questions as $key => $question) {
|
|
|
+ $newQuestionArray[$key]['title'] = $question['title'];
|
|
|
+ $newQuestionArray[$key]['question_analysis'] = '暂无';
|
|
|
+ $newQuestionArray[$key]['subclass'] = self::getSubclass($question['subclass']??'');
|
|
|
+ $newQuestionArray[$key]['create_time'] = $time;
|
|
|
+ $newQuestionArray[$key]['update_time'] = $time;
|
|
|
+
|
|
|
+ $typeAnswer = self::getQuestionTypeAnswer($question['question_answer']);
|
|
|
+ $newQuestionArray[$key]['question_type'] = $typeAnswer['question_type']??0;
|
|
|
+ $newQuestionArray[$key]['question_answer'] = $typeAnswer['question_answer']??'';
|
|
|
+ $newQuestionArray[$key]['question_selects'] = self::getQuestionSelects($question,$typeAnswer['question_answer'])??'';
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ Db::startTrans();
|
|
|
+ try {
|
|
|
+
|
|
|
+ TrainingQuestions::insertAll($newQuestionArray);
|
|
|
+
|
|
|
+ Db::commit();
|
|
|
+ return true;
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ Db::rollback();
|
|
|
+ self::setError($e->getMessage());
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public static function getSubclass($subclass)
|
|
|
+ {
|
|
|
+ if(empty($subclass)) return 0;
|
|
|
+ if(is_numeric($subclass)) return $subclass;
|
|
|
+ return \app\common\model\goods_category\GoodsCategory::where('name', $subclass)->value('id')??0;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static function getQuestionTypeAnswer($answer)
|
|
|
+ {
|
|
|
+ // 统一转大写
|
|
|
+ $answer = strtoupper($answer);
|
|
|
+ $optionMap = [
|
|
|
+ 'A' => 1,
|
|
|
+ 'B' => 2,
|
|
|
+ 'C' => 3,
|
|
|
+ 'D' => 4,
|
|
|
+ 'E' => 5,
|
|
|
+ 'F' => 6
|
|
|
+ ];
|
|
|
+ $cleanedAnswer = preg_replace('/[^A-Z]/', '', $answer);
|
|
|
+ if (strlen($cleanedAnswer) === 0) {
|
|
|
+ $question_type = 0;
|
|
|
+ } elseif (strlen($cleanedAnswer) === 1) {
|
|
|
+ $question_type = 1;
|
|
|
+ } else {
|
|
|
+ $question_type = 2;
|
|
|
+ }
|
|
|
+ $newArray = [];
|
|
|
+ for ($i = 0; $i < strlen($cleanedAnswer); $i++) {
|
|
|
+ $letter = $cleanedAnswer[$i];
|
|
|
+ if (isset($optionMap[$letter])) {
|
|
|
+ $newArray[] = $optionMap[$letter];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $question_answer = implode(',', $newArray);
|
|
|
+ return ['question_type'=>$question_type,'question_answer'=>$question_answer];
|
|
|
+ }
|
|
|
+ public static function getQuestionSelects($options_data,$question_answer)
|
|
|
+ {
|
|
|
+ $keyArr = [
|
|
|
+ "options_a" => "0",
|
|
|
+ "options_b" => "1",
|
|
|
+ "options_c" => "2",
|
|
|
+ "options_d" => "3",
|
|
|
+ "options_e" => "4",
|
|
|
+ "options_f" => "5"
|
|
|
+ ];
|
|
|
+ $res = [];
|
|
|
+ foreach ($options_data as $key => $item) {
|
|
|
+ isset($keyArr[$key]) && $res[$keyArr[$key]] = $item;
|
|
|
+ }
|
|
|
+
|
|
|
+ $arr = array_values($res);
|
|
|
+ $answerArr = explode(',', $question_answer);
|
|
|
+ $data = [];
|
|
|
+ foreach ($arr as $key => $name) {
|
|
|
+ $data[$key]['block_key'] = $key+1;
|
|
|
+ $data[$key]['name'] = trim($name);
|
|
|
+ if(in_array($data[$key]['block_key'],$answerArr)){
|
|
|
+ $data[$key]['select_value'] = \true;
|
|
|
+ }else{
|
|
|
+ $data[$key]['select_value'] = \false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return json_encode($data);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
|
|
|
}
|