Commit 37d7e612 37d7e612ffa96fd22f0b9be3a544226dba5b4648 by Yang.Zhang

阶段备份提交

1 parent 10e23b8a
...@@ -14,3 +14,4 @@ yarn-error.log ...@@ -14,3 +14,4 @@ yarn-error.log
14 /.idea 14 /.idea
15 /.vscode 15 /.vscode
16 /database/icms/*.resp 16 /database/icms/*.resp
17 /database/icms/*.notify
......
...@@ -13,7 +13,8 @@ class BaseController extends Controller ...@@ -13,7 +13,8 @@ class BaseController extends Controller
13 * 基础变量 13 * 基础变量
14 * @var string 14 * @var string
15 */ 15 */
16 private $domain, $cp_id, $key; 16 protected $domain, $cp_id;
17 private $key;
17 18
18 public function __construct() 19 public function __construct()
19 { 20 {
...@@ -44,13 +45,11 @@ class BaseController extends Controller ...@@ -44,13 +45,11 @@ class BaseController extends Controller
44 /** 45 /**
45 * 获取签名和去空的参数 46 * 获取签名和去空的参数
46 * @param array $array 47 * @param array $array
47 * @param int $timestamp
48 * @return array 48 * @return array
49 */ 49 */
50 private function signData(array $array, int $timestamp) 50 protected function signData(array $array)
51 { 51 {
52 $common_params = [ 52 $common_params = [
53 'timestamp' => $timestamp,
54 'cp_id' => $this->cp_id 53 'cp_id' => $this->cp_id
55 ]; 54 ];
56 $param_arr = array_merge($common_params,$array); 55 $param_arr = array_merge($common_params,$array);
...@@ -88,8 +87,8 @@ class BaseController extends Controller ...@@ -88,8 +87,8 @@ class BaseController extends Controller
88 } else { 87 } else {
89 $params = $reqData; 88 $params = $reqData;
90 } 89 }
91 $timestamp = time(); 90 $params['timestamp'] = time();
92 return $this->signData($params,$timestamp); 91 return $this->signData($params);
93 } 92 }
94 93
95 /** 94 /**
...@@ -115,18 +114,14 @@ class BaseController extends Controller ...@@ -115,18 +114,14 @@ class BaseController extends Controller
115 $response = $client->request('POST', $url, ['json' => $data]); 114 $response = $client->request('POST', $url, ['json' => $data]);
116 break; 115 break;
117 } 116 }
118 $data = json_decode($response->getBody()->getContents(), true); 117 $respArr = json_decode($response->getBody()->getContents(), true);
119 Log::channel('api')->info(__METHOD__, $data); 118 Log::channel('api')->info(__METHOD__, $respArr);
120 if (200 !== $data['code']) { 119 if (200 !== $respArr['code']) {
121 return Response::error(-1,$data['msg'] ?? '操作失败'); 120 return Response::error(-1,$respArr['msg'] ?? '操作失败');
122 } else { 121 } else {
123 $response_path = 'Icms/'.$uri; 122 $response_file = database_path('icms/' . $uri . '.resp');
124 if (! is_dir($response_path)) { 123 file_put_contents($response_file, var_export($respArr['data'],true));
125 @mkdir($response_path,'0777'); 124 return Response::success($respArr['data']);
126 }
127 $response_file = database_path($response_path.'.resp');
128 file_put_contents($response_file, var_export($data['data'],true));
129 return Response::success($data['data']);
130 } 125 }
131 } catch (\Exception $e) { 126 } catch (\Exception $e) {
132 Log::channel('api')->error(__METHOD__, ['msg'=>$e->getMessage()]); 127 Log::channel('api')->error(__METHOD__, ['msg'=>$e->getMessage()]);
......
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
2 2
3 namespace App\Http\Controllers\Icms; 3 namespace App\Http\Controllers\Icms;
4 4
5 use App\Helper\Response;
6 use App\Jobs\HandleAlbumStatus;
5 use Illuminate\Http\Request; 7 use Illuminate\Http\Request;
6 8
7 class WorkController extends BaseController 9 class WorkController extends BaseController
...@@ -28,7 +30,7 @@ class WorkController extends BaseController ...@@ -28,7 +30,7 @@ class WorkController extends BaseController
28 public function submitTme(Request $request) 30 public function submitTme(Request $request)
29 { 31 {
30 //todo:参数验证 32 //todo:参数验证
31 return $this->doApi('save-album'); 33 return $this->doApi('submit-tme');
32 } 34 }
33 35
34 /** 36 /**
...@@ -137,4 +139,28 @@ class WorkController extends BaseController ...@@ -137,4 +139,28 @@ class WorkController extends BaseController
137 //todo:参数验证 139 //todo:参数验证
138 return $this->doApi('sign-subject'); 140 return $this->doApi('sign-subject');
139 } 141 }
142
143 /**
144 * 异步通知专辑上架信息(队列处理)
145 * @param Request $request
146 * @return \Illuminate\Http\JsonResponse
147 */
148 public function albumStatus(Request $request)
149 {
150 $callData = $request->only(['album_id','tme_album_id','album_status','song_id','timestamp']);
151 $callSign = $request->post('sign');
152 $callCpId = $request->post('cp_id');
153 if ($callCpId !== $this->cp_id) {
154 return Response::error(40001,'没有请求权限!');
155 }
156 //验签
157 $signData = $this->signData($callData);
158 if ($callSign !== $signData['sign']) {
159 return Response::error(40003,'签名鉴权未通过!');
160 }
161
162 //入队批量处理业务(暂时只保存请求数据)
163 HandleAlbumStatus::dispatch($callData)->onQueue('handle-album-status');
164 return response()->json(['code' => 200,'data' => true,'message' => 'OK']);
165 }
140 } 166 }
......
1 <?php
2
3 namespace App\Jobs;
4
5 use Illuminate\Bus\Queueable;
6 use Illuminate\Contracts\Queue\ShouldQueue;
7 use Illuminate\Foundation\Bus\Dispatchable;
8 use Illuminate\Queue\InteractsWithQueue;
9 use Illuminate\Queue\SerializesModels;
10
11 class HandleAlbumStatus implements ShouldQueue
12 {
13 use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
14
15 private $callData = [];
16
17 /**
18 * Create a new job instance.
19 * @param array $callData
20 * @return void
21 */
22 public function __construct(array $callData)
23 {
24 $this->callData = $callData;
25 }
26
27 /**
28 * Execute the job.
29 *
30 * @return void
31 */
32 public function handle()
33 {
34 //php artisan queue:work --queue=handle-album-status --tries=3 --sleep=3
35
36 $response_file = database_path('icms/album-status.notify');
37 file_put_contents($response_file,
38 '======接收回调数据在'.date('Y-m-n H:i:s').'======'. PHP_EOL
39 .var_export($this->callData,true). PHP_EOL,FILE_APPEND);
40 }
41
42 /**
43 * @param null $exception
44 */
45 public function fail($exception = null)
46 {
47 //todo: Artisan创建任务失败记录表
48 }
49 }
1 <?php 1 <?php
2 return [ 2 return [
3 'id' => '', 3 'id' => 37968,
4 'album_name' => '海葵测试专辑01',//专辑名 4 'album_name' => '海葵测试专辑01',//专辑名
5 'tran_name' => '测试专辑01',//翻译名称 5 'tran_name' => '测试专辑01',//翻译名称
6 'album_cover' => 'https://legal-test-1305250541.cos.ap-shanghai.myqcloud.com/logo/logo.png?q-sign-algorithm=sha1&q-ak=AKIDCT_ihvi7dCVjXklSUcitkOuvzUm-40NrZw0Aljp7XOLd1XZwU4LzHqizS4WQSR8B&q-sign-time=1639989345;1639992945&q-key-time=1639989345;1639992945&q-header-list=host&q-url-param-list=&q-signature=ddbebf368aee6b4f413002a4b27c93e045b5261d&x-cos-security-token=DQxyuKoPLh59NX7U7UbmtVcdPz7iAaha854bb74d0a2ea2a0939bc0227b133da6X5zte-0TxXocfdG-GF2HIRZ3HU0iYAtmnH7EHo3ELSGGJozkOhTPe5L0e1SZh6Rjxi90Q8-e-3dQJ-GzCSyu-NJnMFjfB5rMYKxYcLAE1YCCF_Yu8S64oy6o-O9TP2HbM6ZwqPdcI8JnYpcuRys9M3Of8w4bAr87K6ghv3wjpwDVcNCAC-jp8Wu_JQjRK6tb',//专辑封面url 6 'album_cover' => 'https://legal-test-1305250541.cos.ap-shanghai.myqcloud.com/logo/logo.png?q-sign-algorithm=sha1&q-ak=AKIDCT_ihvi7dCVjXklSUcitkOuvzUm-40NrZw0Aljp7XOLd1XZwU4LzHqizS4WQSR8B&q-sign-time=1639989345;1639992945&q-key-time=1639989345;1639992945&q-header-list=host&q-url-param-list=&q-signature=ddbebf368aee6b4f413002a4b27c93e045b5261d&x-cos-security-token=DQxyuKoPLh59NX7U7UbmtVcdPz7iAaha854bb74d0a2ea2a0939bc0227b133da6X5zte-0TxXocfdG-GF2HIRZ3HU0iYAtmnH7EHo3ELSGGJozkOhTPe5L0e1SZh6Rjxi90Q8-e-3dQJ-GzCSyu-NJnMFjfB5rMYKxYcLAE1YCCF_Yu8S64oy6o-O9TP2HbM6ZwqPdcI8JnYpcuRys9M3Of8w4bAr87K6ghv3wjpwDVcNCAC-jp8Wu_JQjRK6tb',//专辑封面url
...@@ -8,7 +8,7 @@ return [ ...@@ -8,7 +8,7 @@ return [
8 'album_type' => 17,//专辑类型ID int 8 'album_type' => 17,//专辑类型ID int
9 'region' => 18,//地区 int 17: "港台"; 18: "内地"; 19: "日韩"; 20: "欧美"; 21: "其他"; 22: "东南亚"; 23: "未知"; 9 'region' => 18,//地区 int 17: "港台"; 18: "内地"; 19: "日韩"; 20: "欧美"; 21: "其他"; 22: "东南亚"; 23: "未知";
10 'language' => '0,1',//语言 string,多种语言逗号分割 10 'language' => '0,1',//语言 string,多种语言逗号分割
11 'album_genre' => '1|2',//专辑流派 string 单竖杠分割 11 'album_genre' => 'Children\'s|Country',//专辑流派 string 单竖杠分割
12 'album_upc' => '',//专辑UPC 12 'album_upc' => '',//专辑UPC
13 'version' => '1.0',//专辑版本 13 'version' => '1.0',//专辑版本
14 'brand_company' => '',//外显厂牌公司 14 'brand_company' => '',//外显厂牌公司
...@@ -24,7 +24,7 @@ return [ ...@@ -24,7 +24,7 @@ return [
24 'signsubject_id' => 1,//签约主体ID 24 'signsubject_id' => 1,//签约主体ID
25 'song_list' => [ 25 'song_list' => [
26 [ 26 [
27 'id' => 0, 27 'id' => 100,
28 'external_id' => '',//外部歌曲ID - 海葵歌曲ID? 28 'external_id' => '',//外部歌曲ID - 海葵歌曲ID?
29 'name' => '想',//歌曲名 29 'name' => '想',//歌曲名
30 'subtitle' => '',//副标题 30 'subtitle' => '',//副标题
......
...@@ -13,21 +13,27 @@ use Illuminate\Support\Facades\Route; ...@@ -13,21 +13,27 @@ use Illuminate\Support\Facades\Route;
13 | 13 |
14 */ 14 */
15 15
16 Route::group(['middleware'=>'throttle:100,1'], function (){ 16 Route::group(['middleware'=>'throttle:60,1'], function (){
17 Route::get('/',function(){ 17 Route::get('/',function(){
18 return 'Welcome To ICMS !!'; 18 return 'Welcome To ICMS !!';
19 }); 19 });
20 20
21 Route::post('album-list','WorkController@albumList'); //专辑列表 21 /**
22 Route::post('submit-tme','WorkController@submitTme'); //专辑上线 22 * 主动请求
23 Route::post('get-album','WorkController@getAlbum'); //获取专辑详情 23 */
24 // Route::post('del-album','WorkController@delAlbum'); //删除专辑草稿 24 Route::post('album-list','WorkController@albumList'); //专辑列表
25 Route::post('create-shower','WorkController@createShower'); //艺人创建 25 Route::post('submit-tme','WorkController@submitTme'); //专辑上线
26 Route::post('shower-list','WorkController@showerList'); //艺人查询 26 Route::post('get-album','WorkController@getAlbum'); //获取专辑详情
27 Route::post('get-leaders','WorkController@getLeaders'); //查询候选负责人 27 Route::post('create-shower','WorkController@createShower'); //艺人创建
28 Route::post('check-repeat','WorkController@checkRepeat'); //作品重复检测 28 Route::post('shower-list','WorkController@showerList'); //艺人查询
29 Route::post('original-company','WorkController@originalCompany'); //原始版权公司列表 29 Route::post('get-leaders','WorkController@getLeaders'); //查询候选负责人
30 Route::post('work-file','WorkController@workFile'); //作品录入文件上传 30 Route::post('check-repeat','WorkController@checkRepeat'); //作品重复检测
31 Route::post('sign-subject','WorkController@signSubject'); //获取授权主体列表 31 Route::post('original-company','WorkController@originalCompany'); //原始版权公司列表
32 Route::post('work-file','WorkController@workFile'); //作品录入文件上传
33 Route::post('sign-subject','WorkController@signSubject'); //获取授权主体列表
32 34
33 }); 35 /**
36 * 回调通知接收
37 */
38 Route::post('notify-album-status','WorkController@albumStatus');
39 });
......