添加点播信息建设内容

This commit is contained in:
Jerry Yan 2022-07-29 13:36:40 +08:00
parent 4f31bd50c3
commit 27ac801b33
8 changed files with 204 additions and 20 deletions

View File

@ -0,0 +1,53 @@
<?php
namespace App\Http\Controllers;
use App\Models\ProgramAppends;
use App\Models\Programs;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller as BaseController;
class ProgramAppendConstructController extends BaseController
{
public function construct(Request $request, Programs $program) {
return view("program.construct.append.index", [
"program" => $program,
"appends" => $program->appends,
]);
}
public function add(Request $request, Programs $program) {
return view("program.construct.append.create", [
"program" => $program,
"append" => new ProgramAppends()
]);
}
public function create(Request $request, Programs $program) {
$createPayload = $request->only(["name", "from", "price", "append"]);
$append = $program->appends()->create($createPayload);
$append->is_original = $request->post("is_original", 0);
$append->save();
return redirect(route("program.construct.append.list", [
"program"=>$program->id,
]));
}
public function edit(Request $request, Programs $program, ProgramAppends $append) {
return view("program.construct.append.create", [
"program" => $program,
"append" => $append
]);
}
public function submit(Request $request, Programs $program, ProgramAppends $append) {
$submitPayload = $request->only(["name", "from", "price", "append"]);
$append->update($submitPayload);
$append->is_original = $request->post("is_original", 0);
$append->save();
return redirect(route("program.construct.append.list", [
"program"=>$program->id,
]));
}
}

View File

@ -6,5 +6,6 @@ use Illuminate\Database\Eloquent\Model;
class ProgramAppends extends Model class ProgramAppends extends Model
{ {
protected $fillable = ["name", "from", "price", "append"];
protected $dateFormat = "U";
} }

View File

