isBind($wxid); if($userBind['bindtype']=='1') { $Return['centerStr'] = ""; }else{ $Return['centerStr'] = $userBind['cenetrTpl']; } $Return['MsgType'] = 'text'; return $Return; } /** * @desc 引用log类,添加用户日志 * @param $uid * @param $usertype * @param $content * @param string $opera * @param string $type * @return void */ private function addMemberLog($uid, $usertype, $content, $opera = '', $type = '') { require_once('log.model.php'); $LogM = new log_model($this->db, $this->def); return $LogM->addMemberLog($uid, $usertype, $content, $opera, $type); } /******微信邀请面试通知**********/ function Audition($wxid='') { $userBind = $this->isBind($wxid); if($userBind['bindtype']=='1') { $Aud = $this->select_all('userid_msg', array('uid' => $userBind['uid'],'isdel'=>9,'orderby' => array('datetime, desc'), 'limit' => 5)); if(is_array($Aud) && !empty($Aud)) { foreach($Aud as $key=>$value) { $Info['title'] = "【".$value['fname']."】邀您面试\n邀请时间:".date('Y-m-d H:i:s',$value['datetime']); $Info['pic'] = $this->config['sy_weburl'].'/data/upload/wx/jt.jpg'; $Info['url'] = $this->config['sy_wapdomain']."/member/index.php?c=invite"; $List[] = $Info; } $Msg['title'] = '面试邀请'; $Msg['pic'] = checkpic('',$this->config['sy_wx_logo']); $Msg['url'] = $this->config['sy_wapdomain']."/member/index.php?c=invite"; $Return['centerStr'] = $this->Handle($List,$Msg); $Return['MsgType'] = 'news'; }else{ $Return['centerStr'] =''; $Return['MsgType'] = 'text'; } return $Return; }else{ $Return['MsgType'] = 'text'; $Return['centerStr'] = $userBind['cenetrTpl']; return $Return; } } /******微信职位申请通知**********/ function ApplyJob($wxid='') { $userBind = $this->isBind($wxid,2); if($userBind['bindtype']=='1') { $Apply = $this->select_all('userid_job', array('com_id' => $userBind['uid'],'isdel'=>9,'is_browse' => 1, 'orderby' => array('datetime, desc'), 'limit' => 5)); if(is_array($Apply) && !empty($Apply)) { foreach($Apply as $key=>$value) { $uid[] = $value['uid']; } //查询用户 $userList = $this->select_all('resume', array('uid' => array('in', pylode(',', $uid))), '`uid`,`name`,`edu`,`exp`'); if(is_array($userList)){ foreach($userList as $key=>$value) { $resumeList[$value['uid']] = $value; } } include(PLUS_PATH."/user.cache.php"); foreach($Apply as $key=>$value) { $Info['title'] = "【".$resumeList[$value['uid']]['name']."】".$userclass_name[$resumeList[$value['uid']]['edu']]."/".$userclass_name[$resumeList[$value['uid']]['exp']]."工作经验\n向您发布的职位:".$value['job_name']."\n投递一份简历\n投递时间:".date('Y-m-d H:i',$value['datetime']); $Info['pic'] = $this->config['sy_weburl'].'/data/upload/wx/jt.jpg'; $Info['url'] = $this->config['sy_wapdomain']."/member/index.php?c=hr"; $List[] = $Info; } $Msg['title'] = '简历投递'; $Msg['pic'] = checkpic('',$this->config['sy_wx_logo']); $Msg['url'] = $this->config['sy_wapdomain']."/member/index.php?c=hr"; $Return['centerStr'] = $this->Handle($List,$Msg); $Return['MsgType'] = 'news'; }else{ $Return['centerStr'] =''; $Return['MsgType'] = 'text'; } return $Return; }else{ $Return['MsgType'] = 'text'; $Return['centerStr'] = $userBind['cenetrTpl']; return $Return; } } /******兼职报名通知**********/ function PartApply($wxid='') { $userBind = $this->isBind($wxid,2); if($userBind['bindtype']=='1') { // $Apply = $this->select_all('part_apply', array('comid' => $userBind['uid'], 'status' => 1, 'orderby' => array('ctime,desc'), 'limit' => 5)); if(is_array($Apply) && !empty($Apply)) { foreach($Apply as $key=>$value) { $uid[] = $value['uid']; $jobid[] = $value['jobid']; } //查询兼职职位 $partJob = $this->select_all('partjob', array('uid' => $userBind['uid'], 'id' => array('in', pylode(',', $jobid))),'`id`,`name`'); if(is_array($partJob)){ foreach($partJob as $key=>$value) { $jobname[$value['id']] = $value['name']; } } //查询用户 $userList = $this->select_all('resume', array('uid' => array('in', pylode(',', $uid))), '`uid`,`name`,`edu`,`exp`'); if(is_array($userList)){ foreach($userList as $key=>$value) { $resumeList[$value['uid']] = $value; } } include(PLUS_PATH."/user.cache.php"); foreach($Apply as $key=>$value) { $Info['title'] = "【".$resumeList[$value['uid']]['name']."】".$userclass_name[$resumeList[$value['uid']]['edu']]."/".$userclass_name[$resumeList[$value['uid']]['exp']]."工作经验\n报名兼职:".$jobname[$value['jobid']]."\n报名时间:".date('Y-m-d H:i',$value['ctime']); $Info['pic'] = $this->config['sy_weburl'].'/data/upload/wx/jt.jpg'; $Info['url'] = $this->config['sy_wapdomain']."/member/index.php?c=partapply"; $List[] = $Info; } $Msg['title'] = '兼职报名'; $Msg['pic'] = checkpic('',$this->config['sy_wx_logo']); $Msg['url'] = $this->config['sy_wapdomain']."/member/index.php?c=partapply"; $Return['centerStr'] = $this->Handle($List,$Msg); $Return['MsgType'] = 'news'; }else{ $Return['centerStr'] =''; $Return['MsgType'] = 'text'; } return $Return; }else{ $Return['MsgType'] = 'text'; $Return['centerStr'] = $userBind['cenetrTpl']; return $Return; } } /******微信简历查看记录**********/ function lookResume($wxid='') { $userBind = $this->isBind($wxid); if($userBind['bindtype']=='1') { $Aud = $this->select_all('look_resume', array('uid' => $userBind['uid'], 'com_id' => array('>', 0), 'orderby' => array('datetime, desc'), 'limit' => 5)); if(is_array($Aud) && !empty($Aud)) { foreach($Aud as $key=>$value) { $comid[] = $value['com_id']; } $comids =pylode(',',$comid); if($comids){ $comList = $this->select_all('company', array('uid' => array('in', $comids)), '`uid`,`name`'); if(is_array($comList)){ foreach($comList as $key=>$value) { $comname[$value['uid']] = $value['name']; } } foreach($Aud as $key=>$value) { $Info['title'] = "查看企业:【".$comname[$value['com_id']]."】\n查看时间:".date('Y-m-d H:i:s',$value['datetime']); $Info['pic'] = $this->config['sy_weburl'].'/data/upload/wx/jt.jpg'; $Info['url'] = $this->config['sy_wapdomain']."/member/index.php?c=look"; $List[] = $Info; } $Msg['title'] = '最近查看我的简历'; $Msg['pic'] = checkpic('',$this->config['sy_wx_logo']); $Msg['url'] = $this->config['sy_wapdomain']."/member/index.php?c=look"; $Return['centerStr'] = $this->Handle($List,$Msg); $Return['MsgType'] = 'news'; }else{ $Return['centerStr']=''; $Return['MsgType'] = 'text'; } }else{ $Return['centerStr']=''; $Return['MsgType'] = 'text'; } return $Return; }else{ $Return['MsgType'] = 'text'; $Return['centerStr'] = $userBind['cenetrTpl']; return $Return; } } /******微信刷新简历**********/ function refResume($wxid='') { $userBind = $this->isBind($wxid); if($userBind['bindtype']=='1') { $Resume = $this->select_num('resume_expect', array('uid' => $userBind['uid'])); if($Resume>0) { $this->update_once('resume_expect', array('lastupdate' => time()), array('uid' => $userBind['uid'])); $Return['centerStr']=""; }else{ $Return['centerStr']=''; } }else{ $Return['centerStr'] = $userBind['cenetrTpl']; } $Return['MsgType'] = 'text'; return $Return; } /******微信刷新职位**********/ function refJob($wxid = '') { $userBind = $this->isBind($wxid, 2); if ($userBind['bindtype'] == '1') { //查询正常职位数量 $jobNum = $this->select_num('company_job', array('uid' => $userBind['uid'], 'state' => 1, 'status' => 0, 'r_status' => 1)); if ($jobNum > 0) { //查询用户数量以及积分 $membeStatis = $this->select_once('company_statis', array('uid' => $userBind['uid'])); $refIntegral = $this->config['integral_jobefresh'] * $this->config['integral_proportion'] * $jobNum; //判断会员模式 如果是时间会员则判断是否到期 如果套餐会员则判断有效期以及数量 if ($membeStatis['rating_type'] == '2') { if (isVip($membeStatis['vip_etime'])) {//有效期之内 $this->update_once('company_job', array('lastupdate' => time()), array('uid' => $userBind['uid'], 'state' => 1, 'status' => 0, 'r_status' => 1)); $msg = '职位刷新完成,本次共刷新' . $jobNum . "个职位!"; $this->addMemberLog($userBind['uid'], 2, "微信菜单操作:批量刷新职位", 1, 4, $jobNum); // 会员日志 } else {//不在有效期 使用积分 $useIntegral = 1; } } else {//套餐模式 if (isVip($membeStatis['vip_etime']) && $membeStatis['breakjob_num'] >= $jobNum) { $this->update_once('company_job', array('lastupdate' => time()), array('uid' => $userBind['uid'], 'state' => 1, 'status' => 0, 'r_status' => 1)); //扣除套餐数量 $this->update_once('company_statis', array('breakjob_num' => array('-', $jobNum)), array('uid' => $userBind['uid'])); $msg = '职位刷新完成,本次共刷新' . $jobNum . "个职位!"; $this->addMemberLog($userBind['uid'], 2, "微信菜单操作:批量刷新职位", 1, 4, $jobNum); // 会员日志 } else {//数量不足 使用积分 $useIntegral = 1; } } if ($useIntegral == '1') { if ($this->config['com_integral_online'] == '1') {//开启积分模式的情况下 if ($this->config['integral_jobefresh_type'] == '2') {//刷新职位减积分 //判断积分是否充足 if ($membeStatis['integral'] >= $refIntegral) { $this->update_once('company_job', array('lastupdate' => time()), array('uid' => $userBind['uid'], 'state' => 1, 'status' => 0, 'r_status' => 1)); //扣除积分 $this->update_once('company_statis', array('integral' => array('-', $refIntegral)), array('uid' => $userBind['uid'])); $msg = '职位刷新完成,本次共刷新' . $jobNum . "个职位!"; $this->addMemberLog($userBind['uid'], 2, "微信菜单操作:批量刷新职位", 1, 4, $jobNum); // 会员日志 } else { $msg = "本次刷新共需" . $refIntegral . "" . $this->config['integral_pricename'] . ",请先充值" . $this->config['integral_pricename'] . "!"; } } else { //批量刷新不走加积分模式 不符合逻辑 屏蔽操作 防止刷积分 $msg = "权限不足,升级会员,享受更多服务!"; } } else { $msg = "权限不足,升级会员,享受更多服务!"; } } } else { $msg = '您没有正在招聘的职位!'; } $Return['centerStr'] = ''; } else { $Return['centerStr'] = $userBind['cenetrTpl']; } $Return['MsgType'] = 'text'; return $Return; } /******微信职位搜索**********/ function searchJob($keyword){ require_once ('hotkey.model.php'); $HotkeyM = new hotkey_model($this->db, $this->def); $keyword = trim($keyword); include(PLUS_PATH."/city.cache.php"); if($keyword){ $keywords = @explode(' ',$keyword); if(is_array($keywords)){ foreach($keywords as $key=>$value){ $iscity = 0; if($value!=''){ foreach($city_name as $k=>$v){ if(strpos($v,trim($value))!==false){ $CityId[] = $k; $iscity = 1; } } if($iscity==0){ $searchJob[] = "(`name` LIKE '%".trim($value)."%') OR (`com_name` LIKE '%". trim($value) ."%')"; } } } foreach($keywords as $v){ $keylist[] = "'".$v."'"; } $hotkeynamewhere['key_name'] = array('in', implode(',', $keylist)); $hotkeynamewhere['type'] = 8; $hotkeynamelist = $HotkeyM->getList($hotkeynamewhere,array('field'=>'id,key_name')); if($hotkeynamelist && is_array($hotkeynamelist)){ foreach($keywords as $v){ foreach($hotkeynamelist as $val){ if($val['key_name'] ==$v){ $ids[] = $val['id']; }else{ $keywordval[] = $v; } } } }else{ foreach($keywords as $v){ $keywordval[] = $v; } } $keywordfirst = array_unique($keywordval); if($ids){ $upHotData = array( 'num' => array('+',1), 'wxtime' => time() ); $hotkeywhere['id'] = array('in', pylode(',', $ids)); $hotkeywhere['type'] = 8; $HotkeyM->upHotkey($hotkeywhere,$upHotData); } if($keywordfirst){ foreach($keywordfirst as $v){ $data = array( 'key_name' => $v, 'type' => 8, 'num' => 1, 'wxtime' => time() ); $HotkeyM->addInfo($data); } } //添加 $searchWhere = "`state`='1' AND `sdate`<='".time()."' AND `status`='0' AND `r_status`='1'"; if(!empty($searchJob)) { $searchWhere .= " AND (".implode(' OR ',$searchJob).")"; } if(!empty($CityId)) { $City_id = pylode(',',$CityId); $searchWhere .= " AND (`provinceid` IN (".$City_id.") OR `cityid` IN (".$City_id.") OR `three_cityid` IN (".$City_id."))"; } $jobList = $this->DB_select_all("company_job",$searchWhere." order by `lastupdate` desc limit 5","`id`,`name`,`com_name`,`com_logo`"); } } if(is_array($jobList) && !empty($jobList)){ foreach($jobList as $key=>$value){ $Info['title'] = "【".$value['name']."】\n".$value['com_name']; $Info['pic'] = $this->config['sy_weburl'].'/data/upload/wx/jt.jpg'; $Info['url'] = Url("wap",array('c'=>'job','a'=>'comapply','id'=>$value['id'])); $List[] = $Info; } $Msg['title'] = '查看与【'.$keyword. '】相关的职位'; $Msg['pic'] = checkpic($value['com_logo'],$this->config['sy_wx_logo']); $Msg['url'] = Url('wap',array('c'=>'job','keyword'=>urlencode($keyword))); $Return['centerStr'] = $this->Handle($List,$Msg); $Return['MsgType'] = 'news'; }else{ $Return['centerStr'] = ''; $Return['MsgType'] = 'text'; } return $Return; } /******微信场景码 图文**********/ function sendPubLink($wxloginid){ $wxlogintype = explode('_',$wxloginid); if($wxlogintype[1] == 'jobid'){ $jobid = $wxlogintype[2]; $jobInfo = $this -> select_once("company_job",array('id'=>$jobid)); if(is_array($jobInfo) && !empty($jobInfo)){ $Msg['title'] = "招聘:".$jobInfo['name']." - ".$jobInfo['com_name']; $Msg['desc'] = strip_tags($jobInfo['description']); $Msg['pic'] = checkpic($jobInfo['com_logo'],$this->config['sy_wx_logo']); $Msg['url'] = Url('wap',array('c'=>'job','a'=>'comapply','id'=>$jobInfo['id'])); } }elseif($wxlogintype[1] == 'companyid'){ $comid = $wxlogintype[2]; $comInfo = $this -> select_once("company",array('uid'=>$comid)); if(is_array($comInfo) && !empty($comInfo)){ $Msg['title'] = $comInfo['name']; $Msg['desc'] = strip_tags($comInfo['content']); $Msg['pic'] = checkpic($comInfo['logo'],$this->config['sy_wx_logo']); $Msg['url'] = Url('wap',array('c'=>'company','a'=>'show','id'=>$comInfo['uid'])); } }elseif($wxlogintype[1] == 'resumeid'){ $resid = $wxlogintype[2]; $resInfo = $this -> select_once("resume_expect",array('id'=>$resid)); if(is_array($resInfo) && !empty($resInfo)){ require_once ('resume.model.php'); $expectM = new resume_model($this->db, $this->def); $expect = $expectM -> getExpect(array('id'=>$resInfo['id']),array('needCache'=>1)); $sex = $expect['sex'] == '1' ? '男' : '女'; $Msg['title'] = "意向岗位:".$resInfo['name']; $Msg['desc'] = "性别:".$sex.",学历:".$expect['edu_n'].",工作经验:".$expect['exp_n'].",期望薪资:".$expect['salary'].",期望工作地区:".$expect['city_classname']; $Msg['pic'] = checkpic($resInfo['photo'],$this->config['sy_wx_logo']); $Msg['url'] = Url('wap',array('c'=>'resume','a'=>'show','id'=>$resInfo['id'])); } }elseif($wxlogintype[1] == 'articleid'){ $newsid = $wxlogintype[2]; $newsInfo = $this -> select_once("news_base",array('id'=>$newsid)); $newsconInfo = $this -> select_once("news_content",array('nbid'=>$newsid)); if(is_array($newsInfo) && !empty($newsInfo)){ $content = strip_tags($newsInfo['content']); $content = str_replace(array('"', ' ', '<>'), array('', '', ''), $content); $Msg['title'] = $newsInfo['title']; $Msg['desc'] = mb_substr($content,0,80,'utf-8'); $Msg['pic'] = checkpic($newsInfo['newsphoto'],$this->config['sy_wx_logo']); $Msg['url'] = Url('wap',array('c'=>'article','a'=>'show','id'=>$newsInfo['id'])); } }elseif($wxlogintype[1] == 'announcementid'){ $annouceid = $wxlogintype[2]; $annouceInfo = $this -> select_once("admin_announcement",array('id'=>$annouceid)); if(is_array($annouceInfo) && !empty($annouceInfo)){ $content = strip_tags($annouceInfo['content']); $content = str_replace(array('"', ' ', '<>'), array('', '', ''), $content); $Msg['title'] = $annouceInfo['title']; $Msg['desc'] = mb_substr($content,0,80,'utf-8'); $Msg['pic'] = checkpic('',$this->config['sy_wx_logo']); $Msg['url'] = Url('wap',array('c'=>'announcement','id'=>$annouceInfo['id'])); } }elseif ($wxlogintype[1] == 'jobtelid'){ // 微信扫码查看职位联系方式 $jobid = $wxlogintype[2]; $job = $this->select_once('company_job',array('id'=>$jobid),'`uid`,`name`,`is_link`'); $com = $this->select_once('company',array('uid'=>$job['uid']),'`name`,`linkphone`,`linktel`,`linkman`,`address`'); if ($job['is_link'] == 1){ // 默认联系方式 $tel = !empty($com['linkphone']) ? $com['linkphone'] : $com['linktel']; $address = $com['address']; $linkman = $com['linkman']; }elseif ($job['is_link'] == 2){ // 新联系方式 $link = $this->select_once('company_job_link',array('jobid'=>$jobid)); if (isset($link)){ $tel = $link['link_moblie']; $address = $link['link_address']; $linkman = $link['link_man']; } } if (!empty($tel) || !empty($address)){ $comurl = Url('wap',array('c'=>'company','a'=>'show','id'=>$job['uid'])); $joburl = Url('wap',array('c'=>'job','a'=>'comapply','id'=>$jobid)); $Return['centerStr'] = "".$com['name']."\n职位:".$job['name'].""; if (!empty($linkman)){ $Return['centerStr'] .= "\n联系人:" . $linkman; } if (!empty($tel)){ $Return['centerStr'] .= "\n联系电话:" . $tel; } if (!empty($address)){ $Return['centerStr'] .= "\n地址:" . $address; } $Return['centerStr'] .=']]>'; }else{ $Return['centerStr'] = ''; } $Return['MsgType'] = 'text'; return $Return; }elseif ($wxlogintype[1] == 'parttelid'){ // 微信扫码查看职位联系方式 $partid = $wxlogintype[2]; $part = $this->select_once('part_job', array('id' => $partid), '`uid`,`name`,`com_name`,`linkman`,`linktel`,`address`'); $tel = $part['linktel']; $address = $part['address']; $linkman = $part['linkman']; if (!empty($tel) || !empty($address)) { $comurl = Url('wap', array('c' => 'company', 'a' => 'show', 'id' => $part['uid'])); $joburl = Url('wap', array('c' => 'part', 'a' => 'show', 'id' => $partid)); $Return['centerStr'] = "" . $part['com_name'] . "\n兼职:" . $part['name'] . ""; if (!empty($linkman)) { $Return['centerStr'] .= "\n联系人:" . $linkman; } if (!empty($tel)) { $Return['centerStr'] .= "\n联系电话:" . $tel; } if (!empty($address)) { $Return['centerStr'] .= "\n地址:" . $address; } $Return['centerStr'] .= ']]>'; } else { $Return['centerStr'] = ''; } $Return['MsgType'] = 'text'; return $Return; }elseif ($wxlogintype[1] == 'comtelid'){ // 微信扫码查看职位联系方式 $comid = $wxlogintype[2]; $com = $this->select_once('company',array('uid'=>$comid),'`name`,`linkphone`,`linktel`,`linkman`,`address`'); if (!empty($com['linkphone']) || !empty($com['linktel'])){ $tel = !empty($com['linkphone']) ? $com['linkphone'] : $com['linktel']; $Return['centerStr'] = "'; }else{ $Return['centerStr'] = ''; } $Return['MsgType'] = 'text'; return $Return; }elseif($wxlogintype[1] == 'partid'){ // 兼职场景码 $partid = $wxlogintype[2]; $part = $this -> select_once('partjob',array('id'=>$partid),'id,uid,name,com_name,content'); if(is_array($part) && !empty($part)){ $com = $this -> select_once('company',array('uid'=>$part['uid']),'id,uid,name,com_name,content'); $Msg['title'] = "招聘:".$part['name']." - ".$part['com_name']; $Msg['desc'] = strip_tags($part['content']); $Msg['url'] = Url('wap',array('c'=>'part','a'=>'show','id'=>$part['id'])); // 判断logo if ((!empty($com['logo']) && $com['logo_status']==0)){ $Msg['pic'] = checkpic($com['logo'],$this->config['sy_wx_logo']); }else{ $Msg['pic'] = checkpic($this->config['sy_wx_logo']); } } }elseif($wxlogintype[1] == 'ruid'){ // 邀请注册 $uid = $wxlogintype[2]; $member = $this -> select_once('member',array('uid'=>$uid),'uid,username'); $Msg['title'] = "您的好友{$member['username']},邀请您加入{$this->config['sy_webname']},一起找工作招人才!"; $Msg['pic'] = checkpic('',$this->config['sy_wx_logo']); $Msg['url'] = Url('wap',array('c'=>'register','uid'=>$uid)); }elseif($wxlogintype[1] == 'gongzhaoid'){ // 公招 $gzid = $wxlogintype[2]; $gzInfo = $this -> select_once("gongzhao",array('id'=>$gzid)); if(is_array($gzInfo) && !empty($gzInfo)){ $content = strip_tags($gzInfo['content']); $content = str_replace(array('"', ' ', '<>'), array('', '', ''), $content); $Msg['title'] = $gzInfo['title']; $Msg['desc'] = mb_substr($content,0,80,'utf-8'); $Msg['pic'] = checkpic('',$this->config['sy_wx_logo']); $Msg['url'] = Url('wap',array('c'=>'gongzhao','a'=>'show','id'=>$gzInfo['id'])); } } if(!empty($Msg)){ $Return['centerStr'] = $this->Handle(array(),$Msg); $Return['MsgType'] = 'news'; }else{ $Return['centerStr'] = ''; $Return['MsgType'] = 'text'; } return $Return; } /******微信场景码 小程序**********/ function getXcxPubLink($wxloginid){ $wxlogintype = explode('_',$wxloginid); if($wxlogintype[1] == 'jobid'){ $jobid = $wxlogintype[2]; $jobInfo = $this -> select_once("company_job",array('id'=>$jobid)); if(is_array($jobInfo) && !empty($jobInfo)){ $Msg['title'] = "招聘:".$jobInfo['name']." - ".$jobInfo['com_name']; $Msg['appid'] = $this->config['sy_xcxappid']; $Msg['thumb_media_id'] = $this->config['sy_xcxmedia']; $Msg['pagepath'] = '/pages/job/show?id='.$jobInfo['id']; } }elseif($wxlogintype[1] == 'companyid'){ $comid = $wxlogintype[2]; $comInfo = $this -> select_once("company",array('uid'=>$comid)); if(is_array($comInfo) && !empty($comInfo)){ $Msg['title'] = $comInfo['name']; $Msg['appid'] = $this->config['sy_xcxappid']; $Msg['pagepath'] = '/pages/company/show?id='.$comInfo['uid']; $Msg['thumb_media_id'] = $this->config['sy_xcxmedia']; } }elseif($wxlogintype[1] == 'resumeid'){ $resid = $wxlogintype[2]; $resInfo = $this -> select_once("resume_expect",array('id'=>$resid)); if(is_array($resInfo) && !empty($resInfo)){ require_once ('resume.model.php'); $expectM = new resume_model($this->db, $this->def); $expect = $expectM -> getExpect(array('id'=>$resInfo['id']),array('needCache'=>1)); $Msg['title'] = "意向岗位:".$resInfo['name']."学历:".$expect['edu_n'].",工作经验:".$expect['exp_n'].",期望薪资:".$expect['salary'].",期望工作地区:".$expect['city_classname']; $Msg['appid'] = $this->config['sy_xcxappid']; $Msg['pagepath'] = '/pages/resume/show?id='.$resInfo['id']; $Msg['thumb_media_id'] = $this->config['sy_xcxmedia']; } }elseif($wxlogintype[1] == 'articleid'){ $newsid = $wxlogintype[2]; $newsInfo = $this -> select_once("news_base",array('id'=>$newsid)); $newsconInfo = $this -> select_once("news_content",array('nbid'=>$newsid)); if(is_array($newsInfo) && !empty($newsInfo)){ $Msg['title'] = $newsInfo['title']; $Msg['appid'] = $this->config['sy_xcxappid']; $Msg['pagepath'] = '/pages/article/show?id='.$newsInfo['id']; $Msg['thumb_media_id'] = $this->config['sy_xcxmedia']; } }elseif($wxlogintype[1] == 'announcementid'){ $annouceid = $wxlogintype[2]; $annouceInfo = $this -> select_once("admin_announcement",array('id'=>$annouceid)); if(is_array($annouceInfo) && !empty($annouceInfo)){ $Msg['title'] = $annouceInfo['title']; $Msg['appid'] = $this->config['sy_xcxappid']; $Msg['pagepath'] = '/pages/gonggao/show?id='.$annouceInfo['id']; $Msg['thumb_media_id'] = $this->config['sy_xcxmedia']; } }elseif($wxlogintype[1] == 'partid'){ // 兼职场景码 $partid = $wxlogintype[2]; $part = $this -> select_once('partjob',array('id'=>$partid),'id,uid,name,com_name'); if(is_array($part) && !empty($part)){ $Msg['title'] = "招聘:".$part['name']." - ".$part['com_name']; $Msg['appid'] = $this->config['sy_xcxappid']; $Msg['thumb_media_id'] = $this->config['sy_xcxmedia']; $Msg['pagepath'] = '/pages/part/show?id='.$part['id']; } }elseif($wxlogintype[1] == 'ruid'){ // 邀请注册 $uid = $wxlogintype[2]; $member = $this -> select_once('member',array('uid'=>$uid),'uid,username'); $Msg['title'] = "您的好友{$member['username']},邀请您加入{$this->config['sy_webname']},一起找工作招人才!"; $Msg['appid'] = $this->config['sy_xcxappid']; $Msg['thumb_media_id'] = $this->config['sy_xcxmedia']; if ($this->config['sy_reg_type'] == 2){ // 先选身份,再注册 $Msg['pagepath'] = '/pages/register/regnew?from=' . $uid; }else{ // 先注册,再选身份 $Msg['pagepath'] = '/pages/register/register?from=' . $uid; } }elseif($wxlogintype[1] == 'gongzhaoid'){ // 公招 $gzid = $wxlogintype[2]; $gzInfo = $this -> select_once("gongzhao",array('id'=>$gzid)); if(is_array($gzInfo) && !empty($gzInfo)){ $Msg['title'] = $gzInfo['title']; $Msg['appid'] = $this->config['sy_xcxappid']; $Msg['pagepath'] = '/pages/gongzhao/show?id='.$gzInfo['id']; $Msg['thumb_media_id'] = $this->config['sy_xcxmedia']; } } return $Msg; } /******微信关键字匹配**********/ function searchKeyword($keyword) { $keyword = trim($keyword); if($keyword) { $keywordList = $this->select_once('wxzdkeyword', array('keyword' => array('like', trim($keyword))), '`id`,`keyword`,`content`'); } if(!empty($keywordList)) { $Return['centerStr'] = ''; $Return['MsgType'] = 'text'; } return $Return; } /******微信用户绑定**********/ function bindUser($wxid='') { $bindType = $this->isBind($wxid); $Return['MsgType'] = 'text'; $Return['centerStr'] = $bindType['cenetrTpl']; return $Return; } function getWxUser($wxid){ global $config; //读取微信 token $Token = getToken(); $Url = 'https://api.weixin.qq.com/cgi-bin/user/info?access_token='.$Token.'&openid='.$wxid.'&lang=zh_CN'; $CurlReturn = CurlPost($Url); $UserInfo = json_decode($CurlReturn,true); return $UserInfo; } /******微信账户绑定判断**********/ function isBind($wxid='',$usertype=1) { if($wxid){ $UserInfo = $this->getWxUser($wxid); $unionid = $UserInfo['unionid']; if (!empty($unionid)){ $User = $this->select_once('member',array('wxid'=>$wxid,'unionid'=>array('=',$unionid,'OR')),'`uid`,`username`,`usertype`,`wxid`,`unionid`'); }else{ $User = $this->select_once('member',array('wxid'=>$wxid),'`uid`,`username`,`usertype`,`wxid`'); } if($User['unionid']!='' && $User['wxid']!=$wxid)//原先已绑定开放平台 但未绑定公众号 { $this->update_once('member', array('wxid' => $wxid), array('uid' => $User['uid'])); $User['wxid']=$wxid; } if (empty($User['unionid']) && !empty($unionid)){ //原先只绑定公众号,没绑定开放平台 $this->update_once('member', array('unionid' => $unionid), array('uid' => $User['uid'])); $User['unionid']=$unionid; } } if(isset($User) && $User['uid']>0) { $urlLogin = $this->config['sy_wapdomain']."/index.php?c=login&bind=1&wxid=".$wxid."&unionid=".$unionid; if($User['usertype']!=$usertype) { switch($usertype){ case '1': $User['cenetrTpl'] = "config['sy_webname']."帐号:".$User['username']."为企业帐号,请登录您的个人帐号进行绑定! \n\n\n 您也可以点击这里进行绑定其他帐号]]>"; break; case '2': $User['cenetrTpl'] = "config['sy_webname']."帐号:".$User['username']."为个人帐号,请登录您的企业帐号进行绑定! \n\n\n 您可以点击这里进行解绑定其他帐号]]>"; break; } }else{ $User['bindtype'] = '1'; $User['cenetrTpl'] = "config['sy_webname']."帐号:".$User['username']."已成功绑定! \n\n\n 您也可以点击这里进行解绑或绑定其他帐号]]>"; } }else{ //$urlLogin = Url("wap",array("c"=>"login","wxid"=>$wxid,"unionid"=>$unionid)); $urlLogin = $this->config['sy_wapdomain']."/index.php?c=login&wxid=".$wxid."&unionid=".$unionid; $User['cenetrTpl'] = '点击这里进行绑定!]]>'; } return $User; } /******微信推荐职位**********/ function recJob() { $time = time(); $JobList = $this -> select_all('company_job', array('sdate' => array( '<=', $time) , 'status' => 0, 'r_status' => 1, 'rec_time' => array('>', $time), 'orderby' => 'lastupdate,desc', 'limit' => 5), '`id`,`name`,`com_name`,`lastupdate`'); if(is_array($JobList) && !empty($JobList)) { foreach($JobList as $key=>$value) { $Info['title'] = "【".$value['name']."】\n".$value['com_name']; $Info['pic'] = $this->config['sy_weburl'].'/data/upload/wx/jt.jpg'; $Info['url'] = Url("wap",array('c'=>'job','a'=>'comapply','id'=>$value['id'])); $List[] = $Info; } $Msg['title'] = '推荐职位'; $Msg['pic'] = checkpic('',$this->config['sy_wx_logo']); $Msg['url'] = Url("wap",array('c'=>'job')); $Return['centerStr'] = $this->Handle($List,$Msg); $Return['MsgType'] = 'news'; }else{ $Return['centerStr'] =''; $Return['MsgType'] = 'text'; } return $Return; } /******微信回复图文消息模板构造**********/ function Handle($List,$Msg) { $articleTpl = ''; $articleTpl .= ''.(count($List)+1).''; $centerTpl = " <![CDATA[%s]]> "; $articleTpl.=sprintf($centerTpl,$Msg['title'],$Msg['desc'],$Msg['pic'],$Msg['url']); if(!empty($List)){ foreach($List as $value) { $articleTpl.=sprintf($centerTpl,$value['title'],'',$value['pic'],$value['url']); } } $articleTpl .= ''; return $articleTpl; } /******微信来源验证**********/ function valid($echoStr,$signature,$timestamp,$nonce) { if($this->checkSignature($signature,$timestamp,$nonce)){ echo $echoStr; exit; } } /******微信验证函数**********/ function checkSignature($signature, $timestamp,$nonce) { $token = $this->config['wx_token']; $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr, SORT_STRING); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); if( $tmpStr == $signature && $token!=''){ return true; }else{ return false; } } /******微信数组转换**********/ function ArrayToString($obj,$withKey=true,$two=false) { if(empty($obj)) return array(); $objType=gettype($obj); if ($objType=='array') { $objstring = "array("; foreach ($obj as $objkey=>$objv) { if($withKey)$objstring .="\"$objkey\"=>"; $vtype =gettype($objv) ; if ($vtype=='integer') { $objstring .="$objv,"; }else if ($vtype=='double'){ $objstring .="$objv,"; }else if ($vtype=='string'){ $objv= str_replace('"',"\\\"",$objv); $objstring .="\"".$objv."\","; }else if ($vtype=='array'){ $objstring .="".$this->ArrayToString($objv,false).","; }else if ($vtype=='object'){ $objstring .="".$this->ArrayToString($objv,false).","; }else { $objstring .="\"".$objv."\","; } } $objstring = substr($objstring,0,-1).""; return $objstring.")\n"; } } function markLog($wxid,$wxuser,$content,$reply){ $this->insert_into('wxlog', array('wxid' => $wxid, 'wxuser' => $wxuser, 'content' => $content, 'reply' => $reply, 'time' => time())); } //微信通知列表 public function getWxmsgList($whereData, $data = array()) { $field = empty($data['field']) ? '*' : $data['field']; $List = $this -> select_all('wx_msg', $whereData, $field); if(!empty($List)){ $adminuids = array(); $muids = array(); $adminname = array(); $membername = array(); foreach($List as $k=>$v){ if($v['utype']==99){//后台管理员 $adminuids[] = $v['uid']; } } if(!empty($adminuids)){ $adminuids = array_unique($adminuids); $admins = $this -> select_all('admin_user',array('uid'=>array('in',pylode(',',$adminuids)))); foreach($admins as $ak=>$av){ $adminname[$av['uid']] = $av['username']; } } // 按用户类型处理列表中用户数据 $List = $this->getUserByUsertype($List); foreach($List as $lk=>$lv){ if($lv['utype']=='99'){ $List[$lk]['username'] = $adminname[$lv['uid']]; $List[$lk]['utype_n'] = '管理员'; } else{ if($lv['utype']=='1'){ $List[$lk]['utype_n'] = '个人'; }else if($lv['utype']=='2'){ $List[$lk]['utype_n'] = '企业'; }else if($lv['utype']=='3'){ $List[$lk]['utype_n'] = '猎头'; }else if($lv['utype']=='4'){ $List[$lk]['utype_n'] = '培训'; } } $List[$lk]['ctime_n'] = date('Y-m-d H:i:s',$lv['ctime']); $body_arr = unserialize($lv['body']); $body_html = ''; foreach($body_arr as $bv){ $body_html .= $bv.'
'; } $List[$lk]['body_html'] = $body_html; include (CONFIG_PATH.'db.data.php'); if ($lv['mbconfig'] == 'wxmbdiy'){ $List[$lk]['mbconfig_n'] = '推广营销'; }else{ $List[$lk]['mbconfig_n'] = $arr_data['wxmbType'][$lv['mbconfig']]; } } } return $List; } //企业微信通知列表 public function getQyWxmsgList($whereData, $data = array()) { $field = empty($data['field']) ? '*' : $data['field']; $List = $this -> select_all('wx_qymsg', $whereData, $field); if(!empty($List)){ $adminuids = array(); $adminname = array(); foreach($List as $k=>$v){ $adminuids = array_merge($adminuids,explode(',',$v['uids'])); $adminuids = array_unique($adminuids); } if(!empty($adminuids)){ $admins = $this -> select_all('admin_user',array('uid'=>array('in',pylode(',',$adminuids)))); foreach($admins as $ak=>$av){ $adminname[$av['uid']] = $av['username']; } } foreach($List as $lk=>$lv){ $uids = explode(',',$lv['uids']); $touser=explode(',',$lv['touser']); $username = array(); if(!empty($uids)){ foreach ($uids as $key => $value) { if(isset($adminname[$value])){ $username[] = $adminname[$value]; } } } if(count($username)>3){ $List[$lk]['username'] = implode(',',array_slice($username,0,3)); $List[$lk]['username_all'] = implode(',',$username); }else{ $List[$lk]['username'] = implode(',',$username); } if(count($touser)>3){ $List[$lk]['tousers'] = implode(',',array_slice($touser,0,3)); $List[$lk]['tousers_all'] = implode(',',$touser); }else{ $List[$lk]['tousers'] = implode(',',$touser); } $List[$lk]['ctime_n'] = date('Y-m-d H:i:s',$lv['ctime']); $body_arr = unserialize($lv['body']); $body_html = ''; foreach($body_arr as $bv){ preg_match_all('/]+>.*?<\/div>/',$bv,$out); if(!empty($out[0])){ foreach ($out[0] as $ok => $ov) { $body_html .= strip_tags($ov).'
'; } }else{ $body_html .= strip_tags($bv).'
'; } } $List[$lk]['body_html'] = $body_html; } } return $List; } //删除微信模板消息 public function delWxmsg($data = array()) { if(!empty($data['where'])){ $where = $data['where']; $nid = $this -> delete_all('wx_msg', $where, ''); return $nid; } } public function delQyWxmsg($data = array()){ if(!empty($data['where'])){ $where = $data['where']; $nid = $this -> delete_all('wx_qymsg', $where, ''); return $nid; } } /** * @wxid 微信公众号绑定的唯一识别ID * @tempid 不同消息模板的识别ID,具体在公众号中查看 * @url 消息模板点击链接:一般指向触屏版 * @data 消息模板具体内容 */ function sendWxTemplate($wxid,$tempid,$url,$data,$sdata=array()){ global $config; if(!$config){ include(PLUS_PATH.'config.php'); } if(!empty($wxid)){ //读取微信 token $Token = getToken(); //模板消息发送接口链接 $wxUrl = 'https://api.weixin.qq.com/cgi-bin/message/template/send?access_token='.$Token; //构建模板参数 $templateDate = array("touser"=>$wxid, "template_id"=>$tempid, "url"=>$url, "topcolor"=>"#FF0000", "data"=>$data ); $CurlReturn = CurlPost($wxUrl,json_encode($templateDate)); $return = json_decode($CurlReturn,true); }else{ $return['errcode']= -1; $return['errmsg']='未关注公众号'; } if($sdata['uid'] && $sdata['utype']){ $sdata['status'] = $return['errcode']; $sdata['msg'] = $return['errmsg']; $this->insert_into('wx_msg',$sdata); } return $return; } /** * 职位申请通知 微信消息模板 * @wxid 微信公众号用户绑定的唯一识别ID * @uid 申请人用户ID * @jobid 申请职位ID */ function sendWxJob($uid,$jobid){ global $config; if($config['wx_xxtz']!='1' || !$config['wx_mbsqzw']) { return true; } if($uid && $jobid) { $Tempid = $config['wx_mbsqzw']; //验证传入的职位ID (此处主要考虑 批量申请) if(is_array($jobid)) { $Jids = pylode(",",$jobid); }else{ $Jids = pylode(",",@explode(',',$jobid)); } //提取绑定微信的用户 $comList = $this->select_all('company_job', array('id' => array('in', pylode(',', $Jids))), '`uid`,`com_name`,`name`'); if(is_array($comList) && !empty($comList)) { $Mid = array(); foreach($comList as $value){ $Mid[] = $value['uid']; $Comname[$value['uid']] = $value['com_name']; $Jobname[$value['uid']][] = $value['name']; } $usertList = $this->select_all('member', array('uid' => array('in', pylode(',', $Mid))), '`uid`,`wxid`'); if(is_array($usertList) && !empty($usertList)) { //查询申请用户基本信息 $Expect = $this->select_once('resume_expect', array('uid' => intval($uid), 'defaults' => 1)); include PLUS_PATH."/city.cache.php"; include PLUS_PATH."/user.cache.php"; foreach($usertList as $value){ //转换数组中字符编码,微信只支持UTF-8 $First = $Comname[$value['uid']].',您好,您发布的职位:'.@implode(',',$Jobname[$value['uid']]).' 收到一份新简历!'; $Iname = $Expect['uname']; $Edu = $userclass_name[$Expect['edu']]; $Exp = $userclass_name[$Expect['exp']]; if($Expect['city_classid']){ $cityids = @explode(',',$Expect['city_classid']); $CityName = array(); foreach($cityids as $citykey=>$cityvalue){ $CityName[] = $city_name[$cityvalue]; } $City = implode(',',$CityName); } //$City = $city_name[$Expect['provinceid']]." ".$city_name[$Expect['cityid']]." ".$city_name[$Expect['three_cityid']]; if($Expect['maxsalary']>0){ if($this ->config['resume_salarytype']==1){ $Sarlary = $Expect['minsalary'].'-'.$Expect['maxsalary']; }else{ if($Expect['maxsalary']<1000){ if($this->config['resume_salarytype']==2){ $Sarlary = '1千以下'; }elseif($this->config['resume_salarytype']==3){ $Sarlary = '1K以下'; }elseif($this->config['resume_salarytype']==4){ $Sarlary = '1k以下'; } }else{ $Sarlary = changeSalary($Expect['minsalary']).'-'.changeSalary($Expect['maxsalary']); } } }elseif($Expect['minsalary']>0){ if($this ->config['resume_salarytype']==1){ $Sarlary = $Expect['minsalary']; }else{ $Sarlary = changeSalary($Expect['minsalary']); } }else{ $Sarlary = '面议'; } $Remark = '详情请登录 '.$config['sy_webname'].' 及时查阅!'; $TempDate['first'] = array('value'=>$First,'color'=>'');//标题 $TempDate['keyword1'] = array('value'=>$Iname,'color'=>'');//姓名 $TempDate['keyword2'] = array('value'=>$Edu,'color'=>'');//学历 $TempDate['keyword3'] = array('value'=>$Exp,'color'=>'');//工作经验 $TempDate['keyword4'] = array('value'=>$City,'color'=>'');//工作经验 $TempDate['keyword5'] = array('value'=>$Sarlary,'color'=>'');//薪资待遇 $TempDate['remark'] = array('value'=>$Remark,'color'=>'');//备注信息 $Url = $this->config['sy_wapdomain']."/member/index.php?c=hr"; $tbody = array( 0 => $First, 1 => '求职者:'.$Iname, 2 => '学历:'.$Edu, 3 => '工作经验:'.$Exp, 4 => '工作地点:'.$City, 5 => '需求薪资:'.$Sarlary, 6 => $Remark, 7 => $Url ); $sdata = array( 'uid' => $value['uid'], 'utype' => 2, 'wxid' => $value['wxid'], 'ctime' => time(), 'mbconfig' => 'wx_mbsqzw', 'body' => serialize($tbody) ); $this->sendWxTemplate($value['wxid'],$Tempid,$Url,$TempDate,$sdata); } } } } } /** * 面试邀请 微信消息模板 * @id 面试邀请通知信息 * @jobid 申请职位ID */ function sendWxresume($data){ global $config; if($config['wx_xxtz']!='1' || !$config['wx_mbyqms']) { return true; } if($data['uid']) { $Tempid = $config['wx_mbyqms']; //提取绑定微信的用户 $userInfo = $this->select_once('member', array('uid' => $data['uid']), '`uid`,`username`,`wxid`'); if(is_array($userInfo)) { //转换数组中字符编码,微信只支持UTF-8 $First = $userInfo['username'].',恭喜你!您收到公司的面试邀请啦!'; $Job = $data['jobname']; $Company = $data['fname']; $Time = $data['intertime']; $Address = $data['address']; $Contact = $data['linkman']; $Tel = $data['linktel']; $Remark = $data['content'].'详情请登录 '.$config['sy_webname'].' 及时查阅!'; $TempDate['first'] = array('value'=>$First,'color'=>'');//标题 $TempDate['job'] = array('value'=>$Job,'color'=>'');//面试职位 $TempDate['company'] = array('value'=>$Company,'color'=>'');//面试公司 $TempDate['time'] = array('value'=>$Time,'color'=>'');//面试时间 $TempDate['address'] = array('value'=>$Address,'color'=>'');//面试地址 $TempDate['contact'] = array('value'=>$Contact,'color'=>'');//联系人 $TempDate['tel'] = array('value'=>$Tel,'color'=>'');//联系电话 $TempDate['remark'] = array('value'=>$Remark,'color'=>'');//面试信息 $Url = $this->config['sy_wapdomain']."/member/index.php?c=invite"; $tbody = array( 0 => $First, 1 => '面试职位:'.$Job, 2 => '所属公司:'.$Company, 3 => '面试时间:'.$Time, 4 => '面试地点:'.$Address, 5 => '联系人:'.$Contact, 6 => '联系电话:'.$Tel, 7 => $Remark, 8 => $Url ); $sdata = array( 'uid' => $userInfo['uid'], 'utype' => 1, 'wxid' => $userInfo['wxid'], 'ctime' => time(), 'mbconfig' => 'wx_mbyqms', 'body' => serialize($tbody) ); $this->sendWxTemplate($userInfo['wxid'],$Tempid,$Url,$TempDate,$sdata); } } } /** * 充值支付 微信消息模板 */ function sendWxPay($data){ global $config; if(!$config){ include(PLUS_PATH.'config.php'); } if($config['wx_xxtz']!='1' || !$config['wx_mbcztx']) { return true; } if($data['wxid']) { $Tempid = $config['wx_mbcztx']; //提取绑定微信的用户 //转换数组中字符编码,微信只支持UTF-8 $First = $data['first']; $UserName = $data['username']; $Order = $data['order']; $Price = $data['price']; $Time = $data['time']; $PayType = $data['paytype']; $Info = $data['info']; $Remark = '感谢您的支持,详情请登录 '.$config['sy_webname'].' !'; $TempDate['first'] = array('value'=>$First,'color'=>'');//标题 $TempDate['keyword1'] = array('value'=>$UserName,'color'=>'');//用户名 $TempDate['keyword2'] = array('value'=>$Price,'color'=>'');//支付金额 $TempDate['keyword3'] = array('value'=>$Info,'color'=>'');//消费类型 $TempDate['keyword4'] = array('value'=>$PayType,'color'=>'');//支付方式 $TempDate['keyword5'] = array('value'=>$Time,'color'=>'');//支付时间 $TempDate['remark'] = array('value'=>$Remark,'color'=>''); $Url = Url('wap',array('c'=>'login')); $tbody = array( 0 => $First, 1 => '用户名:'.$UserName, 2 => '支付金额:'.$Price, 3 => '消费类型:'.$Info, 4 => '支付方式:'.$PayType, 5 => '支付时间:'.$Time, 6 => $Remark, 7 => $Url ); $sdata = array( 'uid' => $data['uid'], 'utype' => $data['usertype'], 'wxid' => $data['wxid'], 'ctime' => time(), 'mbconfig' => 'wx_mbcztx', 'body' => serialize($tbody) ); $this->sendWxTemplate($data['wxid'],$Tempid,$Url,$TempDate,$sdata); } } /** * 职位审核 微信消息模板 */ function sendWxJobStatus($data){ global $config; if($config['wx_xxtz']!='1' || !$config['wx_mbzwsh']) { return true; } if($data['jobid']) { $Tempid = $config['wx_mbzwsh']; //提取绑定微信的用户 $User = $this->select_all('company_job', array('id' => array('in', pylode(',', $data['jobid']))), '`uid`,`com_name`,`name`'); if(is_array($User)){ foreach($User as $key=>$value){ $JobName[$value['uid']][] = $value['name']; $Uid[] = $value['uid']; $ComName[$value['uid']] = $value['com_name']; } $Uid = array_unique($Uid); switch($data['state']){ case '0':$Status='未审核'; break; case '1':$Status='审核通过'; break; case '3':$Status='审核不通过'; break; } $Member = $this->select_all('member', array('uid' => array('in', pylode(',', $Uid))), '`wxid`,`uid`'); if(is_array($Member)){ foreach($Member as $key=>$value){ $data['first'] = '尊敬的 '.$ComName[$value['uid']].',您好!您发布的职位有一条新的状态通知!'; //转换数组中字符编码,微信只支持UTF-8 $First = $data['first']; $JobName = @implode(',',$JobName[$value['uid']]); $Status = $Status; $Body = $data['statusbody']; $Remark = '详情请登录 '.$config['sy_webname'].' !'; $TempDate['first'] = array('value'=>$First,'color'=>'');//标题 $TempDate['keyword1'] = array('value'=>$JobName,'color'=>'');//审核职位 $TempDate['keyword2'] = array('value'=>$Status,'color'=>'');//审核状态 $TempDate['keyword3'] = array('value'=>$Body,'color'=>'');//具体原因 $TempDate['remark'] = array('value'=>$Remark,'color'=>''); $Url = Url('wap',array('c'=>'login')); $tbody = array( 0 => $First, 1 => '职位名称:'.$JobName, 2 => '审核结果:'.$Status, 3 => '原因:'.$Body, 4 => $Remark, 5 => $Url ); $sdata = array( 'uid' => $value['uid'], 'utype' => 2, 'wxid' => $value['wxid'], 'ctime' => time(), 'mbconfig' => 'wx_mbzwsh', 'body' => serialize($tbody) ); $this->sendWxTemplate($value['wxid'],$Tempid,$Url,$TempDate,$sdata); } } } } } /** * 职位审核 微信消息模板 */ function sendWxPartJobStatus($data){ global $config; if($config['wx_xxtz']!='1' || !$config['wx_mbjzsh']) { return true; } if($data['jobid']) { $Tempid = $config['wx_mbjzsh']; //提取绑定微信的用户 $User = $this->select_all('partjob', array('id' => array('in', pylode(',', $data['jobid']))), '`uid`,`com_name`,`name`'); if(is_array($User)){ foreach($User as $key=>$value){ $JobName[$value['uid']][] = $value['name']; $Uid[] = $value['uid']; $ComName[$value['uid']] = $value['com_name']; } $Uid = array_unique($Uid); switch($data['state']){ case '0':$Status='未审核'; break; case '1':$Status='审核通过'; break; case '3':$Status='审核不通过'; break; } $Member = $this->select_all('member', array('uid' => array('in', pylode(',', $Uid))), '`wxid`,`uid`'); if(is_array($Member)){ foreach($Member as $key=>$value){ $data['first'] = '尊敬的 '.$ComName[$value['uid']].',您好!您发布的兼职有一条新的状态通知!'; //转换数组中字符编码,微信只支持UTF-8 $First = $data['first']; $JobName = @implode(',',$JobName[$value['uid']]); $Status = $Status; $Body = $data['statusbody']; $Remark = '详情请登录 '.$config['sy_webname'].' !'; $TempDate['first'] = array('value'=>$First,'color'=>'');//标题 $TempDate['keyword1'] = array('value'=>$JobName,'color'=>'');//审核职位 $TempDate['keyword2'] = array('value'=>$Status,'color'=>'');//审核状态 $TempDate['keyword3'] = array('value'=>$Body,'color'=>'');//具体原因 $TempDate['remark'] = array('value'=>$Remark,'color'=>''); $Url = Url('wap',array('c'=>'login')); $tbody = array( 0 => $First, 1 => '职位名称:'.$JobName, 2 => '审核结果:'.$Status, 3 => '原因:'.$Body, 4 => $Remark, 5 => $Url ); $sdata = array( 'uid' => $value['uid'], 'utype' => 2, 'wxid' => $value['wxid'], 'ctime' => time(), 'mbconfig' => 'wx_mbjzsh', 'body' => serialize($tbody) ); $this->sendWxTemplate($value['wxid'],$Tempid,$Url,$TempDate,$sdata); } } } } } /** * 兼职报名 微信消息模板 */ function sendWxPart($data){ global $config; if($config['wx_xxtz']!='1' || !$config['wx_mbjzbm']) { return true; } if($data['wxid']) { $Tempid = $config['wx_mbjzbm']; //提取绑定微信的用户 //转换数组中字符编码,微信只支持UTF-8 $First = $data['first']; $jobname = $data['jobname']; $user = $data['user']; $usertel = $data['usertel']; $time = $data['time']; $Remark = '感谢您的支持,详情请登录 '.$config['sy_webname'].' !'; $TempDate['first'] = array('value'=>$First,'color'=>'');//标题 $TempDate['keyword1'] = array('value'=>$jobname,'color'=>'');//用兼职名称 $TempDate['keyword2'] = array('value'=>$user,'color'=>'');//姓名 $TempDate['keyword3'] = array('value'=>$usertel,'color'=>'');//电话 $TempDate['keyword4'] = array('value'=>$time,'color'=>'');//时间 $TempDate['remark'] = array('value'=>$Remark,'color'=>''); $Url = Url('wap',array('c'=>'login')); $tbody = array( 0 => $First, 1 => '兼职名称:'.$jobname, 2 => '姓名:'.$user, 3 => '电话:'.$usertel, 4 => '时间:'.$time, 5 => $Remark, 6 => $Url ); $sdata = array( 'uid' => $data['uid'], 'utype' => 2, 'wxid' => $data['wxid'], 'ctime' => time(), 'mbconfig' => 'wx_mbjzbm', 'body' => serialize($tbody) ); $this->sendWxTemplate($data['wxid'],$Tempid,$Url,$TempDate,$sdata); } } //赏金职位流程通知 function sendWxReward($data){ global $config; if($config['wx_xxtz']!='1' || !$config['wx_mbreward']) { return true; } if($data['wxid']) { $Tempid = $config['wx_mbreward']; $First = $data['first']; $jobName = $data['jobname']; $Status = $data['statusinfo']; $Remark = $data['remark']; $rinfo = $data['rinfo']; $TempDate['first'] = array('value'=>$First,'color'=>''); $TempDate['keyword1'] = array('value'=>$jobName,'color'=>''); $TempDate['keyword2'] = array('value'=>$rinfo,'color'=>'');//申请信息 $TempDate['keyword3'] = array('value'=>date('Y-m-d H:i:s'),'color'=>'');//申请时间 $TempDate['keyword4'] = array('value'=>$Status,'color'=>''); $TempDate['remark'] = array('value'=>$Remark,'color'=>''); $Url = Url('wap',array('c'=>'login')); $tbody = array( 0 => $First, 1 => '招聘职位:'.$jobName, 2 => '申请信息:'.$rinfo, 3 => '申请时间:'.date('Y-m-d H:i:s'), 4 => '当前进度:'.$Status, 5 => $Remark, 6 => $Url ); $sdata = array( 'uid' => $data['uid'], 'utype' => $data['usertype'], 'wxid' => $data['wxid'], 'ctime' => time(), 'mbconfig' => 'wx_mbreward', 'body' => serialize($tbody) ); $this->sendWxTemplate($data['wxid'],$Tempid,$Url,$TempDate,$sdata); } } /** * 管理员通知 微信消息模板 * $data=array( 'first'=>通知内容 'type'=>通知类型标题 'title'=>自定义标题,优先级别大于type ) */ function sendWxAdmin($data=array()){ global $config; if(!$config['wx_mbadmin']) { return true; } if($data['wxid']) { $Tempid = $config['wx_mbadmin']; $wmtype = $this -> select_all('admin_wmtype', array('type' =>array('<>','')), '`type`,`name`'); $titleType = array(); foreach($wmtype as $wk=>$wv){ $titleType[$wv['type']] = $wv['name']; } //转换数组中字符编码,微信只支持UTF-8 $First = $data['first']; $Title = $data['title'] ? $data['title'] : ($titleType[$data['type']] ? $titleType[$data['type']] : '消息通知'); $Remark = '请及时登录管理后台进行处理!'; $TempDate['first'] = array('value'=>'业务预警通知','color'=>'');//通知内容 $TempDate['keyword1'] = array('value'=>$Title,'color'=>'');//通知类别 $TempDate['keyword2'] = array('value'=>'后台','color'=>'');//通知范围 $TempDate['keyword3'] = array('value'=>date('Y/m/d H:i'),'color'=>'');//发布时间 $TempDate['keyword4'] = array('value'=>$First,'color'=>'');//通知内容 $TempDate['remark'] = array('value'=>$Remark,'color'=>''); $tbody = array( 0 => '业务预警通知', 1 => '预警类别:'.$Title, 2 => '预警范围:后台', 3 => '发布时间:'.date('Y/m/d H:i'), 4 => '预警内容:'.$First, 5 => $Remark ); $sdata = array( 'uid' => $data['uid'], 'utype' => 99, 'wxid' => $data['wxid'], 'ctime' => time(), 'mbconfig' => 'wx_mbadmin', 'body' => serialize($tbody) ); $this->sendWxTemplate($data['wxid'],$Tempid,'',$TempDate,$sdata); } } /** * 发送订阅通知 微信消息模板 * $data['uid'] 要发送的用户id * * wx_subscribetpl 订阅通知模板参数 */ function sendSubscribe($data = array()){ global $config; $res = array( 'errcode' => 8, 'msg' => '' ); if($config['wx_xxtz'] != 1 || empty($config['wx_subscribetpl'])){ $res['msg'] = '还未开通微信通知!'; return $res; } //参数判断 if(empty($data['uid']) || empty($data['content'])){ $res['msg'] = '缺少发送的信息!'; return $res; } //获取用户的微信id $userInfo = $this -> select_once('member', array('uid' => $data['uid']), '`uid`,`usertype`,`wxid`'); if(empty($userInfo) || empty($userInfo['wxid'])){ $res['msg'] = '该用户还未绑定微信!'; return $res; } $Tempid = $config['wx_subscribetpl']; //转换数组中字符编码,微信只支持UTF-8 $First = $data['First'] ? $data['First'] : '订阅通知'; $content = $data['content']; $Remark = '感谢您的订阅,详情请登录 '.$config['sy_webname'].' !'; $TempDate['first'] = array('value' => $First, 'color'=>''); $TempDate['keyword1'] = array('value' => $content, 'color'=>''); $TempDate['keyword2'] = array('value' => '永久或进入会员中心关闭订阅', 'color'=>''); $TempDate['keyword3'] = array('value' => date('Y-m-d H:i:s'), 'color'=>''); $TempDate['remark'] = array('value' => $Remark, 'color'=>''); $Url = Url('wap',array('c'=>'login')); $tbody = array( 0 => $First, 1 => '订阅内容:'.$content, 2 => '有效期:永久或进入会员中心关闭订阅', 3 => '时间:'.date('Y-m-d H:i:s'), 4 => $Remark, 5 => $Url ); $sdata = array( 'uid' => $userInfo['uid'], 'utype' => $userInfo['usertype'], 'wxid' => $userInfo['wxid'], 'ctime' => time(), 'mbconfig' => 'wx_subscribetpl', 'body' => serialize($tbody) ); $this->sendWxTemplate($userInfo['wxid'], $Tempid, $Url, $TempDate,$sdata); $res['errcode'] = 9; return $res; } //获取用户登录二维码 function applyWxQrcode($wxloginid='', $type='', $uid = ''){ global $config; $ticket = ''; if($config['wx_author']=='1'){ if($wxloginid){ //查询识别ID对应的二维码是否存在或失效 $wxqrcode = $this->select_once('wxqrcode', array('wxloginid' => $wxloginid, 'status' => 0)); if(!empty($wxqrcode) && $wxqrcode['time'] >= (time()-86000)){ $ticket = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".urlencode($wxqrcode['ticket']); return $ticket; } } $randStr = time().rand(1000,9999); $Url = 'https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token='.getToken(); $Data['expire_seconds'] = 86400; //有效时间一天 $Data['action_name'] = 'QR_STR_SCENE'; //临时二维码 //$Data['action_info']['scene']['scene_id'] = 1000; //登录场景值ID $Data['action_info']['scene']['scene_str'] = $randStr; //生成识别cookie串 $CurlReturn = CurlPost($Url,json_encode($Data)); //{" ticket":"gqen8twaaaaaaaaaas5odhrwoi8vd2vpeglulnfxlmnvbs9xlzayu1poumcwci05mluxvtrsne5wy28aagsey8nzawsauqea", // "expire_seconds":86400,"url":"http:\="" \="" weixin.qq.com\="" q\="" 02szhrg0r-92u1u4r4npco"} $Return = json_decode($CurlReturn,true); //插入数据库 if($Return['ticket']){ $warr = array('wxloginid' => $randStr, 'ticket' => $Return['ticket'], 'time' => time(), 'status' => 0); if($type=='wxadminbind' && isset($_SESSION['auid'])){ $warr['auid'] = $_SESSION['auid']; }else{ $warr['uid'] = $uid; } $this->insert_into('wxqrcode', $warr); //生成cookie if($type==''){ $type = 'wxloginid'; } require_once('cookie.model.php'); $cookie = new cookie_model($this->db,$this->def); $cookie -> setCookie($type,$randStr,time()+86000); $ticket = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".urlencode($Return['ticket']); } } return $ticket; } //微信发布工具各类二维码 function pubWxQrcode($c,$id,$type = ''){ global $config; if($c == 'job'){ $scene_str = $type."_jobid_".$id; }elseif($c == 'resume'){ $scene_str = $type."_resumeid_".$id; }elseif($c == 'company'){ $scene_str = $type."_companyid_".$id; }elseif($c == 'article'){ $scene_str = $type."_articleid_".$id; }elseif($c == 'announcement'){ $scene_str = $type."_announcementid_".$id; }elseif ($c == 'jobtel'){ // 微信扫码获取联系方式,限定$type是weixin $scene_str = "weixin_jobtelid_".$id; }elseif ($c == 'parttel'){ // 微信扫码获取联系方式,限定$type是weixin $scene_str = "weixin_parttelid_".$id; }elseif ($c == 'comtel'){ // 微信扫码获取联系方式,限定$type是weixin $scene_str = "weixin_comtelid_".$id; }elseif($c == 'part'){ $scene_str = $type."_partid_".$id; }elseif($c == 'register'){ $scene_str = $type."_ruid_".$id; }elseif($c == 'gongzhao'){ // 公招 $scene_str = $type."_gongzhaoid_".$id; } //查询识别ID对应的二维码是否存在或失效 $wxqrcode = $this->select_once('wxqrcode', array('wxloginid' => $scene_str)); if(!empty($wxqrcode)){ if($wxqrcode['time'] >= (time()- 86400)){//留出容错时间,一天内不重复生成 $ticket = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".urlencode($wxqrcode['ticket']); return $ticket; }else{ $this -> delete_all('wxqrcode',array('wxloginid'=>$scene_str), '', '', 1); } } $Url = 'https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token='.getToken(); $Data['expire_seconds'] = 2591000; //有效时间30天 $Data['action_name'] = 'QR_STR_SCENE'; //临时二维码 $Data['action_info']['scene']['scene_str'] = $scene_str; //场景值 $CurlReturn = CurlPost($Url,json_encode($Data)); $Return = json_decode($CurlReturn,true); //插入数据库 if($Return['ticket']){ $warr = array('wxloginid' => $scene_str, 'ticket' => $Return['ticket'], 'time' => time(), 'status' => 0); $this->insert_into('wxqrcode', $warr); $ticket = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".urlencode($Return['ticket']); } return $ticket; } function isWxlogin($wxid,$wxloginid){ global $config; $wxqrcode = $this->select_once('wxqrcode', array('wxloginid' => $wxloginid, 'status' => 0)); if($wxqrcode['auid']>0){ $user = $this -> select_once('admin_user',array('uid'=>$wxqrcode['auid'])); if($user){ $this->update_once('admin_user',array('wxid'=>$wxid),array('uid'=>$user['uid'])); $this->update_once('wxqrcode', array('status' => 1, 'wxid' => $wxid), array('wxloginid' => $wxloginid)); return array('result'=>true,'type'=>'amminwxbind'); }else{ return array('result'=>false,'type'=>'amminwxbind'); } }elseif($wxqrcode['uid'] > 0){ // 已存在账号扫码绑定 $userBind = $this->bindByUid($wxid, $wxqrcode['uid']); if($userBind['result']){ $upData = array('status' => 1, 'wxid' => $wxid, 'unionid' => $userBind['unionid']); if (!empty($userBind['unionid'])){ $upData['unionid'] = $userBind['unionid']; } $this->update_once('wxqrcode', $upData, array('wxloginid' => $wxloginid)); } return array('result'=>$userBind['result'],'type'=>'userwxbind'); }else{ $userBind = $this->isBind($wxid); if(isset($userBind['uid']) && $userBind['uid']>0){ // 微信已绑定账号,转登录 $upData = array('status' => 1, 'wxid' => $wxid, 'unionid' => $userBind['unionid']); if (!empty($userBind['unionid'])){ $upData['unionid'] = $userBind['unionid']; } $this->update_once('wxqrcode', $upData, array('wxloginid' => $wxloginid)); return true; }else{ // 微信未绑定账号,转注册 $upData = array('status' => 1, 'wxid' => $wxid, 'unionid' => $userBind['unionid']); if (!empty($userBind['unionid'])){ $upData['unionid'] = $userBind['unionid']; } $this->update_once('wxqrcode', $upData, array('wxloginid' => $wxloginid)); $return = array('result'=>false); if($wxloginid){ // 没有绑定的,扫码直接注册 if ($this->config['reg_real_name_check'] == 1){ // 后台设置实名注册的,要绑定手机号 $return['type'] = 'regphone'; }else{ $return['type'] = 'regbindacount'; } } return $return; } } } /** * 微信扫码直接绑定账号 */ function bindByUid($wxid = '', $uid = '') { $return = array('result'=>false,'unionid'=>''); if ($uid != ''){ $member = $this->select_once('member', array('uid'=>$uid), '`uid`,`usertype`,`wxid`,`unionid`,`wxbindtime`'); if (!empty($member)){ $wxuser = $this->getWxUser($wxid); $upData['wxid'] = $wxid; if (!empty($wxuser['unionid'])){ $upData['unionid'] = $wxuser['unionid']; $return['unionid'] = $wxuser['unionid']; } if(empty($member['wxbindtime'])){ $upData['wxbindtime'] = time(); } if (!empty($upData)){ // 先将其他账号绑定此微信记录清空 $qlwhere['wxid'] = $wxid; if (!empty($wxuser['unionid'])){ $qlwhere['unionid'] = array('=',$wxuser['unionid'],'OR');; } $this->update_once('member', array('wxid'=>'', 'unionid'=>''), $qlwhere); // 保存新的微信参数 $this->update_once('member', $upData, array('uid'=>$member['uid'])); //会员日志,记录扫码绑定 include_once ('log.model.php'); $LogM = new log_model($this->db, $this->def); $LogM->addMemberLog($member['uid'],$member['usertype'], '微信扫码绑定成功'); $return['result'] = true; } } } return $return; } function creatacount($wxloginid, $uid = ''){ $return = array('status'=>0); if($wxloginid){ //判断是否扫码 $status = $this->select_once('wxqrcode', array('wxloginid' => $wxloginid, 'status' => 1)); //根据扫码ID 读取用户 if($status['wxid'] || $status['unionid']){ if (!empty($status['unionid'])){ $member = $this->select_once('member',array('wxid'=>$status['wxid'],'unionid'=>array('=',$status['unionid'],'OR'))); $this->update_once('member',array('login_date'=>time(),'unionid'=>$status['unionid']),array('uid'=>$member['uid'])); }else{ $member = $this->select_once('member',array('wxid'=>$status['wxid'])); $this->update_once('member',array('login_date'=>time()),array('uid'=>$member['uid'])); } if ($uid == '' && empty($member) && $this->config['reg_real_name_check'] != 1){ // 非会员中心扫码绑定 // 未设置实名注册,微信未绑定账号的,直接注册账号 $wdata = array( 'openid' => $status['wxid'], 'unionid' => $status['unionid'], 'source' => 9 ); require_once('userinfo.model.php'); $userinfoM = new userinfo_model($this->db,$this->def); $result = $userinfoM->fastReg($wdata, '', 'weixin'); if ($result['errcode'] == 9){ $member = $userinfoM->getInfo(array('uid'=>$result['uid'])); } } $return = array('status'=>1, 'member'=>$member); } } return $return; } function getWxLoginStatus($wxloginid, $uid = ''){ // 未扫码 $return = array('status'=>0); if($wxloginid){ //判断是否扫码 $status = $this->select_once('wxqrcode', array('wxloginid' => $wxloginid, 'status' => 1)); //根据扫码ID 读取用户 if($status['wxid'] || $status['unionid']){ if (!empty($status['unionid'])){ $member = $this->select_once('member',array('wxid'=>$status['wxid'],'unionid'=>array('=',$status['unionid'],'OR'))); $this->update_once('member',array('login_date'=>time(),'unionid'=>$status['unionid']),array('uid'=>$member['uid'])); }else{ $member = $this->select_once('member',array('wxid'=>$status['wxid'])); $this->update_once('member',array('login_date'=>time()),array('uid'=>$member['uid'])); } if (!empty($member['usertype'])){ include_once ('log.model.php'); $LogM = new log_model($this->db, $this->def); if (empty($status['uid'])){ // 微信扫码登录的,有身份的账号,登录需记录登录日志,处理登录积分 //会员日志,记录手动登录 $LogM->addMemberLog($member['uid'],$member['usertype'], '微信扫码登录'); $logtime = date("Ymd",$member['login_date']); $nowtime = date("Ymd",time()); if($logtime!=$nowtime){ // 登录积分 include_once ('integral.model.php'); $integralM = new integral_model($this->db, $this->def); $integralM->invtalCheck($member['uid'],$member['usertype'],'integral_login','会员登录',22); // 登录日志 $logdata['content'] = '微信扫码登录'; $logdata['uid'] = $member['uid']; $logdata['usertype'] = $member['usertype']; $logdata['did'] = $member['did']; $LogM->addLoginlog($logdata); } } } $return = array('status'=>1, 'member'=>$member); } } return $return; } /** * 添加wxnav数量 * $setData 自定义处理数组 * */ function getWxNavNum($whereData){ if(!empty($whereData)){ $num = $this -> select_num('wxnav',$whereData); } return $num; } /** * 添加wxnav数据 * $setData 自定义处理数组 * */ function addWxNavInfo($setData){ if(!empty($setData)){ $nid = $this -> insert_into('wxnav',$setData); } return $nid; } /** * 更新wxnav数据 * $whereData 查询条件 * $data 自定义处理数组 * */ function upWxNavInfo($whereData, $data = array()){ if(!empty($whereData)){ $nid = $this -> update_once('wxnav',$data,$whereData); } return $nid; } function getWxNavList($whereData,$data=array()){ $navlist = array(); $List = $this->select_all("wxnav",$whereData); if(is_array($List)){ foreach($List as $value){ if($value['keyid']=='0' || $value['keyid']==''){ $navlist[$value['id']] = $value; } } foreach($List as $val){ foreach($navlist as $key=>$v){ if($v['id']==$val['keyid']){ $navlist[$key]['list'][] = $val; } } } } return $navlist; } function creatWxNavList($whereData,$data=array()){ $CreatNav = array(); $navList = $this->getWxNavList($whereData); if(is_array($navList)) { $i = 0; foreach($navList as $key=>$value){ $t = 0; $CreatNav['button'][$i]['name'] = urlencode(trim($value['name'])); if(!empty($value['list'])){ foreach($value['list'] as $k=>$v){ $CreatNav['button'][$i]['sub_button'][$t]['name'] = urlencode(trim($v['name'])); if($v['type']=='view'){ $CreatNav['button'][$i]['sub_button'][$t]['type'] = 'view'; $CreatNav['button'][$i]['sub_button'][$t]['url'] = trim($v['url']); }elseif($v['type']=='click'){ $CreatNav['button'][$i]['sub_button'][$t]['type'] = 'click'; $CreatNav['button'][$i]['sub_button'][$t]['key'] = urlencode(trim($v['key'])); }elseif($v['type']=='miniprogram'){ $CreatNav['button'][$i]['sub_button'][$t]['type'] = 'miniprogram'; $CreatNav['button'][$i]['sub_button'][$t]['url'] = urlencode(trim($v['url'])); $CreatNav['button'][$i]['sub_button'][$t]['appid'] = trim($v['appid']); $CreatNav['button'][$i]['sub_button'][$t]['pagepath'] = trim($v['apppage']); } $t++; } }else{ if($value['type']=='view'){ $CreatNav['button'][$i]['type'] = 'view'; $CreatNav['button'][$i]['url'] = trim($value['url']); }elseif($value['type']=='click'){ $CreatNav['button'][$i]['type'] = 'click'; $CreatNav['button'][$i]['key'] = urlencode(trim($value['key'])); }elseif($value['type']=='miniprogram'){ $CreatNav['button'][$i]['type'] = 'miniprogram'; $CreatNav['button'][$i]['url'] = urlencode(trim($value['url'])); $CreatNav['button'][$i]['appid'] = trim($value['appid']); $CreatNav['button'][$i]['pagepath'] = trim($value['apppage']); } } $i++; } } return $CreatNav; } function delWxNav($whereData,$data){ if($data['type']=='one'){//单个删除 $limit = 'limit 1'; } if($data['type']=='all'){//多个删除 $limit = ''; } $result = $this -> delete_all('wxnav',$whereData,$limit); return $result; } // 查询单条微信扫码 function getWxQrcode($whereData,$data=array()){ $row = $this->select_once('wxqrcode', $whereData); return $row; } function getWxQrcodeList($whereData,$data=array()){ //提取用户类 $ListNew = array(); $List = $this -> select_all('wxqrcode',$whereData); if(!empty($List)){ foreach($List as $k=>$v){ if(!empty($v['wxid'])){ $wxid[] = $v['wxid']; } } if (!empty($wxid)){ $member = $this->select_all('member',array('wxid'=>array('in',"'".@implode("','",$wxid)."'")),'`wxid`,`username`,`usertype`'); foreach($List as $key=>$value){ foreach($member as $v){ if($value['wxid'] == $v['wxid']){ $List[$key]['username'] = $v['username']; $List[$key]['usertype'] = $v['usertype']; } } } } $ListNew['list'] = $List; } return $ListNew; } function delWxqrcode($whereData,$data){ if($data['type']=='one'){//单个删除 $limit = 'limit 1'; } if($data['type']=='all'){//多个删除 $limit = ''; } $result = $this -> delete_all('wxqrcode',$whereData,$limit, '', 1); return $result; } function getWxzdkeywordList($whereData,$data=array()){ $ListNew = array(); $List = $this -> select_all('wxzdkeyword',$whereData); if(!empty( $List )){ $ListNew['list'] = $List; } return $ListNew; } function getWxzdkeyword($whereData,$data=array()){ $wxzdKeyword = $this -> select_once('wxzdkeyword',$whereData); return $wxzdKeyword; } function addWxzdkeyword($setData){ if(!empty($setData)){ $nid = $this -> insert_into('wxzdkeyword',$setData); } return $nid; } function upWxzdkeyword($whereData, $data = array()){ if(!empty($whereData)){ $nid = $this -> update_once('wxzdkeyword',$data,$whereData); } return $nid; } function delWxzdkeyword($whereData,$data){ if($data['type']=='one'){//单个删除 $limit = 'limit 1'; } if($data['type']=='all'){//多个删除 $limit = ''; } $result = $this -> delete_all('wxzdkeyword',$whereData,$limit); return $result; } public function upWxlogin($whereData,$data){ $nid = $this -> update_once('wxqrcode', $data, $whereData); return $nid; } /** * 在线时直聊提醒 微信消息模板 */ function sendWxChat($data){ global $config; if(!$config){ include(PLUS_PATH.'config.php'); } if($config['wx_xxtz']!='1' || !$config['wx_mbchat']) { return true; } if($data['wxid']) { $Tempid = $config['wx_mbchat']; $First = '新的'.$this->config['sy_chat_name'].'提醒'; $Name = $data['name']; $Expect = $data['expect']; $Time = $data['time']; $Remark = '感谢您的支持,详情请登录 '.$config['sy_webname'].' !'; $TempDate['first'] = array('value'=>$First,'color'=>'');//标题 $TempDate['keyword1'] = array('value'=>$Name,'color'=>'');//姓名 $TempDate['keyword2'] = array('value'=>$Expect,'color'=>'');//适合意向 $TempDate['keyword3'] = array('value'=>$Time,'color'=>'');//联系时间 $TempDate['remark'] = array('value'=>$Remark,'color'=>''); $Url = Url('wap',array('c'=>'sysnews'),'member'); $tbody = array( 0 => $First, 1 => '姓名:'.$Name, 2 => '适合意向:'.$Expect, 3 => '联系时间:'.$Time, 4 => $Remark, 5 => $Url ); $sdata = array( 'uid' => $data['uid'], 'utype' => $data['usertype'], 'wxid' => $data['wxid'], 'ctime' => time(), 'mbconfig' => 'wx_mbchat', 'body' => serialize($tbody) ); $this->sendWxTemplate($data['wxid'],$Tempid,$Url,$TempDate,$sdata); } } /** * 切换身份审核 微信消息模板 */ function sendWxUsercahnge($data){ global $config; if($config['wx_xxtz']!='1' || !$config['wx_userchangetpl']){ return true; } if($data['uid'] && $data['id'] ){ $Tempid = $config['wx_userchangetpl']; $user = $this->select_once('user_change',array('id' =>$data['id'],'uid'=>$data['uid']),'`uid`,`name`,`pres_usertype`,`apply_usertype`,`status`,`statusbody`'); switch($user['status']){ case '1':$Status='审核通过'; break; case '2':$Status='审核不通过'; break; } $Member = $this->select_once('member', array('uid' => $user['uid']), '`wxid`,`uid`,`usertype`'); $First = '尊敬的用户'.$user['name'].',您好!您申请转换身份有一条新的消息通知!'; $TempDate['first'] = array('value'=>$First,'color'=>'');//标题 $TempDate['keyword1'] = array('value'=>$user['name'],'color'=>'');//用户名 $TempDate['keyword2'] = array('value'=>$Status,'color'=>'');//审核状态 if($user['statusbody'] && $user['status']==2){ $Remark = $user['statusbody']; $TempDate['remark'] = array('value'=>$Remark,'color'=>''); } $Url = Url('wap',array('c'=>'login')); $tbody = array( 0 => $First, 1 => '用户名:'.$user['name'], 2 => '审核结果:'.$Status, 3 => $Remark, 4 => $Url ); $sdata = array( 'uid' => $Member['uid'], 'utype' => $Member['usertype'], 'wxid' => $Member['wxid'], 'ctime' => time(), 'mbconfig' => 'wx_userchangetpl', 'body' => serialize($tbody) ); $this->sendWxTemplate($Member['wxid'],$Tempid,$Url,$TempDate,$sdata); } } /** * 宣讲会直播即将开播通知 微信消息模板,本地宣讲会提醒,非都需 */ function sendWxXjhLiveYy($data){ global $config; if(!$config){ include(PLUS_PATH.'config.php'); } if($config['wx_xxtz']!='1' || !$config['wx_mbxjhlive']) { return true; } if($data['wxid']) { $Tempid = $config['wx_mbxjhlive']; $First = '您预约的宣讲会直播即将开始'; $Name = $data['name']; $Time = date('Y-m-d H:i', $data['stime']); $Remark = '感谢您的支持,点击详情查看宣讲会直播!'; $TempDate['first'] = array('value'=>$First,'color'=>''); $TempDate['keyword1'] = array('value'=>$Name,'color'=>'');//会议主题 $TempDate['keyword2'] = array('value'=>$Time,'color'=>'');//开始时间 $TempDate['remark'] = array('value'=>$Remark,'color'=>''); $Url = $data['url']; $tbody = array( 0 => $First, 1 => '会议主题:'.$Name, 2 => '开始时间:'.$Time, 3 => $Remark, 4 => $Url ); $sdata = array( 'uid' => $data['uid'], 'utype' => $data['usertype'], 'wxid' => $data['wxid'], 'ctime' => time(), 'mbconfig' => 'wx_mbxjhlive', 'body' => serialize($tbody) ); $return = $this->sendWxTemplate($data['wxid'],$Tempid,$Url,$TempDate,$sdata); } } /** * 视频面试审核 微信消息模板 */ function sendWxSpviewStatus($data){ global $config; if($config['wx_xxtz']!='1' || !$config['wx_mbspmssh']){ return true; } if($data['id']){ $Tempid = $config['wx_mbspmssh']; $spview = $this->select_once('spview',array('id' =>$data['id']),'`uid`,`remark`,`status`,`statusbody`'); switch($spview['status']){ case '1':$Status='审核通过'; break; case '2':$Status='审核不通过'; break; } $Member = $this->select_once('member', array('uid' => $spview['uid']), '`wxid`,`uid`,`usertype`'); $company = $this->select_once('company', array('uid' => $spview['uid']), '`name`'); $First = '尊敬的用户,您好!您发布的视频面试有一条新的消息通知!'; $TempDate['first'] = array('value'=>$First,'color'=>'');//标题 $TempDate['keyword1'] = array('value'=>$company['name'],'color'=>'');//企业名称 $TempDate['keyword2'] = array('value'=>$Status,'color'=>'');//审核状态 if($spview['statusbody'] && $spview['status']==2){ $Remark = $spview['statusbody']; $TempDate['remark'] = array('value'=>$Remark,'color'=>''); } $Url = Url('wap',array('c'=>'login')); $tbody = array( 0 => $First, 1 => '用户名:'.$company['name'], 2 => '审核结果:'.$Status, 3 => $Remark, 4 => $Url ); $sdata = array( 'uid' => $Member['uid'], 'utype' => $Member['usertype'], 'wxid' => $Member['wxid'], 'ctime' => time(), 'mbconfig' => 'wx_mbspmssh', 'body' => serialize($tbody) ); $this->sendWxTemplate($Member['wxid'],$Tempid,$Url,$TempDate,$sdata); } } /** * 视频面试通知 微信消息模板 */ function sendWxSpview($data){ global $config; if(!$config){ include(PLUS_PATH.'config.php'); } if($config['wx_xxtz']!='1' || !$config['wx_mbspview']) { return true; } $Tempid = $config['wx_mbspview']; $First = $data['title']; $JobName = $data['jobname']; $Time = $data['sptime']; $Type = $data['sptype']; $Remark = '感谢您的支持,点击详情查看视频面试!'; $Uname = $data['name']; $TempDate['first'] = array('value'=>$First,'color'=>''); $TempDate['keyword1'] = array('value'=>$JobName,'color'=>''); //应聘职位 $TempDate['keyword2'] = array('value'=>$Time,'color'=>''); //面试时间 $TempDate['keyword3'] = array('value'=>$Type,'color'=>''); //面试形式 $TempDate['keyword4'] = array('value'=>$Remark,'color'=>''); //面试备注 $TempDate['keyword5'] = array('value'=>$Uname,'color'=>''); //通知人 $Url = $data['url']; $tbody = array( 0 => $First, 1 => '应聘职位:'.$JobName, 2 => '面试时间:'.$Time, 3 => '面试形式:'.$Type, 4 => '面试说明:'.$Remark, 5 => '通知人:'.$Uname, 6 => $Url ); $sdata = array( 'uid' => $data['uid'], 'utype' => $data['usertype'], 'wxid' => $data['wxid'], 'ctime' => time(), 'mbconfig' => 'wx_mbspview', 'body' => serialize($tbody) ); $this->sendWxTemplate($data['wxid'],$Tempid,$Url,$TempDate,$sdata); } /** * 聊天-互换电话、微信号提醒 微信消息模板 */ function sendWxChatEx($data){ global $config; if(!$config){ include(PLUS_PATH.'config.php'); } if($config['wx_xxtz']!='1' || !$config['wx_mbchat_ex']) { return true; } $Tempid = $config['wx_mbchat_ex']; $First = $data['title']; $content = $data['name'].'通过'.$this->config['sy_chat_name'].'邀请你互换'.$data['ask']; $Time = $data['asktime']; $Remark = '感谢您的支持,点击详情查看!'; $TempDate['first'] = array('value'=>$First,'color'=>''); $TempDate['keyword1'] = array('value'=>$content,'color'=>''); //服务内容 $TempDate['keyword2'] = array('value'=>$Time,'color'=>''); //时间 $TempDate['remark'] = array('value'=>$Remark,'color'=>''); //详情 $Url = $data['url']; $tbody = array( 0 => $First, 1 => '服务内容:'.$content, 2 => '请求时间:'.$Time, 3 => '详情:'.$Remark, 4 => $Url ); $sdata = array( 'uid' => $data['uid'], 'utype' => $data['usertype'], 'wxid' => $data['wxid'], 'ctime' => time(), 'mbconfig' => 'wx_mbchat_ex', 'body' => serialize($tbody) ); $this->sendWxTemplate($data['wxid'],$Tempid,$Url,$TempDate,$sdata); } /** * 微信发送客服消息 */ function sendCustom($wxid,$type='text',$data = array()){ global $config; if(!$config){ include(PLUS_PATH.'config.php'); } if($wxid){ //构建模板参数 $templateDate = array("touser"=>$wxid, "msgtype"=>$type ); if($type == 'text'){ if($data['info'] == ''){ if($this->config['wx_welcom']){ $info = $this->config['wx_welcom']; }else{ $info = "欢迎您关注".$this->config['sy_webname']."!\n 1:您可以直接回复关键字如【销售】、【销售 XX公司】查找您想要的职位\n绑定您的账户体验更多精彩功能\n感谢您的关注!"; } }else{ $info = $data['info']; } $templateDate['text'] = array('content' => $info); }elseif($type == 'image'){ if(empty($data)){ $data['media_id'] = $this->config['sy_wxcom_picmedia']; } $templateDate['image'] = $data; }elseif($type == 'miniprogrampage'){ if(empty($data)){ $data['title'] = $this->config['sy_xcxname']; $data['appid'] = $this->config['sy_xcxappid']; $data['pagepath'] = $this->config['sy_xcxpath']; $data['thumb_media_id'] = $this->config['sy_xcxmedia']; } $templateDate['miniprogrampage'] = $data; } //读取微信 token $Token = getToken(); //客服消息发送接口链接 $wxUrl = 'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token='.$Token; $CurlReturn = CurlPost($wxUrl,json_encode($templateDate,JSON_UNESCAPED_UNICODE)); $return = json_decode($CurlReturn,true); } return $return; } /** * 推广营销发送公众号模板消息 */ function sendwxtpl($post){ $status = 0; //检查信息完整度 if($post['wxtplid'] && $post['first'] && $post['keyword1'] && $post['keyworddata1']){ $where = array('wxid' => array('<>','')); $whereStr = "`wxid` <> ''"; if($post['activ'] != 'all'){ // 用户活跃度 $where['logindate'] = array('<=',(time() - (int)$post['activ']*86400)); $whereStr = " AND `logindate` <= ".(time() - (int)$post['activ']*86400); } if($post['utype'] == 'allbind'){ $wxMemberNum = $this -> select_num('member',$where); }elseif($post['utype'] == '5'){ $username = @explode(',',$post['userarr']); $where['username'] = array('in_s',implode("','",$username)); $wxMemberNum = $this -> select_num('member',$where); }else{ if($post['utype'] == '1'){ if($post['utz'] == 'birthday'){//生日祝福 $numField = "count(*) as num"; $wxSql = "`".$this->def."member` where ".$whereStr." AND usertype = 1 AND uid IN ( SELECT uid FROM `".$this->def."resume` WHERE date_format(`birthday`,'%m%d')=date_format(now(),'%m%d'))"; $numberAll = $this->DB_query_all("SELECT $numField FROM $wxSql"); $wxMemberNum = $numberAll['num']; }elseif($post['utz'] == 'expect'){//提醒发布简历 $numField = "count(*) as num"; $wxSql = "`".$this->def."member` where ".$whereStr." AND usertype = 1 AND uid NOT IN ( SELECT uid FROM `".$this->def."resume_expect`)"; $numberAll = $this->DB_query_all("SELECT $numField FROM $wxSql"); $wxMemberNum = $numberAll['num']; }else{ $numField = "count(*) as num"; $wxSql = "`".$this->def."member` where ".$whereStr." AND usertype = 1"; $numberAll = $this->DB_query_all("SELECT $numField FROM $wxSql"); $wxMemberNum = $numberAll['num']; } }elseif($post['utype'] == '2'){ if($post['ctz'] == 'endvip'){ //提醒会员到期 $numField = "count(*) as num"; $wxSql = "`".$this->def."member` where ".$whereStr." AND usertype = 2 AND uid IN ( SELECT uid FROM `".$this->def."company_statis` WHERE `vip_etime` >".time()." AND `vip_etime` < ".strtotime('+7 day').")"; $numberAll = $this->DB_query_all("SELECT $numField FROM $wxSql"); $wxMemberNum = $numberAll['num']; }elseif($post['utype'] == '2' && $post['ctz'] == 'jobadd'){//提醒发布职位 $numField = "count(*) as num"; $wxSql = "`".$this->def."member` where ".$whereStr." AND usertype = 2 AND uid NOT IN ( SELECT uid FROM `".$this->def."company_job`)"; $numberAll = $this->DB_query_all("SELECT $numField FROM $wxSql"); $wxMemberNum = $numberAll['num']; }else{ $numField = "count(*) as num"; $wxSql = "`".$this->def."member` where ".$whereStr." AND usertype = 2"; $numberAll = $this->DB_query_all("SELECT $numField FROM $wxSql"); $wxMemberNum = $numberAll['num']; } }else{ // 猎头、培训 $where['usertype'] = (int)$post['utype']; //查询符合条件的用户 $wxMemberNum = $this->select_num('member',$where); } } if($wxMemberNum > 0){ //循环次数 $page = intval($post['page']); $size = 200; $num = ceil($wxMemberNum/$size); $success = $error = 0; if(isset($wxSql)){ $limit = " LIMIT ".($size*($page-1)) . ",".$size; $wxMember = $this->DB_query_all("SELECT `uid`,`wxid`,`usertype` FROM $wxSql".$limit,"all"); }else{ $where['limit'] = array(($size*($page-1)),$size); $wxMember = $this->select_all('member',$where,"`uid`,`usertype`,`wxid`"); } foreach($wxMember as $key=>$value){ $sendReturn = $this -> sendTpl($value['uid'],$value['wxid'],$value['usertype'],$post); if($sendReturn['errcode'] > 0){ $error++; }else{ $success++; } } $msg = ''; if ($page < $num){ $msg = '发送中...'; $status = 3; }else{ $status = 1; } $msg .= '已发送模板消息成功:'.$success.'条'; if ($error){ $msg .= ',失败:'.$error.'条'; } }else{ $msg = '没有符合条件的用户!'; } }else{ $msg = "请按要求填写相关内容!"; } return array('status' => $status,'msg'=>$msg); } function sendTpl($uid,$wxid,$usertype,$post){ //构建模板消息数组 $TempDate['first'] = array('value'=>$post['first'],'color'=>'');//标题 $TempDate[$post['keyword1']] = array('value'=>$post['keyworddata1'],'color'=>''); if($post['keyword2']){ $TempDate[$post['keyword2']] = array('value'=>$post['keyworddata2'],'color'=>''); } if($post['keyword3']){ $TempDate[$post['keyword3']] = array('value'=>$post['keyworddata3'],'color'=>''); } if($post['keyword4']){ $TempDate[$post['keyword4']] = array('value'=>$post['keyworddata4'],'color'=>''); } if($post['keyword5']){ $TempDate[$post['keyword5']] = array('value'=>$post['keyworddata5'],'color'=>''); } $TempDate['remark'] = array('value'=>$post['remark'],'color'=>'');//备注信息 if($post['url']){ $Url = $post['url']; }else{ $Url = $this->config['sy_wapdomain']; } $sdata = array( 'uid' => $uid, 'utype' => $usertype, 'wxid' => $wxid, 'ctime' => time(), 'mbconfig' => 'wxmbdiy', 'body' => serialize($post) ); $sendReturn = $this->sendWxTemplate($wxid,$post['wxtplid'],$Url,$TempDate,$sdata); return $sendReturn; } function upMedia($picpath){ //启用OSS需要先获取远程图片流临时保存至本地 if ($this->config['sy_oss'] == 1){ $path = DATA_PATH.'upload/wx/xcxpic'.time().'.jpg'; $uimage = curlget($this->config['sy_ossurl'].'/'.$picpath); if($uimage){ file_put_contents($path, $uimage); include_once(LIB_PATH.'upload.class.php'); $wxupload = new Upload(); list($width,$height,$type,$attr) = getimagesize($path); $path = $wxupload->makeThumb($path,$width,$height,'',true); } }else{ $path = APP_PATH.$picpath; } if($path){ $token = getToken(); $url = 'https://api.weixin.qq.com/cgi-bin/material/add_material?access_token='.$token.'&type=image'; $ch = curl_init(); //兼容5.0-5.6版本的curl if (class_exists('\CURLFile')) { curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true); $data = array('media' => new \CURLFile($path));// } else { if (defined('CURLOPT_SAFE_UPLOAD')) { curl_setopt($ch,CURLOPT_SAFE_UPLOAD,false); $data = array('media'=>'@'.$path); } } curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1 ); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); if (curl_errno($ch)) { // echo 'Errno'.curl_error($ch);die; } $result = curl_exec($ch); curl_close($ch); $res = json_decode($result,true); return array('media_id'=>$res['media_id'],'errmsg' => $res['errmsg']); } } /** * 管理员通知 微信消息模板 * $data=array( 'userids'=>接收通知的企业账户数组 'first'=>通知内容 'type'=>通知类型标题 'title'=>自定义标题,优先级别大于type ) */ function sendWxQyAdmin($data=array()){ global $config; if($config['sy_admin_wmtype']!='2') { return true; } if(isset($data['userids']) && !empty($data['userids'])) { $wmtype = $this -> select_all('admin_wmtype', array('type' =>array('<>','')), '`type`,`name`'); $titleType = array(); foreach($wmtype as $wk=>$wv){ $titleType[$wv['type']] = $wv['name']; } //转换数组中字符编码,微信只支持UTF-8 $First = '
'.date('Y/m/d H:i').'
'.$data['first'].'
请及时登录管理后台进行处理
'; $Title = $data['title'] ? $data['title'] : ($titleType[$data['type']] ? $titleType[$data['type']] : '消息通知'); //构建模板参数 $templateDate = array( "touser" => implode('|',$data['userids']), "msgtype" => 'textcard', "agentid" => $config['wx_qy_agentid'], "textcard" => array( 'title' => $Title, 'description' => $First, 'url' => $config['sy_weburl'] . '/wapadmin/' ) ); $sdata = array( 'uids' => implode(',',$data['uids']), 'touser'=> implode(',',$data['userids']), 'body' => serialize(array($Title,$First)), 'ctime' => time() ); $this->sendQyWxTemplate($templateDate,$sdata); } } /** * @userids 可以接收消息的企业微信中的账户 * @Secret 不同企业微信应用对应的应用secret * @data 消息体 */ function sendQyWxTemplate($templateDate=array(),$sdata=array()){ global $config; if(!$config){ include(PLUS_PATH.'config.php'); } //读取微信 token $Token = getWxQyToken(); //企业微信消息发送接口链接 $qyUrl = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token='.$Token; $CurlReturn = CurlPost($qyUrl,json_encode($templateDate)); $return = json_decode($CurlReturn,true); $sdata['status'] = $return['errcode']; if($return['errcode']!=0){ $sdata['msg'] = $return['errmsg']; } if($return['errcode']==0 && !empty($return['invaliduser'])){ $sdata['msg'] = '以下企业微信账户不在可见范围:'.str_replace('|', ',',$return['invaliduser']); } $this->insert_into('wx_qymsg',$sdata); return $return; } /** * 按用户类型处理列表中用户数据 */ private function getUserByUsertype($rows = array()){ $ru = $cu = $lu = $pu = array(); foreach ($rows as $v){ if ($v['utype'] == 1){ $ru[] = $v['uid']; } if ($v['utype'] == 2){ $cu[] = $v['uid']; } if ($v['utype'] == 3){ $lu[] = $v['uid']; } if ($v['utype'] == 4){ $pu[] = $v['uid']; } } if (!empty($ru)){ $resume = $this->select_all('resume', array('uid'=>array('in',pylode(',', array_unique($ru)))),'`uid`,`name`'); } if (!empty($cu)){ $company = $this->select_all('company', array('uid'=>array('in',pylode(',', array_unique($cu)))),'`uid`,`name`'); } if (!empty($lu)){ $ltinfo = $this->select_all('lt_info', array('uid'=>array('in',pylode(',', array_unique($lu)))),'`uid`,`realname` AS `name`'); } if (!empty($pu)){ $pxinfo = $this->select_all('px_train', array('uid'=>array('in',pylode(',', array_unique($pu)))),'`uid`,`name`'); } foreach ($rows as $k=>$v){ $rows[$k]['username'] = ''; if (isset($resume)){ foreach ($resume as $rv){ if ($v['utype'] == 1 && $v['uid'] == $rv['uid']){ $rows[$k]['username'] = $rv['name']; } } } if (isset($company)){ foreach ($company as $cv){ if ($v['utype'] == 2 && $v['uid'] == $cv['uid']){ $rows[$k]['username'] = $cv['name']; } } } if (isset($ltinfo)){ foreach ($ltinfo as $lv){ if ($v['utype'] == 3 && $v['uid'] == $lv['uid']){ $rows[$k]['username'] = $lv['name']; } } } if (isset($pxinfo)){ foreach ($pxinfo as $pv){ if ($v['utype'] == 4 && $v['uid'] == $pv['uid']){ $rows[$k]['username'] = $pv['name']; } } } } return $rows; } /** * 微信通知重发 */ function msgrepeat($id){ if(is_array($id)){ $where['id'] = array('in',pylode(',',$id)); }else{ $where['id'] = (int)$id; } $where['status'] = array('<>',0); $where['wxid'] = array('<>',''); $where['body'] = array('<>',''); //查询失败通知 $rows = $this->select_all('wx_msg',$where); if(!empty($rows)){ global $config; if(!$config){ include(PLUS_PATH.'config.php'); } //读取微信 token $Token = getToken(); //模板消息发送接口链接 $wxUrl = 'https://api.weixin.qq.com/cgi-bin/message/template/send?access_token='.$Token; $successid = $failid = array(); $msg = $codeMsg =''; foreach ($rows as $v){ $Url = ''; $TempDate = array(); $tbody = unserialize($v['body']); if ($v['mbconfig'] != 'wxmbdiy'){ // 有固定模板ID的通知 $Tempid = $config[$v['mbconfig']]; // 判断最后一个参数是否是url $endstr = end($tbody); if(preg_match("#(http|https)://(.*\.)?.*\..*#i",$endstr)){ $Url = $endstr; array_pop($tbody); } $count = count($tbody); foreach ($tbody as $key=>$val){ if ($key == 0){ $TempDate['first'] = array('value'=>$val,'color'=>''); }elseif ($key == ($count - 1)){ // 将数组中url去掉后,最后一项就是备注 $TempDate['remark'] = array('value'=>$val,'color'=>''); }else{ $TempDate['keyword'.$key] = array('value'=>$val,'color'=>''); } } }else{ // 后台-运营-推广营销-公众号模板消息 foreach ($tbody as $key=>$val){ if (!empty($val)){ if ($key == 'wxtplid'){ $Tempid = $val; }elseif ($key == 'first'){ $TempDate['first'] = array('value'=>$val,'color'=>''); }elseif ($key == 'keyword1'){ $TempDate[$tbody['keyword1']] = array('value'=>$tbody['keyworddata1'],'color'=>''); }elseif ($key == 'keyword2'){ $TempDate[$tbody['keyword2']] = array('value'=>$tbody['keyworddata2'],'color'=>''); }elseif ($key == 'keyword3'){ $TempDate[$tbody['keyword3']] = array('value'=>$tbody['keyworddata3'],'color'=>''); }elseif ($key == 'keyword4'){ $TempDate[$tbody['keyword4']] = array('value'=>$tbody['keyworddata4'],'color'=>''); }elseif ($key == 'keyword5'){ $TempDate[$tbody['keyword5']] = array('value'=>$tbody['keyworddata5'],'color'=>''); }elseif ($key == 'remark'){ $TempDate['remark'] = array('value'=>$val,'color'=>''); }elseif ($key == 'url'){ $Url = $val; } } } } if (empty($Url)){ if($v['mbconfig'] == 'wx_mbsqzw'){ $Url = $this->config['sy_wapdomain']."/member/index.php?c=hr"; }elseif($v['mbconfig'] == 'wx_mbyqms'){ $Url = $this->config['sy_wapdomain']."/member/index.php?c=invite"; }elseif(in_array($v['mbconfig'],array('wx_mbcztx','wx_mbzwsh','wx_mbjzsh','wx_mbjzbm','wx_mbreward','wx_subscribetpl','wx_userchangetpl','wx_mbspmssh'))){ $Url = Url('wap',array('c'=>'login')); }elseif($v['mbconfig'] == 'wx_mbadmin'){ $Url = ''; }elseif(in_array($v['mbconfig'],array('wx_mbchat','wx_mbchat_ex'))){ $Url = Url('wap',array('c'=>'chat','a'=>'chatList','fr'=>'tz')); }elseif($v['mbconfig'] == 'wx_mbxjhlive'){ $Url = Url('wap', array('c'=>'xjhlive')); }elseif($v['mbconfig'] == 'wx_mbspview'){ $Url = Url('wap', array('c'=>'spview')); }elseif($v['mbconfig'] == 'wxmbdiy'){ $Url = $this->config['sy_wapdomain']; } } if (!empty($Tempid)){ //构建模板参数 $templateDate = array( 'touser' => $v['wxid'], 'template_id' => $Tempid, 'url' => $Url, 'topcolor' => '#FF0000', 'data' => $TempDate ); $CurlReturn = CurlPost($wxUrl,json_encode($templateDate)); $return = json_decode($CurlReturn,true); if ($return['errcode'] == 0){ $successid[] = $v['id']; }else { $failid[] = $v['id']; $codeMsg .= $return['errcode'].' '; } }else{ $failid[] = $v['id']; $codeMsg .= '模板ID为空 '; } } if(!empty($successid)){ $this->update_once('wx_msg', array('status'=>0,'msg'=>'ok'),array('id'=> array('in',implode(',',$successid)))); $msg .= '本次微信通知重发成功:'.count($successid).'条'; } if(!empty($failid) && !empty($codeMsg)){ $msg .=',失败:'.count($failid).'条,错误码:'.$codeMsg; } }else{ $msg = '没有需要重发的通知'; } return $msg; } } ?>