config['sy_push_open']==1 && $appconfig['sy_push_appid'] && $appconfig['sy_push_appkey'] && $appconfig['sy_push_masterSecret']){ $getui = array( 'appid' => $appconfig['sy_push_appid'], 'appkey' => $appconfig['sy_push_appkey'], 'masterSecret' => $appconfig['sy_push_masterSecret'], 'ssl' => strpos($this->config['sy_weburl'], 'https://') !== false ? true : false ); if (file_exists(APP_PATH.'api/wxapp/getui-v2/PhpyunPush.php')){ include_once APP_PATH.'api/wxapp/getui-v2/PhpyunPush.php'; $push = new PhpyunPush($getui); } } return $push; } public function pushMsg($type='',$data=array(), $push = null){ if($this->config['sy_push_open']==1){//查看后台是否开启推送 //收到推送的uid if(is_array($data['puser'])){ $data['suid'] = $data['puser']['uid']; }else{ $data['suid'] = $data['puser']; } //推送记录数据 $pushData = array(); $pushData['fuid'] = $data['fuid']; $pushData['suid'] = $data['suid']; $pushData['ctime'] = time(); $pushData['tid'] = $data['tid']; $pushData['type'] = $this -> gettype($type, 'funtonum'); //获取所需信息 if(method_exists($this, $type)){ $res = $this->$type($data); if (!empty($res)){ $puser = $res['puser']; if (!is_array($puser)){ $puser = $this->select_once('member',array('uid' => $puser),'`clientid`,`deviceToken`,`app_push`'); } if(!empty($puser['clientid']) && $puser['app_push'] == 1){ if (!isset($push)){ $push = $this->pushing(); } if($push){ $return = $this->makePush($res['title'], $res['content'], $puser, $res['payload'], $push); if(!empty($return) && is_array($return)){ if ($return['code'] == 0){ $pushData['result'] = 'ok'; $pushData['taskId'] = key($return['data']); $pushData['status'] = current($return['data'][$pushData['taskId']]); }else{ $pushData['result'] = $return['code'].','.$return['msg']; } $this -> addAppPush($pushData); } } } } } } return $push; } /** * @desc 推送类型转换 * @param string $type: 传参 * @param string $totype: 想要的类型,比如'funtonum' function类型对应数字,'numtostr'数字对应文字描述 */ private function gettype($type,$totype){ if($type){ if($totype=='funtonum'){ $typearr = array( 'jobNewResume' => '1', 'rewardNewresume' => '2', 'partNewResume' => '3', 'invite' => '4', 'chat' => '5', 'jobState' => '6', 'partState' => '7' ); }else if($totype=='numtostr'){ $typearr = array( '1' => '普通职位收到新投递', '2' => '赏金职位收到新投递', '3' => '兼职收到新投递', '4' => '个人收到邀请面试', '5' => '聊天', '6' => '审核职位', '7' => '审核兼职' ); } if(is_array($typearr)){ return $typearr[$type]; } } } //聊天推送,$data数组 private function chat($data = array()) { $return = array(); $content = mb_substr($data['content'], 0,24,'utf-8'); if($data['puser']){ $data['title'] = $data['title'] ? $data['title'] : '通知'; $return = array( 'title' => $data['title'], 'content' => $content, 'puser' => $data['puser'], 'payload' => array('path'=>'/pson/pages/chat/chat') ); } return $return; } //个人收到邀请面试,$data数组 comname-企业名称 private function invite($data = array()){ $return = array(); if($data['comname']){ $content = mb_substr($data['comname'].'邀请您参加面试', 0, 24, 'UTF-8'); if($data['puser']){ $data['title'] = $data['title'] ? $data['title'] : '通知'; $return = array( 'title' => $data['title'], 'content' => $content, 'puser' => $data['puser'], 'payload' => array('path'=>'/pson/pages/usermember/invite/index') ); } } return $return; } //兼职职位收到新投递,$data数组 jobid-职位id jobname-兼职名称 private function partNewResume($data = array()){ $return = array(); if($data['jobid'] || $data['jobname']){ if($data['jobname']){ $jobname = $data['jobname']; }else{ $job = $this -> select_once('partjob', array('id'=>$data['jobid']),'name,uid'); $jobname = $job['name']; $data['puser'] = $data['puser'] ? $data['puser'] : $job['uid']; } $content = mb_substr('兼职('.preg_replace('# #','',$jobname).')有新的申请', 0, 24, 'UTF-8'); if($data['puser']){ $data['title'] = $data['title'] ? $data['title'] : '通知'; $return = array( 'title' => $data['title'], 'content' => $content, 'puser' => $data['puser'], 'payload' => array('path'=>'/pson/pages/commember/partapply/index', 'params'=>array('partid'=>$data['jobid'])) ); } } return $return; } //赏金职位收到新投递,$data数组 jobid-职位id private function rewardNewresume($data = array()){ $return = array(); if($data['jobid']){ $job = $this -> select_once('company_job', array('id'=>$data['jobid']),'`name`,`uid`'); $data['puser'] = $data['puser'] ? $data['puser'] : $job['uid']; $content = mb_substr('赏金职位('.preg_replace('# #','',$job['name']).')有新的申请', 0, 24, 'UTF-8'); if($data['puser']){ $data['title'] = $data['title'] ? $data['title'] : '通知'; $return = array( 'title' => $data['title'], 'content' => $content, 'puser' => $data['puser'], 'payload' => array('path'=>'/pson/pages/commember/jobpack/rewardlog','params'=>array('jobid'=>$data['jobid'])) ); } } return $return; } //职位收到新投递,$data数组 jobid-职位id jobname-职位名称 private function jobNewResume($data = array()){ $return = array(); if(isset($data['jobid']) || isset($data['jobname'])){ if(isset($data['jobname'])){ $jobname = $data['jobname']; }else{ $job = $this -> select_once('company_job', array('id'=>$data['jobid']),'name,uid'); $jobname = $job['name']; $data['puser'] = $data['puser'] ? $data['puser'] : $job['uid']; } // 去除所有空格 $content = mb_substr('职位('.preg_replace('# #','',$jobname).')有新简历投递', 0, 24, 'UTF-8'); if($data['puser']){ $data['title'] = isset($data['title']) ? $data['title'] : '通知'; $return = array( 'title' => $data['title'], 'content' => $content, 'puser' => $data['puser'], 'payload' => array('path'=>'/pson/pages/commember/hr/index') ); } } return $return; } //职位审核通知,$data数组 id-职位id jobname-职位名称 private function jobState($data = array()){ $return = array(); if($data['tid'] || $data['jobname']){ if($data['jobname']){ $jobname = $data['jobname']; }else{ $jobs = $this -> select_once('company_job', array('id' => $data['tid']),'name,uid'); $jobname = $jobs['name']; $data['puser'] = isset($data['puser']) ? $data['puser'] : $jobs['uid']; } $msg = '职位('.preg_replace('# #','',$jobname).')审核'; $msg .= $data['state'] == 3 ? '未通过' : '通过'; $content = mb_substr($msg, 0, 24, 'UTF-8'); if($data['puser']){ $data['title'] = isset($data['title']) ? $data['title'] : '通知'; $return = array( 'title' => $data['title'], 'content' => $content, 'puser' => $data['puser'], 'payload' => array('path'=>'/pson/pages/commember/job/index') ); } } return $return; } //兼职审核通知,$data数组 id-职位id jobname-职位名称 private function partState($data = array()){ $return = array(); if($data['tid'] || $data['jobname']){ if($data['jobname']){ $jobname = $data['jobname']; }else{ $part = $this -> select_once('partjob', array('id'=>$data['tid']),'name,uid'); $jobname = $part['name']; $data['puser'] = $data['puser'] ? $data['puser'] : $part['uid']; } $msg = '兼职('.preg_replace('# #','',$jobname).')审核'; $msg .= $data['state'] == 3 ? '未通过' : '通过'; $content = mb_substr($msg, 0, 24, 'UTF-8'); if($data['puser']){ $data['title'] = $data['title'] ? $data['title'] : '通知'; $return = array( 'title' => $data['title'], 'content' => $content, 'puser' => $data['puser'], 'payload' => array('path'=>'/pson/pages/commember/part/index') ); } } return $return; } /** * @desc 发送推送消息 * @param string $title 标题 * @param string $content 内容 * @param array $puser 接受方信息 */ private function makePush($title, $content, $puser, $payload = array(), $push = false){ $content = str_replace("/", '', $content); $phonetype = !empty($puser['deviceToken']) ? 1 : 2; $msg = array( 'title' => $title, 'content' => $content, 'payload' => json_encode($payload) ); $to = array( 'cid' => $puser['clientid'], 'device_token' => $puser['deviceToken'], 'system' => $phonetype ); if($push){ $return = $push->pushIGtMsg($msg, $to); return $return; } } //插入app推送记录 private function addAppPush($addData=array()){ $result = 0; if(!empty($addData)){ $result = $this->insert_into('app_push',$addData); } return $result; } //获取推送记录列表 public function getAppPushList($where=array(),$data=array()){ if(!empty($where)){ $data['field'] = $data['field'] ? $data['field'] : '*'; $list = $this -> select_all('app_push',$where,$data['field']); if(!empty($list)){ foreach($list as $uk=>$uv){ //将发送人和接收人uid集合 $alluids[] = $uv['fuid']; $alluids[] = $uv['suid']; } $alluids = array_unique($alluids); require_once ('userinfo.model.php'); $userinfoM = new userinfo_model($this->db, $this->def); $namelist = $userinfoM -> getUserList(array('uid'=>array('in',pylode(',',$alluids)))); foreach($namelist as $nk=>$nv){ $names[$nv['uid']] = $nv['name']; } foreach($list as $k=>$v){ //发送人名称 $list[$k]['fname'] = $names[$v['fuid']] ? $names[$v['fuid']] : '用户不存在'; //接收人名称 $list[$k]['sname'] = $names[$v['suid']] ? $names[$v['suid']] : '用户不存在'; //推送类型 $list[$k]['type_n'] = $this->gettype($v['type'],'numtostr'); //推送时间 $list[$k]['ctime'] = date('Y-m-d H:i:s',$v['ctime']); //推送结果 if($v['result']){ $list[$k]['result_n'] = $v['result']=='ok' ? '推送成功' : '推送失败('.$v['result'].')'; } //在线状态 if($v['status']=='successed_offline'){ $list[$k]['status_n'] = 'app离线'; }elseif($v['status']=='successed_online'){ $list[$k]['status_n'] = 'app在线'; } } } $List['list'] = $list; } return $List; } public function delAppPush($id,$data=array()){ if($id){ if(is_array($id)){ $id = pylode(',',$id); $limit = ''; $layer_type = '1'; }else{ $limit = 'limit 1'; $layer_type = '0'; } $where['id'] = array('in',$id); $this -> delete_all("app_push",$where,$limit,''); $return = array( 'msg' => '推送消息(ID:'.$id.')删除成功!', 'errcode' => '9', 'laytype' => $layer_type, 'url' => $_SERVER['HTTP_REFERER'] ); }else{ $return = array( 'msg' => '请选择您要删除的信息!', 'errcode' => '8', 'laytype' => '1', 'url' => $_SERVER['HTTP_REFERER'] ); } return $return; } } ?>