123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459 |
- <?php
- namespace Api\Controller;
- use Common\Controller\ApiController;
- class ChoiceController extends ApiController {
- public function __construct(){
- parent::__construct();
- }
-
- //获取精选或社区列表
- public function index(){
- $lastId = I('last_id',0);
- $pageSize = I('page_size',20);
- $choice_type = I('choice_type',2);
- $choiceId = I('choice_id',0);
- $is_user = I('is_user',0);
- $is_delete = I('is_delete',1);
- $condition = array('t_choice.choice_status'=>3,'t_choice.is_delete'=>$is_delete);
-
- if($choice_type){
- $condition['t_choice.choice_type']=$choice_type;
- }
- if($lastId>0){
- $condition['t_choice.choice_id'] = array('LT',$lastId);
- }
- if($choiceId){
- $condition['t_choice.choice_id']=$choiceId;
- }
- if($is_user){
- $condition['t_choice.user_id']=$this->userId;
- }
- $orderby = 'choice_id desc';
- $res = M('choice')->join('left join t_user on t_user.user_id = t_choice.user_id')->join('left join (select choice_id,count(uc_id) as collect from t_user_choices group by choice_id) as a on a.choice_id = t_choice.choice_id')->join('left join (select choice_id,count(cr_id) as reply from t_choice_reply group by choice_id) as b on b.choice_id = t_choice.choice_id')->join('left join (select choice_id,count(cp_id) as praise from t_choice_praise group by choice_id) as c on c.choice_id = t_choice.choice_id')->where($condition)->order($orderby)->group('t_choice.choice_id')->field('t_choice.*,t_user.user_name,t_user.user_name,user_icon,ifnull(a.collect,0) as collect,ifnull(b.reply,0) as reply,ifnull(c.praise,0) as praise')->order('t_choice.choice_id desc')->limit('0,'.$pageSize)->select();
- /*
- if ($lastId>0){
- $data = array('code'=>0,'msg'=>'无更多数据','data'=>array());
- $this->returnData($data);exit;
- }*/
- $praiseInfo = M('choice_praise')->where(array('is_delete'=>1,'user_id'=>$this->userId))->field('choice_id')->select();
- $collectInfo = M('user_choices')->where(array('is_delete'=>1,'user_id'=>$this->userId))->field('choice_id')->select();
- $praise_arr=array();
- $collect_arr=array();
- foreach($praiseInfo as $k=>$v){
- $praise_arr[]=$v['choice_id'];
- }
- foreach($collectInfo as $k=>$v){
- $collect_arr[]=$v['choice_id'];
- }
- foreach($res as $k=>$v){
- if(in_array($v['choice_id'],$praise_arr)){
- $res[$k]['is_praise']=1;
- }else{
- $res[$k]['is_praise']=0;
- }
- if(in_array($v['choice_id'],$collect_arr)){
- $res[$k]['is_collect']=1;
- }else{
- $res[$k]['is_collect']=0;
- }
- $res[$k]['choice_content']=htmlspecialchars_decode($v['choice_content']);
- }
- $data = array('code'=>0,'msg'=>'','data'=>$res);
- $this->returnData($data);exit;
- }
-
- //获取精选或社区详情
- public function info(){
-
- $choiceId = I('choice_id',0);
-
- $condition = array();
- $condition['t_choice.choice_id']=$choiceId;
-
- $orderby = 'choice_id desc';
- $res = M('choice')->join('left join t_user on t_user.user_id = t_choice.user_id')->join('left join (select choice_id,count(uc_id) as collect from t_user_choices group by choice_id) as a on a.choice_id = t_choice.choice_id')->join('left join (select choice_id,count(cr_id) as reply from t_choice_reply group by choice_id) as b on b.choice_id = t_choice.choice_id')->join('left join (select choice_id,count(cp_id) as praise from t_choice_praise group by choice_id) as c on c.choice_id = t_choice.choice_id')->where($condition)->order($orderby)->group('t_choice.choice_id')->field('t_choice.*,t_user.user_name,t_user.user_name,user_icon,ifnull(a.collect,0) as collect,ifnull(b.reply,0) as reply,ifnull(c.praise,0) as praise')->order('t_choice.choice_id desc')->select();
- if (!count($res)){
- $data = array('code'=>1,'msg'=>'社区ID错误');
- $this->returnData($data);exit;
- }
- $praiseInfo = M('choice_praise')->where(array('is_delete'=>1,'user_id'=>$this->userId))->field('choice_id')->select();
- $collectInfo = M('user_choices')->where(array('is_delete'=>1,'user_id'=>$this->userId))->field('choice_id')->select();
- $praise_arr=array();
- $collect_arr=array();
- foreach($praiseInfo as $k=>$v){
- $praise_arr[]=$v['choice_id'];
- }
- foreach($collectInfo as $k=>$v){
- $collect_arr[]=$v['choice_id'];
- }
- foreach($res as $k=>$v){
- if(in_array($v['choice_id'],$praise_arr)){
- $res[$k]['is_praise']=1;
- }else{
- $res[$k]['is_praise']=0;
- }
- if(in_array($v['choice_id'],$collect_arr)){
- $res[$k]['is_collect']=1;
- }else{
- $res[$k]['is_collect']=0;
- }
- $res[$k]['choice_content']=htmlspecialchars_decode($v['choice_content']);
- }
- $data = array('code'=>0,'msg'=>'','data'=>$res[0]);
- $this->returnData($data);exit;
- }
-
- //删除我的社区
- public function del(){
- $choiceId = I('choice_id');
- $choiceId = rtrim($choiceId,',');
- if (empty($choiceId)){
- $data = array('code'=>1,'msg'=>'社区ID错误');
- $this->returnData($data);exit;
- }
- M('choice')->where(array('choice_id'=>array('IN',$choiceId),'user_id'=>$this->userId))->delete();
- $data = array('code'=>0,'msg'=>'社区删除成功');
- $this->returnData($data);exit;
- }
- //点赞
- public function praise(){
- $choiceId = I('choice_id');
- if (empty($choiceId)){
- $data = array('code'=>1,'msg'=>'ID错误');
- $this->returnData($data);exit;
- }
- $praiseInfo = M('choice_praise')->where(array('choice_id'=>$choiceId,'is_delete'=>1,'user_id'=>$this->userId))->field('cp_id')->find();
- if ($praiseInfo!=NULL){
- $data = array('code'=>1,'msg'=>'已经点赞过该课程');
- $this->returnData($data);exit;
- }
- $userInfo = M('user')->where(array('user_id'=>$this->userId))->field('*')->find();
- $noticeContent = $userInfo['user_name'].'点赞了您的社区!';
- $res = M('choice')->where(array('choice_id'=>$choiceId,'is_delete'=>1))->field('user_id,choice_type')->find();
- $uid=$res['user_id'];
- if($uid){
- $reply_content='';
- $temp=array('choice_id'=>$choiceId,'reply_content'=>$reply_content,'choice_type'=>$res['choice_type']);
- M('Notice')->add(array('ref_user_id'=>$uid,'user_id'=>$this->userId,'notice_flag'=>0,'notice_status'=>1,'notice_type'=>4,'notice_title'=>'点赞消息','notice_content'=>$noticeContent,'operate_dt'=>time(),'extra'=>json_encode($temp)));
- M('User')->where(array('user_id'=>$uid))->setInc('praise_notice');
- $data = json_encode(array('type'=>4,'msg'=>$noticeContent,'data'=>array('title'=>$noticeContent,'choice_id'=>$choiceId,'choice_content'=>$reply_content)));
- $this->umengPush($uid, $data);
- }
- M('choice_praise')->add(array('choice_id'=>$choiceId,'user_id'=>$this->userId,'operate_dt'=>time()));
- $data = array('code'=>0,'msg'=>'课程点赞成功');
- $this->returnData($data);exit;
- }
- //取消点赞
- public function praise_cancel(){
- $choiceId = I('choice_id');
- $choiceId = rtrim($choiceId,',');
- if (empty($choiceId)){
- $data = array('code'=>1,'msg'=>'ID错误');
- $this->returnData($data);exit;
- }
- M('choice_praise')->where(array('choice_id'=>array('IN',$choiceId),'user_id'=>$this->userId))->delete();
- $data = array('code'=>0,'msg'=>'取消点赞成功');
- $this->returnData($data);exit;
- }
- //收藏
- public function collect_add(){
- $choiceId = I('choice_id');
- if (empty($choiceId)){
- $data = array('code'=>1,'msg'=>'ID错误');
- $this->returnData($data);exit;
- }
- $collectInfo = M('user_choices')->where(array('choice_id'=>$choiceId,'is_delete'=>1,'user_id'=>$this->userId))->field('uc_id')->find();
- if ($collectInfo!=NULL){
- $data = array('code'=>1,'msg'=>'已经收藏过该课程');
- $this->returnData($data);exit;
- }
- M('user_choices')->add(array('choice_id'=>$choiceId,'user_id'=>$this->userId,'operate_dt'=>time()));
- $data = array('code'=>0,'msg'=>'课程收藏成功');
- $this->returnData($data);exit;
- }
- //取消收藏
- public function collect_cancel(){
- $choiceId = I('choice_id');
- $choiceId = rtrim($choiceId,',');
- if (empty($choiceId)){
- $data = array('code'=>1,'msg'=>'ID错误');
- $this->returnData($data);exit;
- }
- M('user_choices')->where(array('choice_id'=>array('IN',$choiceId),'user_id'=>$this->userId))->delete();
- $data = array('code'=>0,'msg'=>'取消收藏成功');
- $this->returnData($data);exit;
- }
- //收藏列表
- public function collect_list(){
- $lastId = I('last_id','');
- if(!$lastId){
- $lastId=10000000;
- }
- $pageSize = I('page_size',20);
-
- $collect = M('user_choices')->where(array('is_delete'=>1,'user_id'=>$this->userId,'uc_id'=>array('LT',$lastId)))->field('choice_id,uc_id')->order('operate_dt desc')->limit('0,'.$pageSize)->select();
-
- $arr=array();
- $arr2=array();
- foreach($collect as $k=>$v){
- $arr[]=$v['choice_id'];
- $arr2[$v['choice_id']]=$v['uc_id'];
- }
- if(!$arr){
- $data = array('code'=>0,'msg'=>'收藏列表为空','data'=>array());
- $this->returnData($data);exit;
- }
- $condition = array('t_choice.is_delete'=>1,'t_choice.choice_id'=>array('IN',implode(',',$arr)));
-
- $res = M('choice')->join('left join t_user on t_user.user_id = t_choice.user_id')->join('left join (select choice_id,count(uc_id) as collect from t_user_choices group by choice_id) as a on a.choice_id = t_choice.choice_id')->join('left join (select choice_id,count(cr_id) as reply from t_choice_reply group by choice_id) as b on b.choice_id = t_choice.choice_id')->join('left join (select choice_id,count(cp_id) as praise from t_choice_praise group by choice_id) as c on c.choice_id = t_choice.choice_id')->where($condition)->group('t_choice.choice_id')->field('t_choice.*,t_user.user_name,t_user.user_icon,ifnull(a.collect,0) as collect,ifnull(b.reply,0) as reply,ifnull(c.praise,0) as praise')->select();
- $praiseInfo = M('choice_praise')->where(array('is_delete'=>1,'user_id'=>$this->userId))->field('choice_id')->select();
- $collectInfo = M('user_choices')->where(array('is_delete'=>1,'user_id'=>$this->userId))->field('choice_id')->select();
- $praise_arr=array();
- $collect_arr=array();
- foreach($praiseInfo as $k=>$v){
- $praise_arr[]=$v['choice_id'];
- }
- foreach($collectInfo as $k=>$v){
- $collect_arr[]=$v['choice_id'];
- }
- foreach($res as $k=>$v){
- $res[$k]['uc_id']=$arr2[$v['choice_id']];
- if(in_array($v['choice_id'],$praise_arr)){
- $res[$k]['is_praise']=1;
- }else{
- $res[$k]['is_praise']=0;
- }
- if(in_array($v['choice_id'],$collect_arr)){
- $res[$k]['is_collect']=1;
- }else{
- $res[$k]['is_collect']=0;
- }
- $res[$k]['choice_content']=htmlspecialchars_decode($v['choice_content']);
- }
- $data = array('code'=>0,'msg'=>'','data'=>$res);
- $this->returnData($data);exit;
- }
- //评论列表
- public function reply_list(){
- $choiceId = I('choice_id');
- if (empty($choiceId)){
- $data = array('code'=>1,'msg'=>'精选ID错误');
- $this->returnData($data);exit;
- }
- $lastId = I('last_id','');
- if(!$lastId){
- $lastId=10000000;
- }
- $pageSize = I('page_size',20);
-
- $res = M('choice_reply')->join('left join t_user as a on a.user_id = t_choice_reply.user_id')->join('left join t_user as b on b.user_id = t_choice_reply.reply_user_id')->join('left join t_choice_reply_praise on t_choice_reply_praise.cr_id = t_choice_reply.cr_id')->where(array('t_choice_reply.is_delete'=>1,'t_choice_reply.reply_cr_id'=>0,'t_choice_reply.choice_id'=>$choiceId,'t_choice_reply.cr_id'=>array('LT',$lastId)))->group('t_choice_reply.cr_id')->field('t_choice_reply.*,a.user_name,a.user_icon,a.forbidden,b.forbidden as reply_forbidden,b.user_name as reply_user_name,count(t_choice_reply_praise.cr_id) as praise')->order('t_choice_reply.operate_dt desc')->limit('0,'.$pageSize)->select();
- $arr=array();
- foreach($res as $k=>$v){
- if(!$v['cr_id']){
- unset($res[$k]);
- }else{
- $arr[]=$v['cr_id'];
- $res[$k]['reply_list']=array();
- }
- if($v['forbidden']>time()){
- $res[$k]['is_forbidden']=1;
- }else{
- $res[$k]['is_forbidden']=0;
- }
-
- }
- if($arr){
- $res2 = M('choice_reply')->join('left join t_user as a on a.user_id = t_choice_reply.user_id')->join('left join t_user as b on b.user_id = t_choice_reply.reply_user_id')->join('left join t_choice_reply_praise on t_choice_reply_praise.cr_id = t_choice_reply.cr_id')->where("t_choice_reply.choice_id='$choiceId' and t_choice_reply.is_delete=1 and t_choice_reply.reply_cr_id in ( ".implode(',',$arr).")" )->group('t_choice_reply.cr_id')->field('t_choice_reply.*,a.user_name,a.user_icon,a.forbidden,b.user_name as reply_user_name,count(t_choice_reply_praise.cr_id) as praise')->order('t_choice_reply.operate_dt desc')->select();;
- }else{
- $res2=array();
- }
- $praiseInfo = M('choice_reply_praise')->where(array('is_delete'=>1,'user_id'=>$this->userId))->field('cr_id')->select();
-
- $praise_arr=array();
-
- foreach($praiseInfo as $k=>$v){
- $praise_arr[]=$v['cr_id'];
- }
-
- foreach($res as $k=>$v){
- foreach($res2 as $m=>$n){
- if($n['forbidden']>time()){
- $res2[$m]['is_forbidden']=1;
- }else{
- $res2[$m]['is_forbidden']=0;
- }
- if(in_array($n['cr_id'],$praise_arr)){
- $res2[$m]['is_praise']=1;
- }else{
- $res2[$m]['is_praise']=0;
- }
- if($n['reply_cr_id']==$v['cr_id']){
- array_unshift($res[$k]['reply_list'],$res2[$m]);
- }
- }
- if(in_array($v['cr_id'],$praise_arr)){
- $res[$k]['is_praise']=1;
- }else{
- $res[$k]['is_praise']=0;
- }
- }
- $data = array('code'=>0,'msg'=>'','data'=>$res);
- $this->returnData($data);exit;
- }
- //评论点赞
- public function reply_praise(){
- $cr_id = I('cr_id');
- if (empty($cr_id)){
- $data = array('code'=>1,'msg'=>'评论ID错误');
- $this->returnData($data);exit;
- }
- $replyInfo = M('choice_reply')->where(array('cr_id'=>$cr_id,'is_delete'=>1))->field('cr_id,choice_id')->find();
- if (!$replyInfo){
- $data = array('code'=>1,'msg'=>'该评论不存在');
- $this->returnData($data);exit;
- }
- $choice_reply_praise = M('choice_reply_praise')->where(array('cr_id'=>$cr_id,'is_delete'=>1,'user_id'=>$this->userId))->field('cr_id')->find();
- if ($choice_reply_praise!=NULL){
- $data = array('code'=>1,'msg'=>'已经点赞过该评论');
- $this->returnData($data);exit;
- }
- $choiceId=$replyInfo['choice_id'];
- $userInfo = M('user')->where(array('user_id'=>$this->userId))->field('*')->find();
- $noticeContent = $userInfo['user_name'].'点赞了您的评论!';
- $res = M('choice')->where(array('choice_id'=>$choiceId,'is_delete'=>1))->field('user_id,choice_type')->find();
- $uid=$res['user_id'];
- if($uid){
- $reply_content=$replyInfo['reply_content'];
- $temp=array('choice_id'=>$choiceId,'reply_content'=>$reply_content,'choice_type'=>$res['choice_type']);
- M('Notice')->add(array('ref_user_id'=>$uid,'user_id'=>$this->userId,'notice_flag'=>0,'notice_status'=>1,'notice_type'=>4,'notice_title'=>'点赞消息','notice_content'=>$noticeContent,'operate_dt'=>time(),'extra'=>json_encode($temp)));
- M('User')->where(array('user_id'=>$uid))->setInc('praise_notice');
- $data = json_encode(array('type'=>4,'msg'=>$noticeContent,'data'=>array('title'=>$noticeContent,'choice_id'=>$choiceId,'choice_content'=>$reply_content)));
- $this->umengPush($uid, $data);
- }
- M('choice_reply_praise')->add(array('cr_id'=>$cr_id,'user_id'=>$this->userId,'operate_dt'=>time()));
- $data = array('code'=>0,'msg'=>'评论点赞成功');
- $this->returnData($data);exit;
- }
- //取消评论点赞
- public function reply_praise_cancel(){
- $cr_id = I('cr_id');
- $cr_id = rtrim($cr_id,',');
- if (empty($cr_id)){
- $data = array('code'=>1,'msg'=>'ID错误');
- $this->returnData($data);exit;
- }
- M('choice_reply_praise')->where(array('cr_id'=>array('IN',$cr_id),'user_id'=>$this->userId))->delete();
- $data = array('code'=>0,'msg'=>'取消点赞成功');
- $this->returnData($data);exit;
- }
- //编辑社区内容
- public function edit(){
- $choiceId = I('choice_id','');
-
- $choiceName = I('choice_name','');
- $choice_img = I('choice_img','');
- $choice_content = I('choice_content','');
- $is_delete = I('is_delete','');
- $userInfo = M('user')->where(array('user_id'=>$this->userId))->field('*')->find();
- if($userInfo['forbidden']>time()){
- $data = array('code'=>1,'msg'=>'用户被禁言','data'=>array());
- $this->returnData($data);exit;
-
- }
-
- if (mb_strlen($choiceName,'UTF8')<2 || mb_strlen($choiceName,'UTF8')>14){
- $data = array('code'=>1,'msg'=>'社区名称2到14个汉字','data'=>array());
- $this->returnData($data);exit;
-
- }
- if ( mb_strlen($choice_content,'UTF8')>2000){
- $data = array('code'=>1,'msg'=>'社区内容限制2000个汉字','data'=>array());
- $this->returnData($data);exit;
- }
- $res = M('choice')->where(array('choice_name'=>$choiceName,'is_delete'=>1))->field('choice_id')->find();
- //新增
- if (!$choiceId && $res!=NULL){
- $data = array('code'=>1,'msg'=>'社区名称重复','data'=>array());
- $this->returnData($data);exit;
-
- }
- //更新
- if ($choiceId && $res!=NULL &&$choiceId!=$res['choice_id']){
- $data = array('code'=>1,'msg'=>'社区名称重复','data'=>array());
- $this->returnData($data);exit;
-
- }
-
- if (empty($choiceId)){
- if(!$is_delete){
- $is_delete=1;
- }
- M('choice')->add(array('user_id'=>$this->userId,'choice_source'=>2,'choice_status'=>3,'choice_type'=>1,'choice_img'=>$choice_img,'choice_content'=>$choice_content,'choice_name'=>$choiceName,'operate_dt'=>time(),'is_delete'=>$is_delete));
- }else{
- $arr=array('choice_img'=>$choice_img,'choice_content'=>$choice_content,'choice_name'=>$choiceName,'operate_dt'=>time());
- if($is_delete){
- $arr['is_delete']=$is_delete;
- }
- M('choice')->where(array('choice_id'=>$choiceId))->save($arr);
- }
- $data = array('code'=>0,'msg'=>'社区发布成功');
- $this->returnData($data);exit;
- }
- //编辑社区评论
- public function reply_edit(){
- $choiceId = I('choice_id','');
- $reply_user_id = I('reply_user_id','0');
- $reply_cr_id = I('reply_cr_id','0');
- $reply_content = I('reply_content','');
-
- $userInfo = M('user')->where(array('user_id'=>$this->userId))->field('*')->find();
- if($userInfo['forbidden']>time()){
- $data = array('code'=>1,'msg'=>'用户被禁言','data'=>array());
- $this->returnData($data);exit;
- }
- if(!$reply_content){
- $data = array('code'=>1,'msg'=>'评论内容必须','data'=>array());
- $this->returnData($data);exit;
- }
- if ( mb_strlen($reply_content,'UTF8')>140){
- $data = array('code'=>1,'msg'=>'评论内容限制140个汉字','data'=>array());
- $this->returnData($data);exit;
- }
- M('choice_reply')->add(array('choice_id'=>$choiceId,'user_id'=>$this->userId,'reply_user_id'=>$reply_user_id,'reply_cr_id'=>$reply_cr_id,'reply_content'=>$reply_content,'operate_dt'=>time()));
- $noticeContent = $userInfo['user_name'].'评论了您的社区!';
- $res = M('choice')->where(array('choice_id'=>$choiceId,'is_delete'=>1))->field('user_id,choice_type')->find();
- $uid=$res['user_id'];
- if($uid){
- $temp=array('choice_id'=>$choiceId,'reply_content'=>$reply_content,'choice_type'=>$res['choice_type']);
- M('Notice')->add(array('ref_user_id'=>$uid,'user_id'=>$this->userId,'notice_flag'=>0,'notice_status'=>1,'notice_type'=>3,'notice_title'=>'评论消息','notice_content'=>$noticeContent,'operate_dt'=>time(),'extra'=>json_encode($temp)));
- M('User')->where(array('user_id'=>$uid))->setInc('reply_notice');
- $data = json_encode(array('type'=>3,'msg'=>$noticeContent,'data'=>array('title'=>$noticeContent,'choice_id'=>$choiceId,'choice_content'=>$reply_content)));
- $this->umengPush($uid, $data);
- }
-
- $data = array('code'=>0,'msg'=>'评论发布成功');
- $this->returnData($data);exit;
- }
- //推送接口
- public function push(){
- $uid = I('uid','0');
- $data= I('data','{}');
- $temp=base64_decode($data);
- $this->umengPush($uid, $temp);
- $data = array('code'=>0,'msg'=>'推送成功');
- $this->returnData($data);exit;
- }
- //删除我的评论
- public function reply_del(){
- $cr_id = I('cr_id');
- $cr_id = rtrim($cr_id,',');
- if (empty($cr_id)){
- $data = array('code'=>1,'msg'=>'ID错误');
- $this->returnData($data);exit;
- }
- M('choice_reply')->where(array('cr_id'=>array('IN',$cr_id),'user_id'=>$this->userId))->delete();
- $data = array('code'=>0,'msg'=>'评论删除成功');
- $this->returnData($data);exit;
- }
- }
|