Screen.php 2.2 KB
<?php

namespace app\api\controller;

use app\common\controller\Api;

/**
 * 数据大屏
 * @ApiWeigh    (95)
 */
class Screen extends Api
{
    protected $noNeedLogin = ['*'];
    protected $noNeedRight = ['*'];

    /**
     * @ApiTitle (大屏管理)
     * @ApiMethod (POST)
     * @ApiReturn   ({"code":状态码,
    "msg":"提示信息"
    "time": "时间戳",
    "data": "大屏图片",
    "time": "当前时间",
    "campus": "活动名称",
    "team_rank": 战队排行[从高到底排],
    "study_rank": 个人排行[每个战队中从高到低排]
    }
     */
    public function index(){
        $list = [];
        $data = db('screen')->find();
        $list['images'] = cdnurl($data['images'],true);
        $list['count_down'] = $data['endtime'];
        $list['screen_name'] = $data['title'];
        $list['campus_name'] = db('campus c')
            ->where('c.id',$data['campus_id'])
            ->value('title');
        $list['time'] = date('Y-m-d H:i:s',time());
        $list['team_rank'] = \db('study_score_log')
            ->field('SUM(score) as sum_score,team_id,campus_id')
            ->where('campus_id',$data['campus_id'])
            ->group('team_id')
            ->order('sum_score DESC')
            ->paginate(4)
            ->each(function ($item,$key){
                $res = db('study_score_log')->where('campus_id',$item['campus_id'])->sum('score');
                $item['score'] = floor($item['sum_score']);
                $item['percent'] = round(($item['score']*0.6) / $res * 100,2);
                $item['study'] = db('study_score_log l')
                    ->distinct('l.study_id')
                    ->join('study s','l.study_id = s.id')
                    ->where([
                        'l.campus_id'=>$item['campus_id'],
                        's.team_id'=>$item['team_id']
                    ])
                    ->field('s.name,sum(score) as sum_score')
                    ->order('sum_score','desc')
                    ->group('study_id')
                    ->select();
                return $item;
            });
        $this->success('获取成功',$list);
    }

}