Commit d0987f9e by 周业恒

导出

parents 6d5d5261 3dee170d
Pipeline #20532 passed with stages
in 1 minute 5 seconds
<?php
namespace App\Http\Controllers\Api\Client;
use App\Model\AliOssModel;
use App\Model\BaiduOssModel;
use Illuminate\Validation\Rule;
use App\Exceptions\FormException;
use App\Model\MediaModel;
use App\Model\QiniuModel;
......@@ -25,6 +27,10 @@ class MediaController extends Controller
'master' => 'vod-mam.eoffcn.com'
];
const OSS_ALI = 'ALI';
const OSS_QI_QIU = 'QI_NIU';
const OSS_BAIDU = 'BAIDU';
/**
* 获取媒资ID
* @param Request $request
......@@ -34,28 +40,20 @@ class MediaController extends Controller
public function index(Request $request){
$result = handler_drive(function () use ($request) {
$i = 0;
do {
$media_id = "mda-".generateRandomNum(16);
$media = MediaModel::find($media_id);
$i ++;
} while ($i < 3 && !empty($media) );
if ($i == 3){
return 0;
}
return ["mediaID" => $media_id];
});
if (!$result){
return error("mediaID重复生成次数太多");
}
return success($result);
}
......@@ -64,6 +62,7 @@ class MediaController extends Controller
* @param Request $request
* @return \Illuminate\Http\JsonResponse
* @throws \App\Exceptions\ControllerException
* @throws \App\Exceptions\DatabaseException
*/
public function getUploadMediaToken(Request $request){
......@@ -71,18 +70,35 @@ class MediaController extends Controller
$branch = empty(getenv('branch')) ? 'test' : getenv('branch');
SrsHookValidate::srsHookCallback($request,[
'key' => ''
'key' => '',
'platform' => Rule::in(['QI_NIU', 'ALI','BAIDU'])
],null,[
'platform.in' => '系统暂不支持 '.$request->platform.' 平台',
]);
$key = $request->key??null;
switch ($request->platform){
case self::OSS_ALI:
$data = AliOssModel::getAilOssToken($request);
break;
case self::OSS_QI_QIU:
$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);
}
......@@ -95,11 +111,7 @@ class MediaController extends Controller
*/
public function hookRestoreMedia(Request $request){
// $this->testUploadFile($request);
$id = handler_drive(function () use ($request) {
SrsHookValidate::srsHookCallback($request,array_merge([
'media_name' => 'required',
'media_type' => 'required',
......@@ -119,10 +131,7 @@ class MediaController extends Controller
'end_time.date' => '结束时间格式错误',
'end_time.after_or_equal' => '结束时间不能小于开始时间'
]);
$request->replace(array_merge($request->all(),['status'=>"1"]));
$id = MediaModel::hookRestoreMedia($request);
return $id;
......
......@@ -142,7 +142,6 @@ class MediaController extends Controller
*/
public function handleMediaUrl(Request $request)
{
$res = handler_drive(function () use ($request) {
SrsHookValidate::srsHookCallback($request, [
'media_name' => '',
......@@ -167,9 +166,7 @@ class MediaController extends Controller
*/
public function hookRestoreMedia(Request $request)
{
$id = handler_drive(function () use ($request) {
SrsHookValidate::srsHookCallback($request, array_merge([
'media_name' => 'required',
'secret_key' => '',
......@@ -181,8 +178,6 @@ class MediaController extends Controller
]));
$data_time = Carbon::now();
$params = array(
'media_id' => MediaModel::getMediaId(),
'media_type' => '5efa9cb5d16f5a214671fd86',//默认,中公网校
......@@ -191,18 +186,13 @@ class MediaController extends Controller
'access_key' => '',
'description' => $request->description ?? '',
);
//shop_id为100时,代表的是北大学堂的视频
if ($request->shop_id == '100') {
$catg = MediaCategoryModel::getCategoryByName("北大学堂");
$params['media_type'] = $catg['_id'];
}
$request->replace(array_merge($request->all(), $params));
$id = MediaModel::hookRestoreMedia($request);
return $id;
});
return success($id);
......@@ -263,15 +253,11 @@ class MediaController extends Controller
*/
public function updateDatetime(Request $request)
{
$id = handler_drive(function () use ($request) {
$id = MediaModel::updateDatetime($request);
return $id;
});
return success($id);
}
/**
......@@ -282,12 +268,10 @@ class MediaController extends Controller
*/
public function getMediaInfoByNum(Request $request)
{
$data = handler_drive(function () use ($request) {
return MediaModel::getMediaInfoByNum($request);
});
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
{
try {
$media = MediaModel::find($id);
if (empty($media)) {
throw new \Exception("媒资不存在");
......
......@@ -15,7 +15,7 @@ class Constant {
# 控制器异常
const EXCEPTION_CTRL_FAIL = 3;
# 默认分页数
const PAGE_NUMBER = 10;
const PAGE_NUMBER = 200;
# 升序
const SORT_ASC = 'asc';
# 降序
......
......@@ -85,8 +85,8 @@ return [
'mongodb' => [
'driver' => 'mongodb',
'host' => env('mg_host')??'mongo.eoffcn.com',
'port' => env('mg_port')??'28017',
'host' => env('mg_host')??'dds-2ze877d1a56f53141986-pub.mongodb.rds.aliyuncs.com',
'port' => env('mg_port')??'3717',
'database' => 'video_media',
'username' => env('mg_username')??'root',
'password' => env("mg_password")??'FHHTH98AWAPoyweEasdfadfaaf',
......@@ -131,17 +131,17 @@ return [
// 'port' => env('REDIS_PORT', 6379),
// 'database' => env('REDIS_DB', 2),
'host' => 'offcn-redis-svc',
'host' => 'security.proxy.eoffcn.com',
'password' => 'test.eoffcn.com',
'port' => 6379,
'port' => 64793,
'database' => 1,
],
'session' => [
'host' => 'offcn-redis-svc',
'host' => 'security.proxy.eoffcn.com',
'password' => 'test.eoffcn.com',
'port' => 6379,
'port' => 64793,
'database' => 2,
],
......
......@@ -35,6 +35,9 @@
<button class="btn btn-primary" onclick="x_admin_show('/web/media_model/create')">
添加
</button>
<button class="btn btn-primary" onclick="export_media_id()">
导出
</button>
@endif
<form>
<input type="text" name="media_name" class="form-input" placeholder="请输入媒资名称" value="{{$media_name}}" autocomplete="off">
......@@ -67,6 +70,7 @@
@if(count($medias)>0)
@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';?>">
<td>{{$key+1}}</td>
<td style="max-width: 120px;">{{$media['_id']}}</td>
......@@ -164,6 +168,17 @@
<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){
window.location.href = url;
}
......
......@@ -24,12 +24,16 @@ Route::group(['namespace' => 'Api', 'prefix' => 'v1', 'middleware' => ['auth']],
Route::post('users', 'Client\UsersController@store');
Route::get('media_catg', 'Client\MediaCategoryController@index');
#客户端申请媒资编号
Route::get('generate_media_id', 'Client\MediaController@index');
#客户端获取阿里云、七牛云文件上传口令,默认获取七牛云文件上传口令
Route::get('upload_token', 'Client\MediaController@getUploadMediaToken');
Route::post('hook_restore', 'Client\MediaController@hookRestoreMedia');
Route::post('update_media/{id}', 'Client\MediaController@updatehookMedia');
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