Преглед на файлове

:construction: 建立文集controller

visuddhinanda преди 3 години
родител
ревизия
776c05697a
променени са 4 файла, в които са добавени 210 реда и са изтрити 1 реда
  1. 142 0
      app/Http/Controllers/CollectionController.php
  2. 44 0
      app/Http/Requests/CollectionRequest.php
  3. 22 0
      app/Http/Resources/CollectionListResource.php
  4. 2 1
      routes/api.php

+ 142 - 0
app/Http/Controllers/CollectionController.php

@@ -0,0 +1,142 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Models\Collection;
+use Illuminate\Http\Request;
+
+require_once __DIR__.'/../../../public/app/ucenter/function.php';
+
+
+class CollectionController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index(Request $request)
+    {
+        //
+                //
+		$result=false;
+		$indexCol = ['uid','title','subtitle','summary','article_list','owner','lang','updated_at','created_at'];
+		switch ($request->get('view')) {
+            case 'studio_list':
+		        $indexCol = ['owner'];
+                $table = Collection::select($indexCol)->selectRaw('count(*) as count')->where('status', 30)->groupBy('owner');
+                break;
+			case 'studio':
+				# code...
+				$table = Collection::select($indexCol)->where('owner', $_COOKIE["user_uid"]);
+				break;
+			case 'public':
+				$table = Collection::select($indexCol)->where('status', 30);
+				break;
+			default:
+				# code...
+			    return $this->error("没有查询到数据");
+				break;
+		}
+        if(isset($_GET["search"])){
+            $table = $table->where('title', 'like', $_GET["search"]."%");
+        }
+        $count = $table->count();
+        if(isset($_GET["order"]) && isset($_GET["dir"])){
+            $table = $table->orderBy($_GET["order"],$_GET["dir"]);
+        }else{
+            if($request->get('view') === 'studio_list'){
+                $table = $table->orderBy('count','desc');
+            }else{
+                $table = $table->orderBy('updated_at','desc');
+            }
+        }
+
+        if(isset($_GET["limit"])){
+            $offset = 0;
+            if(isset($_GET["offset"])){
+                $offset = $_GET["offset"];
+            }
+            $table = $table->skip($offset)->take($_GET["limit"]);
+        }
+        $result = $table->get();
+		if($result){
+            $userinfo = new \UserInfo();
+            foreach ($result as $key => $value) {
+                # code...
+                if(isset($result[$key]->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'],
+                    'avastar'=>'',
+                    'owner' => [
+                        'id'=>$value->owner,
+                        'name'=>$userinfo->getName($value->owner)['nickname'],
+                        'avastar'=>'',
+                    ]
+                ];
+            }
+			return $this->ok(["rows"=>$result,"count"=>$count]);
+		}else{
+			return $this->error("没有查询到数据");
+		}
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(Request $request)
+    {
+        //
+    }
+
+    /**
+     * Display the specified resource.
+     *
+     * @param  string  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function show($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(!empty($result->article_list)){
+				$result->article_list = \json_decode($result->article_list);
+			}
+			return $this->ok($result);
+		}else{
+			return $this->error("没有查询到数据");
+		}
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \App\Models\Collection  $collection
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, Collection $collection)
+    {
+        //
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  \App\Models\Collection  $collection
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy(Collection $collection)
+    {
+        //
+    }
+}

+ 44 - 0
app/Http/Requests/CollectionRequest.php

@@ -0,0 +1,44 @@
+<?php
+
+namespace App\Http\Requests;
+
+use Illuminate\Foundation\Http\FormRequest;
+
+class CollectionRequest extends FormRequest
+{
+    /**
+     * Determine if the user is authorized to make this request.
+     *
+     * @return bool
+     */
+    public function authorize()
+    {
+        return true;
+    }
+
+    /**
+     * Get the validation rules that apply to the request.
+     *
+     * @return array
+     */
+    public function rules()
+    {
+        return [
+            /*
+            string Id        = 1;
+            string Title     = 2;
+            string Subtitle  = 3;
+            string Summary   = 4;
+            string ArticleList   = 5;
+            repeated Tag Tags = 6;
+
+            string Lang = 51;
+            string EditorId = 52;
+            EnumPublicity Publicity = 53;
+             */
+            'id' => 'required|unique:posts',
+            'title' => 'required|max:512',
+            'subtitle' => 'nullable|max:512',
+        ];
+    }
+}

+ 22 - 0
app/Http/Resources/CollectionListResource.php

@@ -0,0 +1,22 @@
+<?php
+
+namespace App\Http\Resources;
+
+use Illuminate\Http\Resources\Json\JsonResource;
+
+class CollectionListResource extends JsonResource
+{
+    /**
+     * Transform the resource into an array.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
+     */
+    public function toArray($request)
+    {
+        return [
+            'id' => $this->uid,
+            'title' => $this->title,
+        ];
+    }
+}

+ 2 - 1
routes/api.php

@@ -15,7 +15,7 @@ use App\Http\Controllers\SentHistoryController;
 use App\Http\Controllers\PaliTextController;
 use App\Http\Controllers\ChannelController;
 use App\Http\Controllers\UserDictController;
-
+use App\Http\Controllers\CollectionController;
 
 /*
 |--------------------------------------------------------------------------
@@ -51,6 +51,7 @@ Route::group(['prefix' => 'v2'],function(){
     Route::get('palibook/{file}', function ($file) {
         return file_get_contents(public_path("app/palicanon/category/{$file}.json"));
     });
+    Route::apiResource('anthology',CollectionController::class);
 
 
 });