474 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			474 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| 
								 | 
							
								<?php
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								namespace app\api\controller\backend;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								use app\common\controller\Api;
							 | 
						|||
| 
								 | 
							
								use app\common\library\Ems;
							 | 
						|||
| 
								 | 
							
								use app\common\library\Sms;
							 | 
						|||
| 
								 | 
							
								use fast\Random;
							 | 
						|||
| 
								 | 
							
								use think\Config;
							 | 
						|||
| 
								 | 
							
								use think\Validate;
							 | 
						|||
| 
								 | 
							
								use think\Db;
							 | 
						|||
| 
								 | 
							
								use think\Model;
							 | 
						|||
| 
								 | 
							
								use fast\Tree;
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 调查问卷接口
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								class Questionnaire extends Api
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    //如果$noNeedLogin为空表示所有接口都需要登录才能请求
							 | 
						|||
| 
								 | 
							
								    //如果$noNeedRight为空表示所有接口都需要验证权限才能请求
							 | 
						|||
| 
								 | 
							
								    //如果接口已经设置无需登录,那也就无需鉴权了
							 | 
						|||
| 
								 | 
							
								    //
							 | 
						|||
| 
								 | 
							
								    // 无需登录的接口,*表示全部
							 | 
						|||
| 
								 | 
							
								    protected $noNeedLogin = ['*','searchById', 'search'];
							 | 
						|||
| 
								 | 
							
								    // 无需鉴权的接口,*表示全部
							 | 
						|||
| 
								 | 
							
								    protected $noNeedRight = ['test2'];
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    protected $dataLimit = 'personal';
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								      /**
							 | 
						|||
| 
								 | 
							
								     * 
							 | 
						|||
| 
								 | 
							
								     * 问卷列表
							 | 
						|||
| 
								 | 
							
								     * 
							 | 
						|||
| 
								 | 
							
								    */
							 | 
						|||
