123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- <?php
- namespace app\h5\controller;
- use think\Controller;
- use think\Db;
- use think\Exception;
- class Wj extends Controller
- {
- public function index(){
- $id = input('id');
- if(!$id){
- return $this->fetch('h5/error');
- }else{
- $info = db('questionnaire')
- ->where('id',$id)
- ->find();
- if(!$info || $info['enable'] != 1){
- return $this->fetch('h5/error');
- }else{
- db('questionnaire')
- ->where('id',$id)
- ->setInc('view',1);
- $this->assign('info',$info);
- return $this->fetch('index/wj');
- }
- }
- }
- public function answer(){
- $id = input('id');
- $answers = input('answer');
- if($id <= 0 || !$answers){
- $this->error('参数错误');
- }
- $info = db('questionnaire')
- ->where('id',$id)
- ->find();
- if(!$info || $info['enable'] != 1){
- $this->error('问卷停止回收');
- }
- $curTime = date('Y-m-d H:i:s');
- $questions = json_decode($info['questions'],true);
- $qarr = [];
- foreach ($questions as $k=>$v){
- if($v['required'] && empty($answers[$v['id']])){
- $this->error('有必做题未完成');
- }
- if(($v['type'] == 'text'||$v['type'] == 'textarea') && $v['limit'] < mb_strlen($answers[$v['id']])){
- $this->error('答题字数超过限制');
- }
- if($v['type'] == 'checkbox'){
- $answer = empty($answers[$v['id']])?'':implode(',',$answers[$v['id']]);
- }else{
- $answer = empty($answers[$v['id']])?'':$answers[$v['id']];
- }
- $qarr[] = [
- 'create_time' => $curTime,
- 'question_id' => $v['id'],
- 'questionnaire_id' => $id,
- 'answer' => $answer,
- 'user_id' => 0,
- ];
- }
- $data = [
- 'ip' => $_SERVER['REMOTE_ADDR'],
- 'questionnaire_id' => $id,
- 'user_id' => 0,
- 'create_time' => $curTime,
- ];
- Db::startTrans();
- try{
- $questionnaireId = db('questionnaire_record')->insertGetId($data);
- if(!$questionnaireId){
- throw new Exception('记录保存失败');
- }
- foreach ($qarr as $k=>$v){
- $qarr[$k]['questionnaire_id'] = $questionnaireId;
- }
- $res = db('questionnaire_record_answer')
- ->insertAll($qarr);
- if(!$res){
- throw new Exception('问题记录保存失败');
- }
- Db::commit();
- $this->success('操作成功');
- }catch (Exception $e){
- Db::rollback();
- $this->error($e->getMessage());
- }
- }
- public function wjsuccess(){
- $title = db('config')
- ->where('name','web_site_title')
- ->value('value');
- $this->assign('title',$title);
- return $this->fetch('index/success');
- }
- }
|