需求:向用户推送一条消息,怎么判断哪个用户看了,哪个用户没有看?
解决办法:数据库创建个表,用来存储用户是否查看,表字段,id,uid,pid,uid存储的是用户id,pid存储的是消息id
当用户查看消息的时候,传入当前用户id和当前消息id,存储在查看表中。
在前端请求数据的时候,根据前端传过来当前用户的uid,然后后台查询需要推送的消息,查询判断当前存储状态的表有没有这条数据。
代码:
#消息推送接口 public function index($page=1){ $uid=input('param.uid'); $data=Db::name('push') ->page($page,5) ->select(); $arr=array(); foreach ($data as $k => $v) { foreach ($v as $kk => $vv) { if ($kk=="create_time") { $onlion=Db::name('push_onlion')->where(['uid'=>$uid,'pid'=>$v['id']])->count(); //查看数据库中有么有这条数据 if (empty($onlion)) { $v['onlion']=0; }else{ $v['onlion']=1; } } } $arr[$k]=$v; // } $pg=db('push') ->count('id'); $pages=ceil($pg/5); //分页总页数,向上取整 if (empty($data)){ return json(["code"=>"0","msg"=>"成功","data"=>$data]); }else{ return json(["code"=>"0","msg"=>"成功","data"=>$arr,"pages"=>$pages]); } } #改变状态 public function onlion(){ $data=input('param.'); $stmt=Db::name('push_onlion')->where('uid','=',$data['uid'])->where('pid','=',$data['pid'])->count(); //判断数据库是否已有这条数据 if ($stmt) { return json(["code"=>"1","msg"=>"数据库已有数据"]); }elseif($menu =PushModel::create($data)){ return json(["code"=>"0","msg"=>"成功",]); } else { return json(["code"=>"1","msg"=>"失败"]); } }