465 lines
16 KiB
PHP
465 lines
16 KiB
PHP
<?php
|
||
/**
|
||
* @Created by PhpStorm.
|
||
* @Author:Soar
|
||
* @Time:2023/11/15 16:24
|
||
*/
|
||
|
||
namespace app\index\controller;
|
||
|
||
use app\common\controller\Api;
|
||
use app\common\controller\Frontend;
|
||
use app\index\service\CertificateService;
|
||
use app\index\service\RankingService;
|
||
use JetBrains\PhpStorm\Deprecated;
|
||
use think\Config;
|
||
use think\Cookie;
|
||
use think\Hook;
|
||
use think\Request;
|
||
use think\Session;
|
||
|
||
class Ranking extends Frontend
|
||
{
|
||
protected $layout = 'defaults';
|
||
protected $noNeedLogin = ['*'];
|
||
protected $noRankingNeedLogin = [];
|
||
protected $noNeedRight = ['*'];
|
||
|
||
public function _initialize()
|
||
{
|
||
parent::_initialize();
|
||
}
|
||
|
||
/**
|
||
* 获取晋级选手名单
|
||
* @Author:Soar
|
||
* @Time:2023/11/23 9:40
|
||
* @return \think\response\Json
|
||
*/
|
||
public function getRanking()
|
||
{
|
||
// 解决跨域请求接口问题
|
||
header('Access-Control-Allow-Origin: *');
|
||
header('Access-Control-Allow-Credentials: true'); // 设置是否允许发送 cookies
|
||
header('Access-Control-Expose-Headers: *'); //服务器 headers 白名单,可以让客户端进行访问
|
||
header('Access-Control-Allow-Headers: *');
|
||
|
||
$course = $this->request->param('course');
|
||
$match_id = $this->request->param('match_id');
|
||
|
||
$rankingService = new RankingService();
|
||
$collection['thirty_two'] = $rankingService->getRank(32, $match_id);
|
||
$collection['sixteen'] = $rankingService->getRank(16, $match_id);
|
||
$collection['eight'] = $rankingService->getRank(8, $match_id);
|
||
$collection['four'] = $rankingService->getRank(4, $match_id);
|
||
//$collection = $rankingService->getRank($course);
|
||
|
||
if (!empty($collection)) {
|
||
$res['code'] = 1;
|
||
$res['data'] = $collection;
|
||
$res['msg'] = "获取成功";
|
||
} else {
|
||
$res['code'] = 0;
|
||
$res['data'] = [];
|
||
$res['msg'] = "数据为空";
|
||
}
|
||
|
||
return json($res);
|
||
}
|
||
|
||
/**
|
||
* 获取所有选手名单
|
||
* @Author:Soar
|
||
* @Time:2023/11/23 9:41
|
||
* @return \think\response\Json
|
||
*/
|
||
public function getRankingAll()
|
||
{
|
||
// 解决跨域请求接口问题
|
||
header('Access-Control-Allow-Origin: *');
|
||
header('Access-Control-Allow-Credentials: true'); // 设置是否允许发送 cookies
|
||
header('Access-Control-Expose-Headers: *'); //服务器 headers 白名单,可以让客户端进行访问
|
||
header('Access-Control-Allow-Headers: *');
|
||
|
||
// $course = $this->request->param('course');
|
||
$match_id = $this->request->param('match_id');
|
||
$rankingService = new RankingService();
|
||
|
||
$collection['thirty_two'] = $rankingService->getRoundAllPlayer(32, $match_id);
|
||
$collection['sixteen'] = $rankingService->getRoundAllPlayer(16, $match_id);
|
||
$collection['eight'] = $rankingService->getRoundAllPlayer(8, $match_id);
|
||
$collection['four'] = $rankingService->getRoundAllPlayer(4, $match_id);
|
||
$collection['finals'] = $rankingService->getRoundAllPlayer(1, $match_id);
|
||
|
||
if (!empty($collection)) {
|
||
$res['code'] = 1;
|
||
$res['data'] = $collection;
|
||
$res['msg'] = "获取成功";
|
||
} else {
|
||
$res['code'] = 0;
|
||
$res['data'] = [];
|
||
$res['msg'] = "数据为空";
|
||
}
|
||
|
||
return json($res);
|
||
}
|
||
|
||
/**
|
||
* @Created by PhpStorm.
|
||
* @Author:Soar
|
||
* @Time:2023/11/23 9:41
|
||
* @return \think\response\Json
|
||
*/
|
||
#[Deprecated]
|
||
public function getRankToSemiFinals()
|
||
{
|
||
$match_id = $this->request->param("match_id");
|
||
|
||
if (empty($match_id)) {
|
||
$this->error("赛事id不可为空!");
|
||
}
|
||
|
||
$rankingService = new RankingService();
|
||
$row = $rankingService->getSemiFinals();
|
||
|
||
if (!empty($row)) {
|
||
$res['code'] = 1;
|
||
$res['data'] = $row;
|
||
$res['msg'] = "获取成功";
|
||
} else {
|
||
$res['code'] = 0;
|
||
$res['data'] = [];
|
||
$res['msg'] = "数据为空";
|
||
}
|
||
|
||
return json($res);
|
||
}
|
||
|
||
/**
|
||
* 获取分组选手信息以及成绩列表
|
||
* @Author:Soar
|
||
* @Time:2023/11/20 16:29
|
||
* @return \think\response\Json
|
||
* @throws \think\db\exception\DataNotFoundException
|
||
* @throws \think\db\exception\ModelNotFoundException
|
||
* @throws \think\exception\DbException
|
||
*/
|
||
#//[Deprecated]
|
||
public function getRankForGroup()
|
||
{
|
||
// 解决跨域请求接口问题
|
||
header('Access-Control-Allow-Origin: *');
|
||
header('Access-Control-Allow-Credentials: true'); // 设置是否允许发送 cookies
|
||
header('Access-Control-Expose-Headers: *'); //服务器 headers 白名单,可以让客户端进行访问
|
||
header('Access-Control-Allow-Headers: *');
|
||
|
||
$post['group'] = $this->request->param("group", "A");
|
||
$post['match_id'] = $this->request->param("match_id", 0);
|
||
$post['course'] = $this->request->param("course", 32);
|
||
|
||
if ($post['match_id'] != 0) {
|
||
$rankingService = new RankingService();
|
||
$row = $rankingService->getRankGroup($post);
|
||
}
|
||
|
||
|
||
if (!empty($row)) {
|
||
$res['code'] = 1;
|
||
$res['data'] = $row;
|
||
$res['msg'] = "获取成功";
|
||
} else {
|
||
$res['code'] = 0;
|
||
$res['data'] = [];
|
||
$res['msg'] = "数据为空";
|
||
}
|
||
|
||
return json($res);
|
||
}
|
||
|
||
/**
|
||
* 根据赛事ID 获取决赛的所有成绩
|
||
* @Author:Soar
|
||
* @Time:2023/11/23 11:09
|
||
* @return \think\response\Json
|
||
*/
|
||
public function getFinalsList()
|
||
{
|
||
// 解决跨域请求接口问题
|
||
header('Access-Control-Allow-Origin: *');
|
||
header('Access-Control-Allow-Credentials: true'); // 设置是否允许发送 cookies
|
||
header('Access-Control-Expose-Headers: *'); //服务器 headers 白名单,可以让客户端进行访问
|
||
header('Access-Control-Allow-Headers: *');
|
||
|
||
$post['match_id'] = $this->request->param("match_id", 0);
|
||
$post['name'] = $this->request->param("name", 0);
|
||
|
||
if ($post['match_id'] != 0) {
|
||
$rankingService = new RankingService();
|
||
$row = $rankingService->getRankFinals($post['match_id'],$post['name']);
|
||
}
|
||
|
||
if (!empty($row)) {
|
||
$res['code'] = 1;
|
||
$res['data'] = $row;
|
||
$res['msg'] = "获取成功";
|
||
} else {
|
||
$res['code'] = 0;
|
||
$res['data'] = [];
|
||
$res['msg'] = "数据为空";
|
||
}
|
||
|
||
return json($res);
|
||
}
|
||
|
||
/**
|
||
* 查询单个飞手的赛事成绩
|
||
* @Author:Soar
|
||
* @Time:2023/11/23 11:07
|
||
* @return \think\response\Json
|
||
*/
|
||
public function getPlayerRanking()
|
||
{
|
||
// 解决跨域请求接口问题
|
||
header('Access-Control-Allow-Origin: *');
|
||
header('Access-Control-Allow-Credentials: true'); // 设置是否允许发送 cookies
|
||
header('Access-Control-Expose-Headers: *'); //服务器 headers 白名单,可以让客户端进行访问
|
||
header('Access-Control-Allow-Headers: *');
|
||
|
||
$post['match_id'] = $this->request->param("match_id");
|
||
$post['player_id'] = $this->request->param("player_id");
|
||
|
||
if (!empty($post['match_id']) && $post['player_id']) {
|
||
$rankingService = new RankingService();
|
||
$row = $rankingService->getPlayerRanking($post['match_id'], $post['player_id']);
|
||
}
|
||
|
||
if (!empty($row)) {
|
||
$res['code'] = 1;
|
||
$res['data'] = $row;
|
||
$res['msg'] = "获取成功";
|
||
} else {
|
||
$res['code'] = 0;
|
||
$res['data'] = [];
|
||
$res['msg'] = "数据为空";
|
||
}
|
||
|
||
return json($res);
|
||
}
|
||
|
||
/**
|
||
* 根据选手id、赛事id、赛程 获取所有轮次信息
|
||
* @Author:Soar
|
||
* @Time:2023/12/12 16:53
|
||
* @return \think\response\Json
|
||
*/
|
||
public function getroundPlayer()
|
||
{
|
||
// 解决跨域请求接口问题
|
||
header('Access-Control-Allow-Origin: *');
|
||
header('Access-Control-Allow-Credentials: true'); // 设置是否允许发送 cookies
|
||
header('Access-Control-Expose-Headers: *'); //服务器 headers 白名单,可以让客户端进行访问
|
||
header('Access-Control-Allow-Headers: *');
|
||
|
||
$match_id = $this->request->param("match_id");;
|
||
$course = $this->request->param("course");;
|
||
$player_id = $this->request->param("player_id");;
|
||
|
||
if (empty($course) || empty($match_id) || empty($player_id)) {
|
||
$this->error("非法请求!");
|
||
}
|
||
|
||
$rankingService = new RankingService();
|
||
$row = $rankingService->getRoundPlayer($match_id, $course, $player_id);
|
||
|
||
if (!empty($row)) {
|
||
$res['code'] = 1;
|
||
$res['data'] = $row;
|
||
$res['msg'] = "获取成功";
|
||
} else {
|
||
$res['code'] = 0;
|
||
$res['data'] = [];
|
||
$res['msg'] = "数据为空";
|
||
}
|
||
|
||
return json($res);
|
||
}
|
||
|
||
/**
|
||
* 前台报名页面,获取所有飞手成绩
|
||
* @Author:Soar
|
||
* @Time:2023/12/18 11:15
|
||
* @return void
|
||
*/
|
||
public function getIndexRanking()
|
||
{
|
||
// 解决跨域请求接口问题
|
||
header('Access-Control-Allow-Origin: *');
|
||
header('Access-Control-Allow-Credentials: true'); // 设置是否允许发送 cookies
|
||
header('Access-Control-Expose-Headers: *'); //服务器 headers 白名单,可以让客户端进行访问
|
||
header('Access-Control-Allow-Headers: *');
|
||
|
||
$match_id = $this->request->param("match_id");;
|
||
|
||
if (empty($match_id)) {
|
||
$this->error("非法请求!");
|
||
}
|
||
|
||
$rankingService = new RankingService();
|
||
$row['thirty_two'] = $rankingService->getIndexRanking($match_id, 32);
|
||
$row['sixteen'] = $rankingService->getIndexRanking($match_id, 16);
|
||
$row['eight'] = $rankingService->getIndexRanking($match_id, 8);
|
||
$row['four'] = $rankingService->getIndexRanking($match_id, 4);
|
||
|
||
if (!empty($row)) {
|
||
$res['code'] = 1;
|
||
$res['data'] = $row;
|
||
$res['msg'] = "获取成功";
|
||
} else {
|
||
$res['code'] = 0;
|
||
$res['data'] = [];
|
||
$res['msg'] = "数据为空";
|
||
}
|
||
|
||
return json($res);
|
||
$this->success();
|
||
|
||
}
|
||
|
||
public function getIndexRankingScore()
|
||
{
|
||
// 解决跨域请求接口问题
|
||
header('Access-Control-Allow-Origin: *');
|
||
header('Access-Control-Allow-Credentials: true'); // 设置是否允许发送 cookies
|
||
header('Access-Control-Expose-Headers: *'); //服务器 headers 白名单,可以让客户端进行访问
|
||
header('Access-Control-Allow-Headers: *');
|
||
|
||
$match_id = $this->request->param("match_id");;
|
||
|
||
if (empty($match_id)) {
|
||
$this->error("非法请求!");
|
||
}
|
||
|
||
$rankingService = new RankingService();
|
||
$row['thirty_two'] = $rankingService->getIndexRankingScore($match_id, 32);
|
||
$row['sixteen'] = $rankingService->getIndexRankingScore($match_id, 16);
|
||
$row['eight'] = $rankingService->getIndexRankingScore($match_id, 8);
|
||
$row['four'] = $rankingService->getIndexRankingScore($match_id, 4);
|
||
|
||
if (!empty($row)) {
|
||
$res['code'] = 1;
|
||
$res['data'] = $row;
|
||
$res['msg'] = "获取成功";
|
||
} else {
|
||
$res['code'] = 0;
|
||
$res['data'] = [];
|
||
$res['msg'] = "数据为空";
|
||
}
|
||
|
||
return json($res);
|
||
$this->success();
|
||
|
||
}
|
||
|
||
/**
|
||
* 详情页查询单个飞手最优成绩
|
||
* @Author:Soar
|
||
* @Time:2023/12/21 15:52
|
||
* @return \think\response\Json
|
||
*/
|
||
public function getIndexPlayerRanking()
|
||
{
|
||
// 解决跨域请求接口问题
|
||
header('Access-Control-Allow-Origin: *');
|
||
header('Access-Control-Allow-Credentials: true'); // 设置是否允许发送 cookies
|
||
header('Access-Control-Expose-Headers: *'); //服务器 headers 白名单,可以让客户端进行访问
|
||
header('Access-Control-Allow-Headers: *');
|
||
|
||
$post['match_id'] = $this->request->param("match_id");
|
||
$post['player_id'] = $this->request->param("player_id");
|
||
|
||
if (!empty($post['match_id']) && $post['player_id']) {
|
||
$rankingService = new RankingService();
|
||
$row = $rankingService->getIndexPlayerRanking($post['match_id'], $post['player_id']);
|
||
}
|
||
|
||
if (!empty($row)) {
|
||
$res['code'] = 1;
|
||
$res['data'] = $row;
|
||
$res['msg'] = "获取成功";
|
||
} else {
|
||
$res['code'] = 0;
|
||
$res['data'] = [];
|
||
$res['msg'] = "数据为空";
|
||
}
|
||
|
||
return json($res);
|
||
}
|
||
|
||
public function getCertificate()
|
||
{
|
||
// 解决跨域请求接口问题
|
||
header('Access-Control-Allow-Origin: *');
|
||
header('Access-Control-Allow-Credentials: true'); // 设置是否允许发送 cookies
|
||
header('Access-Control-Expose-Headers: *'); //服务器 headers 白名单,可以让客户端进行访问
|
||
header('Access-Control-Allow-Headers: *');
|
||
|
||
$post['match_id'] = $this->request->param("match_id");
|
||
$post['player_id'] = $this->request->param("player_id");
|
||
if (!empty($post['match_id']) && $post['player_id']) {
|
||
|
||
$rankingService = new RankingService();
|
||
$certificateService = new CertificateService();
|
||
$players = new \app\common\model\Players();
|
||
$player_info = $players->alias("a")
|
||
->join('user users', 'users.id = a.member_id', 'LEFT')
|
||
->where("a.id", $post['player_id'])
|
||
->find();
|
||
if (empty($players)) {
|
||
$this->error("数据错误");
|
||
}
|
||
$player_id = $player_info->member_number;
|
||
|
||
$row['thirty_two'] = $rankingService->getOneRanking($post['match_id'], $player_id, 32);
|
||
if (empty($row['thirty_two'])) {
|
||
$this->error("数据错误或者比赛暂未开始!");
|
||
}
|
||
$row['sixteen'] = $rankingService->getOneRanking($post['match_id'], $player_id, 16);
|
||
$row['eight'] = $rankingService->getOneRanking($post['match_id'], $player_id, 8);
|
||
$row['four'] = $rankingService->getOneRanking($post['match_id'], $player_id, 4);
|
||
$row['finals'] = $rankingService->getFinalsIntegral($post['match_id'], $player_id);
|
||
$row['player_info'] = $rankingService->getPlayerInfo($player_id);
|
||
$row['bast'] = $rankingService->getPlayerBast($post['match_id'], $player_id, $row['player_info']);
|
||
|
||
$addonproduct = db("cms_addonproduct");
|
||
$row['endtime'] = $addonproduct->where("id", $post['match_id'])->field("match_end_time, match_start_time, stime, etime, course_poster, is_open_course")->find();
|
||
// var_dump($row);exit;
|
||
if (!empty($row['endtime']['course_poster'])) {
|
||
$row['endtime']['course_poster'] = config("upload.cdnurl") ? config("upload.cdnurl").$row['endtime']['course_poster'] : config("upload.uploadurl").$row['endtime']['course_poster'];
|
||
}
|
||
|
||
if ($row['bast']['sort'] != 0) {
|
||
$row['certificate_number']['certificate_number'] = $certificateService->getCertificate(
|
||
[
|
||
'match_id' => $post['match_id'],
|
||
'player_id' => $post['player_id'],
|
||
'member_id' => $row['player_info']['member_id'],
|
||
'club_id' => 0,
|
||
]
|
||
);
|
||
} else {
|
||
$row['certificate_number']['certificate_number'] = null;
|
||
}
|
||
}
|
||
if (!empty($row)) {
|
||
$res['code'] = 1;
|
||
$res['data'] = $row;
|
||
$res['msg'] = "获取成功";
|
||
} else {
|
||
$res['code'] = 0;
|
||
$res['data'] = [];
|
||
$res['msg'] = "数据为空";
|
||
}
|
||
|
||
return json($res);
|
||
}
|
||
} |