|
@@ -6,6 +6,7 @@ use Catch\Base\CatchController;
|
|
|
use Illuminate\Foundation\Validation\ValidatesRequests;
|
|
|
use Illuminate\Http\Request;
|
|
|
use Illuminate\Support\Facades\DB;
|
|
|
+use Modules\Common\Errors\Errors;
|
|
|
use Modules\Common\Exceptions\CommonBusinessException;
|
|
|
use Modules\Common\Services\Qiniu\QiniuTokenService;
|
|
|
use Modules\User\Http\Controllers\UserTrait;
|
|
@@ -47,6 +48,13 @@ class EpisodeController extends CatchController
|
|
|
public function downloadList(Request $request) {
|
|
|
return $this->list($request);
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 添加短剧剧集, 允许覆盖已经存在的播放地址
|
|
|
+ * @param Request $request
|
|
|
+ * @return int
|
|
|
+ * @throws \Illuminate\Validation\ValidationException
|
|
|
+ */
|
|
|
public function add(Request $request) {
|
|
|
$this->validate($request, [
|
|
|
'video_id' => 'required',
|
|
@@ -60,11 +68,15 @@ class EpisodeController extends CatchController
|
|
|
$data = [];
|
|
|
$now = date('Y-m-d H:i:s');
|
|
|
foreach ($videos as $item) {
|
|
|
- $data[] = [
|
|
|
+ $sequence = intval(explode('_', $item['name'])[0]);
|
|
|
+ if($sequence <=0 ) {
|
|
|
+ CommonBusinessException::throwError(Errors::SERIES_NAME_NOT_OK);
|
|
|
+ }
|
|
|
+ $data[$sequence] = [
|
|
|
'video_id' => $request->input('video_id'),
|
|
|
'video_key' => $item['key'],
|
|
|
'series_name' => $item['name'],
|
|
|
- 'series_sequence' => intval(explode('_', $item['name'])[0]),
|
|
|
+ 'series_sequence' => $sequence,
|
|
|
'duration' => $item['duration'],
|
|
|
'created_at' => $now,
|
|
|
'updated_at' => $now,
|
|
@@ -73,14 +85,21 @@ class EpisodeController extends CatchController
|
|
|
|
|
|
$allSequence = DB::table('video_series')->where(['video_id' => $request->input('video_id')])
|
|
|
->select('series_sequence')->get()->pluck('series_sequence');
|
|
|
- $alreadySeries = collect($data)->pluck('series_sequence')->intersect($allSequence)->map(function ($item) use ($data) {
|
|
|
- return collect($data)->keyBy('series_sequence')->get($item)['series_name'];
|
|
|
- });
|
|
|
- if($alreadySeries->isNotEmpty()) {
|
|
|
- CommonBusinessException::throwError([-2333, $alreadySeries->join(', ')]);
|
|
|
+
|
|
|
+ foreach ($data as $key=>$item) {
|
|
|
+ if($allSequence->contains($key)) {
|
|
|
+ DB::table('video_series')->where([
|
|
|
+ 'video_id' => $item['video_id'],
|
|
|
+ 'series_sequence' => $item['series_sequence']
|
|
|
+ ])->update([
|
|
|
+ 'video_key' => $item['video_key'], 'series_name' => $item['series_name'],
|
|
|
+ 'duration' => $item['duration'], 'updated_at' => $item['updated_at'],
|
|
|
+ ]);
|
|
|
+ } else {
|
|
|
+ DB::table('video_series')->insert($item);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- DB::table('video_series')->insert($data);
|
|
|
DB::table('videos')
|
|
|
->where(['id' => $request->input('video_id')])
|
|
|
->update(['updated_episode_num' => DB::table('video_series')
|