| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 | 
							- <?php
 
- namespace app\common\model;
 
- use think\Db;
 
- use think\Exception;
 
- class ArticleRecord extends Base
 
- {
 
-     public $table = 'article_record';
 
-     protected $validateName = 'ArticleRecord';
 
-     public function lists($userId,$page,$size){
 
-         $offset = ($page - 1) * $size;
 
-         $ret=$this
 
-             ->field('id,article_paper_id,score,create_time')
 
-             ->where('user_id',$userId)
 
-             ->order('id desc')
 
-             ->page($offset,$size)
 
-             ->select()
 
-             ->toArray();
 
-         foreach ($ret as $k=>$v){
 
-             $title=Db::name('article_paper')
 
-                 ->field('title')
 
-                 ->where('id',$v['article_paper_id'])
 
-                 ->find();
 
-             $ret[$k]['title']=$title?$title['title']:'';
 
-             $ret[$k]['score']=(int)$v['score'];
 
-         }
 
-         return $ret;
 
-     }
 
-     public function limits($userId,$paperId){
 
-         $totle=$this
 
-             ->where([
 
-                 'user_id'=>$userId,
 
-                 'article_paper_id'=>$paperId,
 
-             ])->count();
 
-         $paperTotle=Db::name('article_paper')
 
-             ->field('limits')
 
-             ->where([
 
-                 'id'=>$paperId,
 
-                 'del'=>0,
 
-                 'status'=>2,
 
-             ])->find();
 
-         $data = $paperTotle['limits'] - $totle;
 
-         return $data > 0?$data:0;
 
-     }
 
-     public function saveData($userId,$orgId,$paperId,$jsonArray){
 
-         $score=0;
 
-         foreach ($jsonArray as $k=>$value){
 
-             $info = Db::name('article_question')
 
-                 ->where('id',$value['questionId'])
 
-                 ->where('del',0)
 
-                 ->find();
 
-             if(!$info){
 
-                 $this->error = '试题有变化,请重新答题';
 
-                 return false;
 
-             }
 
-             $answer = $value['answer']?explode(',',$value['answer']):[];
 
-             $error = 0;
 
-             $answers = json_decode($info['options'],true);
 
-             if(!$answer){
 
-                 $error = 1;
 
-             }else{
 
-                 foreach ($answer as $k=>$v){
 
-                     $flag = 0;
 
-                     foreach ($answers as $kk=>$vv){
 
-                         if($v == $vv['id']){
 
-                             $flag = 1;
 
-                             if($vv['answer'] == 0){
 
-                                 $error = 1;
 
-                                 break;
 
-                             }
 
-                         }
 
-                     }
 
-                     if($flag == 0){
 
-                         $error = 0;
 
-                         break;
 
-                     }
 
-                 }
 
-             }
 
-             if($error == 0){
 
-                 $score += $info['score'];
 
-             }
 
-         }
 
-         $this->startTrans();
 
-         try{
 
-             $data=[
 
-                 'article_paper_id'=>$paperId,
 
-                 'user_id'=>$userId,
 
-                 'score'=>$score,
 
-                 'create_time'=>date('Y-m-d H:i:s'),
 
-             ];
 
-             $id=$this->insertGetId($data);
 
-             if(!$id){
 
-                 \exception('考试记录保存失败');
 
-             }
 
-             $a =[];
 
-             foreach ($jsonArray as $k=>$val){
 
-                 $data=[
 
-                     'article_record_id'=>$id,
 
-                     'article_question_id'=>$val['questionId'],
 
-                     'answer'=>$val['answer'],
 
-                 ];
 
-                 $a[] = $data;
 
-             }
 
-             $res = Db::name('article_record_answer')
 
-                 ->insertAll($a);
 
-             if(!$res){
 
-                \exception('问题保存失败');
 
-             }
 
-             $this->commit();
 
-             return true;
 
-         }catch (Exception $e){
 
-             $this->rollback();
 
-             $this->error = $e->getMessage();
 
-             return false;
 
-         }
 
-     }
 
- }
 
 
  |