|
|
@@ -4,6 +4,8 @@ namespace App\Http\Controllers;
|
|
|
|
|
|
use App\Models\Collection;
|
|
|
use Illuminate\Http\Request;
|
|
|
+use Illuminate\Support\Str;
|
|
|
+use Illuminate\Support\Facades\Log;
|
|
|
|
|
|
require_once __DIR__.'/../../../public/app/ucenter/function.php';
|
|
|
|
|
|
@@ -19,8 +21,9 @@ class CollectionController extends Controller
|
|
|
{
|
|
|
//
|
|
|
//
|
|
|
+ $userinfo = new \UserInfo();
|
|
|
$result=false;
|
|
|
- $indexCol = ['uid','title','subtitle','summary','article_list','owner','lang','updated_at','created_at'];
|
|
|
+ $indexCol = ['uid','title','subtitle','summary','article_list','owner','status','lang','updated_at','created_at'];
|
|
|
switch ($request->get('view')) {
|
|
|
case 'studio_list':
|
|
|
$indexCol = ['owner'];
|
|
|
@@ -28,11 +31,27 @@ class CollectionController extends Controller
|
|
|
break;
|
|
|
case 'studio':
|
|
|
# code...
|
|
|
- $table = Collection::select($indexCol)->where('owner', $_COOKIE["user_uid"]);
|
|
|
+ //$table = Collection::select($indexCol)->where('owner', $_COOKIE["user_uid"]);
|
|
|
+ # 获取studio内所有channel
|
|
|
+ $user = \App\Http\Api\AuthApi::current($request);
|
|
|
+ if($user){
|
|
|
+ //判断当前用户是否有指定的studio的权限
|
|
|
+ if($user['user_uid'] === \App\Http\Api\StudioApi::getIdByName($request->get('name'))){
|
|
|
+ $table = Collection::select($indexCol)->where('owner', $user["user_uid"]);
|
|
|
+ }else{
|
|
|
+ return $this->error(__('auth.failed'));
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ return $this->error(__('auth.failed'));
|
|
|
+ }
|
|
|
break;
|
|
|
case 'public':
|
|
|
$table = Collection::select($indexCol)->where('status', 30);
|
|
|
break;
|
|
|
+ case 'public_studio':
|
|
|
+ $user = $userinfo->getUserByName($request->get('studio'));
|
|
|
+ $table = Collection::select($indexCol)->where('status', 30)->where('owner',$user['userid']);
|
|
|
+ break;
|
|
|
default:
|
|
|
# code...
|
|
|
return $this->error("没有查询到数据");
|
|
|
@@ -61,19 +80,21 @@ class CollectionController extends Controller
|
|
|
}
|
|
|
$result = $table->get();
|
|
|
if($result){
|
|
|
- $userinfo = new \UserInfo();
|
|
|
foreach ($result as $key => $value) {
|
|
|
# code...
|
|
|
- if(isset($result[$key]->article_list)){
|
|
|
+ $value->childrenNumber = count(\json_decode($value->article_list));
|
|
|
+ if(isset($value->article_list)){
|
|
|
$result[$key]->article_list = array_slice(\json_decode($value->article_list),0,4);
|
|
|
}
|
|
|
$value->studio = [
|
|
|
'id'=>$value->owner,
|
|
|
- 'name'=>$userinfo->getName($value->owner)['nickname'],
|
|
|
+ 'nickName'=>$userinfo->getName($value->owner)['nickname'],
|
|
|
+ 'studioName'=>$userinfo->getName($value->owner)['username'],
|
|
|
'avastar'=>'',
|
|
|
'owner' => [
|
|
|
'id'=>$value->owner,
|
|
|
- 'name'=>$userinfo->getName($value->owner)['nickname'],
|
|
|
+ 'nickName'=>$userinfo->getName($value->owner)['nickname'],
|
|
|
+ 'userName'=>$userinfo->getName($value->owner)['username'],
|
|
|
'avastar'=>'',
|
|
|
]
|
|
|
];
|
|
|
@@ -92,22 +113,64 @@ class CollectionController extends Controller
|
|
|
*/
|
|
|
public function store(Request $request)
|
|
|
{
|
|
|
- //
|
|
|
+ $user = \App\Http\Api\AuthApi::current($request);
|
|
|
+ if($user){
|
|
|
+ //判断当前用户是否有指定的studio的权限
|
|
|
+ if($user['user_uid'] === \App\Http\Api\StudioApi::getIdByName($request->get('studio'))){
|
|
|
+ //查询是否重复
|
|
|
+ if(Collection::where('title',$request->get('title'))->where('owner',$user['user_uid'])->exists()){
|
|
|
+ return $this->error(__('validation.exists'));
|
|
|
+ }else{
|
|
|
+ $newOne = new Collection;
|
|
|
+ $newOne->id = app('snowflake')->id();
|
|
|
+ $newOne->uid = Str::uuid();
|
|
|
+ $newOne->title = $request->get('title');
|
|
|
+ $newOne->lang = $request->get('lang');
|
|
|
+ $newOne->article_list = "[]";
|
|
|
+ $newOne->owner = $user['user_uid'];
|
|
|
+ $newOne->owner_id = $user['user_id'];
|
|
|
+ $newOne->editor_id = $user['user_id'];
|
|
|
+ $newOne->create_time = time()*1000;
|
|
|
+ $newOne->modify_time = time()*1000;
|
|
|
+ $newOne->save();
|
|
|
+ return $this->ok($newOne);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ return $this->error(__('auth.failed'));
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ return $this->error(__('auth.failed'));
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* Display the specified resource.
|
|
|
- *
|
|
|
+ * @param \Illuminate\Http\Request $request
|
|
|
* @param string $id
|
|
|
* @return \Illuminate\Http\Response
|
|
|
*/
|
|
|
- public function show($id)
|
|
|
+ public function show(Request $request,$id)
|
|
|
{
|
|
|
//
|
|
|
$indexCol = ['uid','title','subtitle','summary','article_list','owner','lang','updated_at','created_at'];
|
|
|
|
|
|
$result = Collection::select($indexCol)->where('uid', $id)->first();
|
|
|
if($result){
|
|
|
+ if($result->status<30){
|
|
|
+ //私有文章,判断权限
|
|
|
+ $user = \App\Http\Api\AuthApi::current($request);
|
|
|
+ if($user){
|
|
|
+ //判断当前用户是否有指定的studio的权限
|
|
|
+ if($user['user_uid'] !== $result->owner){
|
|
|
+ //非所有者
|
|
|
+ //TODO 判断是否协作
|
|
|
+ return $this->error(__('auth.failed'));
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ return $this->error(__('auth.failed'));
|
|
|
+ }
|
|
|
+ }
|
|
|
if(!empty($result->article_list)){
|
|
|
$result->article_list = \json_decode($result->article_list);
|
|
|
}
|
|
|
@@ -121,12 +184,38 @@ class CollectionController extends Controller
|
|
|
* Update the specified resource in storage.
|
|
|
*
|
|
|
* @param \Illuminate\Http\Request $request
|
|
|
- * @param \App\Models\Collection $collection
|
|
|
+ * @param string $id
|
|
|
* @return \Illuminate\Http\Response
|
|
|
*/
|
|
|
- public function update(Request $request, Collection $collection)
|
|
|
+ public function update(Request $request, $id)
|
|
|
{
|
|
|
//
|
|
|
+ $collection = Collection::where('uid', $id)->first();
|
|
|
+ if($collection){
|
|
|
+ //鉴权
|
|
|
+ Log::info("找到文集");
|
|
|
+ $user = \App\Http\Api\AuthApi::current($request);
|
|
|
+ if($user && $collection->owner === $user["user_uid"]){
|
|
|
+ $collection->title = $request->get('title');
|
|
|
+ $collection->subtitle = $request->get('subtitle');
|
|
|
+ $collection->summary = $request->get('summary');
|
|
|
+ $collection->article_list = \json_encode($request->get('aritcle_list')) ;
|
|
|
+ $collection->lang = $request->get('lang');
|
|
|
+ $collection->status = $request->get('status');
|
|
|
+ $collection->modify_time = time()*1000;
|
|
|
+ $collection->save();
|
|
|
+ return $this->ok($collection);
|
|
|
+ }else{
|
|
|
+ //鉴权失败
|
|
|
+ Log::info("鉴权失败");
|
|
|
+
|
|
|
+ //TODO 判断是否为协作
|
|
|
+ return $this->error(__('auth.failed'));
|
|
|
+ }
|
|
|
+
|
|
|
+ }else{
|
|
|
+ return $this->error("no recorder");
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|