Commit 37d7e612 37d7e612ffa96fd22f0b9be3a544226dba5b4648 by Yang.Zhang

阶段备份提交

1 parent 10e23b8a
......@@ -14,3 +14,4 @@ yarn-error.log
/.idea
/.vscode
/database/icms/*.resp
/database/icms/*.notify
......
......@@ -13,7 +13,8 @@ class BaseController extends Controller
* 基础变量
* @var string
*/
private $domain, $cp_id, $key;
protected $domain, $cp_id;
private $key;
public function __construct()
{
......@@ -44,13 +45,11 @@ class BaseController extends Controller
/**
* 获取签名和去空的参数
* @param array $array
* @param int $timestamp
* @return array
*/
private function signData(array $array, int $timestamp)
protected function signData(array $array)
{
$common_params = [
'timestamp' => $timestamp,
'cp_id' => $this->cp_id
];
$param_arr = array_merge($common_params,$array);
......@@ -88,8 +87,8 @@ class BaseController extends Controller
} else {
$params = $reqData;
}
$timestamp = time();
return $this->signData($params,$timestamp);
$params['timestamp'] = time();
return $this->signData($params);
}
/**
......@@ -115,18 +114,14 @@ class BaseController extends Controller
$response = $client->request('POST', $url, ['json' => $data]);
break;
}
$data = json_decode($response->getBody()->getContents(), true);
Log::channel('api')->info(__METHOD__, $data);
if (200 !== $data['code']) {
return Response::error(-1,$data['msg'] ?? '操作失败');
$respArr = json_decode($response->getBody()->getContents(), true);
Log::channel('api')->info(__METHOD__, $respArr);
if (200 !== $respArr['code']) {
return Response::error(-1,$respArr['msg'] ?? '操作失败');
} else {
$response_path = 'Icms/'.$uri;
if (! is_dir($response_path)) {
@mkdir($response_path,'0777');
}
$response_file = database_path($response_path.'.resp');
file_put_contents($response_file, var_export($data['data'],true));
return Response::success($data['data']);
$response_file = database_path('icms/' . $uri . '.resp');
file_put_contents($response_file, var_export($respArr['data'],true));
return Response::success($respArr['data']);
}
} catch (\Exception $e) {
Log::channel('api')->error(__METHOD__, ['msg'=>$e->getMessage()]);
......
......@@ -2,6 +2,8 @@
namespace App\Http\Controllers\Icms;
use App\Helper\Response;
use App\Jobs\HandleAlbumStatus;
use Illuminate\Http\Request;
class WorkController extends BaseController
......@@ -28,7 +30,7 @@ class WorkController extends BaseController
public function submitTme(Request $request)
{
//todo:参数验证
return $this->doApi('save-album');
return $this->doApi('submit-tme');
}
/**
......@@ -137,4 +139,28 @@ class WorkController extends BaseController
//todo:参数验证
return $this->doApi('sign-subject');
}
/**
* 异步通知专辑上架信息(队列处理)
* @param Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function albumStatus(Request $request)
{
$callData = $request->only(['album_id','tme_album_id','album_status','song_id','timestamp']);
$callSign = $request->post('sign');
$callCpId = $request->post('cp_id');
if ($callCpId !== $this->cp_id) {
return Response::error(40001,'没有请求权限!');
}
//验签
$signData = $this->signData($callData);
if ($callSign !== $signData['sign']) {
return Response::error(40003,'签名鉴权未通过!');
}
//入队批量处理业务(暂时只保存请求数据)
HandleAlbumStatus::dispatch($callData)->onQueue('handle-album-status');
return response()->json(['code' => 200,'data' => true,'message' => 'OK']);
}
}
......
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
class HandleAlbumStatus implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
private $callData = [];
/**
* Create a new job instance.
* @param array $callData
* @return void
*/
public function __construct(array $callData)
{
$this->callData = $callData;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
//php artisan queue:work --queue=handle-album-status --tries=3 --sleep=3
$response_file = database_path('icms/album-status.notify');
file_put_contents($response_file,
'======接收回调数据在'.date('Y-m-n H:i:s').'======'. PHP_EOL
.var_export($this->callData,true). PHP_EOL,FILE_APPEND);
}
/**
* @param null $exception
*/
public function fail($exception = null)
{
//todo: Artisan创建任务失败记录表
}
}
<?php
return [
'id' => '',
'id' => 37968,
'album_name' => '海葵测试专辑01',//专辑名
'tran_name' => '测试专辑01',//翻译名称
'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 [
'album_type' => 17,//专辑类型ID int
'region' => 18,//地区 int 17: "港台"; 18: "内地"; 19: "日韩"; 20: "欧美"; 21: "其他"; 22: "东南亚"; 23: "未知";
'language' => '0,1',//语言 string,多种语言逗号分割
'album_genre' => '1|2',//专辑流派 string 单竖杠分割
'album_genre' => 'Children\'s|Country',//专辑流派 string 单竖杠分割
'album_upc' => '',//专辑UPC
'version' => '1.0',//专辑版本
'brand_company' => '',//外显厂牌公司
......@@ -24,7 +24,7 @@ return [
'signsubject_id' => 1,//签约主体ID
'song_list' => [
[
'id' => 0,
'id' => 100,
'external_id' => '',//外部歌曲ID - 海葵歌曲ID?
'name' => '想',//歌曲名
'subtitle' => '',//副标题
......
......@@ -13,15 +13,17 @@ use Illuminate\Support\Facades\Route;
|
*/
Route::group(['middleware'=>'throttle:100,1'], function (){
Route::group(['middleware'=>'throttle:60,1'], function (){
Route::get('/',function(){
return 'Welcome To ICMS !!';
});
/**
* 主动请求
*/
Route::post('album-list','WorkController@albumList'); //专辑列表
Route::post('submit-tme','WorkController@submitTme'); //专辑上线
Route::post('get-album','WorkController@getAlbum'); //获取专辑详情
// Route::post('del-album','WorkController@delAlbum'); //删除专辑草稿
Route::post('create-shower','WorkController@createShower'); //艺人创建
Route::post('shower-list','WorkController@showerList'); //艺人查询
Route::post('get-leaders','WorkController@getLeaders'); //查询候选负责人
......@@ -30,4 +32,8 @@ use Illuminate\Support\Facades\Route;
Route::post('work-file','WorkController@workFile'); //作品录入文件上传
Route::post('sign-subject','WorkController@signSubject'); //获取授权主体列表
});
/**
* 回调通知接收
*/
Route::post('notify-album-status','WorkController@albumStatus');
});
......