Files
CompanyProject/芳林公司项目/www.zhiyuanhelp.com/application/api/controller/Protest.php
2024-09-27 01:32:49 +08:00

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);
}
}