|
@@ -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);
|
|
|
+ }
|
|
|
+
|
|
|
+ //某个圈子里的动态列表,全部,最新,最热
|
|
|
+
|
|
|
}
|