Explorar el Código

Merge branch 'develop' of http://git.caihongxingqiu.net/rainbow/community-service into develop

xielin hace 5 años
padre
commit
dc1629b6ae

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

@@ -23,13 +23,9 @@ class CategoryController extends Controller {
     }
     //列表
     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);
-    }
+}
     //获取多个话题
     public function getTopics(Request $request){
         $data = $request->only('ids');

+ 11 - 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\SuggestTransformer;
 use App\Transformers\Post\VideoTransformer;
+use App\Transformers\Topic\MyTopicListTransformer;
 use App\Transformers\Topic\TopicDetailTransformer;
 use App\Transformers\Topic\TopicListTransformer;
 use App\Transformers\Topic\TopicPostTransformer;
@@ -329,10 +330,17 @@ class PostController extends Controller
      */
     public function topicList(Request $request)
     {
-        $list = $this->postRepositories->topicList($request->all());
         $fractal = new Manager();
-        $resource = new Collection($list, new TopicListTransformer());
-        $resource->setPaginator(new IlluminatePaginatorAdapter($list));
+        $param = $request->all();
+        if(isset($param['category_id']) && $param['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();
 
         return jsonSuccess($data);

+ 5 - 0
app/Models/MemberFollowTopic.php

@@ -12,4 +12,9 @@ use Illuminate\Database\Eloquent\Model;
 class MemberFollowTopic extends Model{
     protected $table = 'member_follow_topic';
     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)
     {
-        $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){

+ 6 - 3
app/Repositories/FeedRepositories.php

@@ -204,13 +204,14 @@ class FeedRepositories
         if ($followStatus) {
             $isFollow = $followStatus;
         }
+        $user = $this->userInfo($post['uid']);
         return [
             'id' => $post['id'],
             'type' => $post['type'],
             'created_at' => Carbon::parse($post['created_at'])->diffForHumans(),
             'uid' => $post['uid'],
-            'username' => $post['username'],
-            'avatar' => $post['avatar'],
+            'username' => $user['username'],
+            'avatar' => $user['avatar'],
             'topic' => $topic,
             'title' => $post['title'],
             'content' => $post['content'],
@@ -235,12 +236,14 @@ class FeedRepositories
 
     public function getPostComment($post_id)
     {
-        $comments = $this->postComment->where(['post_id' => $post_id, 'parent_id' => 0])->select('id', 'uid', 'username', 'content', 'is_delete')->orderBy('is_delete', 'asc')->orderBy('id', 'desc')->take(2)->get();
+        $comments = $this->postComment->where(['post_id' => $post_id, 'parent_id' => 0])->select('id', 'uid', 'content', 'is_delete')->orderBy('is_delete', 'asc')->orderBy('id', 'desc')->take(2)->get();
         foreach ($comments as &$comment) {
             if ($comment->is_delete) {
                 $comment->content = '该评论已被删除';
             }
             unset($comment->is_delete);
+            $user = $this->userInfo($comment->uid);
+            $comment->username = $user['username'];
         }
         return $comments;
     }

+ 3 - 3
app/Repositories/MusicRepository.php

@@ -49,7 +49,7 @@ class MusicRepository
     public function category_list($request)
     {
         $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
-        return $this->postMusicCategory->where('is_open',1)->orderBy('id', 'asc')->paginate($perPage);
+        return $this->postMusicCategory->where('is_open',1)->orderBy('sort', 'asc')->paginate($perPage);
     }
 
     public function postMusicList($request)
@@ -59,9 +59,9 @@ class MusicRepository
         $postMusicList = $this->postMusicCategoryRel
             ->join('post_music_category', 'post_music_category.id', '=', 'post_music_category_rel.music_category_id')
             ->join('post_music', 'post_music.id', '=', 'post_music_category_rel.mid')
-            ->select('post_music.*')
+            ->select('post_music.*','post_music_category_rel.sort')
             ->where(['post_music_category.id' => $request['category_id'], 'post_music_category.is_open' => 1])
-            ->orderBy('id', 'desc')
+            ->orderBy('post_music_category_rel.sort', 'asc')
             ->paginate($perPage);
 
         return $postMusicList;

+ 29 - 7
app/Repositories/PostRepositories.php

@@ -10,6 +10,7 @@ namespace App\Repositories;
 
 
 use App\Models\Behavior;
+use App\Models\MemberFollowTopic;
 use App\Models\Post;
 use App\Models\PostCollect;
 use App\Models\PostComment;
@@ -47,6 +48,7 @@ class PostRepositories
                                 PostLog $postLog,
                                 DetectionService $detectionService,
                                 AliYunVodService $aliYunVodService,
+                                MemberFollowTopic $memberFollowTopic,
                                 Topic $topic)
     {
         $this->post = $post;
@@ -58,6 +60,7 @@ class PostRepositories
         $this->postLog = $postLog;
         $this->detectionService = $detectionService;
         $this->topic = $topic;
+        $this->memberFollowTopic = $memberFollowTopic;
         $this->aliYunVodService = $aliYunVodService;
     }
 
@@ -485,14 +488,14 @@ class PostRepositories
         $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
 
         $where = [];
+        $topic = $this->topic;
         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'])){
@@ -504,6 +507,25 @@ class PostRepositories
             ->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);
+    }
+
 
     /**
      * 更新帖子统计数量

+ 2 - 2
app/Traits/UserTrait.php

@@ -47,8 +47,8 @@ trait UserTrait
             $user = [
                 'uid' => $uid,
                 'username' => '老板',
-                'avatar' => 'http://thirdwx.qlogo.cn/mmopen/vi_32/xib9XJbYEbrbYolcMteJnibzVWuLWZdV15icPQehibHv2DLRlqyxureia73m7YFrTXYfUVlNvQoBbrkZWBAribXCCiaTg/132',
-                'gender' => 1,
+                'avatar' => 'http://oss.caihongxingqiu.net/201907/1564471458_5d3ff0a231721.png?280_280',
+                'gender' => 2,
                 'invite_code' => ''
             ];
         }

+ 3 - 2
app/Transformers/FeedTransformer.php

@@ -32,12 +32,13 @@ class FeedTransformer extends TransformerAbstract {
                 unset($content->comment_id);
             }
         }
+        $user = $this->userInfo($feed['follow_uid']);
         return [
             'id' => $feed['id'],
             'uid' => $feed['uid'],
             'follow_uid' => $feed['follow_uid'],
-            'follow_username' => $feed['follow_username'],
-            'follow_avatar' => $feed['follow_avatar'],
+            'follow_username' => $user['username'],
+            'follow_avatar' => $user['avatar'],
            // 'follow_status' => $this->getFollowStatus($feed['uid'],$feed['follow_uid']),
             'type' => $feed['type'],
             'relate_id' => $feed['relate_id'],

+ 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;
 
 use App\Models\Topic;
-use Carbon\Carbon;
 use League\Fractal\TransformerAbstract;
 
 class TopicListTransformer extends TransformerAbstract

+ 2 - 0
config/customer.tpl

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

+ 2 - 2
routes/api.php

@@ -60,6 +60,8 @@ $api->version('v1', [
     $api->get('post/reply', 'PostController@replyList');
     //获取内容视频组
     $api->get('post/video/group', 'PostController@getPostVideo');
+    //获取话题
+    $api->get('topic/group', 'PostController@getTopic');
 
     //登录+验签
     $api->group(['middleware' => ['chxq_jwt_auth','chxq_sign']], function ($api) {
@@ -75,8 +77,6 @@ $api->version('v1', [
         $api->get('topicCategory', 'CategoryController@index');
         //获取话题
         $api->get('topicCategory/getTopics', 'CategoryController@getTopics');
-        //获取话题
-        $api->get('topic/group', 'PostController@getTopic');
         //话题列表
         $api->get('topic', 'PostController@topicList');
         //关注推荐话题