174 lines
6.7 KiB
PHP
174 lines
6.7 KiB
PHP
<?php
|
|
/**
|
|
* Created by PhpStorm.
|
|
* User: Administrator
|
|
* Date: 2020/5/11
|
|
* Time: 12:01
|
|
*/
|
|
|
|
namespace app\api\controller;
|
|
|
|
|
|
use think\Db;
|
|
|
|
class Protest
|
|
{
|
|
//获取试题类型
|
|
public function getPart(){
|
|
$array = array(
|
|
1 => "请认真选择您所感兴趣的活动",
|
|
2 => "请认真您所擅长的活动",
|
|
3 => "请认真选择你所喜欢的职业",
|
|
4 => "请根据对每一题目的第一印象作答"
|
|
);
|
|
$partId = mt_rand(1,3);
|
|
$result = array(
|
|
'partId' => $partId,
|
|
'title' => $array[$partId]
|
|
);
|
|
return api_return('ok',$result);
|
|
}
|
|
|
|
/*
|
|
* 获取试题
|
|
* */
|
|
public function getPaper(){
|
|
$partId = input("post.partId");
|
|
$result = Db::table('question')->where('part','=',$partId)->select();
|
|
return api_return('ok',$result);
|
|
}
|
|
|
|
/*
|
|
* 测试结果
|
|
* */
|
|
public function getResult(){
|
|
$array = input('post.testNum');
|
|
$sortNum = array_column($array, 'num');
|
|
array_multisort($sortNum, SORT_DESC, $array);
|
|
/* $qq = $array[0]['type'].$array[1]['type'].$array[2]['type'];
|
|
$testConfig = config('protest.testresult');
|
|
$resTest =$testConfig[$qq];*/
|
|
$result = [];
|
|
//统计数据
|
|
$resultCount[0]['num'] = Db::table('pro_majors')->where([['level','=',3],['is'.$array[0]['type'],'=',1]])->count();
|
|
$resultCount[0]['type'] = $array[0]['type'];
|
|
$resultCount[1]['num'] = Db::table('pro_majors')->where([['level','=',3],['is'.$array[1]['type'],'=',1]])->count();
|
|
$resultCount[1]['type'] = $array[1]['type'];
|
|
$resultCount[2]['num'] = Db::table('pro_majors')->where([['level','=',3],['is'.$array[2]['type'],'=',1],['is'.$array[0]['type'],'=',0],['is'.$array[1]['type'],'=',0]])->count();
|
|
$resultCount[2]['type'] = $array[2]['type'];
|
|
|
|
//获取特征数据
|
|
$resultFeature[0]= Db::table('question_type')->field('type,title,feature')->where('type','=',$array[0]['type'])->find();
|
|
$resultFeature[1]= Db::table('question_type')->field('type,title,feature')->where('type','=',$array[1]['type'])->find();
|
|
$resultFeature[2]= Db::table('question_type')->field('type,title,feature')->where('type','=',$array[2]['type'])->find();
|
|
//柱状图饼状图
|
|
//获取类型名称
|
|
$typeName = config('protest.typeName');
|
|
foreach($array as $key=>$val){
|
|
$array[$key]['percent'] = $val['num']/10*100;
|
|
$array[$key]['typeName'] = $typeName[$val['type']];
|
|
}
|
|
$result['typePic'] = $array;
|
|
$result['typeCount'] = $resultCount;
|
|
$result['feature'] = $resultFeature;
|
|
|
|
return api_return('ok',$result);
|
|
}
|
|
|
|
|
|
/*
|
|
* 获取二级专业
|
|
* */
|
|
public function getParentLevel(){
|
|
$data = input('post.');
|
|
|
|
$array = $data['testNum'];
|
|
|
|
$page = input("post.page",1);
|
|
|
|
$limit = 10;
|
|
|
|
switch ($data['recType']){
|
|
case 1:
|
|
$count = Db::table('pro_majors')->where([['level','=',2],['is'.$array[0]['type'],'=',1]])->count();
|
|
$result = Db::table('pro_majors')->field('id,title')->where([['level','=',2],['is'.$array[0]['type'],'=',1]])->page($page,$limit)->select();
|
|
|
|
empty($result) ? $msg = '暂无数据!' : $msg = '查询成功!';
|
|
foreach ($result as $key=>$val){
|
|
$result[$key]['countSon'] = Db::table('pro_majors')->where([['pid','=',$val['id']],['level','=',3],['is'.$array[0]['type'],'=',1]])->count();
|
|
$result[$key]['pid'] = $val['id'];
|
|
}
|
|
break;
|
|
|
|
|
|
case 2:
|
|
$count = Db::table('pro_majors')->where([['level','=',2],['is'.$array[1]['type'],'=',1]])->count();
|
|
$result = Db::table('pro_majors')->field('id,title')->where([['level','=',2],['is'.$array[1]['type'],'=',1]])->page($page,$limit)->select();
|
|
empty($result) ? $msg = '暂无数据!' : $msg = '查询成功!';
|
|
foreach ($result as $key=>$val){
|
|
$result[$key]['countSon'] = Db::table('pro_majors')->where([['pid','=',$val['id']],['level','=',3],['is'.$array[1]['type'],'=',1]])->count();
|
|
$result[$key]['pid'] = $val['id'];
|
|
}
|
|
break;
|
|
|
|
default:
|
|
$count = Db::table('pro_majors')->where([['level','=',3],['is'.$array[2]['type'],'=',1],['is'.$array[0]['type'],'=',0],['is'.$array[1]['type'],'=',0]])->group('pid')->count();
|
|
$result = Db::table('pro_majors')->field('pid')
|
|
->where([['level','=',3],['is'.$array[2]['type'],'=',1],['is'.$array[0]['type'],'=',0],['is'.$array[1]['type'],'=',0]])->group('pid')
|
|
->page($page,$limit)->select();
|
|
empty($result) ? $msg = '暂无数据!' : $msg = '查询成功!';
|
|
foreach ($result as $key=>$val){
|
|
$result[$key]['countSon'] = Db::table('pro_majors')->where([['pid','=',$val['pid']],['level','=',3],['is'.$array[2]['type'],'=',1],['is'.$array[0]['type'],'=',0],['is'.$array[1]['type'],'=',0]])->count();
|
|
$resTitle = Db::table('pro_majors')->field('title')->where('id','=',$val['pid'])->find();
|
|
$result[$key]['title'] = $resTitle['title'];
|
|
}
|
|
break;
|
|
}
|
|
|
|
|
|
|
|
//分页数据
|
|
$info = [
|
|
'limit' => $limit,
|
|
'page_current' => $page,
|
|
'page_sum' => ceil($count / $limit),
|
|
];
|
|
|
|
//组合返回
|
|
$list = [
|
|
'msg' => $msg,
|
|
'count' => $count,
|
|
'info' => $info,
|
|
'data' => $result,
|
|
];
|
|
return api_return('ok',$list);
|
|
|
|
}
|
|
|
|
//获取子级专业
|
|
public function getSonLevel(){
|
|
$data = input('post.');
|
|
$pid = $data['pid'];
|
|
$array = $data['testNum'];
|
|
switch ($data['recType']){
|
|
case 1:
|
|
$result = Db::table('pro_majors')->field('id,title')->where([['pid','=',$pid],['level','=',3],['is'.$array[0]['type'],'=',1]])->select();
|
|
|
|
break;
|
|
case 2:
|
|
$result = Db::table('pro_majors')->field('id,title')->where([['pid','=',$pid],['level','=',3],['is'.$array[1]['type'],'=',1]])->select();
|
|
|
|
break;
|
|
default:
|
|
$result = Db::table('pro_majors')->field('id,title')
|
|
->where([['pid','=',$pid],['level','=',3],['is'.$array[2]['type'],'=',1],['is'.$array[0]['type'],'=',0],['is'.$array[1]['type'],'=',0]])
|
|
->select();
|
|
|
|
break;
|
|
}
|
|
return api_return('ok',$result);
|
|
}
|
|
|
|
|
|
|
|
} |