| 
								 | 
							
								    public function questionnaireIndex(){
							 | 
						|||
| 
								 | 
							
								        $title = input('questionnaire');
							 | 
						|||
| 
								 | 
							
								        $page = input("page",1); 
							 | 
						|||
| 
								 | 
							
								        $size = input("size",10); 
							 | 
						|||
| 
								 | 
							
								        $Token = $this->request->header('Token');
							 | 
						|||
| 
								 | 
							
								        if(!$Token){
							 | 
						|||
| 
								 | 
							
								            return $this->error('缺少参数');
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        $user_id = Db::name('user')->where('token', $Token)->value('id');
							 | 
						|||
| 
								 | 
							
								        if(!$user_id){
							 | 
						|||
| 
								 | 
							
								            return $this->error('该用户不存在');
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        
							 | 
						|||
| 
								 | 
							
								        $where = [];
							 | 
						|||
| 
								 | 
							
								        if($title){
							 | 
						|||
| 
								 | 
							
								           $where['title'] = ['like',"%$title%"];
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        $data = Db::name('questionnaire')
							 | 
						|||
| 
								 | 
							
								                    ->where($where)
							 | 
						|||
| 
								 | 
							
								                    ->order('releasetime desc')
							 | 
						|||
| 
								 | 
							
								                    ->page($page,$size)
							 | 
						|||
| 
								 | 
							
								                    ->select();
							 | 
						|||
| 
								 | 
							
								        foreach ($data as $key => $val){
							 | 
						|||
| 
								 | 
							
								            $res = Db::name('questionnaire_log')
							 | 
						|||
| 
								 | 
							
								                    ->where('questionnaire_id', $val['id'])
							 | 
						|||
| 
								 | 
							
								                    ->where('user_id', $user_id)
							 | 
						|||
| 
								 | 
							
								                    ->select();
							 | 
						|||
| 
								 | 
							
								            $data[$key]['type'] = '未填写';
							 | 
						|||
| 
								 | 
							
								            if($res){
							 | 
						|||
| 
								 | 
							
								                $data[$key]['type'] = '已填写';
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        
							 | 
						|||
| 
								 | 
							
								        $count = Db::name('questionnaire')
							 | 
						|||
| 
								 | 
							
								                    ->where($where)
							 | 
						|||
| 
								 | 
							
								                    ->count();
							 | 
						|||
| 
								 | 
							
								        $data = [
							 | 
						|||
| 
								 | 
							
								                'count' => $count,
							 | 
						|||
| 
								 | 
							
								                'data' => $data
							 | 
						|||
| 
								 | 
							
								                ];
							 | 
						|||
| 
								 | 
							
								        $this->success('返回成功',$data);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								   
							 | 
						|||
| 
								 | 
							
								    //单挑查询
							 | 
						|||
| 
								 | 
							
								    public function questionnairefind()
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    $questionnaireId = input('id');
							 | 
						|||
| 
								 | 
							
								    
							 | 
						|||
| 
								 | 
							
								    // 1. 查询问卷所有题目(带权重排序)
							 | 
						|||
| 
								 | 
							
								    $topics = Db::name('questionnaire_topic')
							 | 
						|||
| 
								 | 
							
								        ->where('questionnaire_id', $questionnaireId)
							 | 
						|||
| 
								 | 
							
								        ->order('id desc')  // 注意:原代码中的"wight"应为"weight"的拼写错误
							 | 
						|||
| 
								 | 
							
								        ->select();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    // 2. 预处理题目数据:解码选项
							 | 
						|||
| 
								 | 
							
								    $processedTopics = [];
							 | 
						|||
| 
								 | 
							
								    foreach ($topics as $topic) {
							 | 
						|||
| 
								 | 
							
								        $topic['option'] = json_decode($topic['option'], true);
							 | 
						|||
| 
								 | 
							
								        $processedTopics[$topic['id']] = $topic; // 使用ID作为键方便后续匹配
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    // 3. 查询该问卷所有题目的答题记录
							 | 
						|||
| 
								 | 
							
								    $topicIds = array_keys($processedTopics);
							 | 
						|||
| 
								 | 
							
								    $answerLogs = Db::name('questionnaire_log')
							 | 
						|||
| 
								 | 
							
								        ->where('topic_id', 'in', $topicIds)
							 | 
						|||
| 
								 | 
							
								        ->select();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    // 4. 合并答题记录到题目数据
							 | 
						|||
| 
								 | 
							
								    foreach ($answerLogs as $log) {
							 | 
						|||
| 
								 | 
							
								        $topicId = $log['topic_id'];
							 | 
						|||
| 
								 | 
							
								        if (isset($processedTopics[$topicId])) {
							 | 
						|||
| 
								 | 
							
								            // 添加 type 标识和答案数据
							 | 
						|||
| 
								 | 
							
								            // $processedTopics[$topicId]['type'] = 1;
							 | 
						|||
| 
								 | 
							
								            $processedTopics[$topicId]['topic'] = $log['option'];
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    // 5. 转换为数组(保持顺序)
							 | 
						|||
| 
								 | 
							
								    $result = array_values($processedTopics);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    $this->success('查询成功', $result);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								    
							 | 
						|||
| 
								 | 
							
								    //问卷统计查询
							 | 
						|||
| 
								 | 
							
								    public function questionnaireStatistics(){
							 | 
						|||
| 
								 | 
							
								        $id = input('id');
							 | 
						|||
| 
								 | 
							
								        // 题目
							 | 
						|||
| 
								 | 
							
								        $topic = Db::name('questionnaire_topic')
							 | 
						|||
| 
								 | 
							
								                    ->where('activity_id', $id)
							 | 
						|||
| 
								 | 
							
								                    ->select();
							 | 
						|||
| 
								 | 
							
								         
							 | 
						|||
| 
								 | 
							
								        $jianda = Db::name('questionnaire_topic')
							 | 
						|||
| 
								 | 
							
								                    ->where('questionnaire_id', $id)
							 | 
						|||
| 
								 | 
							
								                    ->order('wight desc')
							 | 
						|||
| 
								 | 
							
								                    ->select();
							 | 
						|||
| 
								 | 
							
								        foreach($jianda as $key => $val){
							 | 
						|||
| 
								 | 
							
								            $jianda[$key]['option'] = json_decode($val['option'], true);
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        $jianda_log = Db::name('questionnaire_topic')
							 | 
						|||
| 
								 | 
							
								                    ->where('questionnaire_id', $id)
							 | 
						|||
| 
								 | 
							
								                    ->column('id');
							 | 
						|||
| 
								 | 
							
								        $topic_id = implode(',',$jianda_log);
							 | 
						|||
| 
								 | 
							
								        $jiandaer = Db::name('questionnaire_log')
							 | 
						|||
| 
								 | 
							
								                    ->where('topic_id','in' ,$topic_id)
							 | 
						|||
| 
								 | 
							
								                    ->select();
							 | 
						|||
| 
								 | 
							
								        foreach($jianda as $topic_key => $topic_val){
							 | 
						|||
| 
								 | 
							
								                $log_jianda = [];
							 | 
						|||
| 
								 | 
							
								                foreach($jiandaer as $log_key => $log_val){
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                    if($topic_val['id'] == $log_val['topic_id']){
							 | 
						|||
| 
								 | 
							
								                        array_push($log_jianda, $log_val);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								               
							 | 
						|||
| 
								 | 
							
								                $jianda[$topic_key]['list'] = $log_jianda;
							 | 
						|||
| 
								 | 
							
								                $jianda[$topic_key]['quantity'] = count($jianda[$topic_key]['list']);
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								            // 遍历 $jianda 数组  
							 | 
						|||
| 
								 | 
							
								            foreach ($jianda as &$val) { // 使用引用 & 来直接修改原数组  
							 | 
						|||
| 
								 | 
							
								                // 遍历 'option' 数组  
							 | 
						|||
| 
								 | 
							
								                foreach ($val['option'] as &$option) { // 使用引用 & 来直接修改原数组  
							 | 
						|||
| 
								 | 
							
								                    // 初始化 'num' 为 0(以防 'list' 中没有任何匹配的项) 
							 | 
						|||
| 
								 | 
							
								                    $option['num'] = 0;  
							 | 
						|||
| 
								 | 
							
								                      
							 | 
						|||
| 
								 | 
							
								                    // 遍历 'list' 数组  
							 | 
						|||
| 
								 | 
							
								                    foreach ($val['list'] as $b) {  
							 | 
						|||
| 
								 | 
							
								                        // 检查 'list' 中的 'option' 是否包含当前 'option' 的 'name'  
							 | 
						|||
| 
								 | 
							
								                        if (strpos($b['option'], $option['name']) !== false) {  
							 | 
						|||
| 
								 | 
							
								                            // 如果找到匹配项,增加 'num' 并退出循环(因为不需要继续检查)  
							 | 
						|||
| 
								 | 
							
								                            $option['num']++;  
							 | 
						|||
| 
								 | 
							
								                            // break; // 退出当前 'list' 的循环  
							 | 
						|||
| 
								 | 
							
								                        }  
							 | 
						|||
| 
								 | 
							
								                    }  
							 | 
						|||
| 
								 | 
							
								                }  
							 | 
						|||
| 
								 | 
							
								                  
							 | 
						|||
| 
								 | 
							
								                // 取消对 $val 的引用,避免后续潜在问题  
							 | 
						|||
| 
								 | 
							
								                unset($val);  
							 | 
						|||
| 
								 | 
							
								            } 
							 | 
						|||
| 
								 | 
							
								        $this->success('返回成功',$jianda);
							 | 
						|||
| 
								 | 
							
								      
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    public function questionnaireAdd(){
							 | 
						|||
| 
								 | 
							
								        $data = input();
							 | 
						|||
| 
								 | 
							
								        $data['createtime'] = time();
							 | 
						|||
| 
								 | 
							
								        $adddata = Db::name('questionnaire')->strict(false)->insert($data);
							 | 
						|||
| 
								 | 
							
								        if ($adddata) {
							 | 
						|||
| 
								 | 
							
								            $this->success('已添加');
							 | 
						|||
| 
								 | 
							
								        } else {
							 | 
						|||
| 
								 | 
							
								            $this->error('添加失败');
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    
							 | 
						|||
| 
								 | 
							
								    public function questionnaireEdit(){
							 | 
						|||
| 
								 | 
							
								        $data = input();
							 | 
						|||
| 
								 | 
							
								        $id = $data['id'];
							 | 
						|||
| 
								 | 
							
								        // $this->success('已更新',$data);
							 | 
						|||
| 
								 | 
							
								        
							 | 
						|||
| 
								 | 
							
								        $update = Db::name('questionnaire')->where('id',  $id)->strict(false)->update($data);
							 | 
						|||
| 
								 | 
							
								        if ($update) {
							 | 
						|||
| 
								 | 
							
								            $this->success('已更新');
							 | 
						|||
| 
								 | 
							
								        } else {
							 | 
						|||
| 
								 | 
							
								            $this->error('更新失败');
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    public function questionnaireDel(){
							 | 
						|||
| 
								 | 
							
								        $data = input();
							 | 
						|||
| 
								 | 
							
								        $id = $data['id'];
							 | 
						|||
| 
								 | 
							
								        $delete = Db::name('questionnaire')->where('id',  $id)->delete();
							 | 
						|||
| 
								 | 
							
								        if ($delete) {
							 | 
						|||
| 
								 | 
							
								            $this->success('已删除');
							 | 
						|||
| 
								 | 
							
								        } else {
							 | 
						|||
| 
								 | 
							
								            $this->error('删除失败');
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    public function topicIndex(){
							 | 
						|||
| 
								 | 
							
								        $data = input();
							 | 
						|||
| 
								 | 
							
								        $id = $data['id'];
							 | 
						|||
| 
								 | 
							
								        $topic = Db::name('questionnaire_topic')->where('questionnaire_id',$id)->select();
							 | 
						|||
| 
								 | 
							
								        if ($topic) {
							 | 
						|||
| 
								 | 
							
								            $this->success('查询成功',$topic);
							 | 
						|||
| 
								 | 
							
								        } else {
							 | 
						|||
| 
								 | 
							
								            $this->success('查询成功',[]);
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    public function topicAdd(){
							 | 
						|||
| 
								 | 
							
								        $data = $_POST['topic'];
							 | 
						|||
| 
								 | 
							
								        $activity_id = $this->request->post('questionnaire_id');
							 | 
						|||
| 
								 | 
							
								    
							 | 
						|||
| 
								 | 
							
								        if (!$activity_id) {
							 | 
						|||
| 
								 | 
							
								            $this->error(__('Invalid parameters'));
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								     
							 | 
						|||
| 
								 | 
							
								        // 解析 JSON 并校验
							 | 
						|||
| 
								 | 
							
								        $array = json_decode($data, true);
							 | 
						|||
| 
								 | 
							
								        if ($array === null) {
							 | 
						|||
| 
								 | 
							
								            $error = json_last_error_msg();
							 | 
						|||
| 
								 | 
							
								            $this->error("JSON 解析失败: " . $error);
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								     
							 | 
						|||
| 
								 | 
							
								        // 遍历处理数据
							 | 
						|||
| 
								 | 
							
								        foreach ($array as $key => $val) {
							 | 
						|||
| 
								 | 
							
								            $array[$key]['questionnaire_id'] = $activity_id;
							 | 
						|||
| 
								 | 
							
								            $array[$key]['createtime'] = date('Y-m-d H:i:s');
							 | 
						|||
| 
								 | 
							
								            $array[$key]['option'] = json_encode($val['option'], JSON_UNESCAPED_UNICODE); // 避免中文转义
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								     
							 | 
						|||
| 
								 | 
							
								        // 插入数据库
							 | 
						|||
| 
								 | 
							
								        $adddata = Db::name('questionnaire_topic')->strict(false)->insertAll($array);
							 | 
						|||
| 
								 | 
							
								        
							 | 
						|||
| 
								 | 
							
								        if ($adddata) {
							 | 
						|||
| 
								 | 
							
								            $this->success('已添加');
							 | 
						|||
| 
								 | 
							
								        } else {
							 | 
						|||
| 
								 | 
							
								            $this->error('添加失败');
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    
							 | 
						|||
| 
								 | 
							
								    public function topicEdit(){
							 | 
						|||
| 
								 | 
							
								        $data = $_POST['topic'];
							 | 
						|||
| 
								 | 
							
								        $array = json_decode($data, true);
							 | 
						|||
| 
								 | 
							
								        //  $this->success('已更新', $array);
							 | 
						|||
| 
								 | 
							
								        $id = $array['id'];
							 | 
						|||
| 
								 | 
							
								        $array['option'] = json_encode( $array['option'],true);
							 | 
						|||
| 
								 | 
							
								        $update = Db::name('questionnaire_topic')->where('id',  $id)->strict(false)->update($array);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        if ($update) {
							 | 
						|||
| 
								 | 
							
								            $this->success('已更新');
							 | 
						|||
| 
								 | 
							
								        } else {
							 | 
						|||
| 
								 | 
							
								            $this->error('内容未更新');
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    public function topicDel(){
							 | 
						|||
| 
								 | 
							
								        $id = $this->request->post('id');
							 | 
						|||
| 
								 | 
							
								        if(!$id){
							 | 
						|||
| 
								 | 
							
								            $this->error(__('Invalid parameters'));
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        
							 | 
						|||
| 
								 | 
							
								        $delete = Db::name('questionnaire_topic')->where('id',  $id)->delete();
							 | 
						|||
| 
								 | 
							
								        if ($delete) {
							 | 
						|||
| 
								 | 
							
								            $this->success('已删除');
							 | 
						|||
| 
								 | 
							
								        } else {
							 | 
						|||
| 
								 | 
							
								            $this->error('删除失败');
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								// --------------------------------------------------------------------------------------------
							 | 
						|||
| 
								 | 
							
								// 移动端
							 | 
						|||
| 
								 | 
							
								    public function appIndex(){
							 | 
						|||
| 
								 | 
							
								        $title = input('questionnaire');
							 | 
						|||
| 
								 | 
							
								        $page = input("page",1); 
							 | 
						|||
| 
								 | 
							
								        $size = input("size",10); 
							 | 
						|||
| 
								 | 
							
								        $where = [];
							 | 
						|||
| 
								 | 
							
								        if($title){
							 | 
						|||
| 
								 | 
							
								        $where['title'] = ['like',"%$title%"];
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        $data = Db::name('questionnaire')
							 | 
						|||
| 
								 | 
							
								                ->where($where)
							 | 
						|||
| 
								 | 
							
								                ->order('releasetime desc')
							 | 
						|||
| 
								 | 
							
								                ->page($page,$size)
							 | 
						|||
| 
								 | 
							
								                ->select();
							 | 
						|||
| 
								 | 
							
								        $one = [];
							 | 
						|||
| 
								 | 
							
								        $two = [];
							 | 
						|||
| 
								 | 
							
								        $there = [];
							 | 
						|||
| 
								 | 
							
								        foreach($data as $key => $val){
							 | 
						|||
| 
								 | 
							
								                if(strtotime($val['releasetime']) < time() && strtotime($val['endtime']) > time()){
							 | 
						|||
| 
								 | 
							
								                    $id = $val['id'];
							 | 
						|||
| 
								 | 
							
								                    $val['log'] = Db::name('questionnaire_log')
							 | 
						|||
| 
								 | 
							
								                                    ->where('questionnaire_id', $id)
							 | 
						|||
| 
								 | 
							
								                                    ->group('member_id')
							 | 
						|||
| 
								 | 
							
								                                    ->count();
							 | 
						|||
| 
								 | 
							
								                array_push($two,$val);
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								              
							 | 
						|||
| 
								 | 
							
								            } 
							 | 
						|||
| 
								 | 
							
								        $this->success('返回成功',$two);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								       
							 | 
						|||
| 
								 | 
							
								    //单挑查询
							 | 
						|||
| 
								 | 
							
								    public function appFind(){
							 | 
						|||
| 
								 | 
							
								        $id = input('id');
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        $data = Db::name('questionnaire')
							 | 
						|||
| 
								 | 
							
								                ->where('id', $id)
							 | 
						|||
| 
								 | 
							
								                ->order('releasetime desc')
							 | 
						|||
| 
								 | 
							
								                ->select();
							 | 
						|||
| 
								 | 
							
								        // 题目
							 | 
						|||
| 
								 | 
							
								        $topic = Db::name('questionnaire_topic')
							 | 
						|||
| 
								 | 
							
								                    ->where('questionnaire_id', $id)
							 | 
						|||
| 
								 | 
							
								                    ->select();
							 | 
						|||
| 
								 | 
							
								        
							 | 
						|||
| 
								 | 
							
								        $jianda = Db::name('questionnaire_topic')
							 | 
						|||
| 
								 | 
							
								                    ->where('questionnaire_id', $id)
							 | 
						|||
| 
								 | 
							
								                    ->where('type',1)
							 | 
						|||
| 
								 | 
							
								                    ->select();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        $jianda_log = Db::name('questionnaire_topic')
							 | 
						|||
| 
								 | 
							
								                    // ->field('id')   
							 | 
						|||
| 
								 | 
							
								                    ->where('questionnaire_id', $id)
							 | 
						|||
| 
								 | 
							
								                    ->where('type',1)
							 | 
						|||
| 
								 | 
							
								                    ->column('id');
							 | 
						|||
| 
								 | 
							
								        $topic_id = implode(',',$jianda_log);
							 | 
						|||
| 
								 | 
							
								        $jiandaer = Db::name('questionnaire_log')
							 | 
						|||
| 
								 | 
							
								                    // ->field('id')   
							 | 
						|||
| 
								 | 
							
								                    ->where('topic_id','in' ,$topic_id)
							 | 
						|||
| 
								 | 
							
								                    ->select();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                    // var_dump($jiandaer);die();
							 | 
						|||
| 
								 | 
							
								        
							 | 
						|||
| 
								 | 
							
								        
							 | 
						|||
| 
								 | 
							
								        if($jianda_log){
							 | 
						|||
| 
								 | 
							
								           foreach($jianda as $topic_key => $topic_val){
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                $log_jianda = [];
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                foreach($jiandaer as $log_key => $log_val){
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                    if($topic_val['id'] == $log_val['topic_id']){
							 | 
						|||
| 
								 | 
							
								                        array_push($log_jianda, $log_val);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								               
							 | 
						|||
| 
								 | 
							
								                $jianda[$topic_key]['list'] = $log_jianda;
							 | 
						|||
| 
								 | 
							
								           }
							 | 
						|||
| 
								 | 
							
								        }else{
							 | 
						|||
| 
								 | 
							
								            $jianda_log = [];
							 | 
						|||
| 
								 | 
							
								        }   
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        foreach($topic as $key => $val){
							 | 
						|||
| 
								 | 
							
								          
							 | 
						|||
| 
								 | 
							
								            $topic[$key]['count'] = Db::name('questionnaire_topic')
							 | 
						|||
| 
								 | 
							
								                                ->where('questionnaire_id', $id)
							 | 
						|||
| 
								 | 
							
								                                ->count();
							 | 
						|||
| 
								 | 
							
								           
							 | 
						|||
| 
								 | 
							
								            $option = json_decode($val['option'],true);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            $b = [];
							 | 
						|||
| 
								 | 
							
								            $c = [];
							 | 
						|||
| 
								 | 
							
								                foreach($option as $k => $v){
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                    $a = Db::name('questionnaire_log')
							 | 
						|||
| 
								 | 
							
								                                ->where('topic_id', $val['id'])
							 | 
						|||
| 
								 | 
							
								                                ->where('option','like',"%$k%")
							 | 
						|||
| 
								 | 
							
								                                ->count();
							 | 
						|||
| 
								 | 
							
								                    
							 | 
						|||
| 
								 | 
							
								                    $b = [
							 | 
						|||
| 
								 | 
							
								                        'name' => $v['name'],
							 | 
						|||
| 
								 | 
							
								                        'xvanxiang' => $k,
							 | 
						|||
| 
								 | 
							
								                        'mun' => $a
							 | 
						|||
| 
								 | 
							
								                    ];
							 | 
						|||
| 
								 | 
							
								                    array_push($c,$b);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            $topic[$key]['canyurenshu'] = $c;
							 | 
						|||
| 
								 | 
							
								            if($val['type'] == 1){
							 | 
						|||
| 
								 | 
							
								                unset($topic[$key]);
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        $topic = array_values($topic);
							 | 
						|||
| 
								 | 
							
								        $info = [
							 | 
						|||
| 
								 | 
							
								            'data' => $data,
							 | 
						|||
| 
								 | 
							
								            'topic' =>$topic,
							 | 
						|||
| 
								 | 
							
								            'jianda'=>$jianda
							 | 
						|||
| 
								 | 
							
								        ];
							 | 
						|||
| 
								 | 
							
								        $this->success('返回成功',$info);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    public function appAdd(){
							 | 
						|||
| 
								 | 
							
								        $option = $_POST['option'];
							 | 
						|||
| 
								 | 
							
								        $Token = $this->request->header('Token');
							 | 
						|||
| 
								 | 
							
								        if(!$Token){
							 | 
						|||
| 
								 | 
							
								            return $this->error('缺少参数');
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        $user_id = Db::name('user')->where('token', $Token)->value('id');
							 | 
						|||
| 
								 | 
							
								        if(!$user_id){
							 | 
						|||
| 
								 | 
							
								            return $this->error('该用户不存在');
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        $member_id = $user_id;
							 | 
						|||
| 
								 | 
							
								        $option = json_decode($option, true);
							 | 
						|||
| 
								 | 
							
								        
							 | 
						|||
| 
								 | 
							
								        foreach($option as $key => $val){
							 | 
						|||
| 
								 | 
							
								            $option[$key]['user_id'] = $user_id;
							 | 
						|||
| 
								 | 
							
								            $option[$key]['createtime'] = date('Y-m-d H:i:s');
							 | 
						|||
| 
								 | 
							
								            $where = [];
							 | 
						|||
| 
								 | 
							
								            if($member_id){
							 | 
						|||
| 
								 | 
							
								               $where['user_id'] = $member_id;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            if($val['questionnaire_id']){
							 | 
						|||
| 
								 | 
							
								                $where['questionnaire_id'] = $val['questionnaire_id'];
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            
							 | 
						|||
| 
								 | 
							
								            $if = Db::name('questionnaire_log')
							 | 
						|||
| 
								 | 
							
								                    ->where($where)
							 | 
						|||
| 
								 | 
							
								                    ->find();
							 | 
						|||
| 
								 | 
							
								            if($if){
							 | 
						|||
| 
								 | 
							
								                $this->success('问卷只能填写一次哦');
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    //   $this->success('提交成功',$option);
							 | 
						|||
| 
								 | 
							
								        // $data = json_decode($option,true);
							 | 
						|||
| 
								 | 
							
								        $adddata = Db::name('questionnaire_log')
							 | 
						|||
| 
								 | 
							
								                ->strict(false)
							 | 
						|||
| 
								 | 
							
								                ->insertAll($option);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        $this->success('提交成功',$adddata);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    public function appFindLog(){
							 | 
						|||
| 
								 | 
							
								        
							 | 
						|||
| 
								 | 
							
								        $member_id = input('member_id');
							 | 
						|||
| 
								 | 
							
								        $questionnaire_id = input('questionnaire_id');
							 | 
						|||
| 
								 | 
							
								        $where = [];
							 | 
						|||
| 
								 | 
							
								        if($member_id){
							 | 
						|||
| 
								 | 
							
								           $where['member_id'] = $member_id;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        if($questionnaire_id){
							 | 
						|||
| 
								 | 
							
								            $where['questionnaire_id'] = $questionnaire_id;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        $if = Db::name('questionnaire_log') 
							 | 
						|||
| 
								 | 
							
								                ->where($where)
							 | 
						|||
| 
								 | 
							
								                ->select();
							 | 
						|||
| 
								 | 
							
								        if($if){
							 | 
						|||
| 
								 | 
							
								            $this->success('返回成功',$if);
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        $this->error('未查询到');
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 |