$value) { if (!empty($value)) { switch ($key) { case 'score': $where[] = ['myscore', '=', $value]; break; case 'mySub': $where[] = ['mykemu', '=', $value]; $val = preg_split('//', $value, -1, PREG_SPLIT_NO_EMPTY); $where[] = ['chooseNums', 'in', ($val[0].','.$val[1].','.$val[2].','.$val[0].$val[1].','.$val[0].$val[2].','.$val[1].$val[2].','.$val[0].$val[1].$val[2].',999')]; break; case 'reType': $type = $value; $value = $value - 1; //未购买权限limit-1 if (($value == 0 || $value == 1) && ($limit == 2 || $limit == 5)) { $limit = $limit - 1; } $whereType[] = ['dataType', '=', $value]; break; case 'province': $value = changeCode($value); $where[] = ['provinceId', 'in', ($value)]; break; case 'batch': $where[] = ['batch', 'in', ($value)]; break; case 'schoolType': $where[] = ['collegeType', 'in', ($value)]; break; case 'is_985': $where[] = ['is985', '=', $value]; break; case 'is_211': $where[] = ['is211', '=', $value]; break; case 'is_yldx': $where[] = ['is_yldx', '=', $value]; break; case 'is_ylxk': $where[] = ['is_ylxk', '=', $value]; break; case 'is_public': $where[] = ['is_public', '=', $value]; break; case 'sort': $sort = config('setsub.sort')[$value]; break; } } } //计算总数 if($vipType == 1){ $count = Db::table('rec_zhejiang_majors') ->where($where) ->where($whereType)//提上去加索引 ->count(); }else{ $count = $limit; } //查询院校总数,可保底,稳妥,冲 $resNum = self::getMajorNum($where,$limit,$vipType,$type); //查询数据 $result = Db::table('rec_zhejiang_majors') ->field('collegeName,probability,rankOfCn,professionCode,is985,is211,issyl,provinceName,estimatedRanking,minScore,collegeId,id,batch,planNum,chooseCns,classify,professionName,majorCode') ->where($where) ->where($whereType) ->page($page, $limit) ->order($sort) ->select(); empty($result) ? $msg = '暂无数据!' : $msg = '查询成功!'; //查询用户收藏的专业 $resCollect = []; if($user_id){ $resCollect = CollectNewMajor::getUserNewMajor($user_id); } //查询位次和院校排名 foreach ($result as $key =>$val) { $result[$key]['tags'] = $val['provinceName']." ".$val['classify']; //判断211,985,双一流是否是1 if($val['is985']) $result[$key]['tags'] = $result[$key]['tags']." "."985"; if($val['is211']) $result[$key]['tags'] = $result[$key]['tags']." "."211"; if($val['issyl']) $result[$key]['tags'] = $result[$key]['tags']." "."双一流"; //收藏赋值 $result[$key]['is_collect'] = 0; if(is_array($resCollect)){ if(in_array($val['id']."_".$val['majorCode']."_".$val['professionCode'],$resCollect)){ $result[$key]['is_collect'] = 1; } } $result[$key]['lowestRank'] = $result[$key]['estimatedRanking']; } //分页数据 $info = [ 'limit' => $limit, 'page_current' => $page, 'page_sum' => ceil($count / $limit), ]; //组合返回 $list = [ 'msg' => $msg, 'count' => $count, 'info' => $info, 'res' => $result, 'countSchool' => $resNum ]; return $list; } //获取新高考專業总数和保底,稳妥、推荐 public static function getMajorNum($where,$limit,$vipType,$type){ $arrNomalCount = array(); $arrNomalCount[1] = 0; $arrNomalCount[2] = 0; $arrNomalCount[3] = 0; $arrLimitCount = array(); $result = array(); $cacheTime = empty($vipType)?3600:false; //总数 $arrNomalCount[0] = Db::table('rec_zhejiang_majors') ->where($where)->cache($cacheTime) ->count(); if($vipType == 0){ //保底数量 $arrNomalCount[3] = Db::table('rec_zhejiang_majors') ->where($where)->where('dataType','=',2)->cache($cacheTime) ->count(); //稳妥数量 $arrNomalCount[2] = Db::table('rec_zhejiang_majors') ->where($where)->where('dataType','=',1)->cache($cacheTime) ->count(); //冲刺数量 $arrNomalCount[1] = Db::table('rec_zhejiang_majors') ->where($where)->where('dataType','=',0)->cache($cacheTime) ->count(); //未购买权限的底部数据 $arrLimitCount['3'] = $arrNomalCount[3] - $limit; $arrLimitCount['3']= $arrLimitCount['3']>0? $arrLimitCount['3']:0; $arrLimitCount['2'] = $arrNomalCount[2] - $limit; $arrLimitCount['2']= $arrLimitCount['2']>0? $arrLimitCount['2']:0; $arrLimitCount['1'] = $arrNomalCount[1] - $limit; $arrLimitCount['1']= $arrLimitCount['1']>0? $arrLimitCount['1']:0; }else{ if($type){ $arrNomalCount[$type] = Db::table('rec_zhejiang_majors') ->where($where)->where('dataType','=',$type-1) ->count(); } } $result['topNumCount'] = $arrNomalCount; $result['bottomNumCount'] = $arrLimitCount; return $result; } /* * 新高考院校查询 * */ public static function getNewMajorSch($array,$page = 1,$limit =10 ,$user_id,$vipType) { $where = []; $year = config('setsub.year'); //默认排序条件 $sort = "id ASC"; //搜索条件 unset($array['is_login']); unset($array['page']); unset($array['type']); unset($array['reType']); unset($array['userPro']); foreach ($array as $key => $value) { if (!empty($value)) { switch ($key) { case 'score': $where[] = ['myscore', '=', $value]; break; case 'mySub': $where[] = ['mykemu', '=', $value]; break; case 'province': $value = changeCode($value); $where[] = ['provinceId', 'in', ($value)]; break; case 'batch': $where[] = ['batch', 'in', ($value)]; break; case 'schoolType': $where[] = ['collegeType', 'in', ($value)]; break; case 'is_985': $where[] = ['is985', '=', $value]; break; case 'is_211': $where[] = ['is211', '=', $value]; break; case 'is_yldx': $where[] = ['is_yldx', '=', $value]; break; case 'is_ylxk': $where[] = ['is_ylxk', '=', $value]; break; case 'is_public': $where[] = ['is_public', '=', $value]; break; case 'sort': $sort = config('setsub.sort')[$value]; break; } } } $hideCount = 0; //计算总数 if($vipType == 1){ $count = Db::table('rec_zhejiang_schs') ->where($where) ->count(); }else{ $count = $limit; $hideCount = Db::table('rec_zhejiang_schs') ->where($where) ->count(); $hideCount = $hideCount - $limit; $hideCount = $hideCount<0?0:$hideCount; } //查询数据 $result = Db::table('rec_zhejiang_schs') ->field('collegeName,rankOfCn,provinceName,collegeId,id,planNum,classify,collegeCode,majorNum') ->where($where) ->page($page, $limit) ->order($sort) ->select(); empty($result) ? $msg = '暂无数据!' : $msg = '查询成功!'; //查询用户收藏的专业 $resCollect = []; if($user_id){ $resCollect = CollectNewSch::getNewUserSch($user_id); } //查询位次和院校排名 foreach ($result as $key =>$val) { $result[$key]['logo'] = ''; $result[$key]['tags'] = $val['provinceName']." ".$val['classify']; $result[$key]['is_sch'] = 1; //收藏赋值 $result[$key]['is_collect'] = 0; if(is_array($resCollect)){ if(in_array($val['id'],$resCollect)){ $result[$key]['is_collect'] = 1; } } $result[$key]['lowestRank'] = Db::table('yzy_zj_major_score')->where([['sch_id','=',$val['collegeId']],['year','=',$year]])->min('estimatedRanking'); $result[$key]['minScore'] = Db::table('yzy_zj_major_score')->where([['sch_id','=',$val['collegeId']],['year','=',$year]])->min('minScore'); } //分页数据 $info = [ 'limit' => $limit, 'page_current' => $page, 'page_sum' => ceil($count / $limit), ]; //组合返回 $list = [ 'msg' => $msg, 'count' => $count, 'info' => $info, 'res' => $result, 'hideCount' => $hideCount ]; return $list; } /* * 根据条件获取新高考专业数量 * */ public static function getNewMajorCount($array) { $where = []; //搜索条件 unset($array['is_login']); unset($array['type']); unset($array['userPro']); unset($array['page']); foreach ($array as $key => $value) { if (!empty($value)) { switch ($key) { case 'score': $where[] = ['myscore', '=', $value]; break; case 'mySub': $where[] = ['mykemu', '=', $value]; $val = $mySub = preg_split('//', $value, -1, PREG_SPLIT_NO_EMPTY); $where[] = ['chooseNums', 'in', ($val[0].','.$val[1].','.$val[2].','.$val[0].$val[1].','.$val[0].$val[2].','.$val[1].$val[2].','.$val[0].$val[1].$val[2].',999')]; break; case 'reType': $where[] = ['dataType', '=', $value]; break; case 'province': $value = changeCode($value); $where[] = ['provinceId', 'in', ($value)]; break; case 'batch': $where[] = ['batch', 'in', ($value)]; break; case 'schoolType': $where[] = ['collegeType', 'in', ($value)]; break; case 'is_985': $where[] = ['is985', '=', $value]; break; case 'is_211': $where[] = ['is211', '=', $value]; break; case 'is_yldx': $where[] = ['is_yldx', '=', $value]; break; case 'is_ylxk': $where[] = ['is_ylxk', '=', $value]; break; case 'is_public': $where[] = ['is_public', '=', $value]; break; } } } //计算总数 $count = Db::table('rec_zhejiang_majors') ->where($where) ->count(); return $count; } /* * 根据条件获取新高考院校数量 * */ public static function getNewSchoolCount($array) { $where = []; //搜索条件 unset($array['is_login']); unset($array['type']); unset($array['userPro']); unset($array['page']); foreach ($array as $key => $value) { if (!empty($value)) { switch ($key) { case 'score': $where[] = ['myscore', '=', $value]; break; case 'mySub': $where[] = ['mykemu', '=', $value]; break; case 'province': $value = changeCode($value); $where[] = ['provinceId', 'in', ($value)]; break; case 'batch': $where[] = ['batch', 'in', ($value)]; break; case 'schoolType': $where[] = ['collegeType', 'in', ($value)]; break; case 'is_985': $where[] = ['is985', '=', $value]; break; case 'is_211': $where[] = ['is211', '=', $value]; break; case 'is_yldx': $where[] = ['is_yldx', '=', $value]; break; case 'is_ylxk': $where[] = ['is_ylxk', '=', $value]; break; case 'is_public': $where[] = ['is_public', '=', $value]; break; } } } //计算总数 $count = Db::table('rec_zhejiang_schs') ->where($where) ->count(); return $count; } }