request->param('title', ''); $_op = $this->where('is_init',1); //通用逻辑 return parent::parentLists($_op); } public function getUserMessage($type){ $_op = $this->where('receve_id',UID); if($type == 99){ //获取未读系统消息总数 $gg_count = $this->where('receve_id',UID)->where('type',1)->where('read_status',0)->count(); //获取未读私信消息总数 $sx_count = $this->where('receve_id',UID)->where('type',0)->where('read_status',0)->count(); //获取通知类型最新5条消息 $gg_list = $this->where('receve_id',UID)->where('type',1)->where('read_status',0)->order('create_time desc,id desc')->limit(5)->select()->toArray(); //获取 $sx_list = $this->where('receve_id',UID)->where('type',0)->where('read_status',0)->order('create_time desc,id desc')->limit(5)->select()->toArray(); $reData = []; $reData['gg']['count'] = $gg_count; $reData['gg']['list'] = $gg_list; $reData['sx']['count'] = $sx_count; $reData['sx']['list'] = $sx_list; return $reData; }else if($type != 98){ $_op->where('type',$type); } $_op->order('read_status asc,create_time desc'); return parent::parentLists($_op); } /** * 读取后 * @param Model $model * @return bool|void */ public static function onAfterRead(Model $model) { //读取数据前格式化数据 if (in_array(request()->action(), ['edit', 'delete', 'status'])) { return true; } $content_id = $model->getAttr('content_id'); $receve_id = $model->getAttr('receve_id'); $send_id = $model->getAttr('send_id'); if($content_id){ $c_model = new MessageContent(); $contents = $c_model->find($content_id); $model->setAttr('title',$contents['title']); $model->setAttr('content',$contents['content']); $model->setAttr('pub_time',$contents['create_time']); } $u_model = new Manager(); if($receve_id>0){ $receve_user = $u_model->find($receve_id)->toArray(); if($receve_user){ $model->setAttr('receve_user_str',$receve_user['truename']); }else{ $model->setAttr('receve_user_str',''); } }else{ $model->setAttr('receve_user_str','所有人'); } if($send_id>0){ $receve_user = $u_model->find($send_id)->toArray(); if($receve_user){ $model->setAttr('send_user_str',$receve_user['truename']); $model->setAttr('avatar_str',$receve_user['avatar']); }else{ $model->setAttr('send_user_str',''); } }else{ $model->setAttr('send_user_str',''); } // $model->setAttr('create_time_str',date('Y-m-d H:i:s',$model->getAttr('create_time'))); $model->setAttr('read_status_str',$model->getAttr('create_time')==1?'已读':'未读'); //业务逻辑 } /** * 新增或修改前 * @param Model $model * @return mixed|void */ public static function onBeforeWrite(Model $model) { parent::onBeforeWrite($model); //写入数据前格式化数据 if (!in_array(request()->action(), ['add', 'edit'])) { return true; } $title = $model->getAttr('title'); $content = $model->getAttr('content'); $message_content = new MessageContent(); $ms_content['title'] = $title; $ms_content['content'] = $content; if(request()->action() == 'add'){ if($title && $content){ $content_id = $message_content->parentAdd($ms_content); $model->setAttr('content_id',$content_id); } }else{ $c_id = $model->getAttr('content_id'); if($title && $content){ $message_content->where('id',$c_id)->save($ms_content); } } $receve_id = $model->getAttr('receve_id'); $type = $receve_id<0?1:0; $model->setAttr('send_id',UID); $model->setAttr('type',$type); $model->hidden(['title','content']); //业务逻辑 // code... } public static function onAfterDelete(Model $model) { parent::onAfterDelete($model); // TODO: Change the autogenerated stub } public static function onAfterWrite(Model $model) { parent::onAfterWrite($model); // TODO: Change the autogenerated stub } /* * 查看用户是否有待插入的公告 * */ public function setUserMessage($uid=0,$site_id=0){ if(!$uid){ $uid = UID; } if(!$site_id){ $site_id = SITE_ID; } //获取用户最近一份公告的时间 $last_gg = $this->withTrashed()->where('receve_id',$uid)->where('type',1)->order('create_time desc')->find(); if($last_gg){ $last_gg = $last_gg->toArray(); $start_time = strtotime($last_gg['create_time']); } //查询所有该用户没有的公告 $no_ggs = $this->where('site_id','in',[1,$site_id])->where('type',1)->where('create_time','>',$start_time)->order('create_time asc')->select()->toArray(); //var_dump($no_ggs);die; foreach ($no_ggs as $item){ $model = new Message(); $gg_item = []; $gg_item['send_id'] = $item['send_id']; $gg_item['site_id'] = $site_id; $gg_item['receve_id'] = $uid; $gg_item['content_id'] = $item['content_id']; $gg_item['is_init'] = 0; $gg_item['type'] = 1; $model->save($gg_item); } return true; } public function setMessageRead($ids,$type){ $_where = [ ['site_id', '=', SITE_ID], ['receve_id','=',UID] ]; if($ids == -1){ if($type==0 || $type==1){ $_where[] = ['type','=',$type]; } }else{ $ids = explode(',', $ids); $_where[] = ['id', 'in', $ids]; } $affected = self::update(['read_status' => 1], $_where); return $affected; } public function setMessageDelete($ids){ $ids = explode(',', $ids); if($ids){ $_op = $this->where('id', 'in', $ids)->where('receve_id',UID)->where('site_id', SITE_ID)->select(); if ($_op->isEmpty()) { return send_http_status('', 101); } return self::destroy($ids); //TP软删除 }else{ return false; } } }