Commit f20c1efe f20c1efe7ecb2583d97de19a398cb3d94c0a6cb8 by mengfan.xie

release

1 parent b1859c80
......@@ -49,4 +49,12 @@ class CacheKeyTools
{
return config('cache.key')['districts'];
}
/**
* @return mixed
*/
public static function tmeAccessToken()
{
return config('cache.key')['tme_access_token'];
}
}
......
......@@ -2,9 +2,12 @@
namespace App\Http\Controllers\Release;
use App\Helper\CacheKeyTools;
use App\Helper\Response;
use App\Http\Controllers\Controller;
use App\Models\Legal\Channel;
use GuzzleHttp\Client;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Log;
class BaseController extends Controller
......@@ -36,10 +39,12 @@ class BaseController extends Controller
$respArr = json_decode($response->getBody()->getContents(), true);
Log::channel('api')->info(__METHOD__, $respArr);
if (200 !== $respArr['code']) {
if (0 !== (int)$respArr['code']) {
return null;
} else {
return $respArr['data'];
$res = $respArr['data'];
Cache::put(CacheKeyTools::tmeAccessToken(), $res['accessToken'], ($res['expire'] ?? 900) - 100); // 加入缓存
return $res['accessToken'];
}
} catch (\Exception $e) {
Log::channel('api')->error(__METHOD__, ['msg'=>$e->getMessage()]);
......@@ -75,35 +80,35 @@ class BaseController extends Controller
* @param bool $isLocal
* @return array
*/
private function requestData(string $uri, array $reqData, bool $isLocal = true)
private function parseData(string $uri, array $reqData, bool $isLocal = true)
{
if (!$accessToken = Cache::get(CacheKeyTools::tmeAccessToken())) {
$accessToken = $this->getToken();
}
if ($isLocal) {
$data_file = database_path('Release/'.$uri.'.query.php');
$data_file = database_path('Release/'.last(explode("/",$uri)).'.query.php');
$params = include("$data_file");
$params['tmeBrandId'] = 105737;
} else {
$params = $reqData;
}
$heaers['appId'] = $this->appId;
$heaers['accessToken'] = $this->appId;
$heaers['accessToken'] = $accessToken;
$heaers['timestamp'] = (string)date('YmdHis');
$heaers['signMethod'] = 'md5';
$heaers['sign'] = 'md5';
$heaers['traceId'] = 'md5';
return $this->signData($params);
}
/**
* 请求接口
* @param string $uri
* @param string $method
* @param array $reqData
* @return \Illuminate\Http\JsonResponse|mixed
* @throws \GuzzleHttp\Exception\GuzzleException
*/
protected function doApi(string $uri, array $reqData = [], string $method = 'POST')
{
$url = rtrim($this->domain,'/').'/'.$uri;
$data = $this->requestData($uri, $reqData);
$this->getSign();
$url = rtrim($this->domain,'/').'/'.ltrim($uri,'/');
$data = $this->parseData($uri, $reqData);
try {
$client = new Client(['verify'=>false]); //实体公钥['verify'=>'/path/to/public.pem']
switch (strtoupper($method)) {
......@@ -117,7 +122,7 @@ class BaseController extends Controller
}
$respArr = json_decode($response->getBody()->getContents(), true);
Log::channel('api')->info(__METHOD__, $respArr);
if (200 !== $respArr['code']) {
if (0 !== (int)$respArr['code']) {
return Response::error(-1,$respArr['msg'] ?? '操作失败');
} else {
$response_file = database_path('release/' . $uri . '.resp');
......@@ -131,6 +136,70 @@ class BaseController extends Controller
}
/**
* 获取签名和去空的参数
* @param array $array
* @return array
*/
protected function getSign()
{
$accessToken = $this->getToken();
if (!$accessToken = Cache::get(CacheKeyTools::tmeAccessToken())) {
$accessToken = $this->getToken();
}
// if ($isLocal) {
// $data_file = database_path('Release/'.last(explode("/",$uri)).'.query.php');
// $params = include("$data_file");
// } else {
// $params = $reqData;
// }
$heaers['appId'] = $this->appId;
$heaers['accessToken'] = $accessToken;
$heaers['timestamp'] = (string)date('YmdHis');
$heaers['traceId'] = 'md5';
$common_params = [
"batchId" => "8934234012312323235",
"phone" => "130****0815",
"templateId" => "M000198",
"bizType"=> 1,
"templateVariable"=> [
"titleMap"=> ["k"=>"v"],
"contentMap"=> ["k"=>"v"],
],
"waterId"=> "8934234012312323234",
"platformType"=>"musician",
"tenant"=>"musician",
"accountId"=>6793497
];
$common_params = array_merge($common_params,$heaers);
ksort($common_params);
$params = '';
foreach ($common_params as $k=>$v)
{
if ('' === $v || null === $v || [] === $v) {
continue;
}
if (is_array($v)) {
$params .= $k . json_encode($this->handleSubArrayNumber($v));
} else {
$params .= $k . $v;
}
}
$result = $this->str_to_utf8('appSecret' .$this->appSecret. $params);
echo '拼装好的utf8字符串:'.$result;
$result = md5($result);
echo '摘要后的sign结果(16位):' . substr(md5($result), 8, 16);
dd($result);
return $result;
}
function str_to_utf8($str = '') {
$current_encode = mb_detect_encoding($str, array("ASCII","GB2312","GBK",'BIG5','UTF-8'));
$encoded_str = mb_convert_encoding($str, 'UTF-8', $current_encode);
return $encoded_str;
}
/**
* 签名需要,递归处理子数组中Int型数字转换成字符串
......
......@@ -3,22 +3,62 @@
namespace App\Http\Controllers\Release;
use App\Helper\Response;
use App\Jobs\HandleAlbumStatus;
use Illuminate\Http\Request;
class WorkController extends BaseController
{
/**
* 专辑列表
* 上传文件
* @param Request $request
* @return \Illuminate\Http\JsonResponse|mixed
* @throws \GuzzleHttp\Exception\GuzzleException
*/
public function albumList(Request $request)
public function Upload(Request $request)
{
//todo:参数验证
// dd(basename($request->getRequestUri()));
return $this->doApi('album-list');
return $this->doApi('content/upload',$request->all());
}
/**
* @param Request $request
*/
public function albumOnline(Request $request)
{
return $this->doApi('content/commitContent',$request->all());
}
/**
* @param Request $request
*/
public function singerQuery(Request $request)
{
return $this->doApi('content/searchSinger',$request->all());
}
/**
* @param Request $request
*/
public function singerCreate(Request $request)
{
return $this->doApi('content/createSinger',$request->all());
}
/**
* @param Request $request
*/
public function originalCompanyQuery(Request $request)
{
return $this->doApi('content/queryOriginalCopyrightCompanyList',$request->all());
}
/**
* @param Request $request
*/
public function releasedAlbumQuery(Request $request)
{
return $this->doApi('content/queryComitResult',$request->all());
}
}
......
......@@ -114,6 +114,7 @@ return [
'bills_confirm' => 'serial:#serial_no#',
'bills_settle_no' => 'bills:settle:no',
'districts' => 'districts',
'tme_access_token' => 'tme_access_token'
]
];
......
<?php
return [
'originalCompayName' => '海葵测试艺人02',//艺人名
];
<?php
return [
'singer_name' => '海葵测试艺人02',//艺人名
'trans_name' => '测试艺人02',//艺人翻译名
'area' => 1,//艺人活跃地区 int 0 港台; 1 内地; 2 日韩; 3 欧美; 4 其他; 5 东南亚; 6 未知;
'type' => 0,//艺人类型 int 0: 男; 1: 女; 2: 组合; 3: 虚拟; 4: 其他;
'singer_desc' => '海葵测试艺人02-简介',//艺人简介
'singer_photo_list' => [
['name'=>'图片1','url'=>'https://legal-test-1305250541.cos.ap-shanghai.myqcloud.com/avatar/1.jpg?q-sign-algorithm=sha1&q-ak=AKID5jPFknzXggeaZJa8BRSrJkUsmdR_jI_q3wDmCrNYqVqDmWslGZr2V5keF5OAMWz8&q-sign-time=1640333074;1640336674&q-key-time=1640333074;1640336674&q-header-list=host&q-url-param-list=&q-signature=cf30ec91b4b7cd0fbd98b3df8f39500d717af342&x-cos-security-token=FH5uhvOyDD26khjUB4X1GT4jZ12zRJQa1eda327b05ff3fe0c6029e2d4f8ed12fmWdBhvHtbIE0A3NvbXiGS6-dT2KJd2Wo0yCAdHwnVJ44W2rB5r91rC-fXY9PYmEP9_4D342k8G97U93zHbXzoJJVSayH8WgwCeFDPKBc_SxBOV5dLzf04EYkhBbqWSKwKnWR5TwGx2zuuf4ho8uNQnQLTDvbsPUC29zCbvnam0i_y5fcyKz9URQeasyhgRxr']
]//艺人图片
];
\ No newline at end of file
<?php
return [
'albumId' => 123,//专辑ID
];
<?php
return [
'originalCompayName' => '一寸光年',//艺人名
];
<?php
return [
'singerName' => '王',//艺人名
];
<?php
return [
'url' => '海葵测试艺人02',
'type' => 0, //文件类型: 0:图片 1:授权文件 2:音频 3:歌词 4:视频
'fileName' => '文件名称',
'md5'=>''
];
......@@ -21,12 +21,15 @@ Route::get('/',function(){
*/
Route::group(['middleware'=>'throttle:60,1','prefix'=> 'tme'], function (){
Route::post('album-list','WorkController@albumList'); //搜索歌手接口
Route::post('submit-tme','WorkController@submitTme'); //上传接口
Route::post('sign-subject','WorkController@signSubject'); //查询原始版权方接口
Route::post('get-album','WorkController@getAlbum'); //提交发行接口
Route::post('create-shower','WorkController@createShower'); //查询发行的歌曲tmeId列表接口
// 提交发行接口
Route::post('upload','WorkController@Upload'); //上传接口
Route::post('album_online','WorkController@albumOnline'); //提交发行接口
Route::post('singer_query','WorkController@singerQuery'); //搜索歌手接口
Route::post('singer_create','WorkController@singerCreate'); //创建歌手接口
Route::post('original_company_query','WorkController@originalCompanyQuery'); //查询原始版权方接口
// 发行后接口
Route::post('released_album_query','WorkController@releasedAlbumQuery'); //查询发行的歌曲tmeId列表接口
});
......