Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
media-resource
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
杨昕
media-resource
Commits
d0987f9e
Commit
d0987f9e
authored
Mar 22, 2023
by
周业恒
Browse files
Options
Browse Files
Download
Plain Diff
导出
parents
6d5d5261
3dee170d
Pipeline
#20532
passed with stages
in 1 minute 5 seconds
Changes
9
Pipelines
2
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
151 additions
and
49 deletions
+151
-49
MediaController.php
app/Http/Controllers/Api/Client/MediaController.php
+34
-25
MediaController.php
app/Http/Controllers/Api/MediaController.php
+0
-16
AliOssModel.php
app/Model/AliOssModel.php
+39
-0
BaiduOssModel.php
app/Model/BaiduOssModel.php
+52
-0
MediaModel.php
app/Model/MediaModel.php
+0
-1
Constant.php
app/Tool/Constant.php
+1
-1
database.php
config/database.php
+6
-6
media_list.blade.php
resources/views/admin/media/media_list.blade.php
+15
-0
api.php
routes/api.php
+4
-0
No files found.
app/Http/Controllers/Api/Client/MediaController.php
View file @
d0987f9e
<?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
;
...
...
app/Http/Controllers/Api/MediaController.php
View file @
d0987f9e
...
@@ -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
);
}
}
/**
/**
...
...
app/Model/AliOssModel.php
0 → 100644
View file @
d0987f9e
<?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
app/Model/BaiduOssModel.php
0 → 100644
View file @
d0987f9e
<?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
app/Model/MediaModel.php
View file @
d0987f9e
...
@@ -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
(
"媒资不存在"
);
...
...
app/Tool/Constant.php
View file @
d0987f9e
...
@@ -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
=
1
0
;
const
PAGE_NUMBER
=
20
0
;
# 升序
# 升序
const
SORT_ASC
=
'asc'
;
const
SORT_ASC
=
'asc'
;
# 降序
# 降序
...
...
config/database.php
View file @
d0987f9e
...
@@ -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'
)
??
'
280
17'
,
'port'
=>
env
(
'mg_port'
)
??
'
37
17'
,
'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'
=>
6
379
,
'port'
=>
6
4793
,
'database'
=>
1
,
'database'
=>
1
,
],
],
'session'
=>
[
'session'
=>
[
'host'
=>
'
offcn-redis-svc
'
,
'host'
=>
'
security.proxy.eoffcn.com
'
,
'password'
=>
'test.eoffcn.com'
,
'password'
=>
'test.eoffcn.com'
,
'port'
=>
6
379
,
'port'
=>
6
4793
,
'database'
=>
2
,
'database'
=>
2
,
],
],
...
...
resources/views/admin/media/media_list.blade.php
View file @
d0987f9e
...
@@ -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
;
}
}
...
...
routes/api.php
View file @
d0987f9e
...
@@ -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")
});
});
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment