Browse Source

圈子的基本操作

lizhen_gitee 3 years ago
parent
commit
7438352630
1 changed files with 106 additions and 1 deletions
  1. 106 1
      application/api/controller/Topichub.php

+ 106 - 1
application/api/controller/Topichub.php

@@ -9,20 +9,125 @@ use think\Db;
  */
 class Topichub extends Api
 {
-    protected $noNeedLogin = ['*'];
+    protected $noNeedLogin = ['lists','info'];
     protected $noNeedRight = ['*'];
 
 
+    //圈子广场,全部圈子
     public function lists(){
         $list = Db::name('topic_hub')->where('status',1)->order('weight desc,id desc')->autopage()->select();
         $list = list_domain_image($list,['images']);
         $this->success('success',$list);
     }
 
+    //某个圈子详情
     public function info(){
         $id = input('id',0);
         $info = Db::name('topic_hub')->where(['status'=>1,'id'=>$id])->find();
         $info = info_domain_image($info,['images']);
+
+        //圈子成员
+        $user_list = Db::name('topic_user')->alias('tp')
+            ->field('tp.user_id,user.avatar,user.nickname,user.gender,user.longitude,user.latitude')
+            ->join('user','tp.user_id = user.id','LEFT')
+            ->where('topic_id',$id)->autopage()->select();
+        $user_list = list_domain_image($user_list,['avatar']);
+
+        $info['userlist'] = $user_list;
         $this->success('success',$info);
     }
+
+    //加入某个圈子
+    public function join_topic(){
+        $id = input('topic_id',0);
+        if(empty($id)){
+            $this->error();
+        }
+
+        $check = Db::name('topic_user')->where(['user_id'=>$this->auth->id,'topic_id'=>$id])->find();
+        if($check){
+            $this->error('已经关注了此圈子');
+        }
+
+        $data = [
+            'user_id' => $this->auth->id,
+            'topic_id'=> $id,
+        ];
+
+        Db::startTrans();
+        $new_id = Db::name('topic_user')->insertGetId($data);
+        $rs = Db::name('topic_hub')->where('id',$id)->setInc('p_number');
+
+        if($new_id && $rs){
+            Db::commit();
+            $this->success();
+        }
+
+        Db::rollback();
+        $this->error('操作失败');
+    }
+    //退出某个圈子
+    public function leave_topic(){
+        $id = input('topic_id',0);
+        if(empty($id)){
+            $this->error();
+        }
+
+        $check = Db::name('topic_user')->where(['user_id'=>$this->auth->id,'topic_id'=>$id])->find();
+        if(!$check){
+            $this->error('没有关注此圈子');
+        }
+
+
+        Db::startTrans();
+        $del = Db::name('topic_user')->where(['user_id'=>$this->auth->id,'topic_id'=>$id])->delete();
+        $rs = Db::name('topic_hub')->where('id',$id)->setDec('p_number');
+
+        if($del && $rs){
+            Db::commit();
+            $this->success();
+        }
+
+        Db::rollback();
+        $this->error('操作失败');
+    }
+
+    //我的圈子列表
+    public function my_lists(){
+        $list = Db::name('topic_user')->alias('tu')
+                ->field('th.*')
+                ->join('topic_hub th','tu.topic_id = th.id','LEFT')
+                ->where(['tu.user_id' => $this->auth->id,'th.status'=>1])->order('tu.id desc,th.weight desc,th.id desc')->autopage()->select();
+        $list = list_domain_image($list,['images']);
+        $this->success('success',$list);
+    }
+
+    //热门圈子。头部圈子N个,每个圈子拿出最热的一个(评论最多的一个)
+    public function top_list(){
+        $list = Db::name('topic_hub')->field('id,name')->where(['status'=>1])->order('weight desc,p_number desc,t_number desc')->autopage()->select();
+
+        if(empty($list)){
+            $this->success('success',$list);
+        }
+
+        foreach($list as $key => $val){
+            $child = Db::name('topic_dongtai')->alias('dt')
+                ->field('dt.id,dt.content,dt.images,user.nickname')
+                ->join('user','dt.user_id = user.id','LEFT')
+                ->where('dt.topic_id',$val['id'])
+                ->order('goodnum desc')->find();
+            $child = info_domain_image($child,['images']);
+
+            if(!empty($child)){
+                $child['images'] = explode(',',$child['images'])[0];
+            }
+
+            $list[$key]['child'] = $child;
+        }
+
+        $this->success('success',$list);
+    }
+
+    //某个圈子里的动态列表,全部,最新,最热
+
 }