Commit c51fe832 c51fe832386eb72cf91ff7fb5eb24c15ac56253f by lemon

文件类型

1 parent 176ab1e2
......@@ -37,6 +37,9 @@ class ErrorCode
const MISSING_PARAMS = 41000;
const URL_FAIL = 42000;
const URL_CHECK_FAIL = 42001;
const URL_EXPIRE = 42002;
const URL_TOKEN_FAIL = 42003;
/**
......@@ -71,7 +74,11 @@ class ErrorCode
self::INVALID_TIMESTAMP => '时间戳timestamp已失效',
self::INVALID_NONCE => '重复的nonce',
self::MISSING_PARAMS => '缺少必填参数',
self::URL_CHECK_FAIL => '验证失败',
self::URL_FAIL => '链接不存在',
self::URL_CHECK_FAIL => '链接验证失败',
self::URL_EXPIRE => '链接已失效',
self::URL_TOKEN_FAIL => 'TOKEN失效',
];
......
......@@ -5,6 +5,7 @@ namespace App\Http\Middleware;
use App\Helper\AesEncrypt;
use App\Helper\ErrorCode;
use App\Helper\Identifier;
use App\Helper\RedisClient;
use App\Helper\Response;
use App\Helper\Snowflake;
use App\Models\Legal\Stakeholder;
......@@ -31,8 +32,17 @@ class AuthShare
{
//增加额外属性
$request->attributes->add(['request_id' => Snowflake::gen(),]);
$token = $request->header('token');
$info = RedisClient::instance()->get($token);
//验证token
if (is_null($info)) return Response::error(ErrorCode::URL_TOKEN_FAIL);
$info = json_decode($info, true);
foreach ($info as $key=>$value) {
$request->offsetSet($key, $value);
}
return $next($request);
}
......
......@@ -7,4 +7,8 @@ use Illuminate\Database\Eloquent\Model;
class PropertyFileType extends BaseModel
{
public $hidden = [
'id', 'visible', 'type', 'created_at'
];
}
......
......@@ -7,6 +7,7 @@ use App\Helper\ErrorCode;
use App\Helper\RedisClient;
use App\Helper\Response;
use App\Models\Legal\Contract;
use App\Models\Legal\PropertyFileType;
use App\Models\Legal\PropertyShare;
use App\Models\Legal\PropertyShareVerification;
use App\Models\Legal\PropertyTrack;
......@@ -55,7 +56,6 @@ class PropertyTrackService extends Service
*/
public function show()
{
$data = [];
//详情
......@@ -182,9 +182,11 @@ class PropertyTrackService extends Service
{
$url = $this->request->input('url');
if (!$res = PropertyShare::query()->where(['share_url_hash'=>crc64($url), 'from'=>$this->request->input('from')])->where('expire_time', '<=', $this->now)->first()) {
if (!$res = PropertyShare::withTrashed()->where(['share_url_hash'=>crc64($url), 'from'=>$this->request->input('from')])->where('expire_time', '<=', $this->now)->first()) {
return Response::error(ErrorCode::URL_CHECK_FAIL);
}
if (!is_null($res->deleted_at)) return Response::error(ErrorCode::URL_CHECK_FAIL);
//验证成功 - 生成token
$info = [
......@@ -196,4 +198,44 @@ class PropertyTrackService extends Service
RedisClient::instance()->set($token, json_encode($info), 'EX', 86400);
return Response::success(['token'=>$token]);
}
/**
* @return \Illuminate\Http\JsonResponse
*/
public function shareShow()
{
$data = [];
//详情
if ($track = PropertyTrack::query()->with('project:id,name')->where(['id'=>$this->request->get('track_id'), 'from'=>1])->first()) {
$user = AppCompany::query()->where(['company_id'=>$track->create_admin])->first();
$track->setAttribute('submit_name', $user ? $user->company_name : '');
$data = $track;
}
return Response::success($data);
}
/**
* 歌曲上传文件列表
* @return \Illuminate\Http\JsonResponse
*/
public function shareFile()
{
$trackFiles = PropertyTrackFile::query()->with('ptfTypes.type:id,type_name,remark')->where(['pt_id'=>$this->request->get('track_id')])
->paginate($this->pageSize);
return Response::success($trackFiles);
}
/**
* 歌曲上传文件列表
* @return \Illuminate\Http\JsonResponse
*/
public function shareFileType()
{
$res = PropertyFileType::query()->where(['type'=>'track', 'visible'=>1])->orderBy('id')->get();
return Response::success($res);
}
}
......
......@@ -25,12 +25,15 @@ Route::group(["prefix"=>"property"], function (){
Route::get('/track/share', 'PropertyTrackController@share');
Route::get('/track/shareCheck', 'PropertyTrackController@shareCheck');
Route::get('/track/shareUser', 'PropertyTrackController@shareUser');
Route::get('/track/shareFileType', 'PropertyTrackController@shareFileType');
});
//资产-分享链接
Route::group(["prefix"=>"property", "middleware"=>['auth.share']], function (){
Route::get('/track/shareShow', 'PropertyTrackController@shareShow');
});
......