| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 | <?phpnamespace app\api\controller;use app\common\controller\Api;use think\Db;/** * 圈子中心 */class Topichub extends Api{    protected $noNeedLogin = [];    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,['image']);        $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,['image']);        //圈子成员        $user_list = Db::name('topic_user')->alias('tp')            ->field('tp.user_id,user.avatar,user.nickname,user.gender,user.cityname,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;        //我是否已加入        $isjoin = Db::name('topic_user')->where(['topic_id'=>$id,'user_id'=>$this->auth->id])->find();        $info['isjoin'] = $isjoin ? 1 : 0;        $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,['image']);        $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);    }    //某个圈子里的动态列表,全部,最新,最热    //放到 topicdongtai.php里了}
 |