Files
2024-09-27 01:32:49 +08:00

280 lines
9.6 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2020/4/20
* Time: 19:39
*/
namespace app\api\model;
use think\Db;
use think\Model;
class Major extends Model
{
protected $table = 'yzy_majors';
/*
* 通过title搜索专业数据
* */
public static function getMajorInfoByTitle($array,$page,$limit = 10){
//获取配置表的年份
$year = config('setsub.year');
$title = $array['title'];
//搜索条件
unset($array['page']);
unset($array['type']);
unset($array['title']);
foreach ($array as $key => $value) {
if (!empty($value)) {
switch ($key) {
case 'userPro':
$where[] = ['yzy_province', '=', $value];
break;
case 'subType':
$where[] = ['wenli', '=', $value];
break;
case 'province':
$where[] = ['province', 'in', ($value)];
break;
case 'batch':
$where[] = ['batch', 'in', ($value)];
break;
}
}
}
$count = self::where([['title','like','%'.$title . '%'],['level','=',3]])->cache(3600)
->count();
//查询在本省招生专业的数据
$result = self::field('title,pid,code')
->where([['title','like','%'.$title . '%'],['level','=',3]])
->cache(3600)
->page($page,$limit)
->select();
empty($result) ? $msg = '暂无数据!' : $msg = '查询成功!';
foreach($result as $key => $val){
//查询向本省招该专业的院校数量
$result[$key]['countSch'] = Db::table('yzy_major_plan')->where($where)->where([['majorCode','=',$val['code']],['year','=',$year]])->count();
$result[$key]['sumPlan'] = Db::table('yzy_major_plan')->where($where)->where([['majorCode','=',$val['code']],['year','=',$year]])->sum('planNum');
//获取类别
$majorType = self::field('title')->where('id','=',$val['pid'])->find();
$result[$key]['typeName'] = $majorType['title'];
//获取专业相关信息
$resContent = Db::table('yzy_major_content')->field('batch,year_length,degree,sex_bili,year_length')->where('major_code','=',$val['code'])->find();
$result[$key]['learnYear'] = $resContent['year_length'];
$result[$key]['batch'] = $resContent['batch'];
$result[$key]['degree'] = $resContent['degree'];
$result[$key]['sex_bili'] = $resContent['sex_bili'];
}
//分页数据
$info = [
'limit' => $limit,
'page_current' => $page,
'page_sum' => ceil($count / $limit),
];
//组合返回
$list = [
'msg' => $msg,
'count' => $count,
'info' => $info,
'res' => $result,
];
return $list;
}
/*
* 专业搜索默认显示数据
* */
public static function getDefaultMajor($array){
//获取配置表的年份
$year = config('setsub.year');
$majorArr = config('major.defaultMajor');
//搜索条件
unset($array['title']);
foreach ($array as $key => $value) {
if (!empty($value)) {
switch ($key) {
case 'userPro':
$where[] = ['yzy_province', '=', $value];
break;
case 'subType':
$where[] = ['wenli', '=', $value];
break;
case 'province':
$where[] = ['province', 'in', ($value)];
break;
case 'batch':
$where[] = ['batch', 'in', ($value)];
break;
}
}
}
//查询在本省招生专业的数据
$result = self::field('title,pid,code')
->where([['code','in',$majorArr],['level','=',3]])
->cache(3600)
->select();
empty($result) ? $msg = '暂无数据!' : $msg = '查询成功!';
foreach($result as $key => $val){
//查询向本省招该专业的院校数量
$result[$key]['countSch'] = Db::table('yzy_major_plan')->where($where)->where([['majorCode','=',$val['code']],['year','=',$year]])->count();
$result[$key]['sumPlan'] = Db::table('yzy_major_plan')->where($where)->where([['majorCode','=',$val['code']],['year','=',$year]])->sum('planNum');
//获取类别
$majorType = self::field('title')->where('id','=',$val['pid'])->find();
$result[$key]['typeName'] = $majorType['title'];
//获取专业相关信息
$resContent = Db::table('yzy_major_content')->field('batch,year_length,degree,sex_bili,year_length')->where('major_code','=',$val['code'])->find();
$result[$key]['batch'] = $resContent['batch'];
$result[$key]['learnYear'] = $resContent['year_length'];
$result[$key]['degree'] = $resContent['degree'];
$result[$key]['sex_bili'] = $resContent['sex_bili'];
}
$res['majorContent'] = $result;
$res['majorTitle'] = config('major.major');
return $res;
}
/*
* 查询外省向本省招收专业的学校
* */
public static function getMajorSch($data,$user_id,$page = 1, $limit = 5){
//获取配置表的年份
$year = 2018;
$where[] = ['year','=',$year];
//搜索条件
unset($data['page']);
foreach ($data as $key => $value) {
if (!empty($value)) {
switch ($key) {
case 'code':
$where[] = ['majorCode', '=', $value];
break;
case 'userPro':
$where[] = ['yzy_province', '=', $value];
break;
case 'subType':
$where[] = ['wenli', '=', $value];
break;
}
}
}
$count = Db::table('yzy_major_score')
->where($where)
->count();
//查询在本省招生专业的数据
$result = Db::table('yzy_major_score')
->field('id,sch_id,batchName,batch,majorCode,major,minScore,lowSort,enterNum,planNum,typeName,cost,sch_name,code')
->where($where)
->page($page,$limit)
->select();
empty($result) ? $msg = '暂无数据!' : $msg = '查询成功!';
foreach($result as $key => $val){
$result[$key]['title'] = $val['major'];
$result[$key]['lowestRank'] = $val['lowSort'];
$result[$key]['tags'] = $val['typeName'];
$result[$key]['title'] = $val['major'];
unset($result[$key]['major']);
unset($result[$key]['lowSort']);
}
//分页数据
$info = [
'limit' => $limit,
'page_current' => $page,
'page_sum' => ceil($count / $limit),
];
//组合返回
$list = [
'msg' => $msg,
'count' => $count,
'info' => $info,
'data' => $result,
];
return $list;
}
/*
* 查询院校的专业
* */
public static function getSchMajorBy($data,$user_id){
//调用配置表年份
$year = config('setsub.year');
if($data['userPro'] == 1){
$tableMajor = $data['subType'] == 1 ? 'rec_js_wen_major':'rec_js_li_major';
}else{
$tableMajor = $data['subType'] == 1 ? 'rec_wen_major':'rec_li_major';
}
//查询用户收藏的专业
$resCollect = [];
if($user_id){
$resCollect = CollectMajor::getUserCollectMajor($user_id,$data['userPro'],$data['subType'],$data['score']);
}
$result = Db::table($tableMajor)->where('rec_id','=',$data['id'])->find();
if(empty($result)){
$arr = [];
}else{
$res = json_decode($result['professions']);
foreach ($res as $key => $val){
$arr[$key]['probability'] = $val->probability;
$arr[$key]['title'] = $val->alias;
$arr[$key]['cost'] = $val->cost;
$arr[$key]['code'] = $val->code;
$arr[$key]['enterNum'] = $val->enterNum;
$arr[$key]['planNum'] = $val->planNum;
$arr[$key]['majorCode'] = $val->majorCode;
$arr[$key]['rec_id'] = $result['rec_id'];
$resRank = json_decode($val->extended);
$arr[$key]['lowestRank'] = $resRank[0]->ls;
$arr[$key]['minScore'] = $resRank[0]->ms;
$arr[$key]['is_collect'] = 0;//收藏默认0后期修改
$resType = self::alias('a')->field('b.title')
->join('yzy_majors b','a.pid = b.id','left')
->where('a.code','=',$val->majorCode)
->find();
$arr[$key]['tags'] = $resType['title'];
$arr[$key]['is_collect'] = 0;
if(is_array($resCollect)){
if(in_array($data['sch_id'].'_'.$val->majorCode.'_'.$val->code,$resCollect)){
$arr[$key]['is_collect'] = 1;
}
}
}
}
return $arr;
}
}