You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
zhishifufei_php/application/web/model/topic/ExaminationRecord.php

91 lines
4.2 KiB

9 months ago
<?php
// +----------------------------------------------------------------------
// | 天诚科技 [ 刘海东 17600099397赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2020 https://www.tczxkj.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed 该系统并不是自由软件,未经许可不能去掉相关版权
// +----------------------------------------------------------------------
// | Author:甘肃天诚志信电子商务有限公司 刘海东 联系电话维系17600099397
// +----------------------------------------------------------------------
namespace app\web\model\topic;
use traits\ModelTrait;
use basic\ModelBasic;
use app\wap\model\topic\ExaminationTestRecord;
use app\wap\model\topic\ExaminationWrongBank;
use app\wap\model\topic\TestPaper;
use app\wap\model\topic\TestPaperObtain;
use app\admin\model\questions\TestPaperScoreGrade;
/**
* 用户考试记录 Model
* Class ExaminationRecord
*/
class ExaminationRecord extends ModelBasic
{
use ModelTrait;
/**添加考试记录
* @param $id
* @param $type
* @param $uid
*/
public static function addExaminationRecord($id, $type, $uid, $txamination_time)
{
$data['test_id'] = $id;
$data['type'] = $type;
$data['uid'] = $uid;
$data['add_time'] = time();
if ($type == 2) {
$data['start_time'] = time();
$data['end_time'] = bcadd(time(), bcmul($txamination_time, 60, 0), 0);
}
return self::insertGetId($data);
}
/**清除上次考试结果
* @param $id
* @param $type
* @param $uid
*/
public static function clearLastExamResults($id, $type, $uid)
{
$record = self::where(['test_id' => $id, 'type' => $type, 'uid' => $uid])->order('id desc')->find();
if (!$record) return true;
$testCount = ExaminationTestRecord::where(['e_id' => $record['id'], 'type' => $record['type']])->count();
if (!$testCount) return true;
self::where(['test_id' => $id, 'type' => $type, 'uid' => $uid, 'is_submit' => 0])->update(['is_submit' => 1]);
$res = ExaminationTestRecord::where(['e_id' => $record['id'], 'type' => $record['type']])->delete();
return $res;
}
/**提交考试记录
* @param $data
* @param $uid
*/
public static function submitExaminationRecord($data, $uid)
{
$record = self::where(['id' => $data['examination_id'], 'type' => $data['type'], 'uid' => $uid])->find();
if (!$record || $record['is_submit']) return self::setErrorInfo('记录不存在或已提交!');
$yes_questions = ExaminationTestRecord::where(['e_id' => $record['id'], 'type' => $record['type'], 'is_correct' => 2])->count();
$wrong_question = ExaminationTestRecord::where(['e_id' => $record['id'], 'type' => $record['type'], 'is_correct' => 1])->count();
$testPaper = TestPaper::where(['id' => $record['test_id'], 'is_show' => 1, 'is_del' => 0])->field('is_score,item_number')->find();
$array['accuracy'] = bcmul(bcdiv($yes_questions, $testPaper['item_number'], 2), 100, 0);
$array['yes_questions'] = $yes_questions;
$array['wrong_question'] = $wrong_question;
$array['is_submit'] = 1;
$array['duration'] = $data['duration'];
$array['score'] = ExaminationTestRecord::where(['e_id' => $record['id'], 'type' => $record['type'], 'is_correct' => 2])->sum('score');
$array['grade'] = TestPaperScoreGrade::getTestPaperScoreGrade($record['test_id'], $array['score']);
$res = self::edit($array, $record['id']);
if (!$res) return self::setErrorInfo('记录修改错误!');
$res1 = ExaminationWrongBank::addWrongBank($record['id'], $record['test_id'], $record['type'], $uid);
$res2 = TestPaper::PreExercisesWhere()->where(['id' => $record['test_id']])->setInc('answer');
$res3 = TestPaperObtain::where(['test_id' => $record['test_id'], 'type' => $data['type'], 'uid' => $uid, 'is_del' => 0])->setInc('number');
if ($res && $res1 && $res2 && $res3) return true;
else return false;
}
}