'后台', 'index' => 'PC端', 'wap' => 'WAP端', 'app' => 'APP', 'weixin' => '微信小程序', 'baidu' => '百度小程序', 'toutiao' => '抖音小程序', 'member' => 'PC会员中心', 'wap_member' => 'WAP会员中心', 'wapapp_member' => 'WAP会员中心', 'app_member' => 'APP会员中心', 'weixin_member' => '微信小程序会员中心', 'baidu_member' => '百度小程序会员中心', 'toutiao_member' => '头条会员中心' ); public $userType = array('1' => '个人' , '2' => '企业', '3' => '猎头', '4' => '培训机构'); /** * 添加行为日志 * @param string $model * @param array $data */ public function addWebLog($model, $data = array()) { $webData = array( 'uid' => $data['uid'], 'usertype' => $data['usertype'], 'uri' => $_SERVER['REQUEST_URI'], 'type' => $_SERVER['REQUEST_METHOD'], 'is_ajax' => isset($_SERVER["HTTP_X_REQUESTED_WITH"]) && strtolower($_SERVER["HTTP_X_REQUESTED_WITH"]) == "xmlhttprequest" ? 1 : 0 ); if ($this->config['sy_seo_rewrite'] == 1) { if (preg_match("/yunurl/i", $_SERVER['QUERY_STRING'])) { $mcArr = @explode('=', $_SERVER['QUERY_STRING']); $mcArr = @explode('-', $mcArr[1]); $isRe = 1; } else { $mcArr = @explode('&', $_SERVER['QUERY_STRING']); } } else { $mcArr = @explode('&', $_SERVER['QUERY_STRING']); } $webData['model'] = $model; if ($model == 'wxapp'){ // 接口 if ($data['provider'] == 'app') { $webData['model'] = 'app'; // APP } else if ($data['provider'] == 'weixin') { $webData['model'] = 'weixin'; // 微信小程序 } else if ($data['provider'] == 'baidu') { $webData['model'] = 'baidu'; // 百度小程序 } else if ($data['provider'] == 'toutiao') { $webData['model'] = 'toutiao'; // 抖音小程序 } else { $webData['model'] = 'wap'; // h5(WAP) } foreach ($mcArr as $k => $v) { $mcA = @explode('=', $v); if ($mcA[0] == 'h') { if ($data['provider'] == 'app') { $webData['model'] = 'app_member'; // APP 会员中心 } else if ($data['provider'] == 'weixin') { $webData['model'] = 'weixin_member'; // 微信小程序会员中心 } else if ($data['provider'] == 'baidu') { $webData['model'] = 'baidu_member'; // 百度小程序会员中心 } else if ($data['provider'] == 'toutiao') { $webData['model'] = 'toutiao_member'; // 抖音小程序会员中心 }else{ $webData['model'] = 'wapapp_member'; // WAP会员中心 } } if ($mcA[0] == 'm') { $webData['m'] = $mcA[1]; } if ($mcA[0] == 'c') { $webData['c'] = $mcA[1]; } } } else if ($model == 'wap') { // wap模块 foreach ($mcArr as $k => $v) { if ($this->config['sy_seo_rewrite'] == 1) { if ($isRe == 1) { $mcA = @explode('_', $v); } else { $mcA = @explode('=', $v); } } else { $mcA = @explode('=', $v); } if ($mcA[0] == 'c') { $webData['m'] = $mcA[1]; } if ($mcA[0] == 'a') { $webData['c'] = $mcA[1]; } } } else if ($model == 'wap_member') { // wap会员中心 if ($data['usertype'] == 1) { $webData['m'] = 'user'; } else if ($data['usertype'] == 2) { $webData['m'] = 'com'; } else if ($data['usertype'] == 3) { $webData['m'] = 'lt'; } else if ($data['usertype'] == 4) { $webData['m'] = 'px'; } foreach ($mcArr as $k => $v) { if ($this->config['sy_seo_rewrite'] == 1) { if ($isRe == 1) { $mcA = @explode('_', $v); } else { $mcA = @explode('=', $v); } } else { $mcA = @explode('=', $v); } if ($mcA[0] == 'c') { $webData['c'] = $mcA[1]; } } } else if ($model == 'member') { // PC端会员中心 if ($data['usertype'] == 1) { $webData['m'] = 'user'; } else if ($data['usertype'] == 2) { $webData['m'] = 'com'; } else if ($data['usertype'] == 3) { $webData['m'] = 'lt'; } else if ($data['usertype'] == 4) { $webData['m'] = 'px'; } foreach ($mcArr as $k => $v) { if ($this->config['sy_seo_rewrite'] == 1) { if ($isRe == 1) { $mcA = @explode('_', $v); } else { $mcA = @explode('=', $v); } } else { $mcA = @explode('=', $v); } if ($mcA[0] == 'c') { $webData['c'] = $mcA[1]; } if ($mcA[0] == 'act'){ $webData['a'] = $mcA[1]; } } } else if ($model == 'admin') { // 后台 $webData['uid'] = $data['auid']; $webData['usertype'] = 0; $webData['m'] = 'index'; foreach ($mcArr as $k => $v) { if ($this->config['sy_seo_rewrite'] == 1) { if ($isRe == 1) { $mcA = @explode('_', $v); } else { $mcA = @explode('=', $v); } } else { $mcA = @explode('=', $v); } if ($mcA[0] == 'm') { $webData['m'] = $mcA[1]; } if ($mcA[0] == 'c') { $webData['c'] = $mcA[1]; } } } else if ($model == 'index') { // 前台 $modelArr = array('job', 'resume', 'part', 'company', 'article', 'announcement', 'hr', 'zph', 'ask', 'train', 'lietou', 'school', 'evaluate', 'once', 'tiny', 'redeem', 'map', 'special', 'reward', 'zphnet', 'redeem', 'spview', 'datav', 'gongzhao'); foreach ($modelArr as $k => $v) { if (preg_match("/" . $v . "/i", $_SERVER['SCRIPT_NAME'])) { $webData['m'] = $v; } } foreach ($mcArr as $k => $v) { if ($this->config['sy_seo_rewrite'] == 1) { if ($isRe == 1) { $mcA = @explode('_', $v); } else { $mcA = @explode('=', $v); } } else { $mcA = @explode('=', $v); } if ($mcA[0] == 'm') { $webData['m'] = $mcA[1]; } if ($mcA[0] == 'c') { $webData['c'] = $mcA[1]; } if ($mcA[0] == 'a'){ $webData['a'] = $mcA[1]; } } } if ($_SERVER['REQUEST_METHOD'] == 'POST') { $webData['params'] = serialize($_POST); } elseif ($_SERVER['REQUEST_METHOD'] == 'GET') { $webData['params'] = serialize($_GET); } $webData['ip'] = fun_ip_get(); $webData['time'] = time(); if ($model!='admin' && isset($data['auid'])){ $webData['m'] = 'nolog'; } $noAddArr = array('cron', 'geetest', 'nolog'); if (!in_array($webData['m'], $noAddArr) && $model){ $this->insert_into('web_log', $webData); } } /** * 查询行为日志 * @param array $whereData * @param array $data * @return array|bool|false|string|void */ public function getWebLog($whereData = array(), $data = array()) { return $this->select_once('web_log', $whereData); } /** * 查询行为日志 * @param array $whereData * @param array $data * @return array|bool|false|string|void */ public function getWebLogList($whereData = array(), $data = array()) { $data['field'] = empty($data['field']) ? '*' : $data['field']; $List = $this->select_all('web_log', $whereData, $data['field']); if (!empty($List)) { $List = $this->getDataList($List); } return $List; } //会员日志后台列表数据处理 private function getDataList($List) { foreach ($List as $v) { $uids[] = $v['uid']; } //$adminuser = $this->select_all('admin_user', array('uid' => array('in', pylode(',', $uids))), '`uid`,`username`,`name`'); $member = $this->select_all('member', array('uid' => array('in', pylode(',', $uids))), '`uid`,`username`'); $resume = $this->select_all('resume', array('uid' => array('in', pylode(',', $uids))), '`uid`,`name`,`def_job`'); $company = $this->select_all('company', array('uid' => array('in', pylode(',', $uids))), '`uid`,`name`'); //$ltinfo = $this->select_all('lt_info', array('uid' => array('in', pylode(',', $uids))), '`uid`,`realname`'); //$pxtrain = $this->select_all('px_train', array('uid' => array('in', pylode(',', $uids))), '`uid`,`name`'); include PLUS_PATH.'route.php'; foreach ($List as $k => $v) { $List[$k]['model_n'] = $this->modelType[$v['model']]; $List[$k]['usertype_n'] = $this->userType[$v['usertype']]; if ($v['model'] == 'app_member' || $v['model'] == 'weixin_member' || $v['model'] == 'baidu_member' || $v['model'] == 'toutioa_member'){ $v['model'] = 'wapapp_member'; } if ($v['model'] == 'app' || $v['model'] == 'weixin' || $v['model'] == 'baidu' || $v['model'] == 'toutioa'){ $v['model'] = 'wxapp'; } if ($v['model'] == 'member'){ if ($v['usertype'] == 1){ if ($v['a']){ $List[$k]['action_name'] = $logTypeUserM[$v['model']][$v['c']][$v['a']]['name']; }elseif ($v['c']){ $List[$k]['action_name'] = $logTypeUserM[$v['model']][$v['c']]['name']; }elseif ($v['m']){ $List[$k]['action_name'] = $logTypeUserM[$v['model']]['name']; } }elseif ($v['usertype'] == 2){ if ($v['a']){ $List[$k]['action_name'] = $logTypeComM[$v['model']][$v['c']][$v['a']]['name']; }elseif ($v['c']){ $List[$k]['action_name'] = $logTypeComM[$v['model']][$v['c']]['name']; }elseif ($v['m']){ $List[$k]['action_name'] = $logTypeComM[$v['model']]['name']; } } }else if ($v['model'] == 'wap_member' || $v['model'] == 'wapapp_member'){ if ($v['usertype'] == 1){ if ($v['a']){ $List[$k]['action_name'] = $logTypeUserM[$v['model']][$v['m']][$v['c']][$v['a']]['name']; }elseif ($v['c']){ $List[$k]['action_name'] = $logTypeUserM[$v['model']][$v['m']][$v['c']]['name']; }elseif ($v['m']){ $List[$k]['action_name'] = $logTypeUserM[$v['model']][$v['m']]['name']; } }elseif ($v['usertype'] == 2){ if ($v['a']){ $List[$k]['action_name'] = $logTypeComM[$v['model']][$v['m']][$v['c']][$v['a']]['name']; }elseif ($v['c']){ $List[$k]['action_name'] = $logTypeComM[$v['model']][$v['m']][$v['c']]['name']; }elseif ($v['m']){ $List[$k]['action_name'] = $logTypeComM[$v['model']][$v['m']]['name']; } } }else{ if ($v['a']){ $List[$k]['action_name'] = $logTypeM[$v['model']][$v['m']][$v['c']][$v['a']]['name']; }elseif ($v['c']){ $List[$k]['action_name'] = $logTypeM[$v['model']][$v['m']][$v['c']]['name']; }elseif ($v['m']){ $List[$k]['action_name'] = $logTypeM[$v['model']][$v['m']]['name']; }else{ $List[$k]['action_name'] = $logTypeM[$v['model']]['name']; } } $List[$k]['time_n'] = date('Y-m-d H:i:s', $v['time']); $List[$k]['timeymd_n'] = date('Y-m-d', $v['time']); $List[$k]['timehis_n'] = date('H:i:s', $v['time']); $List[$k]['ip'] = $v['ip']; //行为说明 $List[$k]['info'] = $List[$k]['model_n'] .' ' . $List[$k]['action_name']; foreach ($member as $val) { if ($val['uid'] == $v['uid']) { $List[$k]['username'] = $val['username']; } } foreach ($resume as $val) { if ($v['uid'] == $val['uid']) { $List[$k]['name_n'] = $val['name']; } } foreach ($company as $val) { if ($v['uid'] == $val['uid']) { $List[$k]['name_n'] = $val['name']; } } /* foreach ($adminuser as $val) { if ($val['uid'] == $v['uid']) { $List[$k]['username'] = $val['username']; $List[$k]['name_n'] = $val['name']; } } foreach ($ltinfo as $val) { if ($v['uid'] == $val['uid']) { $List[$k]['name_n'] = $val['realname']; } } foreach ($pxtrain as $val) { if ($v['uid'] == $val['uid']) { $List[$k]['name_n'] = $val['name']; } } */ } return $List; } public function delWeblog($whereData = array(), $data = array()) { $return['layertype'] = 0; if (!empty($whereData)) { if (!empty($whereData['id']) && $whereData['id'][0] == 'in') { $return['layertype'] = 1; } if ($data['norecycle'] == '1') { // 数据库清理,不插入回收站 $return['id'] = $this->delete_all('web_log', $whereData, '', '', '1'); } else { $return['id'] = $this->delete_all('web_log', $whereData, ''); } $return['msg'] = '行为日志'; $return['errcode'] = $return['id'] ? '9' : '8'; $return['msg'] = $return['id'] ? $return['msg'] . '删除成功!' : $return['msg'] . '删除失败!'; } else { $return['msg'] = '请选择您要删除的行为日志!'; $return['errcode'] = 8; } return $return; } /** * @param $datas * @return mixed */ function logCount($datas) { $where['uid'] = intval($datas['uid']); //默认取当天数据 $today = strtotime(date('Y-m-d')); if ($datas['time'] == 1) { $where['time'] = array('>=', $today, 'AND'); } else if ($datas['time'] == 2) { $where['PHPYUNBTWSTART_A'] = ''; $where['time'][] = array('>=', strtotime('-1 day', $today), 'AND'); $where['time'][] = array('<', $today, 'AND'); $where['PHPYUNBTWEND_A'] = ''; } else if ($datas['time'] == 3) { $where['time'] = array('>=', strtotime('-3 day', $today), 'AND'); } else if ($datas['time'] == 4) { $where['time'] = array('>=', strtotime('-7 day', $today), 'AND'); } if ($datas['times']) { $times = @explode('~', $datas['times']); $where['PHPYUNBTWSTART_B'] = ''; $where['time'][] = array('>=', strtotime($times[0] . "00:00:00"), 'AND'); $where['time'][] = array('<=', strtotime($times[1] . "23:59:59"), 'AND'); $where['PHPYUNBTWEND_B'] = ''; } $count = $this->select_num('web_log', $where); $size = 1000; $num = ceil($count / $size); $data['lognum'] = $data['lookjob'] = $data['searchjob'] = $data['sqjob'] = $data['chat'] = $data['lookresume'] = $data['downresume'] = $data['inviteresume'] = $data['addjob'] = $data['promote'] = $data['reserve'] = $data['pay'] = 0; $uInfo = $this->select_once('member', array('uid' => $datas['uid']), 'uid,username,moblie'); if ($datas['usertype'] == 1){ $sInfo = $this->select_once('resume', array('uid' => $datas['uid']), 'uid,name'); }else if ($datas['usertype'] == 2){ $sInfo = $this->select_once('company', array('uid' => $datas['uid']), 'uid,name'); } $userInfo = array('uid' => $datas['uid'], 'username' => $uInfo['username'], 's_name' => $sInfo['name'], 'mobile' => $uInfo['moblie']); for ($i = 0; $i < $num; $i++) { $where['limit'] = array($i * $size, $size); $where['orderby'] = 'id,asc'; $list = $this->select_all('web_log', $where); if (!empty($list)) { foreach ($list as $key => $value) { $data['lognum']++; if ($key == 0) { $data['startlog'] = date('Y-m-d H:i:s', $value['time']); $data['user_info'] = 'UID:'.$userInfo['uid']. ',账号:'.$userInfo['username']. ',名称:'.$userInfo['s_name']. ',手机:'.$userInfo['mobile']; } if ($datas['usertype'] == '1') { //浏览职位详情 if ($value['c'] == 'comapply' || ($value['m'] == 'job' && $value['c'] == 'show')) { $data['lookjob']++; } //职位搜索 if ($value['m'] == 'job' && ($value['c'] == '' || $value['c'] == 'search' || $value['c'] == 'list')) { $data['searchjob']++; } //职位申请 if ($value['c'] == 'sq_job' || ($value['c'] == 'comapply' && $value['isajax'] == '1')) { $data['sqjob']++; } //聊天统计 if ($value['m'] == 'com' && $value['c'] == 'chat') { $data['chat']++; } } elseif ($datas['usertype'] == '2') { //浏览简历 if ($value['m'] == 'resume' && $value['c'] == 'show' && $value['a'] == '') { $data['lookresume']++; } //邀请面试 if ($value['c'] == 'indexajaxresume' || $value['c'] == 'invite') { $data['inviteresume']++; } //聊天统计 if (($value['m'] == 'chat' && $value['c'] == 'getdown') || ($value['m'] == 'com' && $value['c'] == 'chat')) { $data['chat']++; } //简历下载 if (($value['c'] == 'forlink' || $value['c'] == 'for_link') || ($value['m'] == 'resume' && $value['m'] == 'down')) { $data['downresume']++; } //发布修改职位 if (($value['c'] == 'jobadd' && $value['a'] == 'save') || ($value['m'] == 'job' && $value['c'] == 'saveJob')) { $data['addjob']++; } //推广服务 置顶 推荐 紧急 预约刷新 if ($value['c'] == 'job' && ($value['a'] == 'jobPromote' || $value['a'] == 'reserveUp')) { $data['promote']++; } if ($value['m'] == 'fk' && ($value['c'] == 'getOrder' || $value['c'] == 'dkzf' || $value['c'] == 'coupongm')){ $params = unserialize($value['params']); if (in_array($params['server'], ['jobtop', 'jobrec', 'joburgent', 'autojob'])){ $data['promote']++; } } //浏览套餐 增值包 if (($value['m'] == 'com' && $value['c'] == 'right') || ($value['m'] == 'fk' && $value['c'] == 'server')) { $data['pay']++; } } } } } return $data; } /** * 计划任务:删除行为日志 */ public function delLogByCron() { $this->delete_all('web_log', array('time' => array('<', strtotime('-1 month'))), '', '', '1'); } } ?>