Browse Source

话题、分类

wzq 5 years ago
parent
commit
bb4a6a1074

+ 2 - 6
app/Http/Controllers/V1/CategoryController.php

@@ -23,13 +23,9 @@ class CategoryController extends Controller {
     }
     }
     //列表
     //列表
     public function index(Request $request) {
     public function index(Request $request) {
-        $categoryList = $this->categoryRepository->lists($request->all());
-        $fractal = new Manager();
-        $resource = new Collection($categoryList, new CategoryTransformer());
-        $resource->setPaginator(new IlluminatePaginatorAdapter($categoryList));
-        $data = $fractal->createData($resource)->toArray();
+        $data = $categoryList = $this->categoryRepository->lists($request->all());
         return jsonSuccess($data);
         return jsonSuccess($data);
-    }
+}
     //获取多个话题
     //获取多个话题
     public function getTopics(Request $request){
     public function getTopics(Request $request){
         $data = $request->only('ids');
         $data = $request->only('ids');

+ 10 - 3
app/Http/Controllers/V1/PostController.php

@@ -20,6 +20,7 @@ use App\Transformers\Post\PostTransformer;
 use App\Transformers\Post\ReplyTransformer;
 use App\Transformers\Post\ReplyTransformer;
 use App\Transformers\Post\SuggestTransformer;
 use App\Transformers\Post\SuggestTransformer;
 use App\Transformers\Post\VideoTransformer;
 use App\Transformers\Post\VideoTransformer;
+use App\Transformers\Topic\MyTopicListTransformer;
 use App\Transformers\Topic\TopicDetailTransformer;
 use App\Transformers\Topic\TopicDetailTransformer;
 use App\Transformers\Topic\TopicListTransformer;
 use App\Transformers\Topic\TopicListTransformer;
 use App\Transformers\Topic\TopicPostTransformer;
 use App\Transformers\Topic\TopicPostTransformer;
@@ -329,10 +330,16 @@ class PostController extends Controller
      */
      */
     public function topicList(Request $request)
     public function topicList(Request $request)
     {
     {
-        $list = $this->postRepositories->topicList($request->all());
         $fractal = new Manager();
         $fractal = new Manager();
-        $resource = new Collection($list, new TopicListTransformer());
-        $resource->setPaginator(new IlluminatePaginatorAdapter($list));
+        if(isset($request->category_id) && $request->category_id == -1){
+            $list = $this->postRepositories->myTopicList($request->all());
+            $resource = new Collection($list, new MyTopicListTransformer());
+            $resource->setPaginator(new IlluminatePaginatorAdapter($list));
+        }else{
+            $list = $this->postRepositories->topicList($request->all());
+            $resource = new Collection($list, new TopicListTransformer());
+            $resource->setPaginator(new IlluminatePaginatorAdapter($list));
+        }
         $data = $fractal->createData($resource)->toArray();
         $data = $fractal->createData($resource)->toArray();
 
 
         return jsonSuccess($data);
         return jsonSuccess($data);

+ 5 - 0
app/Models/MemberFollowTopic.php

@@ -12,4 +12,9 @@ use Illuminate\Database\Eloquent\Model;
 class MemberFollowTopic extends Model{
 class MemberFollowTopic extends Model{
     protected $table = 'member_follow_topic';
     protected $table = 'member_follow_topic';
     protected $guarded = [];
     protected $guarded = [];
+
+    public function topic()
+    {
+        return $this->hasOne('App\Models\Topic', 'id', 'topic_id');
+    }
 }
 }

+ 14 - 6
app/Repositories/CategoryRepository.php

@@ -20,12 +20,20 @@ class CategoryRepository {
     //列表
     //列表
     public function lists($request)
     public function lists($request)
     {
     {
-        $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
-        $where = [];
-        if(!empty($request['is_suggest'])){
-            $where[] = ['is_suggest', '=', $request['is_suggest']];
-        }
-        return $this->category->where($where)->paginate($perPage);
+        $categories =  $this->category->select('id', 'name', 'img')->limit(50)->get()->toArray();
+        $data = [
+            [
+                'id' => -2,
+                'name' => '热门',
+                'img' => config('customer.category_hot_img')
+            ],
+            [
+                'id' => -1,
+                'name' => '我的',
+                'img' => config('customer.category_my_img')
+            ]
+        ];
+        return array_merge($data, $categories);
     }
     }
     //获取多个话题
     //获取多个话题
     public function getTopics($ids){
     public function getTopics($ids){

+ 29 - 7
app/Repositories/PostRepositories.php

@@ -10,6 +10,7 @@ namespace App\Repositories;
 
 
 
 
 use App\Models\Behavior;
 use App\Models\Behavior;
+use App\Models\MemberFollowTopic;
 use App\Models\Post;
 use App\Models\Post;
 use App\Models\PostCollect;
 use App\Models\PostCollect;
 use App\Models\PostComment;
 use App\Models\PostComment;
@@ -47,6 +48,7 @@ class PostRepositories
                                 PostLog $postLog,
                                 PostLog $postLog,
                                 DetectionService $detectionService,
                                 DetectionService $detectionService,
                                 AliYunVodService $aliYunVodService,
                                 AliYunVodService $aliYunVodService,
+                                MemberFollowTopic $memberFollowTopic,
                                 Topic $topic)
                                 Topic $topic)
     {
     {
         $this->post = $post;
         $this->post = $post;
@@ -58,6 +60,7 @@ class PostRepositories
         $this->postLog = $postLog;
         $this->postLog = $postLog;
         $this->detectionService = $detectionService;
         $this->detectionService = $detectionService;
         $this->topic = $topic;
         $this->topic = $topic;
+        $this->memberFollowTopic = $memberFollowTopic;
         $this->aliYunVodService = $aliYunVodService;
         $this->aliYunVodService = $aliYunVodService;
     }
     }
 
 
@@ -485,14 +488,14 @@ class PostRepositories
         $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
         $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
 
 
         $where = [];
         $where = [];
+        $topic = $this->topic;
         if(isset($request['category_id']) && $request['category_id']){
         if(isset($request['category_id']) && $request['category_id']){
-           $topic = $this->topic->join('category_topic', 'category_topic.topic_id', '=', 'topic.id')->select('topic.*');
-           $where[] = ['category_topic.category_id', $request['category_id']];
-        }else{
-            $topic = $this->topic;
-        }
-        if(isset($request['is_suggest']) && $request['is_suggest']){
-            $where[] = ['topic.is_hot', $request['is_suggest']];
+            if($request['category_id'] == -2){
+                $where[] = ['topic.is_hot', 1];
+            }else{
+                $topic = $topic->join('category_topic', 'category_topic.topic_id', '=', 'topic.id')->select('topic.*');
+                $where[] = ['category_topic.category_id', $request['category_id']];
+            }
         }
         }
 
 
         if(isset($request['name'])){
         if(isset($request['name'])){
@@ -504,6 +507,25 @@ class PostRepositories
             ->paginate($perPage);
             ->paginate($perPage);
     }
     }
 
 
+    /**
+     * 我的话题列表
+     */
+    public function myTopicList($request)
+    {
+        $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
+
+        $uid = 0;
+        $user = $this->getUserInfo();
+        if($user){
+            $uid = $user['uid'];
+        }
+
+        return $this->memberFollowTopic
+            ->where('uid', $uid)
+            ->orderBy('id','desc')
+            ->paginate($perPage);
+    }
+
 
 
     /**
     /**
      * 更新帖子统计数量
      * 更新帖子统计数量

+ 24 - 0
app/Transformers/Topic/MyTopicListTransformer.php

@@ -0,0 +1,24 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: Administrator
+ * Date: 2019/7/31
+ * Time: 13:44
+ */
+namespace  App\Transformers\Topic;
+
+use App\Models\MemberFollowTopic;
+use League\Fractal\TransformerAbstract;
+
+class MyTopicListTransformer extends TransformerAbstract
+{
+    public function transform(MemberFollowTopic $memberFollowTopic)
+    {
+        return [
+            'id' => $memberFollowTopic['topic_id'],
+            'name' => $memberFollowTopic->topic->name,
+            'img' => $memberFollowTopic->topic->img,
+            'follow_count' => getNumber($memberFollowTopic->topic->follow->count() + $memberFollowTopic->topic->base_count),
+        ];
+    }
+}

+ 0 - 1
app/Transformers/Topic/TopicListTransformer.php

@@ -8,7 +8,6 @@
 namespace  App\Transformers\Topic;
 namespace  App\Transformers\Topic;
 
 
 use App\Models\Topic;
 use App\Models\Topic;
-use Carbon\Carbon;
 use League\Fractal\TransformerAbstract;
 use League\Fractal\TransformerAbstract;
 
 
 class TopicListTransformer extends TransformerAbstract
 class TopicListTransformer extends TransformerAbstract

+ 2 - 0
config/customer.tpl

@@ -7,4 +7,6 @@ return [
     'share_post_h5url' => '{share_post_h5url}',
     'share_post_h5url' => '{share_post_h5url}',
     'share_post_bean' => '{share_post_bean}',
     'share_post_bean' => '{share_post_bean}',
     'post_delete_image' => '{post_delete_image}',
     'post_delete_image' => '{post_delete_image}',
+    'category_hot_img' => '{category_hot_img}',
+    'category_my_img' => '{category_my_img}',
 ];
 ];