refactor(shopro): game

This commit is contained in:
2025-05-20 17:25:44 +08:00
parent c3b0a47e6d
commit 8481d8ef0c

View File

@@ -2,8 +2,13 @@
namespace addons\shopro\controller\zy; namespace addons\shopro\controller\zy;
use think\Db;
use think\Exception;
use app\admin\model\zy\Club; use app\admin\model\zy\Club;
use app\admin\model\zy\Stadium; use app\admin\model\zy\Stadium;
use think\exception\PDOException;
use app\admin\model\zy\game\GameJoin;
use think\exception\ValidateException;
use app\admin\model\zy\game\Participant; use app\admin\model\zy\game\Participant;
@@ -73,47 +78,82 @@ class Game extends Base
public function getMacth() public function getMacth()
{ {
$params = $this->request->param(); $params = $this->request->param();
$game = $this->model->get($params['id'] ?? NULL); Db::startTrans();
if (empty($game)) { try {
$this->error('比赛不存在'); $game = $this->model->get($params['id'] ?? NULL);
} if (empty($game)) {
$participant = Participant::where('game_id', $game['id'])->where('status', 1)->select(); $this->error('比赛不存在');
if ($game['team_type'] == 1) { //双打
// 转转 4-16 每个人与其他人各搭档1次决出个人排名 人数 4 ≦ n ≦ 16 (Default8)
// 轮数 3 ≦ mn (Default7) 报名费 0 ≦ m ≦ 10 元 (Default: 5)
// 由前几名按比例瓜分 (可调 Default40%/30%/20%/10%)
// 混双转 4-32
// (偶数) 每男与每女各搭档1次分别决出男女排名 人数 4 ≦ n ≦ 32 (Default16)
// 轮数2 ≦ m ≦ n/2 (Default8) 报名费 0 ≦ m ≦ 10 元 (Default: 5)
// 由前几名按比例瓜分 (可调 Default40%/30%/20%/10%)
// 固搭转 4-32
// (偶数) 固定组合,分别与其他组合对战一次,决出组合排名 人数 4 ≦ n ≦ 32 (Default16)
// 轮数 2 ≦ m ≦ n/2-1 (Default7) 报名费 0 ≦ m ≦ 10 元 (Default: 5)
// 由前几名按比例瓜分 (可调 Default40%/30%/20%/10%)
// 分区转 4-32
// (偶数) 分为AB两区A区与B区各搭档1次分别决出AB区排名 人数 4 ≦ n ≦ 32 (Default16)
// 轮数2 ≦ m ≦ n/2 (Default8) 报名费 0 ≦ m ≦ 10 元 (Default: 5)
// 由前几名按比例瓜分 (可调 Default40%/30%/20%/10%)
// 擂台赛 8-44 由擂主决定出战组合,攻擂者按组合报名(不重复报名,但可兼项) 擂主人数 2 ≦ k ≦ 4 (Default2)
// 总攻擂数4 ≦ n ≦ 5k(Default8) 攻擂报名费 0 ≦ m ≦ 10 (Default5)
// 擂主报名费 2n/k (不可调)
// 攻擂者赢局获得2m元(不可调)
// 由擂主分摊盈亏
// 守擂赛 4-32
// (偶数) 选手组合报名不可重复报名抽签决定对战顺序相邻顺序对战连赢m局进入决赛决赛为淘汰赛决出冠亚季 人数 4 ≦ n ≦ 32 (Default16)
// 连赢 1 ≦ m ≦ 3 (Default2) 报名费0 ≦ k ≦ 10 (Default5)
// 由前几名按比例瓜分 (可调 Default40%/30%/20%/10%)
if ($game['rule_type'] == 1) { //转转
foreach ($participant as $key => $value) {
}
} }
} elseif ($game['team_type'] == 2) { //单打 $dataTime = date('Y-m-d H:i:s');
$startTime = $game['date'] . ' ' . $game['start_time'];
} elseif ($game['team_type'] == 3) { //团队 if ($dataTime < $startTime) {
$this->error('比赛时间未开始');
}
$endTime = $game['date'] . ' ' . $game['end_time'];
if ($dataTime > $endTime) {
$this->error('比赛时间已结束');
}
$participant = Participant::where('game_id', $game['id'])->where('status', 1)->select();
if (empty($participant)) {
$join = GameJoin::where('game_id', $game['id'])->where('status', 1)->select();
$order = 1;
$participant = [];
foreach ($join as $j) {
$users = json($j['users'], true);
foreach ($users as $u) {
$participant[] = [
'user_id' => $u['user_id'],
'gender' => $u['gender'],
'avatar' => $u['avatar'],
'name' => $u['name'],
'game_join_id' => $j['id'],
'game_id' => $game['id'],
'order' => $order,
'status' => 1,
];
$order++;
}
}
$this->model->saveAll($participant);
}
if ($game['team_type'] == 1) { //双打
// 转转 4-16 每个人与其他人各搭档1次决出个人排名 人数 4 ≦ n ≦ 16 (Default8)
// 轮数 3 ≦ mn (Default7) 报名费 0 ≦ m ≦ 10 元 (Default: 5)
// 由前几名按比例瓜分 (可调 Default40%/30%/20%/10%)
// 混双转 4-32
// (偶数) 每男与每女各搭档1次分别决出男女排名 人数 4 ≦ n ≦ 32 (Default16)
// 轮数2 ≦ m ≦ n/2 (Default8) 报名费 0 ≦ m ≦ 10 元 (Default: 5)
// 由前几名按比例瓜分 (可调 Default40%/30%/20%/10%)
// 固搭转 4-32
// (偶数) 固定组合,分别与其他组合对战一次,决出组合排名 人数 4 ≦ n ≦ 32 (Default16)
// 轮数 2 ≦ m ≦ n/2-1 (Default7) 报名费 0 ≦ m ≦ 10 元 (Default: 5)
// 由前几名按比例瓜分 (可调 Default40%/30%/20%/10%)
// 分区转 4-32
// (偶数) 分为AB两区A区与B区各搭档1次分别决出AB区排名 人数 4 ≦ n ≦ 32 (Default16)
// 轮数2 ≦ m ≦ n/2 (Default8) 报名费 0 ≦ m ≦ 10 元 (Default: 5)
// 由前几名按比例瓜分 (可调 Default40%/30%/20%/10%)
// 擂台赛 8-44 由擂主决定出战组合,攻擂者按组合报名(不重复报名,但可兼项) 擂主人数 2 ≦ k ≦ 4 (Default2)
// 总攻擂数4 ≦ n ≦ 5k(Default8) 攻擂报名费 0 ≦ m ≦ 10 (Default5)
// 擂主报名费 2n/k (不可调)
// 攻擂者赢局获得2m元(不可调)
// 由擂主分摊盈亏
// 守擂赛 4-32
// (偶数) 选手组合报名不可重复报名抽签决定对战顺序相邻顺序对战连赢m局进入决赛决赛为淘汰赛决出冠亚季 人数 4 ≦ n ≦ 32 (Default16)
// 连赢 1 ≦ m ≦ 3 (Default2) 报名费0 ≦ k ≦ 10 (Default5)
// 由前几名按比例瓜分 (可调 Default40%/30%/20%/10%)
if ($game['rule_type'] == 1) { //转转
foreach ($participant as $key => $value) {
}
}
} elseif ($game['team_type'] == 2) { //单打
} elseif ($game['team_type'] == 3) { //团队
}
Db::commit();
} catch (ValidateException | PDOException | Exception $e) {
Db::rollback();
$this->error($e->getMessage(), $e);
} }
$this->success('Success', ['list' => $participant]); $this->success('Success', ['list' => $participant]);