|
@@ -187,18 +187,35 @@ class Subject extends Api
|
|
|
}
|
|
|
|
|
|
//机构答题分排行榜,按分
|
|
|
+ //机构参与人数×0.7+平均分(机构总得分÷机构参与总人次)×0.3
|
|
|
public function jigoulist_score(){
|
|
|
$subject_id = 1;
|
|
|
|
|
|
+ //各机构的绑定人数
|
|
|
+ $user_jigou = Db::name('user')->where('status',1)->where('bind_jigou_id','NEQ',0)->column('bind_jigou_id');
|
|
|
+ $user_jigou = array_count_values($user_jigou);
|
|
|
+//dump($user_jigou);
|
|
|
+ //各个机构
|
|
|
$map = [
|
|
|
'subject_id' => $subject_id,
|
|
|
'status' => 1,
|
|
|
];
|
|
|
|
|
|
- $lists = Db::name('vote_jigou')->field('id,title,score')
|
|
|
- ->where($map)->order('score desc,id desc')->autopage()->select();
|
|
|
+ $lists = Db::name('vote_jigou')->field('id,title,score')->where($map)->order('score desc,id desc')->select();
|
|
|
+//dump($lists);
|
|
|
+ //根据公式,重新计算排名分数
|
|
|
+ foreach($lists as $key => $jigou){
|
|
|
+ $jigou['newscore'] = 0;
|
|
|
+ if(isset($user_jigou[$jigou['id']])){
|
|
|
+ $usernumber = $user_jigou[$jigou['id']]; //机构人数
|
|
|
+ $jigou['newscore'] = ($usernumber * 0.7) + ($jigou['score'] / $usernumber * 0.3); //公式
|
|
|
+ $jigou['newscore'] = intval(round($jigou['newscore'],0)); //四舍五入
|
|
|
+ }
|
|
|
|
|
|
- $lists = $this->mingci_score($subject_id,$lists);
|
|
|
+ $lists[$key] = $jigou;
|
|
|
+ }
|
|
|
+//dump($lists);
|
|
|
+ $lists = $this->mingci_score($lists);
|
|
|
|
|
|
$this->success(1,$lists);
|
|
|
}
|
|
@@ -232,23 +249,28 @@ class Subject extends Api
|
|
|
}
|
|
|
|
|
|
//获得我的名次,分数导向
|
|
|
- private function mingci_score($subject_id,$list){
|
|
|
+ private function mingci_score($list){
|
|
|
|
|
|
if(empty($list)){
|
|
|
return $list;
|
|
|
}
|
|
|
//准备数据
|
|
|
- $players = Db::name('vote_jigou')->where(['subject_id'=>$subject_id,'status'=>1])->order('score desc,id desc')->column('id,score');
|
|
|
- $id_arr = array_keys($players);
|
|
|
+
|
|
|
+ foreach($list as $key => $row){
|
|
|
+ $field[$key] = $row['newscore'];
|
|
|
+ }
|
|
|
+//dump($field);
|
|
|
+ array_multisort($field,SORT_DESC,$list);
|
|
|
+//dump($list);
|
|
|
|
|
|
foreach($list as $key => $val)
|
|
|
{
|
|
|
- $mingci = 1; //名次
|
|
|
- $mingci = array_search($val['id'],$id_arr);
|
|
|
- $mingci++;
|
|
|
-
|
|
|
//赋值名次
|
|
|
- $list[$key]['mingci'] = $mingci;
|
|
|
+ $val['mingci'] = $key + 1;
|
|
|
+ $val['score'] = $val['newscore'];
|
|
|
+ unset($val['newscore']);
|
|
|
+
|
|
|
+ $list[$key] = $val;
|
|
|
}
|
|
|
|
|
|
return $list;
|