@ -23,7 +23,7 @@ class ProgramVideos extends Model
public function startSec(): Attribute public function startSec(): Attribute
{ {
return Attribute::get(function ($_, $attributes) { return Attribute::get(function ($_, $attributes) {
if (!$attributes['start_time']) { if (!isset($attributes['start_time'])) {
return ""; return "";
} }
return Carbon::createFromFormat("H:i:s", $attributes['start_time'])->secondsSinceMidnight(); return Carbon::createFromFormat("H:i:s", $attributes['start_time'])->secondsSinceMidnight();
@ -33,7 +33,7 @@ class ProgramVideos extends Model
public function stopSec(): Attribute public function stopSec(): Attribute
{ {
return Attribute::get(function ($_, $attributes) { return Attribute::get(function ($_, $attributes) {
if (!$attributes['stop_time']) { if (!isset($attributes['stop_time'])) {
return ""; return "";
} }
return Carbon::createFromFormat("H:i:s", $attributes['stop_time'])->secondsSinceMidnight(); return Carbon::createFromFormat("H:i:s", $attributes['stop_time'])->secondsSinceMidnight();

View File

@ -0,0 +1,58 @@
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>录播节目点播信息修改</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link href="{{ asset('css/app.css') }}" rel="stylesheet"/>
</head>
<body>
@include("common.header")
<form class="w-full lg:w-1/2 lg:ml-6 border-2" action="" method="post" enctype="multipart/form-data">
<input type="hidden" name="id" value="{{$append->id}}">
<input type="hidden" name="program_id" value="{{$program->id}}">
@if($program->video_pivots->last()->stop_image)
<label class="block my-2">
结束图像
<img src="{{$program->video_pivots->last()->stop_image}}" alt="结束图片">
</label>
@endif
<label class="block my-2">
追加内容(点播可不填)
<input class="form-input border-0 border-b-2 w-full" type="text" name="name" value="{{$append->name}}">
</label>
<label class="block my-2">
点播老板
<input class="form-input border-0 border-b-2 w-full" type="text" name="from" value="{{$append->from}}">
</label>
<label class="block my-2">
是否点播(不是追加)
<input class="form-checkbox" type="checkbox" name="is_original" value="1" @if($append->is_original == 1) checked @endif>
</label>
<label class="block my-2">
<input class="form-input border-0 border-b-2 w-full" type="number" step="0.5" name="price" value="{{$append->price}}">
</label>
<label class="block my-2">
补充说明
<input class="form-input border-0 border-b-2 w-full" type="text" name="append" value="{{$append->append}}">
</label>
<div class="block my-2 text-center">
<input class="px-6 py-2 inline-block rounded-full bg-cyan-600 text-white" type="submit">
</div>
<div class="block my-2">
<a class="px-6 py-2 inline-block rounded-full bg-cyan-600 text-white" target="_blank"
href="https://www.bilibili.com/video/{{$program->video_pivots->first()->video_bvid}}?p={{$program->video_pivots->first()->start_part}}&t={{$program->video_pivots->first()->start_sec}}"
title="P{{$program->video_pivots->first()->start_part}}#{{$program->video_pivots->first()->start_time}}"
>打开至开始位置</a>
<a class="px-6 py-2 inline-block rounded-full bg-cyan-600 text-white" target="_blank"
href="https://www.bilibili.com/video/{{$program->video_pivots->last()->video_bvid}}?p={{$program->video_pivots->last()->stop_part}}&t={{$program->video_pivots->last()->stop_sec}}"
title="P{{$program->video_pivots->last()->stop_part}}#{{$program->video_pivots->last()->stop_time}}"
>打开至结束位置</a>
<a class="px-6 py-2 inline-block rounded-full bg-cyan-600 text-white"
href="{{route('program.construct.append.list', ['program'=>$program->id])}}"
>返回列表</a>
</div>
</form>
@include("common.footer")
</body>
</html>

View File

@ -0,0 +1,66 @@
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>录播节目点播信息维护</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link href="{{ asset('css/app.css') }}" rel="stylesheet"/>
</head>
<body>
@include("common.header")
<a href="{{route("program.construct.append.add", ["program"=>$program->id])}}">新增</a>
<table class="table-auto border-collapse w-full lg:border lg:border-black">
<thead>
<tr class="border border-black sticky bg-white lg:static top-0 left-0 right-0">
<td>老板</td>
<td>类型</td>
<td>要求</td>
<td>分值</td>
<td>补充说明</td>
</tr>
</thead>
<tbody>
@foreach($appends as $append)
<tr>
<td>
<a href="{{route("program.construct.append.edit", ["program"=>$append->program_id, "append"=>$append->id])}}">编辑</a>
@switch($append->platform_id)
@case(1)
<img class="w-4 h-4 inline-block" src="https://cdn.jerryyan.net/luboimg/bilibili.ico" alt="B站">
<a class="underline" href="https://space.bilibili.com/{{$append->from_mid}}" target="_blank">{{$append->from}}</a>
@break
@case(2)
<img class="w-4 h-4 inline-block" src="https://cdn.jerryyan.net/luboimg/ixigua.ico" alt="西瓜视频">
<a class="underline" href="https://www.ixigua.com/home/{{$append->from_mid}}/" target="_blank">{{$append->from}}</a>
@break
@case(3)
<img class="w-4 h-4 inline-block" src="https://cdn.jerryyan.net/luboimg/douyin.ico" alt="抖音">
{{$append->from}}
@break
@default
{{$append->from}}
@break
@endswitch
</td>
<td>
@if($append->is_original)
点播
@else
追加
@endif
</td>
<td>
@if($append->is_original)
点播
@else
{{$append->name}}
@endif
</td>
<td>{{$append->price}}</td>
<td>{{$append->append}}</td>
</tr>
@endforeach
</tbody>
</table>
@include("common.footer")
</body>
</html>

View File

@ -37,6 +37,10 @@
class="block px-6 py-2 inline-block rounded-full bg-cyan-600 text-white"> class="block px-6 py-2 inline-block rounded-full bg-cyan-600 text-white">
关联视频列表 关联视频列表
</a> </a>
<a href="{{route("program.construct.append.list", ["program"=>$program->id])}}"
class="block px-6 py-2 inline-block rounded-full bg-cyan-600 text-white">
关联点播老板列表
</a>
</div> </div>
</form> </form>
<div class="w-full lg:w-1/2 lg:ml-6 flex justify-between px-4"> <div class="w-full lg:w-1/2 lg:ml-6 flex justify-between px-4">

View File

@ -16,21 +16,22 @@
<table class="table-auto border-collapse w-full lg:border lg:border-black"> <table class="table-auto border-collapse w-full lg:border lg:border-black">
<thead> <thead>
<tr class="border border-black sticky bg-white lg:static top-0 left-0 right-0"> <tr class="border border-black sticky bg-white lg:static top-0 left-0 right-0">
<td>节目名称</td> <th class="border border-black">节目名称</th>
<td>点播及追加</td> <th class="border border-black">点播及追加</th>
<td>节目开始</td> <th class="border border-black">节目开始</th>
<td>节目结束</td> <th class="border border-black">节目结束</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@foreach($programs as $program) @foreach($programs as $program)
<tr> <tr>
<td> <td class="border">
<span title="节目">{{$program->name}}</span> <span title="节目">{{$program->name}}</span>
<span title="难度">{{$program->difficulty}}</span> <span title="难度">{{$program->difficulty}}</span>
<span title="要求">{{$program->desc}}</span> <span title="要求">{{$program->desc}}</span>
<a href="{{route("program.construct.edit", ["program"=>$program->id])}}" class="block">{{$program->created_at}}</a>
</td> </td>
<td> <td class="border">
@foreach($program->appends as $append) @foreach($program->appends as $append)
@if($append->is_original) @if($append->is_original)
<div> <div>
@ -58,7 +59,7 @@
@endif @endif
</div> </div>
@else @else
<div> <div class="my-2">
@switch($append->platform_id) @switch($append->platform_id)
@case(1) @case(1)
<img class="w-4 h-4 inline-block" src="https://cdn.jerryyan.net/luboimg/bilibili.ico" alt="B站"> <img class="w-4 h-4 inline-block" src="https://cdn.jerryyan.net/luboimg/bilibili.ico" alt="B站">
@ -84,8 +85,11 @@
</div> </div>
@endif @endif
@endforeach @endforeach
@if(sizeof($program->appends) === 0)
<a href="{{route('program.construct.append.list', ['program'=>$program->id])}}">去建设</a>
@endif
</td> </td>
<td> <td class="border">
@foreach($program->video_pivots as $video_pivot) @foreach($program->video_pivots as $video_pivot)
<a <a
target="_blank" target="_blank"
@ -96,11 +100,12 @@
<img width="300" src="{{$video_pivot->start_image}}" alt="开始时的画面"> <img width="300" src="{{$video_pivot->start_image}}" alt="开始时的画面">
@else @else
节目开始位置 节目开始位置
<a href="{{route('program.construct.video.edit', ['program_video'=>$video_pivot->id])}}">去建设</a>
@endif @endif
</a> </a>
@endforeach @endforeach
</td> </td>
<td> <td class="border">
@foreach($program->video_pivots as $video_pivot) @foreach($program->video_pivots as $video_pivot)
@if($video_pivot->stop_part) @if($video_pivot->stop_part)
<a <a
@ -115,11 +120,7 @@
@endif @endif
</a> </a>
@else @else
@if($video_pivot->stop_image) <a href="{{route('program.construct.video.edit', ['program_video'=>$video_pivot->id])}}">去建设</a>
<img width="300" src="{{$video_pivot->stop_image}}" alt="结束时的画面">
@else
<div>暂无</div>
@endif
@endif @endif
@endforeach @endforeach
</td> </td>

View File

@ -27,6 +27,7 @@ Route::get("/programs/construct/{program}/video", ["\\App\\Http\\Controllers\\Pr
Route::get("/programs/construct/video/{program_video}", ["\\App\\Http\\Controllers\\ProgramVideoConstructController","edit"])->name("program.construct.video.edit"); Route::get("/programs/construct/video/{program_video}", ["\\App\\Http\\Controllers\\ProgramVideoConstructController","edit"])->name("program.construct.video.edit");
Route::post("/programs/construct/video/{program_video}", ["\\App\\Http\\Controllers\\ProgramVideoConstructController","submit"])->name("program.construct.video.submit"); Route::post("/programs/construct/video/{program_video}", ["\\App\\Http\\Controllers\\ProgramVideoConstructController","submit"])->name("program.construct.video.submit");
Route::get('/programs/construct/{program}/append', ["\\App\\Http\\Controllers\\ProgramAppendConstructController","construct"])->name("program.construct.append.list"); Route::get('/programs/construct/{program}/append', ["\\App\\Http\\Controllers\\ProgramAppendConstructController","construct"])->name("program.construct.append.list");
Route::post('/programs/construct/{program}/append', ["\\App\\Http\\Controllers\\ProgramAppendConstructController","create"])->name("program.construct.append.create"); Route::get('/programs/construct/{program}/append/add', ["\\App\\Http\\Controllers\\ProgramAppendConstructController","add"])->name("program.construct.append.add");
Route::get('/programs/construct/{program}/append/{program_append}', ["\\App\\Http\\Controllers\\ProgramAppendConstructController","edit"])->name("program.construct.append.edit"); Route::post('/programs/construct/{program}/append/add', ["\\App\\Http\\Controllers\\ProgramAppendConstructController","create"])->name("program.construct.append.create");
Route::post('/programs/construct/{program}/append/{program_append}', ["\\App\\Http\\Controllers\\ProgramAppendConstructController","submit"])->name("program.construct.append.submit"); Route::get('/programs/construct/{program}/append/{append}', ["\\App\\Http\\Controllers\\ProgramAppendConstructController","edit"])->name("program.construct.append.edit");
Route::post('/programs/construct/{program}/append/{append}', ["\\App\\Http\\Controllers\\ProgramAppendConstructController","submit"])->name("program.construct.append.submit");