Commit 6b475fc8 by 杨昕

批量处理视频链接

parent 9b071c1c
Pipeline #13998 passed with stages
in 47 seconds
......@@ -376,14 +376,19 @@ function getRbac($request,$url='api/ram',$appid = '' ,$type='base'){
$staffNo = $request->username;
$rbac_url = $rbac.'/rbac/'.$url.'?t='.$time.'&sign='.$sign.'&ak='.$rbac_ak.'&staffNo='.$staffNo;
break;
#清除CND缓存
case 'clear_cache':
$rbac_url = $rbac.'/cdn/'.$url.'?t='.$time.'&sign='.$sign.'&ak='.$rbac_ak;
break;
#获取单个视频永久播放链接地址
case 'play_m3u8':
$rbac_url = $rbac.'/chain/'.$url.'?t='.$time.'&sign='.$sign.'&ak='.$rbac_ak.'&mediaId='.$appid.'&pathForever=1';
break;
#批量获取获取多个永久播放链接地址
case 'mul_play_m3u8':
$rbac_url = $rbac.'/chain/'.$url.'?t='.$time.'&sign='.$sign.'&ak='.$rbac_ak.'&pathForever=1';
break;
default:
$rbac_url = $rbac.'/rbac/'.$url.'?t='.$time.'&sign='.$sign.'&ak='.$rbac_ak.'&appid='.$appid.'&uid='.$mis_uid;
......
......@@ -2,12 +2,16 @@
namespace App\Http\Controllers\Web;
use App\Exports\MediasExport;
use App\Imports\MediasImport;
use App\Model\MediaCategoryModel;
use App\Model\MediaModel;
use App\Tool\SrsHookValidate;
use Carbon\Carbon;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Maatwebsite\Excel\Facades\Excel;
class MediaController extends Controller
{
......@@ -221,4 +225,72 @@ class MediaController extends Controller
return success($res);
}
/**
* @param Request $request
* @param $type
* @return \Symfony\Component\HttpFoundation\BinaryFileResponse
*/
public function export_batch_media(Request $request){
$type = $request->type??'media';
$data = null;
switch ($type){
case 'media':
$data = new MediasExport(["mda-f72b5ea1c0dfc7203bf7ac522cd8baf9","mda-f6eb263d99752afc"]);
break;
default:
$data = new MediasExport(["mda-f72b5ea1c0dfc7203bf7ac522cd8baf9","mda-f6eb263d99752afc"]);
break;
}
return Excel::download($data,$type.'.xlsx');
}
/**
* 展示批处理文件
* @param Request $request
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function batch_media(Request $request){
return view('admin.media.batch_media');
}
/**
* 批量导出永久地址
* @param Request $request
* @return \Symfony\Component\HttpFoundation\BinaryFileResponse
* @throws \App\Exceptions\ControllerException
*/
public function import_batch_media(Request $request){
$type = $request->type??'media';
$data = handler_drive(function () use($request){
$file = $request->file('uploadFile');
#将文件内容转化为数组
$sheet = (new MediasImport)->toArray($file);
$data = [];
if (!empty($sheet[0])){
$media_ids = array_column($sheet[0],'media_id' );
#批量获取永久播放链接地址
$mediaInfos = MediaModel::batchGetMediaForverM3u8($request,$media_ids);
$data = new MediasExport(array_values($mediaInfos));
}
return $data;
});
return Excel::download($data,$type.'.xlsx');
}
}
......@@ -19,6 +19,17 @@ class MediaRoute extends AuthenRoute
$router->get('video_preview/{media_num}','MediaController@media_preview');
$router->post('set_media_num','MediaController@setMediaNum');
$router->get('clear_cdn_cache/{media_id}','MediaController@clearCdnCache');
#导入待处理media编号excel表格
$router->post('media_manager/import_batch_media','MediaController@import_batch_media');
#展示批处理页面
$router->get('media_manager/batch_media','MediaController@batch_media');
#导出展示批处理
$router->get('media_manager/export_batch_media','MediaController@export_batch_media');
});
}
......
......@@ -24,6 +24,8 @@ class MediaModel extends Eloquent
public $timestamps = false;
public static $max_page_size = 500;
public function media_category()
......@@ -45,8 +47,8 @@ class MediaModel extends Eloquent
$limit = (isset($request->page_size) ? (int)($request->page_size) : Constant::PAGE_NUMBER) ;
if ($limit >500){
$limit = 500;
if ($limit >self::$max_page_size){
$limit = self::$max_page_size;
}
$page = $request->page??1;
......@@ -855,6 +857,49 @@ class MediaModel extends Eloquent
return $flag;
}
public static function multiplySetMediaNum($request){
try{
$media_ids = $request->media_ids;
//$flag = MediaModel::whereIn("_id",$media_ids)->get($data,['multiple'=>true]);
$medias = MediaModel::whereIn("_id",$media_ids)->limit(self::$max_page_size)->get();
$multiplied = collect($medias)->map(function ($item, $key) {
return $item * 2;
});
$collection = collect([1, 2, 3, 4, 5]);
$collection->contains(function ($key, $value) {
return $value <= 5;
//true
});
$media_id = $request->media_id;
$data = [
'media_num' => md5(md5($media_id)),
];
$flag = MediaModel::whereIn("_id",$media_id)->update($data,['multiple'=>true]);
}catch (\Exception $exception){
throw new DatabaseException($exception->getMessage());
}
return $flag;
}
/**
* 根据媒资编号获取媒资随机码
* @param $request
......@@ -950,4 +995,70 @@ class MediaModel extends Eloquent
return $result['data'];
}
/**
* @param $request
* @param string $media_ids
* @return array
* @throws DatabaseException
*/
public static function batchGetMediaForverM3u8($request,array $media_ids){
try{
$ids = implode(',',$media_ids);
#生成批量处理地址
$url = getRbac($request,'video/infos',$ids ,$type='mul_play_m3u8');
$res = http_request_code($url,null,'POST',array('mediaIds'=>$ids));
$result = json_decode($res,true);
if (empty($result)){
return [];
}
if ($result['code'] != 0){
LogModel::addlog($result);
throw new \Exception("获取数据失败");
}
return self::mediaExportFormat($result['data'],$media_ids);
}catch (\Exception $exception){
throw new DatabaseException($exception->getMessage());
}
}
/**
* 构造导出数据格式
* @param array $data
* @param $media_ids
* @return mixed
*/
private static function mediaExportFormat(array $data,$media_ids){
$medias = MediaModel::select('_id','media_name')->whereIn('_id',$media_ids)->limit(self::$max_page_size)->get()->toArray();
foreach ($medias as $key => &$item){
$item['forvery_url'] = isset($data[$item['_id']])?$data[$item['_id']]['url']:'';
$media_id = $item['_id'];
$media_num = md5(md5($media_id));
//生成媒资序列号,生成视频预览链接需要
$data = [
'media_num' => $media_num,
];
MediaModel::where("_id",$media_id)->update($data);
$url = getenv('preview_domain')?getenv('preview_domain'):"https://xue.t.eoffcn.com/preview/temp/";
$item['preview_url'] = $url."play".'/'.$media_num;
$item['is_full_url'] = $url."player".'/'.$media_num;
}
return $medias;
}
}
......@@ -182,6 +182,7 @@ return [
* 自定义
*/
Jenssegers\Mongodb\MongodbServiceProvider::class,
Maatwebsite\Excel\ExcelServiceProvider::class,
],
......@@ -239,6 +240,7 @@ return [
*/
'Mongo' => Jenssegers\Mongodb\MongodbServiceProvider::class,
'Moloquent' => 'Jenssegers\Mongodb\Eloquent\Model',
'Excel' => Maatwebsite\Excel\Facades\Excel::class,
],
......
......@@ -10,7 +10,7 @@
"sort": 1,
"key_name": "member_manager_block",
"son": [{
"id": 10,
"id": 201,
"pid": 2,
"name": "修改密码",
"icon": "",
......@@ -21,7 +21,7 @@
"sort": 25,
"key_name": "member_modify_pwd"
}, {
"id": 9,
"id": 202,
"pid": 2,
"name": " 用户列表",
"icon": "",
......@@ -32,7 +32,7 @@
"sort": 25,
"key_name": "member_manager"
}, {
"id": 8,
"id": 203,
"pid": 2,
"name": "会员删除",
"icon": "",
......@@ -43,7 +43,7 @@
"sort": 25,
"key_name": "member_destroy"
}, {
"id": 7,
"id": 204,
"pid": 2,
"name": "会员启用-停用",
"icon": "",
......@@ -54,7 +54,7 @@
"sort": 25,
"key_name": "member_disable"
}, {
"id": 6,
"id": 205,
"pid": 2,
"name": "编辑保存",
"icon": "",
......@@ -65,7 +65,7 @@
"sort": 25,
"key_name": "member_update"
}, {
"id": 5,
"id": 206,
"pid": 2,
"name": "会员编辑",
"icon": "",
......@@ -76,7 +76,7 @@
"sort": 25,
"key_name": "member_edit"
}, {
"id": 4,
"id": 207,
"pid": 2,
"name": "添加保存",
"icon": "",
......@@ -87,7 +87,7 @@
"sort": 25,
"key_name": "member_add"
}, {
"id": 3,
"id": 208,
"pid": 2,
"name": "会员添加",
"icon": "",
......@@ -110,7 +110,7 @@
"sort": 2,
"key_name": "manager_media",
"son": [{
"id": 15,
"id": 1101,
"pid": 11,
"name": "媒资列表",
"icon": "",
......@@ -121,7 +121,7 @@
"sort": 25,
"key_name": "media_model_list"
},{
"id": 23,
"id": 1102,
"pid": 11,
"name": "媒资删除",
"icon": "",
......@@ -132,7 +132,7 @@
"sort": 25,
"key_name": "media_model_destroy"
}, {
"id": 22,
"id": 1103,
"pid": 11,
"name": "媒资添加保存",
"icon": "",
......@@ -143,7 +143,7 @@
"sort": 25,
"key_name": "media_store"
}, {
"id": 21,
"id": 1104,
"pid": 11,
"name": "媒资修改保存",
"icon": "",
......@@ -154,7 +154,7 @@
"sort": 25,
"key_name": "media_update"
}, {
"id": 18,
"id": 1105,
"pid": 11,
"name": "媒资编辑",
"icon": "",
......@@ -165,7 +165,7 @@
"sort": 25,
"key_name": "media_edit"
}, {
"id": 17,
"id": 1106,
"pid": 11,
"name": "媒资添加",
"icon": "",
......@@ -175,6 +175,18 @@
"show": 0,
"sort": 25,
"key_name": "media_create"
}, {
"id": 1107,
"pid": 11,
"name": "媒资批处理",
"icon": "",
"link": "/media_manager/batch_media",
"slug": "media_manager.batch_media",
"description": "",
"show": 1,
"sort": 25,
"key_name": "batch_media",
"have":1
}]
},{
"id": 3,
......@@ -188,7 +200,7 @@
"sort": 2,
"key_name": "media_category",
"son": [{
"id": 31,
"id": 301,
"pid": 3,
"name": "媒资类别列表",
"icon": "",
......@@ -199,7 +211,7 @@
"sort": 25,
"key_name": "media_list"
},{
"id": 31,
"id": 302,
"pid": 3,
"name": "媒资类别删除",
"icon": "",
......@@ -210,7 +222,7 @@
"sort": 25,
"key_name": "media_destroy"
}, {
"id": 33,
"id": 303,
"pid": 3,
"name": "媒资类别添加保存",
"icon": "",
......@@ -221,7 +233,7 @@
"sort": 25,
"key_name": "media_store"
}, {
"id": 34,
"id": 304,
"pid": 3,
"name": "媒资类别修改保存",
"icon": "",
......@@ -232,7 +244,7 @@
"sort": 25,
"key_name": "media_update"
}, {
"id": 35,
"id": 305,
"pid": 3,
"name": "媒资类别编辑",
"icon": "",
......@@ -243,7 +255,7 @@
"sort": 25,
"key_name": "media_edit"
}, {
"id": 36,
"id": 306,
"pid": 3,
"name": "媒资类别添加",
"icon": "",
......
......@@ -10,7 +10,7 @@
"sort": 1,
"key_name": "member_manager_block",
"son": [{
"id": 10,
"id": 201,
"pid": 2,
"name": "修改密码",
"icon": "",
......@@ -22,7 +22,7 @@
"key_name": "member_modify_pwd"
}, {
"id": 9,
"pid": 2,
"pid": 202,
"name": " 用户列表",
"icon": "",
"link": "/member",
......@@ -32,7 +32,7 @@
"sort": 25,
"key_name": "member_manager"
}, {
"id": 8,
"id": 203,
"pid": 2,
"name": "会员删除",
"icon": "",
......@@ -43,7 +43,7 @@
"sort": 25,
"key_name": "member_destroy"
}, {
"id": 7,
"id": 204,
"pid": 2,
"name": "会员启用-停用",
"icon": "",
......@@ -54,7 +54,7 @@
"sort": 25,
"key_name": "member_disable"
}, {
"id": 6,
"id": 205,
"pid": 2,
"name": "编辑保存",
"icon": "",
......@@ -65,7 +65,7 @@
"sort": 25,
"key_name": "member_update"
}, {
"id": 5,
"id": 206,
"pid": 2,
"name": "会员编辑",
"icon": "",
......@@ -76,7 +76,7 @@
"sort": 25,
"key_name": "member_edit"
}, {
"id": 4,
"id": 207,
"pid": 2,
"name": "添加保存",
"icon": "",
......@@ -87,7 +87,7 @@
"sort": 25,
"key_name": "member_add"
}, {
"id": 3,
"id": 208,
"pid": 2,
"name": "会员添加",
"icon": "",
......@@ -111,7 +111,7 @@
"key_name": "manager_media",
"have":1,
"son": [{
"id": 15,
"id": 1101,
"pid": 11,
"name": "媒资列表",
"icon": "",
......@@ -124,7 +124,7 @@
"is_show":1,
"have":1
},{
"id": 23,
"id": 1102,
"pid": 11,
"name": "媒资删除",
"icon": "",
......@@ -137,7 +137,7 @@
"is_show":0,
"have":0
}, {
"id": 22,
"id": 1103,
"pid": 11,
"name": "媒资添加保存",
"icon": "",
......@@ -149,7 +149,7 @@
"key_name": "media_store",
"have":0
}, {
"id": 21,
"id": 1104,
"pid": 11,
"name": "媒资修改保存",
"icon": "",
......@@ -161,7 +161,7 @@
"key_name": "media_update",
"have":0
}, {
"id": 18,
"id": 1105,
"pid": 11,
"name": "媒资编辑",
"icon": "",
......@@ -173,7 +173,7 @@
"key_name": "media_edit",
"have":0
}, {
"id": 17,
"id": 1106,
"pid": 11,
"name": "媒资添加",
"icon": "",
......@@ -184,6 +184,18 @@
"sort": 25,
"key_name": "media_create",
"have":0
}, {
"id": 1107,
"pid": 11,
"name": "媒资批处理",
"icon": "",
"link": "/media_manager/batch_media",
"slug": "media_manager.batch_media",
"description": "",
"show": 1,
"sort": 25,
"key_name": "batch_media",
"have":1
}]
},{
"id": 3,
......@@ -196,9 +208,8 @@
"show": 0,
"sort": 2,
"key_name": "media_category",
"have":0,
"son": [{
"id": 31,
"id": 301,
"pid": 3,
"name": "媒资类别列表",
"icon": "",
......@@ -207,9 +218,10 @@
"description": "",
"show": 1,
"sort": 25,
"key_name": "media_list"
"key_name": "media_list",
"have":1
},{
"id": 31,
"id": 302,
"pid": 3,
"name": "媒资类别删除",
"icon": "",
......@@ -218,9 +230,10 @@
"description": "",
"show": 0,
"sort": 25,
"key_name": "media_destroy"
"key_name": "media_destroy",
"have":1
}, {
"id": 33,
"id": 303,
"pid": 3,
"name": "媒资类别添加保存",
"icon": "",
......@@ -229,9 +242,10 @@
"description": "",
"show": 0,
"sort": 25,
"key_name": "media_store"
"key_name": "media_store",
"have":1
}, {
"id": 34,
"id": 304,
"pid": 3,
"name": "媒资类别修改保存",
"icon": "",
......@@ -240,9 +254,10 @@
"description": "",
"show": 0,
"sort": 25,
"key_name": "media_update"
"key_name": "media_update",
"have":1
}, {
"id": 35,
"id": 305,
"pid": 3,
"name": "媒资类别编辑",
"icon": "",
......@@ -251,9 +266,10 @@
"description": "",
"show": 0,
"sort": 25,
"key_name": "media_edit"
"key_name": "media_edit",
"have":1
}, {
"id": 36,
"id": 306,
"pid": 3,
"name": "媒资类别添加",
"icon": "",
......@@ -262,10 +278,11 @@
"description": "",
"show": 0,
"sort": 25,
"key_name": "media_create"
"key_name": "media_create",
"have":1
}]
},{
"id": 2,
"id": 4,
"pid": 0,
"name": "权限管理",
"icon": "&#xe623;",
......
......@@ -5,8 +5,8 @@
font-family: "dashboard";
src:url("https://file.myfontastic.com/da58YPMQ7U5HY8Rb6UxkNf/fonts/1494891667.eot");
src:url("https://file.myfontastic.com/da58YPMQ7U5HY8Rb6UxkNf/fonts/1494891667.eot?#iefix") format("embedded-opentype"),
url("https://file.myfontastic.com/da58YPMQ7U5HY8Rb6UxkNf/fonts/1494891667.woff") format("woff"),
url("https://file.myfontastic.com/da58YPMQ7U5HY8Rb6UxkNf/fonts/1494891667.ttf") format("truetype"),
/*url("https://file.myfontastic.com/da58YPMQ7U5HY8Rb6UxkNf/fonts/1494891667.woff") format("woff"),*/
/*url("https://file.myfontastic.com/da58YPMQ7U5HY8Rb6UxkNf/fonts/1494891667.ttf") format("truetype"),*/
url("https://file.myfontastic.com/da58YPMQ7U5HY8Rb6UxkNf/fonts/1494891667.svg#1494891667") format("svg");
font-weight: normal;
font-style: normal;
......
No preview for this file type
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment