xielin 5 år sedan
förälder
incheckning
2a8c7dc979

+ 54 - 0
app/Http/Controllers/V1/PostController.php

@@ -0,0 +1,54 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: Administrator
+ * Date: 2019/6/14
+ * Time: 16:23
+ */
+
+namespace App\Http\Controllers\V1;
+
+use App\Repositories\PostRepositories;
+use App\Transformers\Post\SuggestTransformer;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Log;
+use Illuminate\Support\Facades\Validator;
+use Illuminate\Validation\Rule;
+use League\Fractal\Manager;
+use League\Fractal\Pagination\IlluminatePaginatorAdapter;
+use League\Fractal\Resource\Collection;
+use League\Fractal\Resource\Item;
+
+class PostController extends Controller
+{
+
+    public function __construct(PostRepositories $postRepositories)
+    {
+        $this->postRepositories = $postRepositories;
+    }
+
+    /**
+     * 推荐内容列表
+     */
+    public function suggestPost(Request $request)
+    {
+        $param = $request->all();
+        $purchaseList = $this->postRepositories->suggestPost($param);
+        $fractal = new Manager();
+        $resource = new Collection($purchaseList, new SuggestTransformer());
+        $resource->setPaginator(new IlluminatePaginatorAdapter($purchaseList));
+        $data = $fractal->createData($resource)->toArray();
+
+        if(!(isset($param['current_page']) && $param['current_page'] > 1)){
+            $newData = [];
+            foreach($data['data'] as $key => $val){
+                $newData[] = $val;
+                if($key == 3){
+                    $newData[] = ['type' => 1];
+                }
+            }
+            $data['data'] = $newData;
+        }
+        return jsonSuccess($data);
+    }
+}

app/Behavior.php → app/Models/Behavior.php


app/BindPhoneRecord.php → app/Models/BindPhoneRecord.php


app/BindWxRecord.php → app/Models/BindWxRecord.php


app/CommentAccountRecord.php → app/Models/CommentAccountRecord.php


+ 4 - 10
app/Feed.php

@@ -1,22 +1,16 @@
 <?php
 <?php
 /**
 /**
  * Created by PhpStorm.
  * Created by PhpStorm.
- * User: wangzhiqiang
- * Date: 2019/4/24
- * Time: 15:21
+ * User: Administrator
+ * Date: 2019/6/15
+ * Time: 13:35
  */
  */
-
 namespace App\Models;
 namespace App\Models;
-
 use Illuminate\Database\Eloquent\Model;
 use Illuminate\Database\Eloquent\Model;
-use Illuminate\Database\Eloquent\SoftDeletes;
 
 
 class Feed extends Model
 class Feed extends Model
 {
 {
-    //
-    use SoftDeletes;
+//
     protected $table = 'feed';
     protected $table = 'feed';
     protected $guarded = [];
     protected $guarded = [];
-
-
 }
 }

app/GeneralLedgerRecord.php → app/Models/GeneralLedgerRecord.php


+ 35 - 0
app/Models/Post.php

@@ -0,0 +1,35 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: Administrator
+ * Date: 2019/6/5
+ * Time: 16:24
+ */
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\SoftDeletes;
+
+class Post extends Model
+{
+    //
+    use SoftDeletes;
+    protected $table = 'post';
+    protected $guarded = [];
+
+    public function imgs()
+    {
+        return $this->hasMany('App\Models\PostImgs', 'post_id', 'id');
+    }
+
+    public function data()
+    {
+        return $this->hasOne('App\Models\PostData', 'post_id', 'id');
+    }
+
+    public function topic()
+    {
+        return Topic::whereIn('id', explode(',', $this->topic_ids))->pluck('name', 'id');
+    }
+
+}

+ 4 - 10
app/PostCollect.php

@@ -1,22 +1,16 @@
 <?php
 <?php
 /**
 /**
  * Created by PhpStorm.
  * Created by PhpStorm.
- * User: wangzhiqiang
- * Date: 2019/4/24
- * Time: 15:21
+ * User: Administrator
+ * Date: 2019/6/15
+ * Time: 13:35
  */
  */
-
 namespace App\Models;
 namespace App\Models;
-
 use Illuminate\Database\Eloquent\Model;
 use Illuminate\Database\Eloquent\Model;
-use Illuminate\Database\Eloquent\SoftDeletes;
 
 
 class PostCollect extends Model
 class PostCollect extends Model
 {
 {
-    //
-    use SoftDeletes;
+//
     protected $table = 'post_collect';
     protected $table = 'post_collect';
     protected $guarded = [];
     protected $guarded = [];
-
-
 }
 }

+ 17 - 0
app/Models/PostComment.php

@@ -0,0 +1,17 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: Administrator
+ * Date: 2019/6/6
+ * Time: 11:21
+ */
+
+namespace App\Models;
+use Illuminate\Database\Eloquent\Model;
+
+class PostComment extends Model
+{
+//
+    protected $table = 'post_comment';
+    protected $guarded = [];
+}

+ 4 - 9
app/PostData.php

@@ -1,22 +1,17 @@
 <?php
 <?php
 /**
 /**
  * Created by PhpStorm.
  * Created by PhpStorm.
- * User: wangzhiqiang
- * Date: 2019/4/24
- * Time: 15:21
+ * User: Administrator
+ * Date: 2019/6/6
+ * Time: 11:21
  */
  */
 
 
 namespace App\Models;
 namespace App\Models;
-
 use Illuminate\Database\Eloquent\Model;
 use Illuminate\Database\Eloquent\Model;
-use Illuminate\Database\Eloquent\SoftDeletes;
 
 
 class PostData extends Model
 class PostData extends Model
 {
 {
-    //
-    use SoftDeletes;
+//
     protected $table = 'post_data';
     protected $table = 'post_data';
     protected $guarded = [];
     protected $guarded = [];
-
-
 }
 }

+ 6 - 9
app/Post.php

@@ -1,22 +1,19 @@
 <?php
 <?php
 /**
 /**
  * Created by PhpStorm.
  * Created by PhpStorm.
- * User: wangzhiqiang
- * Date: 2019/4/24
- * Time: 15:21
+ * User: Administrator
+ * Date: 2019/6/6
+ * Time: 11:21
  */
  */
 
 
 namespace App\Models;
 namespace App\Models;
-
 use Illuminate\Database\Eloquent\Model;
 use Illuminate\Database\Eloquent\Model;
 use Illuminate\Database\Eloquent\SoftDeletes;
 use Illuminate\Database\Eloquent\SoftDeletes;
 
 
-class Post extends Model
+class PostImgs extends Model
 {
 {
-    //
+//
     use SoftDeletes;
     use SoftDeletes;
-    protected $table = 'post';
+    protected $table = 'post_imgs';
     protected $guarded = [];
     protected $guarded = [];
-
-
 }
 }

+ 4 - 10
app/PostLike.php

@@ -1,22 +1,16 @@
 <?php
 <?php
 /**
 /**
  * Created by PhpStorm.
  * Created by PhpStorm.
- * User: wangzhiqiang
- * Date: 2019/4/24
- * Time: 15:21
+ * User: Administrator
+ * Date: 2019/6/15
+ * Time: 13:35
  */
  */
-
 namespace App\Models;
 namespace App\Models;
-
 use Illuminate\Database\Eloquent\Model;
 use Illuminate\Database\Eloquent\Model;
-use Illuminate\Database\Eloquent\SoftDeletes;
 
 
 class PostLike extends Model
 class PostLike extends Model
 {
 {
-    //
-    use SoftDeletes;
+//
     protected $table = 'post_like';
     protected $table = 'post_like';
     protected $guarded = [];
     protected $guarded = [];
-
-
 }
 }

app/RegisteredAccountsRecord.php → app/Models/RegisteredAccountsRecord.php


app/ReleaseRecord.php → app/Models/ReleaseRecord.php


+ 18 - 0
app/Models/Topic.php

@@ -0,0 +1,18 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: Administrator
+ * Date: 2019/6/6
+ * Time: 11:21
+ */
+
+namespace App\Models;
+use Illuminate\Database\Eloquent\Model;
+
+class Topic extends Model
+{
+    //
+    protected $table = 'topic';
+    protected $guarded = [];
+
+}

+ 69 - 1
app/Repositories/PostRepositories.php

@@ -10,6 +10,7 @@ namespace App\Repositories;
 
 
 
 
 use App\Models\Behavior;
 use App\Models\Behavior;
+use App\Models\Post;
 use App\Models\PostCollect;
 use App\Models\PostCollect;
 use App\Models\PostData;
 use App\Models\PostData;
 use App\Models\PostLike;
 use App\Models\PostLike;
@@ -18,8 +19,75 @@ use Illuminate\Support\Facades\Redis;
 
 
 class PostRepositories
 class PostRepositories
 {
 {
-    public function __construct()
+    public function __construct(Post $post)
     {
     {
+        $this->post = $post;
+    }
+
+    /**
+     * 推荐内容列表
+     */
+    public function suggestPost($request)
+    {
+        $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
+        $where = [];
+        if(isset($request['content'])){
+            $where[] = ['content', 'like', "%{$request['content']}%"];
+        }
+        if(isset($request['is_suggest'])){
+            $where[] = ['is_suggest', $request['is_suggest']];
+        }
+        if(isset($request['type'])){
+            $where[] = ['type', $request['type']];
+        }
+
+        if(isset($request['uid'])){
+            $where[] = ['uid', $request['uid']];
+        }
+
+        $sort = 'post.id';
+        if(isset($request['sort']) && in_array($request['sort'], ['praise_count', 'share_count', 'pv', 'comment_count', 'create_bean'])){
+            $sort = $request['sort'];
+        }
+
+        return $this->post
+            ->join('post_data', 'post_data.post_id', '=', 'post.id')
+            ->select('post.*')
+            ->where($where)
+            ->where(function($query) use ($request){
+                if(isset($request['keyword'])){
+                    $query->where('uid', '=', $request['keyword'])
+                        ->orWhere('username', 'like', "%{$request['keyword']}%")
+                        ->orWhere('mobile', 'like', "%{$request['keyword']}%");
+                }
+            })
+            ->where(function($query) use ($request){
+                if(isset($request['created_at'])){
+                    $time = explode('_', $request['created_at']);
+                    $query->whereBetween('post.created_at', $time);
+                }
+            })
+            ->where(function ($query) use ($request){
+                if(isset($request['category_ids']) || isset($request['topic_ids'])){
+                    $ids = [];
+                    if (isset($request['category_ids'])) {
+                        $categoryIds = explode('_', $request['category_ids']);
+                        $ids = $this->categoryTopic->whereIn('category_id', $categoryIds)->pluck('topic_id')->toArray();
+                    }
+                    if (isset($request['topic_ids'])) {
+                        $ids = array_merge($ids, explode('_', $request['topic_ids']));
+                    }
+                    foreach ($ids as $key=>$id) {
+                        if ($key==0) {
+                            $query = $query->whereRaw('FIND_IN_SET('.$id.',topic_ids)');
+                        } else {
+                            $query = $query->orWhereRaw('FIND_IN_SET('.$id.',topic_ids)');
+                        }
+                    }
+                }
+            })
+            ->orderBy($sort,'desc')
+            ->paginate($perPage);
     }
     }
 
 
     /**
     /**

+ 24 - 0
app/Transformers/Post/SuggestTransformer.php

@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * Created by PhpStorm.
+ * User: Administrator
+ * Date: 2019/6/15
+ * Time: 11:07
+ */
+namespace  App\Transformers\Post;
+
+use App\Models\Post;
+use Carbon\Carbon;
+use League\Fractal\TransformerAbstract;
+
+class SuggestTransformer extends TransformerAbstract
+{
+    public function transform(Post $post)
+    {
+        return [
+            'type' => 0,
+            'id' => $post['id'],
+        ];
+    }
+}

+ 4 - 2
routes/api.php

@@ -19,8 +19,10 @@ $api->version('v1', [
     //根据行为标识查询行为
     //根据行为标识查询行为
     $api->get('getBehaviorByIdentify', 'BehaviorController@getBehaviorByIdentify');
     $api->get('getBehaviorByIdentify', 'BehaviorController@getBehaviorByIdentify');
     //登录+验签
     //登录+验签
-    $api->group(['middleware' => ['chxq_jwt_auth', 'chxq_sign']], function ($api) {
-
+//    $api->group(['middleware' => ['chxq_jwt_auth','chxq_sign']], function ($api) {
+    $api->group(['middleware' => ['chxq_jwt_auth']], function ($api) {
+        $api->get('test', 'TestController@index');
+        $api->get('post/suggest', 'PostController@suggestPost');
     });
     });
 
 
 });
 });