release
Showing
11 changed files
with
170 additions
and
37 deletions
... | @@ -49,4 +49,12 @@ class CacheKeyTools | ... | @@ -49,4 +49,12 @@ class CacheKeyTools |
49 | { | 49 | { |
50 | return config('cache.key')['districts']; | 50 | return config('cache.key')['districts']; |
51 | } | 51 | } |
52 | |||
53 | /** | ||
54 | * @return mixed | ||
55 | */ | ||
56 | public static function tmeAccessToken() | ||
57 | { | ||
58 | return config('cache.key')['tme_access_token']; | ||
59 | } | ||
52 | } | 60 | } | ... | ... |
... | @@ -2,9 +2,12 @@ | ... | @@ -2,9 +2,12 @@ |
2 | 2 | ||
3 | namespace App\Http\Controllers\Release; | 3 | namespace App\Http\Controllers\Release; |
4 | 4 | ||
5 | use App\Helper\CacheKeyTools; | ||
5 | use App\Helper\Response; | 6 | use App\Helper\Response; |
6 | use App\Http\Controllers\Controller; | 7 | use App\Http\Controllers\Controller; |
8 | use App\Models\Legal\Channel; | ||
7 | use GuzzleHttp\Client; | 9 | use GuzzleHttp\Client; |
10 | use Illuminate\Support\Facades\Cache; | ||
8 | use Illuminate\Support\Facades\Log; | 11 | use Illuminate\Support\Facades\Log; |
9 | 12 | ||
10 | class BaseController extends Controller | 13 | class BaseController extends Controller |
... | @@ -36,10 +39,12 @@ class BaseController extends Controller | ... | @@ -36,10 +39,12 @@ class BaseController extends Controller |
36 | 39 | ||
37 | $respArr = json_decode($response->getBody()->getContents(), true); | 40 | $respArr = json_decode($response->getBody()->getContents(), true); |
38 | Log::channel('api')->info(__METHOD__, $respArr); | 41 | Log::channel('api')->info(__METHOD__, $respArr); |
39 | if (200 !== $respArr['code']) { | 42 | if (0 !== (int)$respArr['code']) { |
40 | return null; | 43 | return null; |
41 | } else { | 44 | } else { |
42 | return $respArr['data']; | 45 | $res = $respArr['data']; |
46 | Cache::put(CacheKeyTools::tmeAccessToken(), $res['accessToken'], ($res['expire'] ?? 900) - 100); // 加入缓存 | ||
47 | return $res['accessToken']; | ||
43 | } | 48 | } |
44 | } catch (\Exception $e) { | 49 | } catch (\Exception $e) { |
45 | Log::channel('api')->error(__METHOD__, ['msg'=>$e->getMessage()]); | 50 | Log::channel('api')->error(__METHOD__, ['msg'=>$e->getMessage()]); |
... | @@ -75,35 +80,35 @@ class BaseController extends Controller | ... | @@ -75,35 +80,35 @@ class BaseController extends Controller |
75 | * @param bool $isLocal | 80 | * @param bool $isLocal |
76 | * @return array | 81 | * @return array |
77 | */ | 82 | */ |
78 | private function requestData(string $uri, array $reqData, bool $isLocal = true) | 83 | private function parseData(string $uri, array $reqData, bool $isLocal = true) |
79 | { | 84 | { |
85 | if (!$accessToken = Cache::get(CacheKeyTools::tmeAccessToken())) { | ||
86 | $accessToken = $this->getToken(); | ||
87 | } | ||
80 | if ($isLocal) { | 88 | if ($isLocal) { |
81 | $data_file = database_path('Release/'.$uri.'.query.php'); | 89 | $data_file = database_path('Release/'.last(explode("/",$uri)).'.query.php'); |
82 | $params = include("$data_file"); | 90 | $params = include("$data_file"); |
91 | $params['tmeBrandId'] = 105737; | ||
83 | } else { | 92 | } else { |
84 | $params = $reqData; | 93 | $params = $reqData; |
85 | } | 94 | } |
86 | $heaers['appId'] = $this->appId; | 95 | $heaers['appId'] = $this->appId; |
87 | $heaers['accessToken'] = $this->appId; | 96 | $heaers['accessToken'] = $accessToken; |
88 | $heaers['timestamp'] = (string)date('YmdHis'); | 97 | $heaers['timestamp'] = (string)date('YmdHis'); |
89 | $heaers['signMethod'] = 'md5'; | ||
90 | $heaers['sign'] = 'md5'; | ||
91 | $heaers['traceId'] = 'md5'; | 98 | $heaers['traceId'] = 'md5'; |
99 | |||
92 | return $this->signData($params); | 100 | return $this->signData($params); |
93 | } | 101 | } |
94 | 102 | ||
95 | /** | 103 | /** |
96 | * 请求接口 | 104 | * 请求接口 |
97 | * @param string $uri | ||
98 | * @param string $method | ||
99 | * @param array $reqData | ||
100 | * @return \Illuminate\Http\JsonResponse|mixed | ||
101 | * @throws \GuzzleHttp\Exception\GuzzleException | 105 | * @throws \GuzzleHttp\Exception\GuzzleException |
102 | */ | 106 | */ |
103 | protected function doApi(string $uri, array $reqData = [], string $method = 'POST') | 107 | protected function doApi(string $uri, array $reqData = [], string $method = 'POST') |
104 | { | 108 | { |
105 | $url = rtrim($this->domain,'/').'/'.$uri; | 109 | $this->getSign(); |
106 | $data = $this->requestData($uri, $reqData); | 110 | $url = rtrim($this->domain,'/').'/'.ltrim($uri,'/'); |
111 | $data = $this->parseData($uri, $reqData); | ||
107 | try { | 112 | try { |
108 | $client = new Client(['verify'=>false]); //实体公钥['verify'=>'/path/to/public.pem'] | 113 | $client = new Client(['verify'=>false]); //实体公钥['verify'=>'/path/to/public.pem'] |
109 | switch (strtoupper($method)) { | 114 | switch (strtoupper($method)) { |
... | @@ -117,7 +122,7 @@ class BaseController extends Controller | ... | @@ -117,7 +122,7 @@ class BaseController extends Controller |
117 | } | 122 | } |
118 | $respArr = json_decode($response->getBody()->getContents(), true); | 123 | $respArr = json_decode($response->getBody()->getContents(), true); |
119 | Log::channel('api')->info(__METHOD__, $respArr); | 124 | Log::channel('api')->info(__METHOD__, $respArr); |
120 | if (200 !== $respArr['code']) { | 125 | if (0 !== (int)$respArr['code']) { |
121 | return Response::error(-1,$respArr['msg'] ?? '操作失败'); | 126 | return Response::error(-1,$respArr['msg'] ?? '操作失败'); |
122 | } else { | 127 | } else { |
123 | $response_file = database_path('release/' . $uri . '.resp'); | 128 | $response_file = database_path('release/' . $uri . '.resp'); |
... | @@ -131,6 +136,70 @@ class BaseController extends Controller | ... | @@ -131,6 +136,70 @@ class BaseController extends Controller |
131 | } | 136 | } |
132 | 137 | ||
133 | 138 | ||
139 | /** | ||
140 | * 获取签名和去空的参数 | ||
141 | * @param array $array | ||
142 | * @return array | ||
143 | */ | ||
144 | protected function getSign() | ||
145 | { | ||
146 | $accessToken = $this->getToken(); | ||
147 | if (!$accessToken = Cache::get(CacheKeyTools::tmeAccessToken())) { | ||
148 | $accessToken = $this->getToken(); | ||
149 | } | ||
150 | // if ($isLocal) { | ||
151 | // $data_file = database_path('Release/'.last(explode("/",$uri)).'.query.php'); | ||
152 | // $params = include("$data_file"); | ||
153 | // } else { | ||
154 | // $params = $reqData; | ||
155 | // } | ||
156 | $heaers['appId'] = $this->appId; | ||
157 | $heaers['accessToken'] = $accessToken; | ||
158 | $heaers['timestamp'] = (string)date('YmdHis'); | ||
159 | $heaers['traceId'] = 'md5'; | ||
160 | |||
161 | $common_params = [ | ||
162 | "batchId" => "8934234012312323235", | ||
163 | "phone" => "130****0815", | ||
164 | "templateId" => "M000198", | ||
165 | "bizType"=> 1, | ||
166 | "templateVariable"=> [ | ||
167 | "titleMap"=> ["k"=>"v"], | ||
168 | "contentMap"=> ["k"=>"v"], | ||
169 | ], | ||
170 | "waterId"=> "8934234012312323234", | ||
171 | "platformType"=>"musician", | ||
172 | "tenant"=>"musician", | ||
173 | "accountId"=>6793497 | ||
174 | ]; | ||
175 | $common_params = array_merge($common_params,$heaers); | ||
176 | ksort($common_params); | ||
177 | $params = ''; | ||
178 | foreach ($common_params as $k=>$v) | ||
179 | { | ||
180 | if ('' === $v || null === $v || [] === $v) { | ||
181 | continue; | ||
182 | } | ||
183 | if (is_array($v)) { | ||
184 | $params .= $k . json_encode($this->handleSubArrayNumber($v)); | ||
185 | } else { | ||
186 | $params .= $k . $v; | ||
187 | } | ||
188 | } | ||
189 | $result = $this->str_to_utf8('appSecret' .$this->appSecret. $params); | ||
190 | echo '拼装好的utf8字符串:'.$result; | ||
191 | |||
192 | $result = md5($result); | ||
193 | echo '摘要后的sign结果(16位):' . substr(md5($result), 8, 16); | ||
194 | dd($result); | ||
195 | return $result; | ||
196 | } | ||
197 | |||
198 | function str_to_utf8($str = '') { | ||
199 | $current_encode = mb_detect_encoding($str, array("ASCII","GB2312","GBK",'BIG5','UTF-8')); | ||
200 | $encoded_str = mb_convert_encoding($str, 'UTF-8', $current_encode); | ||
201 | return $encoded_str; | ||
202 | } | ||
134 | 203 | ||
135 | /** | 204 | /** |
136 | * 签名需要,递归处理子数组中Int型数字转换成字符串 | 205 | * 签名需要,递归处理子数组中Int型数字转换成字符串 | ... | ... |
... | @@ -3,22 +3,62 @@ | ... | @@ -3,22 +3,62 @@ |
3 | namespace App\Http\Controllers\Release; | 3 | namespace App\Http\Controllers\Release; |
4 | 4 | ||
5 | use App\Helper\Response; | 5 | use App\Helper\Response; |
6 | use App\Jobs\HandleAlbumStatus; | ||
7 | use Illuminate\Http\Request; | 6 | use Illuminate\Http\Request; |
8 | 7 | ||
8 | |||
9 | class WorkController extends BaseController | 9 | class WorkController extends BaseController |
10 | { | 10 | { |
11 | /** | 11 | /** |
12 | * 专辑列表 | 12 | * 上传文件 |
13 | * @param Request $request | 13 | * @param Request $request |
14 | * @return \Illuminate\Http\JsonResponse|mixed | ||
15 | * @throws \GuzzleHttp\Exception\GuzzleException | ||
16 | */ | 14 | */ |
17 | public function albumList(Request $request) | 15 | public function Upload(Request $request) |
18 | { | 16 | { |
19 | //todo:参数验证 | ||
20 | // dd(basename($request->getRequestUri())); | 17 | // dd(basename($request->getRequestUri())); |
21 | return $this->doApi('album-list'); | 18 | return $this->doApi('content/upload',$request->all()); |
19 | } | ||
20 | |||
21 | /** | ||
22 | * @param Request $request | ||
23 | */ | ||
24 | public function albumOnline(Request $request) | ||
25 | { | ||
26 | return $this->doApi('content/commitContent',$request->all()); | ||
27 | } | ||
28 | |||
29 | /** | ||
30 | * @param Request $request | ||
31 | */ | ||
32 | public function singerQuery(Request $request) | ||
33 | { | ||
34 | return $this->doApi('content/searchSinger',$request->all()); | ||
35 | } | ||
36 | |||
37 | /** | ||
38 | * @param Request $request | ||
39 | */ | ||
40 | public function singerCreate(Request $request) | ||
41 | { | ||
42 | return $this->doApi('content/createSinger',$request->all()); | ||
22 | } | 43 | } |
23 | 44 | ||
45 | /** | ||
46 | * @param Request $request | ||
47 | */ | ||
48 | public function originalCompanyQuery(Request $request) | ||
49 | { | ||
50 | return $this->doApi('content/queryOriginalCopyrightCompanyList',$request->all()); | ||
51 | } | ||
52 | |||
53 | /** | ||
54 | * @param Request $request | ||
55 | */ | ||
56 | public function releasedAlbumQuery(Request $request) | ||
57 | { | ||
58 | return $this->doApi('content/queryComitResult',$request->all()); | ||
59 | } | ||
60 | |||
61 | |||
62 | |||
63 | |||
24 | } | 64 | } | ... | ... |
... | @@ -114,6 +114,7 @@ return [ | ... | @@ -114,6 +114,7 @@ return [ |
114 | 'bills_confirm' => 'serial:#serial_no#', | 114 | 'bills_confirm' => 'serial:#serial_no#', |
115 | 'bills_settle_no' => 'bills:settle:no', | 115 | 'bills_settle_no' => 'bills:settle:no', |
116 | 'districts' => 'districts', | 116 | 'districts' => 'districts', |
117 | 'tme_access_token' => 'tme_access_token' | ||
117 | ] | 118 | ] |
118 | 119 | ||
119 | ]; | 120 | ]; | ... | ... |
database/release/commitContent.query.php
0 → 100644
1 | <?php | ||
2 | return [ | ||
3 | 'singer_name' => '海葵测试艺人02',//艺人名 | ||
4 | 'trans_name' => '测试艺人02',//艺人翻译名 | ||
5 | 'area' => 1,//艺人活跃地区 int 0 港台; 1 内地; 2 日韩; 3 欧美; 4 其他; 5 东南亚; 6 未知; | ||
6 | 'type' => 0,//艺人类型 int 0: 男; 1: 女; 2: 组合; 3: 虚拟; 4: 其他; | ||
7 | 'singer_desc' => '海葵测试艺人02-简介',//艺人简介 | ||
8 | 'singer_photo_list' => [ | ||
9 | ['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'] | ||
10 | ]//艺人图片 | ||
11 | ]; | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
database/release/queryComitResult.query.php
0 → 100644
database/release/searchSinger.query.php
0 → 100644
database/release/upload.query.php
0 → 100644
... | @@ -21,12 +21,15 @@ Route::get('/',function(){ | ... | @@ -21,12 +21,15 @@ Route::get('/',function(){ |
21 | */ | 21 | */ |
22 | Route::group(['middleware'=>'throttle:60,1','prefix'=> 'tme'], function (){ | 22 | Route::group(['middleware'=>'throttle:60,1','prefix'=> 'tme'], function (){ |
23 | 23 | ||
24 | Route::post('album-list','WorkController@albumList'); //搜索歌手接口 | 24 | // 提交发行接口 |
25 | Route::post('submit-tme','WorkController@submitTme'); //上传接口 | 25 | Route::post('upload','WorkController@Upload'); //上传接口 |
26 | Route::post('sign-subject','WorkController@signSubject'); //查询原始版权方接口 | 26 | Route::post('album_online','WorkController@albumOnline'); //提交发行接口 |
27 | Route::post('get-album','WorkController@getAlbum'); //提交发行接口 | ||
28 | Route::post('create-shower','WorkController@createShower'); //查询发行的歌曲tmeId列表接口 | ||
29 | 27 | ||
28 | Route::post('singer_query','WorkController@singerQuery'); //搜索歌手接口 | ||
29 | Route::post('singer_create','WorkController@singerCreate'); //创建歌手接口 | ||
30 | Route::post('original_company_query','WorkController@originalCompanyQuery'); //查询原始版权方接口 | ||
30 | 31 | ||
32 | // 发行后接口 | ||
33 | Route::post('released_album_query','WorkController@releasedAlbumQuery'); //查询发行的歌曲tmeId列表接口 | ||
31 | 34 | ||
32 | }); | 35 | }); | ... | ... |
-
Please register or sign in to post a comment