Commit d0987f9e by 周业恒

导出

parents 6d5d5261 3dee170d
Pipeline #20532 passed with stages
in 1 minute 5 seconds
<?php <?php
namespace App\Http\Controllers\Api\Client; namespace App\Http\Controllers\Api\Client;
use App\Model\AliOssModel;
use App\Model\BaiduOssModel;
use Illuminate\Validation\Rule;
use App\Exceptions\FormException; use App\Exceptions\FormException;
use App\Model\MediaModel; use App\Model\MediaModel;
use App\Model\QiniuModel; use App\Model\QiniuModel;
...@@ -25,6 +27,10 @@ class MediaController extends Controller ...@@ -25,6 +27,10 @@ class MediaController extends Controller
'master' => 'vod-mam.eoffcn.com' 'master' => 'vod-mam.eoffcn.com'
]; ];
const OSS_ALI = 'ALI';
const OSS_QI_QIU = 'QI_NIU';
const OSS_BAIDU = 'BAIDU';
/** /**
* 获取媒资ID * 获取媒资ID
* @param Request $request * @param Request $request
...@@ -34,28 +40,20 @@ class MediaController extends Controller ...@@ -34,28 +40,20 @@ class MediaController extends Controller
public function index(Request $request){ public function index(Request $request){
$result = handler_drive(function () use ($request) { $result = handler_drive(function () use ($request) {
$i = 0; $i = 0;
do { do {
$media_id = "mda-".generateRandomNum(16); $media_id = "mda-".generateRandomNum(16);
$media = MediaModel::find($media_id); $media = MediaModel::find($media_id);
$i ++; $i ++;
} while ($i < 3 && !empty($media) ); } while ($i < 3 && !empty($media) );
if ($i == 3){ if ($i == 3){
return 0; return 0;
} }
return ["mediaID" => $media_id]; return ["mediaID" => $media_id];
}); });
if (!$result){ if (!$result){
return error("mediaID重复生成次数太多"); return error("mediaID重复生成次数太多");
} }
return success($result); return success($result);
} }
...@@ -64,6 +62,7 @@ class MediaController extends Controller ...@@ -64,6 +62,7 @@ class MediaController extends Controller
* @param Request $request * @param Request $request
* @return \Illuminate\Http\JsonResponse * @return \Illuminate\Http\JsonResponse
* @throws \App\Exceptions\ControllerException * @throws \App\Exceptions\ControllerException
* @throws \App\Exceptions\DatabaseException
*/ */
public function getUploadMediaToken(Request $request){ public function getUploadMediaToken(Request $request){
...@@ -71,18 +70,35 @@ class MediaController extends Controller ...@@ -71,18 +70,35 @@ class MediaController extends Controller
$branch = empty(getenv('branch')) ? 'test' : getenv('branch'); $branch = empty(getenv('branch')) ? 'test' : getenv('branch');
SrsHookValidate::srsHookCallback($request,[ SrsHookValidate::srsHookCallback($request,[
'key' => '' 'key' => '',
'platform' => Rule::in(['QI_NIU', 'ALI','BAIDU'])
],null,[
'platform.in' => '系统暂不支持 '.$request->platform.' 平台',
]); ]);
$key = $request->key??null; $key = $request->key??null;
switch ($request->platform){
case self::OSS_ALI:
$data = AliOssModel::getAilOssToken($request);
$token = QiniuModel::uploadToken($this->bucketList[$branch],$key); break;
case self::OSS_QI_QIU:
$domain = $this->domain[$branch]; $token = QiniuModel::uploadToken($this->bucketList[$branch],$key);
$domain = $this->domain[$branch];
return ["token" => $token,'domain' => $domain]; $data = ["token" => $token,'domain' => $domain];
break;
case self::OSS_BAIDU:
$data = BaiduOssModel::getBaiduOssToken($request);
$domain = BaiduOssModel::getDomain();
$data["domain"] = $domain;
break;
default:
$token = QiniuModel::uploadToken($this->bucketList[$branch],$key);
$domain = $this->domain[$branch];
$data = ["token" => $token,'domain' => $domain];
}
// $token = QiniuModel::uploadToken($this->bucketList[$branch],$key);
// $domain = $this->domain[$branch];
return $data;
}); });
return success($result); return success($result);
} }
...@@ -95,11 +111,7 @@ class MediaController extends Controller ...@@ -95,11 +111,7 @@ class MediaController extends Controller
*/ */
public function hookRestoreMedia(Request $request){ public function hookRestoreMedia(Request $request){
// $this->testUploadFile($request);
$id = handler_drive(function () use ($request) { $id = handler_drive(function () use ($request) {
SrsHookValidate::srsHookCallback($request,array_merge([ SrsHookValidate::srsHookCallback($request,array_merge([
'media_name' => 'required', 'media_name' => 'required',
'media_type' => 'required', 'media_type' => 'required',
...@@ -119,10 +131,7 @@ class MediaController extends Controller ...@@ -119,10 +131,7 @@ class MediaController extends Controller
'end_time.date' => '结束时间格式错误', 'end_time.date' => '结束时间格式错误',
'end_time.after_or_equal' => '结束时间不能小于开始时间' 'end_time.after_or_equal' => '结束时间不能小于开始时间'
]); ]);
$request->replace(array_merge($request->all(),['status'=>"1"])); $request->replace(array_merge($request->all(),['status'=>"1"]));
$id = MediaModel::hookRestoreMedia($request); $id = MediaModel::hookRestoreMedia($request);
return $id; return $id;
......
...@@ -142,7 +142,6 @@ class MediaController extends Controller ...@@ -142,7 +142,6 @@ class MediaController extends Controller
*/ */
public function handleMediaUrl(Request $request) public function handleMediaUrl(Request $request)
{ {
$res = handler_drive(function () use ($request) { $res = handler_drive(function () use ($request) {
SrsHookValidate::srsHookCallback($request, [ SrsHookValidate::srsHookCallback($request, [
'media_name' => '', 'media_name' => '',
...@@ -167,9 +166,7 @@ class MediaController extends Controller ...@@ -167,9 +166,7 @@ class MediaController extends Controller
*/ */
public function hookRestoreMedia(Request $request) public function hookRestoreMedia(Request $request)
{ {
$id = handler_drive(function () use ($request) { $id = handler_drive(function () use ($request) {
SrsHookValidate::srsHookCallback($request, array_merge([ SrsHookValidate::srsHookCallback($request, array_merge([
'media_name' => 'required', 'media_name' => 'required',
'secret_key' => '', 'secret_key' => '',
...@@ -181,8 +178,6 @@ class MediaController extends Controller ...@@ -181,8 +178,6 @@ class MediaController extends Controller
])); ]));
$data_time = Carbon::now(); $data_time = Carbon::now();
$params = array( $params = array(
'media_id' => MediaModel::getMediaId(), 'media_id' => MediaModel::getMediaId(),
'media_type' => '5efa9cb5d16f5a214671fd86',//默认,中公网校 'media_type' => '5efa9cb5d16f5a214671fd86',//默认,中公网校
...@@ -191,18 +186,13 @@ class MediaController extends Controller ...@@ -191,18 +186,13 @@ class MediaController extends Controller
'access_key' => '', 'access_key' => '',
'description' => $request->description ?? '', 'description' => $request->description ?? '',
); );
//shop_id为100时,代表的是北大学堂的视频 //shop_id为100时,代表的是北大学堂的视频
if ($request->shop_id == '100') { if ($request->shop_id == '100') {
$catg = MediaCategoryModel::getCategoryByName("北大学堂"); $catg = MediaCategoryModel::getCategoryByName("北大学堂");
$params['media_type'] = $catg['_id']; $params['media_type'] = $catg['_id'];
} }
$request->replace(array_merge($request->all(), $params)); $request->replace(array_merge($request->all(), $params));
$id = MediaModel::hookRestoreMedia($request); $id = MediaModel::hookRestoreMedia($request);
return $id; return $id;
}); });
return success($id); return success($id);
...@@ -263,15 +253,11 @@ class MediaController extends Controller ...@@ -263,15 +253,11 @@ class MediaController extends Controller
*/ */
public function updateDatetime(Request $request) public function updateDatetime(Request $request)
{ {
$id = handler_drive(function () use ($request) { $id = handler_drive(function () use ($request) {
$id = MediaModel::updateDatetime($request); $id = MediaModel::updateDatetime($request);
return $id; return $id;
}); });
return success($id); return success($id);
} }
/** /**
...@@ -282,12 +268,10 @@ class MediaController extends Controller ...@@ -282,12 +268,10 @@ class MediaController extends Controller
*/ */
public function getMediaInfoByNum(Request $request) public function getMediaInfoByNum(Request $request)
{ {
$data = handler_drive(function () use ($request) { $data = handler_drive(function () use ($request) {
return MediaModel::getMediaInfoByNum($request); return MediaModel::getMediaInfoByNum($request);
}); });
return success($data); return success($data);
} }
/** /**
......
<?php
namespace App\Model;
use App\Exceptions\DatabaseException;
const OSS_ROLE_RAN = "acs:ram::1325723521662517:role/oss-client-mam";
const OSS_ROLE_SESSION_NAME = "client-001";
class AliOssModel
{
/**
* @throws DatabaseException
*/
public static function getAilOssToken($request){
try {
$ali_base_url = getenv('ofc-store-svr') ? getenv('ofc-store-svr') : "http://ofc-store-svr-svr.micro";
$url = $ali_base_url."/api/v1/assumeRole";
$data = array(
"role_arn" => OSS_ROLE_RAN,
"role_session_name" => OSS_ROLE_SESSION_NAME,
);
$header = array(
'Content-Type: application/json; charset=utf-8',
'Content-Length: ' . strlen(json_encode($data))
);
$res = http_request_code($url,$header,"POST",json_encode($data),2);
LogModel::addlog([" 获取阿里OSS临时token 1"=>$res,"请求URL"=>$url,"请求头header"=>$header]);
$result = json_decode($res,true);
if ($result["code"] != 0){
throw new \Exception("获取token失败");
}
}catch (\Exception $exception){
throw new DatabaseException($exception->getMessage());
}
return $result["data"];
}
}
\ No newline at end of file
<?php
namespace App\Model;
class BaiduOssModel
{
/**
* @param $request
* @return mixed
*/
public static function getBaiduOssToken($request){
try {
$ali_base_url = getenv('ofc-store-svr') ? getenv('ofc-store-svr') : "http://ofc-store-svr-svr.micro";
$url = $ali_base_url."/api/v1/bdAssumeRole";
$data = array(
"body"=>'{"accessControlList":[{"service":"bce:bos","region":"bj","effect":"Allow","resource":["media-test-bce/*"],"permission":["READ","WRITE"]}]}'
);
$header = array(
'Content-Type: application/json; charset=utf-8',
'Content-Length: ' . strlen(json_encode($data))
);
$res = http_request_code($url,$header,"POST",json_encode($data),2);
LogModel::addlog([" 获取百度OSS临时token 1"=>$res,"请求URL"=>$url,"请求头header"=>$header]);
$result = json_decode($res,true);
if ($result["code"] != 0){
throw new \Exception("获取token失败");
}
}catch (\Exception $exception){
throw new DatabaseException($exception->getMessage());
}
return $result["data"];
}
public static function getDomain(){
try{
$branch = getenv('branch') ? getenv('branch') : "test";
if ($branch == "test") {
$domain = "https://media-test-bce.cdn.bcebos.com";
}else{
$domain = "https://media-bce.cdn.bcebos.com";
}
}catch(\Exception $exception){
throw new DatabaseException($exception->getMessage());
}
return $domain;
}
}
\ No newline at end of file
...@@ -297,7 +297,6 @@ class MediaModel extends Eloquent ...@@ -297,7 +297,6 @@ class MediaModel extends Eloquent
{ {
try { try {
$media = MediaModel::find($id); $media = MediaModel::find($id);
if (empty($media)) { if (empty($media)) {
throw new \Exception("媒资不存在"); throw new \Exception("媒资不存在");
......
...@@ -15,7 +15,7 @@ class Constant { ...@@ -15,7 +15,7 @@ class Constant {
# 控制器异常 # 控制器异常
const EXCEPTION_CTRL_FAIL = 3; const EXCEPTION_CTRL_FAIL = 3;
# 默认分页数 # 默认分页数
const PAGE_NUMBER = 10; const PAGE_NUMBER = 200;
# 升序 # 升序
const SORT_ASC = 'asc'; const SORT_ASC = 'asc';
# 降序 # 降序
......
...@@ -85,8 +85,8 @@ return [ ...@@ -85,8 +85,8 @@ return [
'mongodb' => [ 'mongodb' => [
'driver' => 'mongodb', 'driver' => 'mongodb',
'host' => env('mg_host')??'mongo.eoffcn.com', 'host' => env('mg_host')??'dds-2ze877d1a56f53141986-pub.mongodb.rds.aliyuncs.com',
'port' => env('mg_port')??'28017', 'port' => env('mg_port')??'3717',
'database' => 'video_media', 'database' => 'video_media',
'username' => env('mg_username')??'root', 'username' => env('mg_username')??'root',
'password' => env("mg_password")??'FHHTH98AWAPoyweEasdfadfaaf', 'password' => env("mg_password")??'FHHTH98AWAPoyweEasdfadfaaf',
...@@ -131,17 +131,17 @@ return [ ...@@ -131,17 +131,17 @@ return [
// 'port' => env('REDIS_PORT', 6379), // 'port' => env('REDIS_PORT', 6379),
// 'database' => env('REDIS_DB', 2), // 'database' => env('REDIS_DB', 2),
'host' => 'offcn-redis-svc', 'host' => 'security.proxy.eoffcn.com',
'password' => 'test.eoffcn.com', 'password' => 'test.eoffcn.com',
'port' => 6379, 'port' => 64793,
'database' => 1, 'database' => 1,
], ],
'session' => [ 'session' => [
'host' => 'offcn-redis-svc', 'host' => 'security.proxy.eoffcn.com',
'password' => 'test.eoffcn.com', 'password' => 'test.eoffcn.com',
'port' => 6379, 'port' => 64793,
'database' => 2, 'database' => 2,
], ],
......
...@@ -35,6 +35,9 @@ ...@@ -35,6 +35,9 @@
<button class="btn btn-primary" onclick="x_admin_show('/web/media_model/create')"> <button class="btn btn-primary" onclick="x_admin_show('/web/media_model/create')">
添加 添加
</button> </button>
<button class="btn btn-primary" onclick="export_media_id()">
导出
</button>
@endif @endif
<form> <form>
<input type="text" name="media_name" class="form-input" placeholder="请输入媒资名称" value="{{$media_name}}" autocomplete="off"> <input type="text" name="media_name" class="form-input" placeholder="请输入媒资名称" value="{{$media_name}}" autocomplete="off">
...@@ -67,6 +70,7 @@ ...@@ -67,6 +70,7 @@
@if(count($medias)>0) @if(count($medias)>0)
@foreach ($medias as $key => $media) @foreach ($medias as $key => $media)
<p id="export_name" value="{{$media['_id']}}|||{{$media['media_name']}}">
<tr class="<?php if($key%2==0) echo 'table-success';?>"> <tr class="<?php if($key%2==0) echo 'table-success';?>">
<td>{{$key+1}}</td> <td>{{$key+1}}</td>
<td style="max-width: 120px;">{{$media['_id']}}</td> <td style="max-width: 120px;">{{$media['_id']}}</td>
...@@ -164,6 +168,17 @@ ...@@ -164,6 +168,17 @@
<script type="text/javascript"> <script type="text/javascript">
var media_export_name="<?php $export_values='id,名称\n'; foreach ($medias as $key => $media) { $export_values=$export_values.$media['_id'].','.$media['media_name'].',\n'; } echo $export_values; ?>"
function export_media_id(){
//alert(media_export_name)
const uri = 'data:text/csv;charset=utf-8,\ufeff' + encodeURIComponent(media_export_name);
// 通过创建a标签实现
const link = document.createElement("a");
link.href = uri;
link.download = "中公云媒资ID.csv";
link.click();
}
function x_admin_show(url){ function x_admin_show(url){
window.location.href = url; window.location.href = url;
} }
......
...@@ -24,12 +24,16 @@ Route::group(['namespace' => 'Api', 'prefix' => 'v1', 'middleware' => ['auth']], ...@@ -24,12 +24,16 @@ Route::group(['namespace' => 'Api', 'prefix' => 'v1', 'middleware' => ['auth']],
Route::post('users', 'Client\UsersController@store'); Route::post('users', 'Client\UsersController@store');
Route::get('media_catg', 'Client\MediaCategoryController@index'); Route::get('media_catg', 'Client\MediaCategoryController@index');
#客户端申请媒资编号
Route::get('generate_media_id', 'Client\MediaController@index'); Route::get('generate_media_id', 'Client\MediaController@index');
#客户端获取阿里云、七牛云文件上传口令,默认获取七牛云文件上传口令
Route::get('upload_token', 'Client\MediaController@getUploadMediaToken'); Route::get('upload_token', 'Client\MediaController@getUploadMediaToken');
Route::post('hook_restore', 'Client\MediaController@hookRestoreMedia'); Route::post('hook_restore', 'Client\MediaController@hookRestoreMedia');
Route::post('update_media/{id}', 'Client\MediaController@updatehookMedia'); Route::post('update_media/{id}', 'Client\MediaController@updatehookMedia');
Route::get('media_list', 'Client\MediaController@mediaList'); Route::get('media_list', 'Client\MediaController@mediaList');
#阿里云视频转码
//Route::post("transcoding")
}); });
......
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