335 lines
11 KiB
PHP
335 lines
11 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
use Illuminate\Http\Request;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Arena;
|
|
use App\Models\ArenaGroup;
|
|
use App\Models\ArenaLabel;
|
|
use App\Models\ArenaLabelLink;
|
|
use App\Models\ArenaList;
|
|
use App\Models\ArenaPreviewHistory;
|
|
use App\Models\ArenaMember;
|
|
use App\Models\User;
|
|
class SquareController extends Controller
|
|
{
|
|
/**
|
|
* 竞技场列表
|
|
*/
|
|
public function arenas(Request $request, Arena $arena)
|
|
{
|
|
$arenas = Arena::with('group')->orderBy('id', 'desc');
|
|
$keyword = $request->input('keyword');
|
|
if ($keyword) {
|
|
$keyword = trim($keyword);
|
|
$arenas = $arenas->where('title', 'like', '%'.$keyword.'%');
|
|
}
|
|
$arenas = $arenas->paginate();
|
|
return $this->success('ok', $arenas);
|
|
}
|
|
|
|
/**
|
|
* 竞技场详情
|
|
*/
|
|
public function arena(Request $request, Arena $arena, ArenaGroup $group)
|
|
{
|
|
$group = $group->where('id', $arena->group_id)->first();
|
|
$arena->group = $group;
|
|
return $this->success('ok', $arena);
|
|
}
|
|
|
|
/**
|
|
* 创建竞技场
|
|
*/
|
|
public function storeArena(Request $request, Arena $arena)
|
|
{
|
|
$data['title'] = $request->input('title');
|
|
if (empty($data['title'])) {
|
|
return $this->failure('请输入标题');
|
|
}
|
|
$data['sub_title'] = $request->input('sub_title');
|
|
if (empty($data['sub_title'])) {
|
|
return $this->failure('请输入子标题');
|
|
}
|
|
$data['group_id'] = $request->input('group_id');
|
|
if (empty($data['group_id'])) {
|
|
return $this->failure('请选择分类');
|
|
}
|
|
$data['male_team_name'] = $request->input('male_team_name');
|
|
if (empty($data['male_team_name'])) {
|
|
return $this->failure('请输入男队队名');
|
|
}
|
|
$data['female_team_name'] = $request->input('female_team_name');
|
|
if (empty($data['female_team_name'])) {
|
|
return $this->failure('请输入女队队名');
|
|
}
|
|
$data['start_time'] = $request->input('start_time');
|
|
if (empty($data['start_time'])) {
|
|
return $this->failure('请选择开始时间');
|
|
}
|
|
$data['end_time'] = $request->input('end_time');
|
|
if (empty($data['end_time'])) {
|
|
return $this->failure('请选择结束时间');
|
|
}
|
|
$data['intro'] = $request->input('intro', []);
|
|
$data['intro'] = json_encode($data['intro']);
|
|
$data['play_url'] = $request->input('play_url');
|
|
$data['playback_url'] = $request->input('playback_url');
|
|
$data['qrcode'] = $request->input('qrcode');
|
|
$datap['qrcode_intro'] = $request->input('qrcode_intro');
|
|
$data['guest_name'] = $request->input('guest_name');
|
|
$data['guest_avatar'] = $request->input('guest_avatar');
|
|
$arena_obj = $arena->create($data);
|
|
return $this->success('ok', $arena_obj);
|
|
}
|
|
|
|
/**
|
|
* 修改竞技场
|
|
*/
|
|
public function updateArena(Request $request, Arena $arena)
|
|
{
|
|
if ($request->input('title') && $request->title != $arena->title) {
|
|
$arena->title = $request->input('title');
|
|
}
|
|
if ($request->input('sub_title') && $request->sub_title != $arena->sub_title) {
|
|
$arena->sub_title = $request->input('sub_title');
|
|
}
|
|
if ($request->input('group_id') && $request->group_id != $arena->group_id) {
|
|
$arena->group_id = $request->input('group_id');
|
|
}
|
|
if ($request->input('male_team_name') && $request->male_team_name != $arena->male_team_name) {
|
|
$arena->male_team_name = $request->input('male_team_name');
|
|
}
|
|
if ($request->input('female_team_name') && $request->female_team_name != $arena->female_team_name) {
|
|
$arena->female_team_name = $request->input('female_team_name');
|
|
}
|
|
if ($request->input('start_time') && $request->start_time != $arena->start_time) {
|
|
$arena->start_time = $request->input('start_time');
|
|
}
|
|
if ($request->input('end_time') && $request->end_time != $arena->end_time) {
|
|
$arena->end_time = $request->input('end_time');
|
|
}
|
|
if ($request->has('intro') && json_encode($request->intro) != $arena->intro) {
|
|
$arena->intro = json_encode($request->input('intro', []));
|
|
}
|
|
if ($request->input('play_url') && $request->play_url != $arena->play_url) {
|
|
$arena->play_url = $request->input('play_url');
|
|
}
|
|
if ($request->input('playback_url') && $request->playback_url != $arena->playback_url) {
|
|
$arena->playback_url = $request->input('playback_url');
|
|
}
|
|
if ($request->input('qrcode') && $request->qrcode != $arena->qrcode) {
|
|
$arena->qrcode = $request->input('qrcode');
|
|
}
|
|
if ($request->input('qrcode_intro') && $request->qrcode_intro != $arena->qrcode_intro) {
|
|
$arena->qrcode_intro = $request->input('qrcode_intro');
|
|
}
|
|
if ($request->input('guest_name') && $request->guest_name != $arena->guest_name) {
|
|
$arena->guest_name = $request->input('guest_name');
|
|
}
|
|
if ($request->input('guest_avatar') && $request->guest_avatar != $arena->guest_avatar) {
|
|
$arena->guest_avatar = $request->input('guest_avatar');
|
|
}
|
|
$arena->save();
|
|
return $this->success('ok');
|
|
}
|
|
|
|
/**
|
|
* 删除竞技场
|
|
*/
|
|
public function deleteArena(Request $request, Arena $arena)
|
|
{
|
|
$arena->delete();
|
|
return $this->success('ok');
|
|
}
|
|
|
|
/**
|
|
* 竞技场成员列表
|
|
*/
|
|
public function arenaMembers(Request $request, Arena $arena)
|
|
{
|
|
$members = $arena->members()->with('user')->orderBy('id', 'desc')->paginate();
|
|
return $this->success('ok', $members);
|
|
}
|
|
|
|
/**
|
|
* 竞技场分类
|
|
*/
|
|
public function arenaGroups(Request $request, ArenaGroup $arena_group)
|
|
{
|
|
$groups = $arena_group->orderBy('id', 'desc');
|
|
$nopage = $request->input('nopage', 0);
|
|
if ($nopage) {
|
|
$groups = $groups->get();
|
|
}else{
|
|
$groups = $groups->paginate();
|
|
}
|
|
|
|
return $this->success('ok', $groups);
|
|
}
|
|
|
|
/**
|
|
* 分类详情
|
|
*/
|
|
public function arenaGroup(Request $request, ArenaGroup $arena_group)
|
|
{
|
|
return $this->success('ok', $arena_group);
|
|
}
|
|
|
|
/**
|
|
* 创建分类
|
|
*/
|
|
public function storeArenaGroup(Request $request, ArenaGroup $arena_group)
|
|
{
|
|
$data['title'] = $request->input('title');
|
|
if (empty($data['title'])) {
|
|
return $this->failure('请输入标题');
|
|
}
|
|
$data['image_url'] = $request->input('image_url');
|
|
if (empty($data['image_url'])) {
|
|
return $this->failure('请上传图片');
|
|
}
|
|
$data['label_id'] = $request->input('label_id');
|
|
if (empty($data['label_id'])) {
|
|
return $this->failure('请选择标签');
|
|
}
|
|
$group = $arena_group->create($data);
|
|
return $this->success('ok', $group);
|
|
}
|
|
|
|
/**
|
|
* 修改分类
|
|
*/
|
|
public function updateArenaGroup(Request $request, ArenaGroup $arena_group)
|
|
{
|
|
if ($request->input('title') && $request->title != $arena_group->title) {
|
|
$arena_group->title = $request->title;
|
|
}
|
|
if ($request->input('image_url') && $request->image_url != $arena_group->image_url) {
|
|
$arena_group->image_url = $request->image_url;
|
|
}
|
|
if ($request->input('label_id') && $request->label_id != $arena_group->label_id) {
|
|
$arena_group->label_id = $request->label_id;
|
|
}
|
|
$arena_group->save();
|
|
return $this->success("ok");
|
|
}
|
|
|
|
/**
|
|
* 删除分类
|
|
*/
|
|
public function deleteArenaGroup(Request $request, ArenaGroup $arena_group)
|
|
{
|
|
$arena_group->delete();
|
|
return $this->success('ok');
|
|
}
|
|
|
|
/**
|
|
* 标签列表
|
|
*/
|
|
public function arenaLabels(Request $request, ArenaLabel $arena_label)
|
|
{
|
|
$nopage = $request->input('nopage', 0);
|
|
if ($nopage) {
|
|
$labels = $arena_label->orderBy('id', 'desc')->get();
|
|
}else{
|
|
$labels = $arena_label->orderBy('id', 'desc')->paginate();
|
|
}
|
|
return $this->success('ok', $labels);
|
|
}
|
|
|
|
/**
|
|
* 标签详情
|
|
*/
|
|
public function arenaLabel(Request $request, ArenaLabel $arena_label)
|
|
{
|
|
return $this->success('ok', $arena_label);
|
|
}
|
|
|
|
/**
|
|
* 添加标签
|
|
*/
|
|
public function storeArenaLabel(Request $request, ArenaLabel $arena_label)
|
|
{
|
|
$title = $request->input('title');
|
|
if (empty($title)) {
|
|
return $this->failure('请输入标题');
|
|
}
|
|
$label = $arena_label->create([
|
|
'title'=>$title
|
|
]);
|
|
return $this->success('ok', $label);
|
|
}
|
|
|
|
/**
|
|
* 修改标签
|
|
*/
|
|
public function updateArenaLabel(Request $request, ArenaLabel $arena_label)
|
|
{
|
|
if ($request->input('title') && $request->title != $arena_label->title) {
|
|
$arena_label->title = $request->input('title');
|
|
$arena_label->save();
|
|
}
|
|
return $this->success('ok');
|
|
}
|
|
|
|
/**
|
|
* 删除标签
|
|
*/
|
|
public function deleteArenaLabel(Request $request, ArenaLabel $arena_label)
|
|
{
|
|
$arena_label->delete();
|
|
return $this->success('ok');
|
|
}
|
|
|
|
/**
|
|
* 设置竞技场标签
|
|
*/
|
|
public function linkArenaLabel(Request $request, Arena $arena, ArenaLabelLink $arena_label_link)
|
|
{
|
|
$label_ids = $request->input('label_ids', []);
|
|
if (count($label_ids) == 0) {
|
|
return $this->failure('请选择标签');
|
|
}
|
|
$link = $arena_label_link->with('label')->where('arena_id', $arena->id)->whereIn('label_id', $label_ids)->first();
|
|
if ($link) {
|
|
// dd($link->label->title);
|
|
return $this->failure('已存在标签【'.$link->label->title.'】');
|
|
}
|
|
$data = [];
|
|
foreach ($label_ids as $label_id) {
|
|
$link['label_id'] = $label_id;
|
|
$link['arena_id'] = $arena->id;
|
|
$link['created_at'] = date('Y-m-d H:i:s');
|
|
$link['updated_at'] = date('Y-m-d H:i:s');
|
|
$data[] = $link;
|
|
}
|
|
$arena_label_link->insert($data);
|
|
return $this->success('ok');
|
|
}
|
|
|
|
/**
|
|
* 删除竞技场标签
|
|
*/
|
|
public function deleteArenaLabelLink(Request $request, ArenaLabelLink $arena_label_link)
|
|
{
|
|
$arena_label_link->delete();
|
|
return $this->success('ok');
|
|
}
|
|
|
|
public function arenaFromLabels(Request $request, Arena $arena, ArenaLabelLink $arena_label_link)
|
|
{
|
|
$labels = $arena_label_link->where('arena_id', $arena->id)->with('label')->paginate();
|
|
return $this->success('ok', $labels);
|
|
}
|
|
|
|
//推荐竞技场
|
|
public function recommendArea(Request $request, Arena $arena)
|
|
{
|
|
$arena->is_recommend = $arena->is_recommend?0:1;
|
|
$arena->save();
|
|
return $this->success('ok');
|
|
}
|
|
}
|