' 被设为未审核状态', 1 => ' 通过审核', 2 => ' 被锁定', 3 => ' 审核未通过', 4 => ' 被暂停' ); private function addErrorLog($uid, $type = '', $content) { require_once('errlog.model.php'); $ErrlogM = new errlog_model($this->db, $this->def); return $ErrlogM->addErrorLog($uid, $type, $content); } // 获取账户信息 function getInfo($where, $data = array()) { $field = empty($data['field']) ? '*' : $data['field']; if (!empty($where)) { $member = $this->select_once('member', $where, $field); if ($member && is_array($member)) { /* 是否有修改用户名权限查询 */ if (isset($data['setname']) && $data['setname'] == '1') { if ($member['restname'] == '0') { $member['setname'] = '1'; } } if (isset($data['sf']) && $data['sf'] == '1') { $sflist = array(1 => '个人会员', 2 => '企业会员', 3 => '猎头会员', 4 => '培训会员'); $member['sf'] = $sflist[$member['usertype']]; } return $member; } } } // 账户数目 function getMemberNum($Where = array()) { return $this->select_num('member', $Where); } // 获取账户信息,多条查询 public function getList($whereData, $data = array(), $utype = '') { $field = $data['field'] ? $data['field'] : '*'; $List = $this->select_all('member', $whereData, $field); if ($utype == 'admin') { $List = $this->getDataList($List); } return $List; } //添加用户 public function addInfo($data) { if ($data && is_array($data)) { $mdata = $data['mdata']; $result = $this->addMemberCheck($mdata); if ($result['msg']) { return $result; } if (!empty($mdata['clientid'])) { //清除其他账号clientid $this->clearPushId($mdata['clientid']); } $mdata['did'] = !empty($mdata['did']) ? $mdata['did'] : $this->config['did']; $nid = $this->insert_into('member', $mdata); if (!$nid) { $user_id = $this->getInfo(array('username' => $mdata['username']), array('field' => 'uid')); $nid = $user_id['uid']; } if ($nid) { $udata = !empty($data['udata']) ? $data['udata'] : array(); $sdata = !empty($data['sdata']) ? $data['sdata'] : array(); $udata['uid'] = $nid; if ($mdata['usertype'] == 1) { $udata['did'] = !empty($udata['did']) ? $udata['did'] : $this->config['did']; $this->insert_into('resume', $udata); $sdata['uid'] = $nid; $this->insert_into('member_statis', $sdata); } else if ($mdata['usertype'] == 2) { if (empty($udata['crm_uid'])) { if ($this->config['sy_crm_duty'] == 1) { $crm_uid = $this->getCrmUid(array('type' => '2')); } if ($crm_uid) { $udata['crm_uid'] = $crm_uid; $udata['crm_time'] = time(); } } $this->insert_into('company', $udata); $this->addStatis($nid, $sdata); } else if ($mdata['usertype'] == 5) { $this->insert_into('gq_info', $udata); } } return $nid; } } /** * 检查子账号 * */ public function checkChild($data = array()) { $res = array( 'ecode' => 0, 'msg' => '' ); if (empty($data['uid'])) { $res['ecode'] = 1; $res['msg'] = '缺少企业id'; return $res; } if (empty($data['cdata'])) { $res['ecode'] = 2; $res['msg'] = '缺少子账号信息'; return $res; } $cdata = $data['cdata']; if (empty($cdata['name']) || empty($cdata['password'])) { $res['ecode'] = 3; $res['msg'] = '子账号信息不完整'; return $res; } unset($cdata['password']); require_once('companyaccount.model.php'); $comaM = new companyaccount_model($this->db, $this->def); /* //判断子账号是否存在 $oldData = $comaM -> getInfo(array('username' => $cdata['username'], 'comid' => $data['uid'])); if(!empty($oldData)){ $res['ecode'] = 4; $res['msg'] = '子账号已存在'; return $res; } */ //检查会员信息 $result = $this->addMemberCheck($cdata); if (is_array($result) && !empty($result['msg'])) { $res['ecode'] = $result['error']; $res['msg'] = $result['msg']; return $res; } $res = array( 'ecode' => 9, 'msg' => '' ); return $res; } /** * @desc 添加企业子账户 * @param array $data * $data['uid'] 企业的uid * $data['cdata'] 子账号的信息 * $data['ptype'] vip 扣除套餐数量 */ public function addChildInfo($data = array()) { $res = array( 'ecode' => 0, 'msg' => '' ); $tmpRes = $this->checkChild($data); if ($tmpRes['ecode'] != 9) { return $tmpRes; } //判断支付类型,扣除套餐数量 if (isset($data['paytype']) && $data['paytype'] == 'vip') { require_once('statis.model.php'); $statisM = new statis_model($this->db, $this->def); $staisInfo = $statisM->getInfo($data['uid'], array('usertype' => 2, 'field' => '`sons_num`')); if (empty($staisInfo) || $staisInfo['sons_num'] < 1) { $res = array( 'ecode' => 8, 'msg' => '您的套餐数量已用完' ); return $res; } } $cdata = $data['cdata']; //密码加密 $pwdData = $this->generatePwd(array('password' => $cdata['password'])); $cdata['password'] = $pwdData['pwd']; $cdata['salt'] = $pwdData['salt']; //注册ip date $cdata['reg_ip'] = fun_ip_get(); $cdata['reg_date'] = time(); require_once('companyaccount.model.php'); $comaM = new companyaccount_model($this->db, $this->def); //补充其他账号信息 $cdata['pid'] = $data['uid']; $cdata['usertype'] = 2; $cdata['status'] = 1; $nid = $this->insert_into('member', $cdata); $usernames = $this->select_once('member', array('uid' => $data['uid']), '`username`'); $comnames = $this->select_once('company', array('uid' => $data['uid']), '`name`'); if (empty($nid)) { $res = array( 'ecode' => 8, 'msg' => '添加失败' ); return $res; } // 企业子账号数据添加 $adata = array(); $adata['uid'] = $nid; $adata['name'] = $cdata['name']; $adata['comid'] = $data['uid']; $adata['ctime'] = time(); $adata['status'] = 1; $adata['lastupdate'] = time(); $adata['did'] = '0'; $adata['username'] = $usernames['username']; $adata['comname'] = $comnames['name']; $comaM->createAccount($adata); //增加会员日志 require_once('log.model.php'); $LogM = new log_model($this->db, $this->def); $LogM->addMemberLog($data['uid'], 2, '创建子账号:' . $cdata['name'], 27, 1); //判断支付类型,扣除套餐数量 if (isset($data['paytype']) && $data['paytype'] == 'vip') { require_once('statis.model.php'); $statisM = new statis_model($this->db, $this->def); $staisInfo = $statisM->getInfo($data['uid'], array('usertype' => 2, 'field' => '`sons_num`')); if (!empty($staisInfo) && $staisInfo['sons_num'] > 0) { $statisM->upInfo(array('sons_num' => array('-', 1)), array('usertype' => 2, 'uid' => $data['uid'])); } } $res = array( 'ecode' => 9, 'msg' => '创建成功' ); return $res; } /** * @desc 添加企业子账户 * @param array $where 条件 * @param array $data * $data['uid'] 企业的uid * $data['cdata'] 子账号的信息 * 会员名称不让修改,修改会员相关信息的话也就是修改会员的密码 */ public function updChildInfo($where = array(), $data = array()) { //不修改用户名称 unset($data['username']); //修改会员密码 if (!empty($data['password'])) { $passwordA = $this->generatePwd(array('password' => $data['password'])); $password = $passwordA['pwd']; $salt = $passwordA['salt']; $this->update_once('member', array('password' => $password, 'salt' => $salt), array('uid' => $where['uid'])); } //修改子账号信息 require_once('companyaccount.model.php'); $comaM = new companyaccount_model($this->db, $this->def); $data['lastupdate'] = time(); $comaM->updInfo($where, $data); $res = array( 'ecode' => 9, 'msg' => '修改成功' ); return $res; } /** * @desc 添加企业账户,账户套餐信息添加 * @param int $uid * @param array $data */ private function addStatis($uid = null, $data = array()) { $uid = intval($uid); $id = $data['rating'] ? intval($data['rating']) : $this->config['com_rating']; $integral = $data['integral'] ? intval($data['integral']) : 0; require_once('rating.model.php'); $ratingM = new rating_model($this->db, $this->def); // 获取会员等级数据 $rInfo = $ratingM->getInfo(array('id' => $id)); $value = array( 'uid' => $uid, 'rating' => $id, 'rating_name' => $rInfo['name'], 'rating_type' => $rInfo['type'] ); if ($rInfo['type'] == 1) { $value = array_merge($value, array( 'job_num' => $rInfo['job_num'], 'down_resume' => $rInfo['resume'], 'breakjob_num' => $rInfo['breakjob_num'], 'invite_resume' => $rInfo['interview'], 'part_num' => $rInfo['part_num'], 'breakpart_num' => $rInfo['breakpart_num'], 'lt_job_num' => $rInfo['lt_job_num'], 'lt_down_resume' => $rInfo['lt_resume'], 'lt_breakjob_num' => $rInfo['lt_breakjob_num'], 'zph_num' => $rInfo['zph_num'], 'chat_num' => $rInfo['chat_num'], 'spview_num' => $rInfo['spview_num'], 'top_num' => $rInfo['top_num'], 'urgent_num' => $rInfo['urgent_num'], 'rec_num' => $rInfo['rec_num'], 'sons_num' => $rInfo['sons_num'], 'chat_num' => $rInfo['chat_num'], 'spview_num' => $rInfo['spview_num'], )); } if ($rInfo['service_time']) { $time = time() + 86400 * $rInfo['service_time']; $value['vip_etime'] = $time; } else { $value['vip_etime'] = 0; } $value['integral'] = $rInfo['integral_buy'] + $integral; $value['vip_stime'] = time(); $value['vip_etime'] = $rInfo['service_time'] ? strtotime('+' . $rInfo['service_time'] . ' day') : 0; $comSdata = array( 'rating' => $id, 'rating_name' => $rInfo['name'], 'vipstime' => time(), 'vipetime' => $rInfo['service_time'] ? strtotime('+' . $rInfo['service_time'] . ' day') : 0 ); $this->update_once('company', $comSdata, array('uid' => $uid)); /* 待整理归类 */ if ($rInfo['coupon'] > 0) { require_once('coupon.model.php'); $couponM = new coupon_model($this->db, $this->def); $coupon = $couponM->getInfo(array('id' => intval($rInfo['coupon']))); $val = array( 'uid' => $uid, 'number' => time(), 'ctime' => time(), 'coupon_id' => intval($coupon['id']), 'coupon_name' => trim($coupon['name']), 'validity' => time() + $coupon['time'] * 86400, 'coupon_amount' => $coupon['amount'], 'coupon_scope' => $coupon['scope'] ); $this->insert_into('coupon_list', $val); } $this->insert_into('company_statis', $value); } //修改用户信息 public function upInfo($whereData = array(), $upData = array(), $data = array()) { if (!empty($whereData)) { //处理password if (isset($upData['password'])) { if (!empty($upData['password'])) { $passRes = $this->generatePwd(array('password' => $upData['password'])); if (!empty($passRes)) { $upData['password'] = $passRes['pwd']; $upData['salt'] = $passRes['salt']; } } else { unset($upData['password']); } } return $this->update_once('member', $upData, $whereData); } } /** * 用户注册检测,修改基本信息检测 * @param $data * @param $uid 修改用户名、手机号、邮箱时才需要传入,添加时的检测不需要传 * @param $utype 修改基本信息时,操作的用户类型:user用户 ,admin 管理员 */ public function addMemberCheck($data, $uid = null, $utype = null) { $return = $oldMem = array(); if (!empty($uid)) { $oldMem = $this->select_once('member', array('uid' => $uid), '`username`,`moblie`,`email`,`status`,`lock_info`,`address`'); } if (!empty($data['username'])) { if (CheckRegUser($data['username']) == false && CheckRegEmail($data['username']) == false) { return array('error' => '101', 'msg' => '用户名包含特殊字符'); } if (!empty($this->config['sy_regname'])) { $regname = @explode(',', $this->config['sy_regname']); if (in_array($data['username'], $regname)) { return array('error' => '107', 'msg' => '该用户名禁止使用!'); } } $reged = $this->select_once('member', array('username' => trim($data['username'])), '`uid`'); if ($reged) { if (!empty($uid)) { if ($reged['uid'] != $uid) { return array('error' => '102', 'msg' => '用户名已被使用'); } } else { return array('error' => '102', 'msg' => '用户名已被使用'); } } else { $return['username'] = $data['username']; if (!empty($oldMem)) { $return['oldusername'] = $oldMem['username']; } } /* 会员中心修改用户名添加 */ if (isset($data['restname']) && $data['restname'] == '1') { $member = $this->getInfo(array('uid' => intval($uid)), array('field' => 'restname,password,salt')); if ($member['restname'] == '1') { return array('error' => '100', 'msg' => '您无权限修改用户名!'); } $nmsg = regUserNameComplex($data['username']); if ($nmsg) { return array('error' => '100', 'msg' => $nmsg); } if ($data['password']) { /* md5加密,验证密码传参:salt */ $passRes = $this->generatePwd(array('password' => $data['password'], 'salt' => $member['salt'])); if (!empty($passRes)) { $oldpass = $passRes['pwd']; } if ($member['password'] != $oldpass) { return array('error' => '108', 'msg' => '您的密码验证错误,请重试!'); } } } } if (!empty($data['companyName'])) { $reged = $this->select_once('company', array('name' => trim($data['companyName'])), '`uid`'); if ($reged) { if (!empty($uid)) { if ($reged['uid'] != $uid) { return array('error' => '106', 'msg' => '企业名称已被使用'); } } else { return array('error' => '106', 'msg' => '企业名称已被使用'); } } $return['companyName'] = $data['companyName']; } if (!empty($data['moblie'])) { if (CheckMobile($data['moblie']) == false) { return array('error' => '103', 'msg' => '手机号格式错误'); } $reged = $this->select_once('member', array('moblie' => trim($data['moblie']), 'username' => array('=', trim($data['moblie']), 'or')), '`uid`'); if ($reged) { if (!empty($uid)) { if ($reged['uid'] != $uid) { return array('error' => '104', 'msg' => '手机号已被使用'); } elseif (!empty($oldMem) && $data['moblie'] != $oldMem['moblie']) {//判断现有的和之前是否相同,不同返回可修改的值 $return['moblie'] = $data['moblie']; } } else { return array('error' => '104', 'msg' => '手机号已被使用'); } } else { $return['moblie'] = $data['moblie']; } } if (!empty($data['email'])) { if (CheckRegEmail($data['email']) == false) { return array('error' => '105', 'msg' => '邮箱格式错误'); } $reged = $this->select_once('member', array('email' => trim($data['email']), 'username' => array('=', trim($data['email']), 'or')), '`uid`'); if ($reged) { if (!empty($uid)) { if ($reged['uid'] != $uid) { return array('error' => '106', 'msg' => '邮箱已被使用'); } elseif (!empty($oldMem) && $data['moblie'] != $oldMem['moblie']) {//判断现有的和之前是否相同,不同返回可修改的值 $return['email'] = $data['email']; } } else { return array('error' => '106', 'msg' => '邮箱已被使用'); } } else { $return['email'] = $data['email']; } } //后台修改基本信息时的用户状态 if (!empty($data['status'])) { if (!empty($oldMem)) { //判断现有的和之前是否相同,不同返回可修改的值 if ($data['status'] != $oldMem['status']) { $return['status'] = $data['status']; } if (!empty($data['lock_info']) && $data['lock_info'] != $oldMem['lock_info']) { $return['lock_info'] = $data['lock_info']; } } } //后台修改企业基本信息时的地址 if (!empty($data['address'])) { if (!empty($oldMem) && $data['address'] != $oldMem['address']) { $return['address'] = $data['address']; } } //后台修改基本信息时的密码,此处不需要处理,到本model的upInfo里面处理 if (!empty($data['password'])) { $return['password'] = $data['password']; } // if ($utype) { $this->setMemberInfo($uid, $utype, $return, $oldMem); } return $return; } private function setMemberInfo($uid, $utype, $up, $oldMem) { $uData = array(); //如是修改会员基本信息时检查,可以修改的,直接修改 if (!empty($uid) && !empty($oldMem)) { //会员操作的,如原来是审核未通过,改成未审核 if ($utype == 'user') { if ($oldMem['status'] == '3') { $up['status'] = '0'; } } $this->upInfo(array('uid' => $uid), $up); $newMem = $this->select_once('member', array('uid' => $uid), '`uid`,`username`,`usertype`,`email`'); //锁定会员需要发送邮件通知 if (!empty($up['status']) && $up['status'] == 2 && $this->config['sy_email_lock'] == '1') { $emailData = array( 'email' => $newMem['email'], 'uid' => $newMem['uid'], 'username' => $newMem['username'], 'lock_info' => $up['lock_info'], 'type' => 'lock' ); require_once('notice.model.php'); $noticeM = new notice_model($this->db, $this->def); $noticeM->sendEmailType($emailData); } // 管理员操作的,如改变了用户审核状态,同步修改相关信息 if ($utype == 'admin' && !empty($up['status'])) { if ($newMem['usertype'] == 1) { $this->update_once('resume', array('status' => $up['status']), array('uid' => $uid)); } else if ($newMem['usertype'] == 2) { $this->update_once('company', array('r_status' => $up['status']), array('uid' => $uid)); } else if ($newMem['usertype'] == 3) { $this->update_once('lt_job', array('r_status' => $up['status']), array('uid' => $uid)); } elseif ($newMem['usertype'] == 4) { $this->update_once('px_subject', array('r_status' => $up['status']), array('uid' => $uid)); $this->update_once('px_teacher', array('r_status' => $up['status']), array('uid' => $uid)); $this->update_once('px_train_news', array('r_status' => $up['status']), array('uid' => $uid)); } } // 管理员操作,$up['moblie'], $up['email'],同步修改手机、邮箱 if ($utype == 'admin') { if (!empty($up['moblie'])) { $this->update_once('resume', array('telphone' => $up['moblie']), array('uid' => $uid)); $this->update_once('company', array('linktel' => $up['moblie']), array('uid' => $uid)); $this->update_once('lt_info', array('moblie' => $up['moblie']), array('uid' => $uid)); $this->update_once('px_train', array('linktel' => $up['moblie']), array('uid' => $uid)); } if (!empty($up['email'])) { $this->update_once('resume', array('email' => $up['email']), array('uid' => $uid)); $this->update_once('company', array('linkmail' => $up['email']), array('uid' => $uid)); $this->update_once('lt_info', array('email' => $up['email']), array('uid' => $uid)); $this->update_once('px_train', array('linkmail' => $up['email']), array('uid' => $uid)); } } } } /** * 根据用户类型,直接查找用户信息 * @param array $whereData * @param array $data * @return array|bool|false|string|void */ function getUserInfo($whereData = array(), $data = array('usertype' => null, 'field' => null)) { if (!empty($whereData)) { $tblist = array(1 => 'resume', 2 => 'company', 3 => 'lt_info', 4 => 'px_train', 5 => 'gq_info'); $table = $tblist[$data['usertype']]; $field = $data['field'] ? $data['field'] : '*'; return $this->select_once($table, $whereData, $field); } } /** * 根据用户类型,直接批量查找用户信息 * @param array $whereData * @param array $data */ function getUserInfoList($whereData = array(), $data = array('usertype' => null, 'field' => null)) { if (!empty($whereData)) { $tblist = array(1 => 'resume', 2 => 'company', 3 => 'lt_info', 4 => 'px_train', 5 => 'gq_info'); $table = $tblist[$data['usertype']]; $field = $data['field'] ? $data['field'] : '*'; return $this->select_all($table, $whereData, $field); } } /** * 根据用户类型,修改用户信息 */ function UpdateUserInfo($data = array('usertype' => null, 'post' => null), $Where = array()) { $tblist = array(1 => 'resume', 2 => 'company', 3 => 'lt_info', 4 => 'px_train'); $table = $tblist[$data['usertype']]; return $this->update_once($table, $data['post'], $Where); } /** * 获取不同类型用户姓名、企业名称、头像 */ public function getUserList($whereData) { if ($whereData) { $memberList = $this->select_all('member', $whereData, '`uid`,`usertype`'); //按usertype将uid分组 $type = array(); foreach ($memberList as $k => $v) { if ($v['usertype']) { $type[$v['usertype']][] = $v['uid']; } } $ResumeList = $ComList = $LtList = $TrainList = $GqList = array(); if (!empty($type[1])) { $ResumeList = $this->select_all( 'resume', array( 'uid' => array('in', pylode(',', $type[1])) ), '`uid`,`name`,`photo`' ); } if (!empty($type[2])) { $ComList = $this->select_all( 'company', array( 'uid' => array('in', pylode(',', $type[2])) ), '`uid`,`name`,`logo`' ); } if (!empty($type['3'])) { $LtList = $this->select_all( 'lt_info', array( 'uid' => array('in', pylode(',', $type[3])) ), '`uid`,`realname` as name,`photo`' ); } if (!empty($type[4])) { $TrainList = $this->select_all( 'px_train', array( 'uid' => array('in', pylode(',', $type[4])) ), '`uid`,`name`,`logo`' ); } if (!empty($type[5])) { $GqList = $this->select_all( 'gq_info', array( 'uid' => array('in', pylode(',', $type[5])) ), '`uid`,`name`,`photo`' ); } foreach ($ResumeList as $k => $v) { $ResumeList[$k]['pic'] = checkpic($v['photo'], $this->config['sy_friend_icon']); } foreach ($ComList as $k => $v) { $ComList[$k]['pic'] = checkpic($v['logo'], $this->config['sy_friend_icon']); } foreach ($LtList as $k => $v) { $LtList[$k]['pic'] = checkpic($v['photo'], $this->config['sy_friend_icon']); } foreach ($TrainList as $k => $v) { $TrainList[$k]['pic'] = checkpic($v['logo'], $this->config['sy_friend_icon']); } foreach ($GqList as $k => $v) { $GqList[$k]['pic'] = checkpic($v['photo'], $this->config['sy_friend_icon']); } $List = array_merge($ResumeList, $ComList, $LtList, $TrainList, $GqList); return $List; } } /** * 根据不同类型用户的搜索条件获取uid集合 * $whereData[1]:resume表查询条件 * $whereData[2]:company表查询条件 * $whereData[3]:lt_info表查询条件 * $whereData[4]:px_train表查询条件 */ public function getUidsByWhere($whereData = array()) { if ($whereData) { if (!empty($whereData[1])) { $ResumeList = $this->select_all('resume', $whereData[1], '`uid`'); } if (!empty($whereData[2])) { $ComList = $this->select_all('company', $whereData[2], '`uid`'); } if (!empty($whereData[3])) { $LtList = $this->select_all('lt_info', $whereData[3], '`uid`'); } if (!empty($whereData[4])) { $TrainList = $this->select_all('px_train', $whereData[4], '`uid`'); } $List = array_merge($ResumeList, $ComList, $LtList, $TrainList); $uids = array(); foreach ($List as $k => $v) { $uids[] = $v['uid']; } return $uids; } } /** * 删除单个身份会员信息 * @param string $uid 因有批量删除,故传入的$uid为字符串型 ;如 1 或 1,2,3 * @param string $usertype * @param string $delAccount */ public function delInfo($uid, $usertype, $delAccount = '') { $utname = ''; $return['layertype'] = 0; if (!empty($uid)) { if (is_array($uid)) { $uid = pylode(',', $uid); $return['layertype'] = 1; } else if (strpos($uid, ',')) { $return['layertype'] = 1; } if ($delAccount == '1') { $nid = $this->delMember($uid); } else { if ($usertype == 1) { $utname = '个人'; $nid = $this->delUser($uid); } else if ($usertype == 2) { $utname = '企业'; $nid = $this->delCom($uid); } else if ($usertype == 3) { $utname = '猎头'; $nid = $this->delLt($uid); } else if ($usertype == 4) { $utname = '培训'; $nid = $this->delTrain($uid); } } if ($nid) { //删除个人企业猎头培训供求,如果删除的是当前身份,就会去除会员类型 $member = $this->select_all('member', array('uid' => array('in', $uid), 'usertype' => $usertype), '`uid`'); if (is_array($member) && $member) { foreach ($member as $v) { $mids[] = $v['uid']; } $this->update_once('member', array('usertype' => 0), array('uid' => array('in', pylode(',', $mids)))); } $return['msg'] = $utname . '会员(ID:' . $uid . ')删除成功'; $return['errcode'] = '9'; } else { $return['msg'] = $utname . '会员(ID:' . $uid . ')删除失败'; $return['errcode'] = '8'; } } else { $return['msg'] = '请选择您要删除的会员'; $return['errcode'] = '8'; } return $return; } /** * 锁定用户(账户锁定和相关用户类型审核是否通过没有关系) * @param array $whereData * @param array $data */ public function lock($whereData = array('uid' => null, 'usertype' => null), $data = array('post' => null)) { $return = array(); if (!empty($whereData)) { $status = intval($data['post']['status']); $lock_info = trim($data['post']['lock_info']); if ($status == 2 && $lock_info == '') { $return['msg'] = '请填写锁定原因'; $return['errcode'] = '8'; } else { $post = $data['post']; $uid = $whereData['uid']; $member = $this->getInfo(array('uid' => $uid), array('field' => '`uid`,`username`,`email`,`moblie`')); if ($status == 1) { $sd = '解除锁定'; $lock_info = ''; // 已注销的账号,不支持解除锁定 $logout = $this->select_once('member_logout', array('uid' => $uid, 'status' => 1)); if (!empty($logout)) { $return['msg'] = '会员(ID:' . $whereData['uid'] . ')账号已注销,无法解除锁定'; $return['errcode'] = '8'; return $return; } } else { $sd = '锁定'; $lock_info = '。原因:' . $post['lock_info']; } $nid = $this->upInfo(array('uid' => $uid), $post); if ($nid) { $this->commonLock($whereData['uid'], array('r_status' => $status), $post['lock_info']); // 锁定子账户 $this->update_once('member', $post, array('pid' => $uid)); //锁定会员需要发送邮件通知 if ($post['status'] == 2) { if ($this->config['sy_email_lock'] == '1') { $emailData = array( 'email' => $member['email'], 'uid' => $member['uid'], 'username' => $member['username'], 'lock_info' => $post['lock_info'], 'type' => 'lock' ); require_once('notice.model.php'); $noticeM = new notice_model($this->db, $this->def); $noticeM->sendEmailType($emailData); } if ($this->config['sy_msg_lock'] == '1') { $msgData = array( 'moblie' => $member['moblie'], 'uid' => $member['uid'], 'username' => $member['username'], 'lock_info' => $post['lock_info'], 'type' => 'lock' ); require_once('notice.model.php'); $noticeM = new notice_model($this->db, $this->def); $noticeM->sendSMSType($msgData); } } $comcrm = $this->select_all('company', array('uid' => $uid), '`name`,`r_status`,`crm_uid`'); if (!empty($comcrm)) { require_once 'crm.model.php'; $crmM = new crm_model($this->db, $this->def); foreach ($comcrm as $k => $v) { if ($v['crm_uid'] != '0') { $wxcontent = '您的客户 ' . $v['name'] . $this->comstatusStr[$v['r_status']]; $crmM->sendCrmWxMsg($v['crm_uid'], array('first' => $wxcontent, 'title' => '', 'type' => 9)); } } } $return['msg'] = '会员' . $sd . '设置成功(ID:' . $whereData['uid'] . $lock_info . ')'; $return['errcode'] = '9'; } else { $return['msg'] = '会员' . $sd . '设置失败(ID:' . $whereData['uid'] . ')'; $return['errcode'] = '8'; } } } else { $return['msg'] = '请选择需要锁定的会员'; $return['errcode'] = '8'; } return $return; } private function commonLock($uid, $up, $lock_info = '') { $where = array('uid' => $uid); include_once('resume.model.php'); $resumeM = new resume_model($this->db, $this->def); $this->update_once('resume', $up, $where); $this->update_once('company', $up, $where); $this->update_once('lt_info', $up, $where); $this->update_once('px_train', $up, $where); $expectdata = $up; if ($up['r_status'] != 1) { $expectdata['state'] = 3; // 锁定账户 将简历状态改成未通过 $expectdata['statusbody'] = $lock_info; } $resumeM->setExpectState($expectdata, $where); $this->update_once('company_job', $up, $where); $this->update_once('partjob', $up, $where); $this->update_once('school_xjh', $up, $where); $this->update_once('lt_job', $up, $where); $this->update_once('px_subject', $up, $where); $this->update_once('px_teacher', $up, $where); $this->update_once('px_train_news', $up, $where); $this->update_once('gq_info', $up, $where); $this->update_once('gq_task', $up, $where); } /** * 会员审核(会员审核,被锁定的账号,无法修改审核状态) * @param array $whereData 参数格式 uid=>array('in', '1,2,3'); uid=>1 * @param array $data * @return mixed */ public function status($whereData = array('uid' => null, 'usertype' => null), $data = array('post' => null)) { if (!empty($whereData)) { $post = $data['post']; $usertype = intval($whereData['usertype']); $up = array('r_status' => $data['post']['status']); $where = array( 'uid' => $whereData['uid'], 'r_status' => array('<>', 2) ); // 处理审核提示和管理员日志需要的内容 if ($up['r_status'] == 4) { $msg = '暂停'; } elseif ($up['r_status'] == 3) { $msg = '审核未通过'; } elseif ($up['r_status'] == 0) { $msg = '未审核'; } elseif ($up['r_status'] == 1) { $msg = '审核通过'; } $lock_info = !empty($post['lock_info']) ? '。原因:' . $post['lock_info'] : ''; // 保存审核信息 if (isset($post['lock_info'])) { $this->update_once('member', array('lock_info' => $post['lock_info']), array('uid' => $whereData['uid'])); } $isSendMsg = true; /** * @desc 身份信息非审核状态,相关表(简历、职位、课程等)数据设置未审核 */ if ($usertype == 1) { $identity = '个人'; $nid = $this->update_once('resume', $up, $where); include_once('resume.model.php'); $resumeM = new resume_model($this->db, $this->def); $expectdata = $up; if ($up['r_status'] != 1) { $expectdata['state'] = 0; } $resumeM->setExpectState($expectdata, $where); } else if ($usertype == 2) { $where['r_status'] = array(); $where['r_status'][] = array('<>', 2); $comup = $up; if ($data['post']['status'] == 4) { $comup['zt_time'] = time(); } else if ($post['setup'] != '1') { $where['r_status'][] = array('<>', 4); } if ($comup['r_status'] == 1) { // 企业审核通过,同步把logo审核状态设为通过 $comup['logo_status'] = 0; } if ($post['setup'] == '1') { $isSendMsg = false; } $identity = '企业'; $nid = $this->update_once('company', $comup, $where); $this->update_once('partjob', $up, $where); $this->update_once('company_job', $up, $where); $this->update_once('school_xjh', $up, $where); $this->update_once('lt_job', $up, array('uid' => $whereData['uid'], 'usertype' => 2)); $comcrm = $this->select_all('company', $where, '`name`,`r_status`,`crm_uid`'); if (is_array($comcrm)) { require_once 'crm.model.php'; $crmM = new crm_model($this->db, $this->def); foreach ($comcrm as $k => $v) { if ($v['crm_uid'] != '0') { $wxcontent = '您的客户 ' . $v['name'] . $this->comstatusStr[$v['r_status']]; $crmM->sendCrmWxMsg($v['crm_uid'], array('first' => $wxcontent, 'title' => '', 'type' => 9)); } } } } else if ($usertype == 3) { $identity = '猎头'; $nid = $this->update_once('lt_info', $up, $where); $this->update_once('lt_job', $up, array('uid' => $whereData['uid'], 'usertype' => 3)); } else if ($usertype == 4) { $identity = '培训'; $nid = $this->update_once('px_train', $up, $where); $this->update_once('px_teacher', $up, $where); $this->update_once('px_subject', $up, $where); $this->update_once('px_train_news', $up, $where); } if ($nid) { if ($isSendMsg) { // 会员审核发送通知 $stData = array( 'status' => $post['status'], 'statusbody' => $post['lock_info'], 'usertype' => $usertype ); } $this->sendStatus($whereData['uid'], $stData); //$this->update_once('member',array('status'=>$post['status']),array('uid'=>$whereData['uid'])); $return['msg'] = $identity . '会员' . $msg . '设置成功(ID:' . $whereData['uid']['1'] . $lock_info . ')'; $return['errcode'] = '9'; } else { $return['msg'] = $identity . '会员' . $msg . '设置失败(ID:' . $whereData['uid']['1'] . ')'; $return['errcode'] = '8'; } } else { $return['msg'] = '系统繁忙'; $return['errcode'] = '8'; } return $return; } /** * 会员审核发送通知 * @param $uid 参数格式:uid = array('in', '1,2,3'); uid = 1; * @param array $post */ private function sendStatus($uid, $post = array()) { //审核通过和审核未通过才提醒,并且要先判断审核提醒是否开启通知 $msgtx = $this->config['sy_msg_userstatus']; $emailtx = $this->config['sy_email_userstatus']; if ($post['status'] == 1 || $post['status'] == 3) { $members = $this->getList(array('uid' => $uid, 'status' => 1), array('field' => 'uid,username,email,moblie')); if ($members) { $date = date('Y-m-d H:i:s'); $statusInfo = ''; //处理审核信息 if ($post['status'] == 1) { $statusInfo = '审核通过!'; } elseif ($post['status'] == 3) { $statusInfo = '审核未通过,'; if ($post['statusbody']) { $statusInfo .= '原因:' . $post['statusbody']; } } if ($msgtx == '1' || $emailtx == '1') { $tplData = array( 'auto_statis' => $statusInfo, 'date' => $date, 'type' => 'userstatus' ); //因发送内容相同,可以先提取发送内容,然后再批量发送,可以减少循环查询次数 require_once('notice.model.php'); $noticeM = new notice_model($this->db, $this->def); //获取短息通知内容 $msgTpl = $noticeM->getTpl($tplData, 'msg'); //获取邮件通知内容 $emailTpl = $noticeM->getTpl($tplData, 'email'); } $uids = array(); foreach ($members as $k => $v) { $uids[] = $v['uid']; //批量发送短信 if ($v['moblie'] && $msgtx == '1') { $mdata = array( 'uid' => $v['uid'], 'cuid' => 0, 'moblie' => $v['moblie'], 'type' => 'userstatus', 'port' => '5' ); $noticeM->sendSMSType($mdata, $msgTpl['content']); } //批量发送邮件 if ($v['email'] && $emailtx == '1') { $edata = array( 'uid' => $v['uid'], 'cuid' => 0, 'email' => $v['email'], 'type' => 'userstatus' ); $noticeM->sendEmailType($edata, $emailTpl); } } //发送系统通知 include_once('sysmsg.model.php'); $sysmsgM = new sysmsg_model($this->db, $this->def); $statusInfo = '您的账号' . $statusInfo; $sysmsgM->addInfo(array('uid' => $uids, 'content' => $statusInfo, 'usertype' => $post['usertype'])); } } } //后台个人会员列表处理数据 private function getDataList($List) { foreach ($List as $v) { if ($v['uid']) { if ($v['usertype'] == '1') { $useruids[] = $v['uid']; } if ($v['usertype'] == '2') { if ($v['pid']) { $comuids[] = $v['pid']; } else { $comuids[] = $v['uid']; } } if ($v['usertype'] == '3') { $ltuids[] = $v['uid']; } if ($v['usertype'] == '4') { $pxuids[] = $v['uid']; } } } $countname = array(); if (!empty($useruids)) { $resumes = $this->select_all('resume', array('uid' => array('in', pylode(',', $useruids))), '`uid`,`name`,`def_job`'); foreach ($resumes as $rk => $rv) { $countname[$rv['uid']] = $rv['name']; } } if (!empty($comuids)) { $coms = $this->select_all('company', array('uid' => array('in', pylode(',', $comuids))), '`uid`,`name`'); foreach ($coms as $ck => $cv) { $countname[$cv['uid']] = $cv['name']; } } if (!empty($ltuids)) { $lts = $this->select_all('lt_info', array('uid' => array('in', pylode(',', $ltuids))), '`uid`,`com_name`'); foreach ($lts as $lk => $lv) { $countname[$lv['uid']] = $lv['com_name']; } } if (!empty($pxuids)) { $pxs = $this->select_all('px_train', array('uid' => array('in', pylode(',', $pxuids))), '`uid`,`name`'); foreach ($pxs as $pk => $pv) { $countname[$pv['uid']] = $pv['name']; } } foreach ($List as $k => $v) { if (!empty($resumes)) { foreach ($resumes as $val) { if ($val['uid'] == $v['uid']) { $List[$k]['name'] = $val['name']; $List[$k]['def_job'] = $val['def_job']; } } } if (!empty($countname)) { if ($v['usertype'] == 2 && $v['pid']) { $uid = $v['pid']; } else { $uid = $v['uid']; } $List[$k]['countname'] = $countname[$uid]; } } return $List; } /** * @desc 生成password(包括原密码验证) * * @param array $pwdData (password:明密 salt:加密随机字符) * */ public function generatePwd($pwdData) { $pwdRes = array(); if (empty($pwdData['password'])) { return $pwdRes; } if (empty($pwdData['salt'])) { $salt = substr(uniqid(rand()), -6); } else { $salt = $pwdData['salt']; } $pass = passCheck($pwdData['password'], $salt); $pwdRes['pwd'] = $pass; $pwdRes['salt'] = $salt; return $pwdRes; } /** * 删除个人会员 */ private function delUser($uid) { if (!empty($uid)) { $return = $this->delete_all('resume', array('uid' => array('in', $uid)), ''); if ($return) { $this->delete_all('answer', array('uid' => array('in', $uid), 'usertype' => 1), ''); $this->delete_all('answer_review', array('uid' => array('in', $uid), 'usertype' => 1), ''); $this->delete_all('atn', array('uid' => array('in', $uid), 'sc_uid' => array('in', $uid, 'OR')), ''); $this->delete_all('attention', array('uid' => array('in', $uid)), ''); $this->delete_all('blacklist', array('p_uid' => array('in', $uid)), ''); $this->delete_all('change', array('uid' => array('in', $uid), 'usertype' => 1), ''); $this->delete_all('chat_cs_log', array('uid' => array('in', $uid), 'usertype' => 1), ''); $this->delete_all('chat_cs_pick', array('uid' => array('in', $uid), 'usertype' => 1), ''); $this->delete_all('chat_friend', array('uid' => array('in', $uid), 'usertype' => 1), ''); $this->delete_all('chat_friend', array('fid' => array('in', $uid), 'fusertype' => 1), ''); $this->delete_all('chat_log', array('from' => array('in', $uid), 'fusertype' => 1), ''); $this->delete_all('chat_log', array('to' => array('in', $uid), 'tusertype' => 1), ''); $this->delete_all('chat_member', array('uid' => array('in', $uid), 'usertype' => 1), ''); $this->delete_all('chat_right', array('uid' => array('in', $uid)), ''); $this->delete_all('company_job_rewardlist', array('uid' => array('in', $uid)), ''); $this->delete_all('company_job_rewardlog', array('uid' => array('in', $uid)), ''); $this->delete_all('company_job_sharelog', array('uid' => array('in', $uid)), ''); $this->delete_all('company_msg', array('uid' => array('in', $uid)), ''); $this->delete_all('company_order', array('uid' => array('in', $uid), 'usertype' => 1), ''); $this->delete_all('company_pay', array('com_id' => array('in', $uid), 'usertype' => 1), ''); $this->delete_all('concheck_log', array('uid' => array('in', $uid), 'usertype' => 1), ''); $this->delete_all('coupon_list', array('uid' => array('in', $uid)), ''); $this->delete_all('down_resume', array('uid' => array('in', $uid)), ''); $this->delete_all('evaluate_log', array('uid' => array('in', $uid)), ''); $this->delete_all('fav_job', array('uid' => array('in', $uid)), ''); $this->delete_all('job_tellog', array('uid' => array('in', $uid)), ''); $this->delete_all('login_log', array('uid' => array('in', $uid), 'usertype' => 1), ''); $this->delete_all('look_job', array('uid' => array('in', $uid)), ''); $this->delete_all('look_resume', array('uid' => array('in', $uid)), ''); $this->delete_all('member_log', array('uid' => array('in', $uid), 'usertype' => 1), ''); $this->delete_all('member_statis', array('uid' => array('in', $uid)), ''); $this->delete_all('msg', array('uid' => array('in', $uid))); $this->delete_all('part_apply', array('uid' => array('in', $uid)), ''); $this->delete_all('part_collect', array('uid' => array('in', $uid)), ''); $this->delete_all('px_subject_collect', array('uid' => array('in', $uid)), ''); $this->delete_all('px_zixun', array('uid' => array('in', $uid)), ''); $this->delete_all('question', array('uid' => array('in', $uid)), ''); $this->delete_all('rebates', array('uid' => array('in', $uid)), ''); $this->delete_all('report', array('p_uid' => array('in', $uid), 'c_uid' => array('in', $uid, 'OR')), ''); $this->delete_all('resume_expect', array('uid' => array('in', $uid)), ''); $this->delete_all('resume_city_job_class', array('uid' => array('in', $uid)), ''); $this->delete_all('resume_cityclass', array('uid' => array('in', $uid)), ''); $this->delete_all('resume_doc', array('uid' => array('in', $uid)), ''); $this->delete_all('resume_edu', array('uid' => array('in', $uid)), ''); $this->delete_all('resume_jobclass', array('uid' => array('in', $uid)), ''); $this->delete_all('resume_other', array('uid' => array('in', $uid)), ''); $this->delete_all('resume_project', array('uid' => array('in', $uid)), ''); $this->delete_all('resume_show', array('uid' => array('in', $uid)), ''); $this->delete_all('resume_skill', array('uid' => array('in', $uid)), ''); $this->delete_all('resume_trainging', array('uid' => array('in', $uid)), ''); $this->delete_all('resume_work', array('uid' => array('in', $uid)), ''); $this->delete_all('spview_log', array('uid' => array('in', $uid)), ''); $this->delete_all('spview_subscribe', array('uid' => array('in', $uid)), ''); $this->delete_all('spview_subscribe_msg', array('uid' => array('in', $uid)), ''); $this->delete_all('subscribe', array('uid' => array('in', $uid)), ''); $this->delete_all('subscriberecord', array('uid' => array('in', $uid)), ''); $this->delete_all('talent_pool', array('uid' => array('in', $uid)), ''); $this->delete_all('user_entrust', array('uid' => array('in', $uid)), ''); $this->delete_all('user_entrust_record', array('uid' => array('in', $uid)), ''); $this->delete_all('user_resume', array('uid' => array('in', $uid)), ''); $this->delete_all('userid_job', array('uid' => array('in', $uid)), ''); $this->delete_all('userid_msg', array('uid' => array('in', $uid)), ''); $this->delete_all('xjhlive_black', array('uid' => array('in', $uid), 'usertype' => 1), ''); $this->delete_all('xjhlive_chat', array('fuid' => array('in', $uid), 'fusertype' => 1), ''); $this->delete_all('xjhlive_yy', array('uid' => array('in', $uid)), ''); $this->delete_all('xjhlive_yy_msg', array('uid' => array('in', $uid)), ''); $this->delete_all('zphnet_look', array('uid' => array('in', $uid), 'usertype' => 1), ''); $this->delete_all('zphnet_user', array('uid' => array('in', $uid), 'usertype' => 1), ''); } return $return; } } /** * 删除企业会员 */ private function delCom($uid) { if (!empty($uid)) { $return = $this->delete_all('company', array('uid' => array('in', $uid)), ''); if ($return) { $this->delete_all('answer', array('uid' => array('in', $uid), 'usertype' => 2), ''); $this->delete_all('answer_review', array('uid' => array('in', $uid), 'usertype' => 2), ''); $this->delete_all('ad_order', array('comid' => array('in', $uid)), ''); $this->delete_all('atn', array('uid' => array('in', $uid), 'sc_uid' => array('in', $uid, 'OR')), ''); $this->delete_all('attention', array('uid' => array('in', $uid)), ''); $this->delete_all('banner', array('uid' => array('in', $uid)), ''); $this->delete_all('blacklist', array('c_uid' => array('in', $uid)), ''); $this->delete_all('change', array('uid' => array('in', $uid), 'usertype' => 2), ''); $this->delete_all('chat_cs_log', array('uid' => array('in', $uid), 'usertype' => 2), ''); $this->delete_all('chat_cs_pick', array('uid' => array('in', $uid), 'usertype' => 2), ''); $this->delete_all('chat_friend', array('uid' => array('in', $uid), 'usertype' => 2), ''); $this->delete_all('chat_friend', array('fid' => array('in', $uid), 'fusertype' => 2), ''); $this->delete_all('chat_log', array('from' => array('in', $uid), 'fusertype' => 2), ''); $this->delete_all('chat_log', array('to' => array('in', $uid), 'tusertype' => 2), ''); $this->delete_all('chat_member', array('uid' => array('in', $uid), 'usertype' => 2), ''); $this->delete_all('chat_right', array('comid' => array('in', $uid)), ''); $this->delete_all('company_account', array('comid' => array('in', $uid)), ''); $this->delete_all('company_job', array('uid' => array('in', $uid)), ''); $this->delete_all('company_job_link', array('uid' => array('in', $uid)), ''); $this->delete_all('company_job_reward', array('uid' => array('in', $uid)), ''); $this->delete_all('company_job_rewardlist', array('comid' => array('in', $uid)), ''); $this->delete_all('company_job_rewardlog', array('comid' => array('in', $uid)), ''); $this->delete_all('company_job_share', array('comid' => array('in', $uid)), ''); $this->delete_all('company_job_sharelog', array('uid' => array('in', $uid)), ''); $this->delete_all('company_job_sharelog', array('comid' => array('in', $uid)), ''); $this->delete_all('company_cert', array('uid' => array('in', $uid), 'usertype' => 2), ''); $this->delete_all('company_news', array('uid' => array('in', $uid)), ''); $this->delete_all('company_order', array('uid' => array('in', $uid), 'usertype' => 2), ''); $this->delete_all('company_pay', array('com_id' => array('in', $uid), 'usertype' => 2), ''); $this->delete_all('company_product', array('uid' => array('in', $uid)), ''); $this->delete_all('company_show', array('uid' => array('in', $uid)), ''); $this->delete_all('company_statis', array('uid' => array('in', $uid)), ''); $this->delete_all('company_msg', array('cuid' => array('in', $uid)), ''); $this->delete_all('concheck_log', array('uid' => array('in', $uid), 'usertype' => 1), ''); $this->delete_all('coupon_list', array('uid' => array('in', $uid)), ''); $this->delete_all('down_resume', array('comid' => array('in', $uid), 'usertype' => 2), ''); $this->delete_all('email_msg', array('uid' => array('in', $uid), 'cuid' => array('in', $uid, 'OR')), ''); $this->delete_all('evaluate_log', array('uid' => array('in', $uid)), ''); $this->delete_all('fav_job', array('com_id' => array('in', $uid)), ''); $this->delete_all('friend_help', array('comid' => array('in', $uid)), ''); $this->delete_all('friend_help_log', array('comid' => array('in', $uid)), ''); $this->delete_all('hotjob', array('uid' => array('in', $uid)), ''); $this->delete_all('invoice_record', array('uid' => array('in', $uid)), ''); $this->delete_all('job_tellog', array('comid' => array('in', $uid)), ''); $this->delete_all('login_log', array('uid' => array('in', $uid), 'usertype' => 2), ''); $this->delete_all('look_job', array('com_id' => array('in', $uid)), ''); $this->delete_all('look_resume', array('com_id' => array('in', $uid), 'usertype' => 2), ''); $this->delete_all('lt_job', array('uid' => array('in', $uid)), ''); $this->delete_all('member_log', array('uid' => array('in', $uid), 'usertype' => 2), ''); $this->delete_all('msg', array('job_uid' => array('in', $uid)), ''); $this->delete_all('partjob', array('uid' => array('in', $uid)), ''); $this->delete_all('part_apply', array('comid' => array('in', $uid)), ''); $this->delete_all('part_collect', array('comid' => array('in', $uid)), ''); $this->delete_all('px_subject_collect', array('uid' => array('in', $uid)), ''); $this->delete_all('px_zixun', array('uid' => array('in', $uid)), ''); $this->delete_all('question', array('uid' => array('in', $uid)), ''); $this->delete_all('rebates', array('job_uid' => array('in', $uid), 'uid' => array('in', $uid, 'OR')), ''); $this->delete_all('report', array('p_uid' => array('in', $uid), 'c_uid' => array('in', $uid, 'OR')), ''); $this->delete_all('school_xjh', array('uid' => array('in', $uid)), ''); $this->delete_all('special_com', array('uid' => array('in', $uid)), ''); $this->delete_all('spview', array('uid' => array('in', $uid)), ''); $this->delete_all('spview_log', array('comid' => array('in', $uid)), ''); $this->delete_all('spview_subscribe', array('comid' => array('in', $uid)), ''); $this->delete_all('spview_subscribe_msg', array('comid' => array('in', $uid)), ''); $this->delete_all('subscribe', array('uid' => array('in', $uid)), ''); $this->delete_all('subscriberecord', array('uid' => array('in', $uid)), ''); $this->delete_all('talent_pool', array('cuid' => array('in', $uid)), ''); $this->delete_all('user_entrust_record', array('comid' => array('in', $uid)), ''); $this->delete_all('userid_job', array('com_id' => array('in', $uid)), ''); $this->delete_all('userid_msg', array('fid' => array('in', $uid)), ''); $this->delete_all('zhaopinhui_com', array('uid' => array('in', $uid)), ''); $this->delete_all('zphnet_com', array('uid' => array('in', $uid)), ''); $this->delete_all('zphnet_look', array('uid' => array('in', $uid), 'usertype' => 2), ''); $this->delete_all('zphnet_user', array('uid' => array('in', $uid), 'usertype' => 2), ''); $this->delete_all('crmnew_concern', array('uid' => array('in', $uid)), ''); $this->delete_all('crm_comlog', array('uid' => array('in', $uid)), ''); $this->delete_all('crm_out', array('uid' => array('in', $uid)), ''); $this->delete_all('crm_work_plan', array('comid' => array('in', $uid)), ''); $this->delete_all('xjhlive_black', array('uid' => array('in', $uid), 'usertype' => 2), ''); $this->delete_all('xjhlive_chat', array('fuid' => array('in', $uid), 'fusertype' => 2), ''); $this->delete_all('xjhlive_com', array('uid' => array('in', $uid)), ''); $this->delete_all('yqmb', array('uid' => array('in', $uid)), ''); } return $return; } } /** * 删除猎头会员 */ private function delLt($uid) { if (!empty($uid)) { $return = $this->delete_all('lt_info', array('uid' => array('in', $uid)), ''); if ($return) { $this->delete_all('answer', array('uid' => array('in', $uid), 'usertype' => 3), ''); $this->delete_all('answer_review', array('uid' => array('in', $uid), 'usertype' => 3), ''); $this->delete_all('atn', array('uid' => array('in', $uid), 'sc_uid' => array('in', $uid, 'OR')), ''); $this->delete_all('attention', array('uid' => array('in', $uid)), ''); $this->delete_all('change', array('uid' => array('in', $uid), 'usertype' => 1), ''); $this->delete_all('chat_cs_log', array('uid' => array('in', $uid), 'usertype' => 3), ''); $this->delete_all('chat_cs_pick', array('uid' => array('in', $uid), 'usertype' => 3), ''); $this->delete_all('chat_friend', array('uid' => array('in', $uid), 'usertype' => 3), ''); $this->delete_all('chat_friend', array('fid' => array('in', $uid), 'fusertype' => 3), ''); $this->delete_all('chat_log', array('from' => array('in', $uid), 'fusertype' => 3), ''); $this->delete_all('chat_log', array('to' => array('in', $uid), 'tusertype' => 3), ''); $this->delete_all('chat_member', array('uid' => array('in', $uid), 'usertype' => 3), ''); $this->delete_all('chat_right', array('comid' => array('in', $uid)), ''); $this->delete_all('company_cert', array('uid' => array('in', $uid), 'usertype' => 3), ''); $this->delete_all('company_job_reward', array('uid' => array('in', $uid)), ''); $this->delete_all('company_job_rewardlist', array('comid' => array('in', $uid)), ''); $this->delete_all('company_job_rewardlog', array('comid' => array('in', $uid)), ''); $this->delete_all('company_job_share', array('comid' => array('in', $uid)), ''); $this->delete_all('company_job_sharelog', array('comid' => array('in', $uid)), ''); $this->delete_all('company_order', array('uid' => array('in', $uid), 'usertype' => 3), ''); $this->delete_all('company_pay', array('com_id' => array('in', $uid), 'usertype' => 3), ''); $this->delete_all('coupon_list', array('uid' => array('in', $uid)), ''); $this->delete_all('down_resume', array('comid' => array('in', $uid), 'usertype' => 3), ''); $this->delete_all('email_msg', array('uid' => array('in', $uid), 'cuid' => array('in', $uid, 'OR')), ''); $this->delete_all('evaluate_log', array('uid' => array('in', $uid)), ''); $this->delete_all('fav_job', array('uid' => array('in', $uid), 'com_uid' => array('in', $uid, 'OR')), ''); $this->delete_all('login_log', array('uid' => array('in', $uid), 'usertype' => 3), ''); $this->delete_all('lt_job', array('uid' => array('in', $uid)), ''); $this->delete_all('lt_statis', array('uid' => array('in', $uid)), ''); $this->delete_all('member_log', array('uid' => array('in', $uid), 'usertype' => 3), ''); $this->delete_all('msg', array('job_uid' => array('in', $uid)), ''); $this->delete_all('px_subject_collect', array('uid' => array('in', $uid)), ''); $this->delete_all('px_zixun', array('uid' => array('in', $uid)), ''); $this->delete_all('question', array('uid' => array('in', $uid)), ''); $this->delete_all('rebates', array('uid' => array('in', $uid), 'job_uid' => array('in', $uid, 'OR')), ''); $this->delete_all('xjhlive_black', array('uid' => array('in', $uid), 'usertype' => 3), ''); $this->delete_all('xjhlive_chat', array('fuid' => array('in', $uid), 'fusertype' => 3), ''); $this->delete_all('userid_job', array('comid' => array('in', $uid), 'type' => 3), ''); } return $return; } } /** * 删除培训会员 */ private function delTrain($uid) { if (!empty($uid)) { $return = $this->delete_all('px_train', array('uid' => array('in', $uid)), ''); if ($return) { $this->delete_all('answer', array('uid' => array('in', $uid), 'usertype' => 4), ''); $this->delete_all('answer_review', array('uid' => array('in', $uid), 'usertype' => 4), ''); $this->delete_all('atn', array('uid' => array('in', $uid), 'sc_uid' => array('in', $uid, 'OR')), ''); $this->delete_all('attention', array('uid' => array('in', $uid)), ''); $this->delete_all('change', array('uid' => array('in', $uid), 'usertype' => 1), ''); $this->delete_all('chat_cs_log', array('uid' => array('in', $uid), 'usertype' => 4), ''); $this->delete_all('chat_cs_pick', array('uid' => array('in', $uid), 'usertype' => 4), ''); $this->delete_all('company_cert', array('uid' => array('in', $uid), 'usertype' => 4), ''); $this->delete_all('company_order', array('uid' => array('in', $uid), 'usertype' => 4), ''); $this->delete_all('company_pay', array('com_id' => array('in', $uid), 'usertype' => 4), ''); $this->delete_all('email_msg', array('uid' => array('in', $uid), 'cuid' => array('in', $uid, 'OR')), ''); $this->delete_all('evaluate_log', array('uid' => array('in', $uid)), ''); $this->delete_all('login_log', array('uid' => array('in', $uid), 'usertype' => 4), ''); $this->delete_all('member_log', array('uid' => array('in', $uid), 'usertype' => 4), ''); $this->delete_all('msg', array('job_uid' => array('in', $uid)), ''); $this->delete_all('px_banner', array('uid' => array('in', $uid)), ''); $this->delete_all('px_baoming', array('s_uid' => array('in', $uid)), ''); $this->delete_all('px_subject', array('uid' => array('in', $uid)), ''); $this->delete_all('px_subject_collect', array('s_uid' => array('in', $uid)), ''); $this->delete_all('px_teacher', array('uid' => array('in', $uid)), ''); $this->delete_all('px_train_news', array('uid' => array('in', $uid)), ''); $this->delete_all('px_train_show', array('uid' => array('in', $uid)), ''); $this->delete_all('px_train_statis', array('uid' => array('in', $uid)), ''); $this->delete_all('px_zixun', array('s_uid' => array('in', $uid)), ''); } return $return; } } function delgq($uid) { if (!empty($uid)) { $return = $this->delete_all('gq_info', array('uid' => array('in', $uid)), ''); if ($return) { $this->delete_all('company_order', array('uid' => array('in', $uid), 'usertype' => 5), ''); $this->delete_all('evaluate_log', array('uid' => array('in', $uid)), ''); $this->delete_all('gq_task', array('uid' => array('in', $uid)), ''); $this->delete_all('gq_browse', array('uid' => array('in', $uid)), ''); $this->delete_all('login_log', array('uid' => array('in', $uid), 'usertype' => 5), ''); $this->delete_all('member_log', array('uid' => array('in', $uid), 'usertype' => 5), ''); } } return $return; } /** * @desc 修改用户名 * @param array $data */ function saveUserName($data = array()) { $value = array('username' => trim($data['username'])); if (isset($data['restname']) && $data['restname'] == '1') { $value['password'] = $data['password']; $value['restname'] = $data['restname']; } $uid = intval($data['uid']); $result = $this->addMemberCheck($value, $uid); if ($result['username']) { if ($data['restname'] == '1' || $data['admin'] == '1') { unset($value['password']); require_once('log.model.php'); $LogM = new log_model($this->db, $this->def); $LogM->addMemberLog($data['uid'], $data['usertype'], '修改用户名,原用户名:' . $result['oldusername'], 11); $this->update_once('member', $value, array('uid' => $uid)); $return['errcode'] = '1'; } else { $return['msg'] = '修改次数已用完!'; } } else { if ($data['admin'] == '1') { return $result; } else { $return['msg'] = $result['msg'] ? $result['msg'] : '修改失败!'; } } return $return; } /** * @desc 修改密码 * @param array $data */ function savePassword($data = array()) { if (!empty($data)) { $return = array(); $uid = intval($data['uid']); $pass = trim($data['password']); $oldpass = trim($data['oldpassword']); $repass = trim($data['repassword']); $info = $this->getInfo(array('uid' => $uid), array('field' => 'salt,password')); if ($info && is_array($info)) { //$pwdA = $this->generatePwd(array('password'=>$oldpass,'salt'=>$info['salt'])); //$old = $pwdA['pwd']; $pwmsg = regPassWordComplex($pass); if (!passCheck($oldpass, $info['salt'], $info['password'])) { $return['errcode'] = 8; $return['msg'] = '原始密码错误,请重试!'; } elseif ($pass != $repass) { $return['errcode'] = 8; $return['msg'] = '确认密码与新密码不一致,请重试!'; } elseif ($pwmsg != '') { $return['errcode'] = 8; $return['msg'] = $pwmsg; } else { $passwordA = $this->generatePwd(array('password' => $pass)); $password = $passwordA['pwd']; $salt = $passwordA['salt']; $return['id'] = $this->update_once('member', array('password' => $password, 'salt' => $salt), array('uid' => intval($data['uid']))); require_once('log.model.php'); $LogM = new log_model($this->db, $this->def); $LogM->addMemberLog($data['uid'], $data['usertype'], '修改密码', 8, 2); $return['errcode'] = 9; $return['msg'] = '密码修改成功,请重新登录!'; } } return $return; } } /** * 获取member_reg信息 * 通用的whereData条件 */ function getMemberregInfo($whereData, $data = array()) { $field = empty($data['field']) ? '*' : $data['field']; $List = $this->select_once('member_reg', $whereData, $field); return $List; } /** * 获取member_reg信息 * 通用的data数组 */ function addMemberreg($data = array()) { $nid = $this->insert_into('member_reg', $data); return $nid; } /** * 上传个人头像 */ public function upLogo($id, $data = array()) { if ($id && !empty($data)) { require_once('integral.model.php'); $IntegralM = new integral_model($this->db, $this->def); $IntegralM->invtalCheck($id, 1, 'integral_avatar', '上传头像', 20); if ($data['wap']) { $photo = './data/upload/user/' . date('Ymd') . '/' . $data['pic']; } else { $photo = str_replace('../data/upload/user/', './data/upload/user/', $data[1]); } if ($this->config['user_photo_status'] == 1) { $photo_status = '1'; $return['msg'] = '3'; } else { $photo_status = '0'; $return ['msg'] = '1'; } //5.0图片上传后就显示,后台审核不通过直接删除 $this->update_once('resume', array('photo' => $photo, 'photo_status' => $photo_status), array('uid' => $id)); $this->update_once('resume_expect', array('photo' => $photo), array('uid' => $id)); $this->update_once('answer', array('pic' => $photo), array('uid' => $id)); $this->update_once('question', array('pic' => $photo), array('uid' => $id)); return $return; } } /** * 个人身份认证 */ public function upidcardInfo($whereData = array(), $data = array()) { if (!empty($whereData)) { require_once('resume.model.php'); $ResumeM = new resume_model($this->db, $this->def); $resume = $ResumeM->getResumeInfo(array('uid' => $whereData['uid'])); if ($resume['r_status'] == 2) { $status = 0; } else { $status = $this->config['user_idcard_status'] == '1' ? '0' : '1'; } $data['name'] = $data['name'] ? $data['name'] : $resume['name']; $PostData = array( 'name' => $data['name'], 'idcard' => $data['idcard'], 'idcard_status' => $status, 'cert_time' => time() ); //图片路径处理 if ($data['file']['tmp_name'] || $data['preview']) { $upArr = array( 'file' => $data['file'], 'dir' => 'cert', 'base' => $data['preview'], ); $result = $this->upload($upArr); if (!empty($result['msg'])) { $return['msg'] = $result['msg']; $return['errcode'] = '8'; return $return; } elseif (!empty($result['picurl'])) { $picurl = $result['picurl']; } } elseif ($data['idcard_pic']) { $picurl = $data['idcard_pic']; } if (isset($picurl)) { $PostData['idcard_pic'] = $picurl; } $id = $this->update_once('resume', $PostData, array('uid' => $whereData['uid'])); $this->update_once('resume_expect', array('idcard_status' => $status, 'uname' => trim($data['name'])), array('uid' => $whereData['uid'])); if ($id) { if ((!is_array($resume) || $resume['idcard_pic'] == '') && $this->config['user_idcard_status'] != 1) { $com = $this->select_once('company_pay', array('com_id' => $whereData['uid'], 'pay_remark' => '上传身份验证')); if (empty($com)) { require_once('integral.model.php'); $IntegralM = new integral_model($this->db, $this->def); $IntegralM->invtalCheck($whereData['uid'], $data['usertype'], 'integral_identity', '上传身份验证', 21); } } require_once('log.model.php'); $LogM = new log_model($this->db, $this->def); $LogM->addMemberLog($whereData['uid'], $data['usertype'], '上传身份验证图片', 13, 1); if ($this->config['user_idcard_status'] == '1') { $return['errcode'] = '9'; $return['msg'] = '上传成功,请等待审核'; require_once('admin.model.php'); $adminM = new admin_model($this->db, $this->def); $adminM->sendAdminMsg(array('first' => '个人用户《' . $data['name'] . '》上传了新的身份认证,请查看审核。', 'type' => 8)); } else { $return['errcode'] = '9'; $return['msg'] = '上传成功'; } } else { $return['msg'] = '上传失败!'; $return['errcode'] = 8; } return $return; } } /** * 处理单个图片上传 * @param file/需上传文件; dir/上传目录; type/上传图片类型; base/需上传base64; preview/pc预览即上传 */ private function upload($data = array('file' => null, 'dir' => null, 'type' => null, 'base' => null, 'preview' => null)) { include_once('upload.model.php'); $UploadM = new upload_model($this->db, $this->def); $upArr = array( 'file' => $data['file'], 'dir' => $data['dir'], 'type' => $data['type'], 'base' => $data['base'], 'preview' => $data['preview'] ); $return = $UploadM->newUpload($upArr); return $return; } /** * 登录 * @param array $data $data['uid'] $data['usertype'] * @return array|int[]|string[] */ public function userLogin($data = array()) { $username = $data['username']; if (!empty($data['moblie'])) { $moblie = $data['moblie']; } else { $moblie = $data['username']; } $return = array('msg' => '系统繁忙', 'errcode' => 8); require('notice.model.php'); $noticeM = new notice_model($this->db, $this->def); //会员已登录判断 if (!empty($data['uid']) && $data['uid'] > 0 && $username != '') { if ($data['usertype'] == '1') { return array('msg' => '您现在是个人会员登录状态!'); } elseif ($data['usertype'] == '2') { return array('msg' => '您现在是企业会员登录状态!'); } elseif ($data['usertype'] == '3') { return array('msg' => '您现在是猎头会员登录状态!'); } elseif ($data['usertype'] == '4') { return array('msg' => '您现在是培训会员登录状态!'); } } //username验证 if ($this->config['sy_msg_isopen'] && $this->config['sy_msg_login'] && !empty($data['act_login'])) { if (!CheckMobile($moblie)) { return array('msg' => '手机号码格式不正确!', 'errcode' => '8'); } // 未注册手机登录直接注册新账号 $member_arr = $this->getMemberNum(array('moblie' => $moblie)); if (!$member_arr || $member_arr == 0) { $return = $this->regUserByMobile($moblie, $data); if ($return['errcode'] != 1) { return $return; } else { $regNew = 1; } } $where = array('moblie' => $moblie); } else { //验证码判断 手机动态码登录 无需验证验证码 if ($data['wxapp'] != '1') { $result = $noticeM->jycheck($data['authcode'], '前台登录'); if (!empty($result)) { return array('msg' => $result['msg'], 'errcode' => '8'); } } if (!CheckRegUser($username) && !CheckRegEmail($username) && ($username != '')) { return array('msg' => '用户名或密码不正确!', 'errcode' => '8'); } $where = array('username' => $username); if (CheckMobile($username)) { $where['PHPYUNBTWSTART'] = 'OR'; $where['moblie'] = $username; $where['moblie_status'] = 1; $where['PHPYUNBTWEND'] = ''; } //邮箱登录 if (CheckRegEmail($username)) { $where['PHPYUNBTWSTART'] = 'OR'; $where['email'] = $username; $where['email_status'] = 1; $where['PHPYUNBTWEND'] = ''; } } $user = $this->getInfo($where); //开启UC情况下 需要判断UC账户 并进行同步登录 if ($this->config['sy_uc_type'] == "uc_center" && !$data['act_login']) { include APP_PATH . 'data/api/uc/config.inc.php'; include APP_PATH . '/api/uc/include/db_mysql.class.php'; include APP_PATH . '/api/uc/uc_client/client.php'; $uname = $username; list($uid, $uname, $password, $email) = uc_user_login($uname, $data['password']); if ($uid > 0) { //创建登录同步通知 $ucsynlogin = uc_user_synlogin($uid); $return['uclogin'] = $ucsynlogin; } } //如果系统未找到该用户 转向UC验证 是否UC用户 排除动态码登录 if (empty($user)) { //自动将UC账号注册至系统 if ($uid > 0) { if ($data['source']) { $source = $data['source']; } else { $source = 1; } $salt = substr(uniqid(rand()), -6); $pass = passCheck($data['password'], $salt); $adata['username'] = $data['username']; $adata['password'] = $pass; $adata['did'] = $this->config['did']; $adata['status'] = 1; $adata['salt'] = $salt; $adata['source'] = $source; $adata['reg_date'] = time(); $adata['reg_ip'] = fun_ip_get(); $adata['usertype'] = 0; $userid = $this->insert_into('member', $adata); // $user = $adata; $user['uid'] = $userid; $res = true; $loginType = 'UC'; } else { return array('msg' => '该用户不存在!', 'errcode' => '8'); } } else { if ($user['status'] == '2') { return array('msg' => '您的账号已被锁定!', 'errcode' => '8', 'url' => Url('register', array('c' => 'ok', 'type' => 2), '1')); } //如果是企业用户,验证企业是否暂停 if ($user['usertype'] == '2') { $commember = $this->select_once('company', array('uid' => $user['uid']), 'r_status'); if ($commember['r_status'] == 4) { return array('msg' => '您的账号已被暂停!', 'errcode' => '8'); } } if ($this->config['sy_msg_isopen'] && $this->config['sy_msg_login'] && !empty($data['act_login'])) { //短信验证码校验 if ($regNew == 1) { $companywhere['check'] = $user['moblie']; } else { $companywhere['uid'] = $user['uid']; } $companywhere['type'] = 2; $companywhere['orderby'] = array('ctime,desc'); include_once('company.model.php'); $CompanyM = new company_model($this->db, $this->def); $cert_arr = $CompanyM->getCertInfo($companywhere); if (is_array($cert_arr)) { $checkTime = $noticeM->checkTime($cert_arr['ctime']); if ($checkTime) { $res = $data['password'] == $cert_arr['check2']; if (!$res) { return array('msg' => '短信验证码错误!', 'errcode' => '8'); } } else { return array('msg' => '验证码验证超时,请重新点击发送验证码!', 'errcode' => '8'); } } else { return array('msg' => '验证码发送不成功,请重新点击发送短信验证码!', 'errcode' => '8'); } $loginType = '短信验证码'; } else { //普通密码校验 $res = passCheck($data['password'], $user['salt'], $user['password']); $loginType = '账号'; } } if ($res) { //更新用户QQ互联ID if (session_id() == '') { session_start(); } if (!empty($_SESSION['qq']['openid'])) { if ($_SESSION['qq']['unionid']) { $qqdata = array( 'qqid' => $_SESSION['qq']['openid'], 'qqunionid' => $_SESSION['qq']['unionid'] ); } else { $qqdata = array( 'qqid' => $_SESSION['qq']['openid'] ); } $this->upInfo(array('username' => $user['username']), $qqdata); unset($_SESSION['qq']); } //更新用户微信unionid if (!empty($_SESSION['wx']['openid'])) { if ($_SESSION['wx']['unionid']) { $udate = array( 'wxid' => $_SESSION['wx']['openid'], 'unionid' => $_SESSION['wx']['unionid'] ); } else { $udate = array( 'wxid' => $_SESSION['wx']['openid'] ); } $this->upInfo($udate, array('wxid' => '', 'wxid' => '')); $this->upInfo(array('username' => $user['username']), $udate); unset($_SESSION['wx']); } elseif ($_COOKIE['wxid']) { if ($_COOKIE['unionid']) { $udate = array( 'wxid' => $_COOKIE['wxid'], 'unionid' => $_COOKIE['unionid'] ); } else { $udate = array( 'wxid' => $_COOKIE['wxid'] ); } $this->upInfo($udate, array('wxid' => '', 'wxid' => '')); $this->upInfo(array('username' => $user['username']), $udate); } //更新用户新浪sinaid if (!empty($_SESSION['sina']['openid'])) { $this->upInfo(array('username' => $user['username']), array('sinaid' => $_SESSION['sina']['openid'])); unset($_SESSION['sina']); } //马甲app内绑定登录 if (!empty($_SESSION['mag']['user_id'])) { $this->upInfo(array('maguid' => $_SESSION['mag']['user_id']), array('maguid' => '')); $this->upInfo(array('uid' => $user['uid']), array('maguid' => $_SESSION['mag']['user_id'])); unset($_SESSION['mag']); } //千帆云app内绑定登录 if (!empty($data['qfyuid'])) { $this->upInfo(array('qfyuid' => $data['qfyuid']), array('qfyuid' => '')); $this->upInfo(array('uid' => $user['uid']), array('qfyuid' => $data['qfyuid'])); } // 非APP/小程序cookie设置 if (empty($data['wxapp'])) { require_once('cookie.model.php'); $cookie = new cookie_model($this->db, $this->def); $cookie->unset_cookie(); $cookie->add_cookie($user['uid'], $user['username'], $user['salt'], $user['email'], $user['password'], $user['usertype'], $this->config['sy_logintime'], $user['did']); } //会员登录信息变更 $ip = fun_ip_get(); $upLogin = array( 'login_ip' => $ip, 'login_date' => time(), 'login_hits' => array('+', 1) ); if (!empty($data['wxapp'])) { if (!empty($data['clientid'])) { $upLogin['clientid'] = $data['clientid']; $upLogin['deviceToken'] = $data['deviceToken']; //清除其他账号clientid $this->clearPushId($data['clientid'], $user['uid']); } } $this->upInfo(array('uid' => $user['uid']), $upLogin); if (!empty($user['usertype'])) { require_once('log.model.php'); $LogM = new log_model($this->db, $this->def); //会员日志,记录登录 $loginType .= $LogM->LoginType($data); $LogM->addMemberLog($user['uid'], $user['usertype'], $loginType); $logtime = date('Ymd', $user['login_date']); $nowtime = date('Ymd', time()); if ($logtime != $nowtime) { //登录积分 include_once('integral.model.php'); $integralM = new integral_model($this->db, $this->def); $integralM->invtalCheck($user['uid'], $user['usertype'], 'integral_login', '会员登录', 22); //登录日志 $logdata['uid'] = $user['uid']; $logdata['usertype'] = $user['usertype']; $logdata['did'] = $user['did']; $LogM->addLoginlog($logdata, $data); } $resumeData = array('login_date' => time()); // 个人登录自动刷新简历 if ($this->config['resume_sx'] == 1 && $user['usertype'] == 1) { $expect = $this->select_once('resume_expect', array('uid' => $user['uid'], 'defaults' => 1), '`id`'); if (empty($expect)) { $expect = $this->select_once('resume_expect', array('uid' => $user['uid'], 'orderby' => '`id`'), '`id`'); } if (!empty($expect)) { $this->update_once('resume_expect', array('lastupdate' => time()), array('id' => $expect['id'])); $resumeData['lastupdate'] = time(); $LogM->addResumeSxLog(array('uid' => $user['uid'], 'resume_id' => $expect['id'], 'r_time' => time(), 'port' => $data['port'], 'ip' => fun_ip_get())); } } // 同步登录时间 $this->update_once('company', array('login_date' => time()), array('uid' => $user['uid'])); $this->update_once('resume', $resumeData, array('uid' => $user['uid'])); } if (empty($user['usertype'])) { $return['errcode'] = 2; $return['msg'] = ''; } else if (!empty($_COOKIE['wxid'])) { include_once('wxredpack.model.php'); $wxRedPackM = new wxredpack_model($this->db, $this->def); $wxRedPackM->sendRedPack(array('type' => '2', 'openid' => $_COOKIE['wxid'])); $cookie->setcookie('wxid', '', time() - 86400); $return['msg'] = '绑定成功,请按左上方返回进入微信客户端'; $return['url'] = Url('wap') . 'member/'; $return['errcode'] = 9; } else if (!empty($data['job'])) { $return['errcode'] = 9; $return['msg'] = ''; $return['url'] = Url('wap', array('c' => 'job', 'a' => 'comapply', 'id' => intval($data['job']))); } else if (!empty($data['checkurl'])) { $return['errcode'] = 9; $return['msg'] = ''; $return['url'] = $data['checkurl']; } else { if (!empty($data['backurl'])) { $return['url'] = $data['backurl']; } else { if (!empty($data['num']) && $data['num'] != 1) { if (!empty($data['referurl'])) { $return['url'] = $data['referurl']; } else { $return['url'] = $this->config['sy_weburl'] . '/member/index.php'; } } else { $return['url'] = $_SERVER['HTTP_REFERER']; } } $return['errcode'] = 9; $return['msg'] = '登录成功'; } if (!empty($return['url'])) { if (strpos($return['url'], 'register') !== false || strpos($return['url'], 'login') !== false || strpos($return['url'], 'setname') !== false || stripos($return['url'], 'forgetpw') !== false || ($return['url'] == $this->config['sy_weburl'] || $return['url'] == $this->config['sy_weburl'] . '/') || $return['url'] == Url('wap')) { if ($data['source'] == 2) { $return['url'] = Url('wap', array(), 'member'); } else { $return['url'] = $this->config['sy_weburl'] . '/member/index.php'; } } } // app 需要token if (!empty($data['wxapp'])) { $token = md5($user['username'] . $user['password'] . $user['salt'] . $user['usertype']); if ($user['usertype'] > 0) { $type = $user['usertype']; } else { $type = 0; } $return['user'] = array('uid' => $user['uid'], 'usertype' => $type, 'token' => $token); if ($user['pid']) { $return['user']['spid'] = 1; } } } else { $return = array('msg' => '用户名或密码不正确!', 'errcode' => '8'); } return $return; } /** * 手机登录,直接注册 * @param String $moblie 未注册手机号登录,直接注册新会员 * @return int[] */ private function regUserByMobile($moblie, $data = array()) { include_once('company.model.php'); include_once('notice.model.php'); require_once('cookie.model.php'); $cookie = new cookie_model($this->db, $this->def); $noticeM = new notice_model($this->db, $this->def); $return = array('errcode' => 8); $usertype = 0; $ip = fun_ip_get(); $code = $data['password']; $CompanyM = new company_model($this->db, $this->def); $cert_arr = $CompanyM->getCertInfo(array('type' => '2', 'check' => $moblie, 'orderby' => 'ctime,desc')); if (is_array($cert_arr)) { $checkTime = $noticeM->checkTime($cert_arr['ctime']); if ($checkTime) { $res = $code == $cert_arr['check2'] ? true : false; if ($res == false) { return array('msg' => '短信验证码错误!', 'errcode' => '8'); } } else { return array('msg' => '验证码验证超时,请重新点击发送验证码!', 'errcode' => '8'); } } else { return array('msg' => '验证码发送不成功,请重新点击发送短信验证码!', 'errcode' => '8'); } $data['username'] = $moblie; $password = mt_rand(111111, 999999); if ($this->config['sy_uc_type'] == "uc_center") { include APP_PATH . 'data/api/uc/config.inc.php'; include APP_PATH . '/api/uc/include/db_mysql.class.php'; include APP_PATH . '/api/uc/uc_client/client.php'; $ucusername = $data['username']; $ucemail = $ucinfo['UC_EMAIL']; $uid = uc_user_register($ucusername, $password, $ucemail); list($uid, $username, $password, $email, $salt) = uc_user_login($ucusername, $password); $pass = md5(md5($password) . $salt); } elseif ($this->config['sy_pw_type'] == 'pw_center') { include(APP_PATH . '/api/pw_api/pw_client_class_phpapp.php'); $email = ''; $pw = new PwClientAPI($data['username'], $password, $email); $pwuid = $pw->register(); $salt = substr(uniqid(rand()), -6); $pass = passCheck($password, $salt); } else { $salt = substr(uniqid(rand()), -6); $pass = passCheck($password, $salt); } if ($_COOKIE['wxid']) { $source = '9'; } elseif ($_SESSION['wx']['openid']) { $source = '4'; } elseif ($_SESSION['qq']['openid']) { $source = '8'; } elseif ($_SESSION['sina']['openid']) { $source = '10'; } elseif ($data['source']) { $source = $data['source']; } else { $source = 1; } /* 生成uid */ $adata['username'] = $data['username']; $adata['password'] = $pass; $adata['email'] = ''; $adata['moblie'] = $moblie; $adata['moblie_status'] = 1; $adata['did'] = !empty($data['did']) ? $data['did'] : $this->config['did']; $adata['status'] = 1; $adata['salt'] = $salt; $adata['source'] = $source; $adata['reg_date'] = time(); $adata['reg_ip'] = $ip; $adata['qqid'] = $_SESSION['qq']['openid']; $adata['sinaid'] = $_SESSION['sina']['openid']; $adata['wxid'] = $_SESSION['wx']['openid']; $adata['usertype'] = 0; $adata['maguid'] = $_SESSION['mag']['user_id']; $adata['qfyuid'] = $_POST['qfyuid']; $userid = $this->insert_into('member', $adata); // 容错机制,防止插入表没返回UID if (!$userid) { $user_id = $this->getInfo(array('username' => $data['username']), array('field' => 'uid')); $userid = $user_id['uid']; } if ($userid) { $cookie->unset_cookie(); if ($this->config['sy_pw_type'] == 'pw_center') { $this->upInfo(array('pwuid' => $pwuid), array('uid' => $userid)); } //处理注册赠送优惠券 if ($this->config['reg_coupon']) { $coupon = $this->select_once('coupon', array('id' => $this->config['reg_coupon'])); $cdata['uid'] = $userid; $cdata['number'] = time(); $cdata['ctime'] = time(); $cdata['coupon_id'] = $coupon['id']; $cdata['coupon_name'] = $coupon['name']; $cdata['validity'] = time() + $coupon['time'] * 86400; $cdata['coupon_amount'] = $coupon['amount']; $cdata['coupon_scope'] = $coupon['scope']; $this->insert_into('coupon_list', $cdata); } if (checkMsgOpen($this->config)) { $noticeM->sendSMSType(array('name' => $data['username'], 'username' => $data['username'], 'password' => $password, 'moblie' => $moblie, 'type' => 'reg', 'uid' => $userid, 'port' => $data['port'])); } $this->upInfo(array('uid' => $userid), array('login_date' => time(), 'login_ip' => $ip)); $return['msg'] = '注册成功'; $return['errcode'] = 1; if (!empty($data['wxapp'])) { // wxapp 需要token $token = md5($data['username'] . $pass . $salt . '0'); $return['user'] = array('uid' => $userid, 'usertype' => 0, 'token' => $token); if (!empty($data['clientid'])) { //清除其他账号clientid $this->clearPushId($data['clientid'], $userid); } } else { // 浏览器需要cookie $cookie->add_cookie($userid, $data['username'], $salt, $data['email'], $pass, '', $this->config['sy_logintime'], $adata['did']); } return $return; } else { $return['msg'] = '注册失败'; $this->addErrorLog('', 1, $return['msg']); $return['errcode'] = 8; return $return; } } /** * 注册 * * @param array $data $data['uid'] $data['usertype'] * @return mixed */ public function userReg($data = array()) { if ($data['moblie']) { $resume_info = $this->getUserInfo(array('telphone' => $data['moblie'], 'moblie_status' => '1'), array('usertype' => '1', 'field' => 'uid,name')); $company_info = $this->getUserInfo(array('linktel' => $data['moblie'], 'moblie_status' => '1'), array('usertype' => '2', 'field' => 'uid,name')); $lt_info = $this->getUserInfo(array('moblie' => $data['moblie'], 'moblie_status' => '1'), array('usertype' => '3', 'field' => 'uid,realname')); $px_info = $this->getUserInfo(array('linktel' => $data['moblie'], 'moblie_status' => '1'), array('usertype' => '4', 'field' => 'uid,name')); $m_info = $this->getInfo(array('moblie' => $data['moblie'], 'username' => array('=', $data['moblie'], 'OR')), array('field' => '`uid`,`usertype`,`username`,`moblie`')); } elseif ($data['email']) { $resume_info = $this->getUserInfo(array('email' => $data['email'], 'moblie_status' => '1'), array('usertype' => '1', 'field' => 'uid,name')); $company_info = $this->getUserInfo(array('linkmail' => $data['email'], 'moblie_status' => '1'), array('usertype' => '2', 'field' => 'uid,name')); $lt_info = $this->getUserInfo(array('email' => $data['email'], 'moblie_status' => '1'), array('usertype' => '3', 'field' => 'uid,realname')); $px_info = $this->getUserInfo(array('linkmail' => $data['email'], 'moblie_status' => '1'), array('usertype' => '4', 'field' => 'uid,name')); $m_info = $this->getInfo(array('email' => $data['email'], 'username' => array('=', $data['email'], 'OR')), array('field' => '`uid`,`usertype`,`username`,`email`')); } if ($resume_info) { $rdata['name'] = $resume_info['name']; $rdata['uid'] = $resume_info['uid']; $rdata['usertype'] = '1'; } else if ($company_info) { $rdata['name'] = $company_info['name']; $rdata['uid'] = $company_info['uid']; $rdata['usertype'] = '2'; } else if ($lt_info) { $rdata['name'] = $lt_info['realname']; $rdata['uid'] = $lt_info['uid']; $rdata['usertype'] = '3'; } else if ($px_info) { $rdata['name'] = $px_info['name']; $rdata['uid'] = $px_info['uid']; $rdata['usertype'] = '4'; } else if ($m_info) { if ($m_info['usertype'] == '1') { $info = $this->getUserInfo(array('uid' => $m_info['uid']), array('usertype' => '1', 'field' => 'name')); $rdata['name'] = $info['name']; } else if ($m_info['usertype'] == '2') { $info = $this->getUserInfo(array('uid' => $m_info['uid']), array('usertype' => '2', 'field' => 'name')); $rdata['name'] = $info['name']; } else if ($m_info['usertype'] == '3') { $info = $this->getUserInfo(array('uid' => $m_info['uid']), array('usertype' => '3', 'field' => 'realname')); $rdata['name'] = $info['realname']; } else if ($m_info['usertype'] == '4') { $info = $this->getUserInfo(array('uid' => $m_info['uid']), array('usertype' => '4', 'field' => 'name')); $rdata['name'] = $info['name']; } $rdata['uid'] = $m_info['uid']; $rdata['usertype'] = $m_info['usertype']; } if ($rdata != null) { $return['data'] = $rdata; return $return; } if ($this->config['sy_web_mobile'] != '') { $regnamer = @explode(';', $this->config['sy_web_mobile']); if (in_array($data['moblie'], $regnamer)) { $return['errcode'] = 2; } } $return['errcode'] = 0; return $return; } /** * 注册 * $data 处理的数据 * @param array $data * @return int[] */ public function userRegSave($data = array()) { include_once('notice.model.php'); $noticeM = new notice_model($this->db, $this->def); $return = array('errcode' => 8); if ($this->config['reg_user_stop'] != 1) { $return['msg'] = '网站已关闭注册!'; $return['errcode'] = 8; return $return; } if (!empty($data['uid'])) { $return['msg'] = '您已经登录了!'; $return['errcode'] = 8; return $return; } $ip = fun_ip_get(); if ($this->config['sy_reg_interval'] > 0) { $intervaltime = time() - 3600 * $this->config['sy_reg_interval']; $regnum = $this->getMemberNum(array('reg_ip' => $ip, 'reg_date' => array('>=', $intervaltime))); if ($regnum) { $return['errcode'] = 8; $return['msg'] = '请勿频繁注册!'; return $return; } } //关闭用户名注册 if ($data['codeid'] == '1' && $this->config['reg_user'] != '1') { $return['msg'] = '网站已关闭用户名注册!'; $return['errcode'] = 8; return $return; } //关闭手机注册 if ($data['codeid'] == '2' && $this->config['reg_moblie'] != '1') { $return['msg'] = '网站已关闭手机注册!'; $return['errcode'] = 8; return $return; } //关闭邮箱注册 if ($data['codeid'] == '3' && $this->config['reg_email'] != '1') { $return['msg'] = '网站已关闭邮箱注册!'; $return['errcode'] = 8; return $return; } if ($this->config['sy_reg_type'] == 2) { if ($data['reg_type'] == 1) { if ($this->config['sy_resumename_num'] == 1) { if (!$data['reg_name'] || !preg_match("/^[\x{4e00}-\x{9fa5}]{2,6}$/u", $data['reg_name'])) { $return['msg'] = '姓名请输入2-6位汉字!'; $return['errcode'] = 8; return $return; } } } else if ($data['reg_type'] == 2) { $comNum = $this->select_num(array('name' => $data['reg_name'])); if ((int)$comNum > 0) { $return['msg'] = '企业名称已存在!'; $return['errcode'] = 8; return $return; } } } /* 用户名注册 */ if ($data['codeid'] == '1') { $data['username'] = str_replace('!', '!', $data['username']); $username = $data['username']; $msg = regUserNameComplex($username);//检测用户名复杂度 if ($username == '') { $return['msg'] = '用户名不能为空!'; } elseif (CheckRegUser($username) == false && CheckRegEmail($username) == false) { $return['msg'] = '用户名不得包含特殊字符!'; } elseif ($msg != '') { $return['msg'] = $msg; } else { $usernameNum = $this->getMemberNum(array('username' => $username)); if ($usernameNum > 0) { $return['msg'] = '用户名已存在,请重新输入!'; } } if ($return['msg']) { $return['errcode'] = 8; return $return; } } /* 是否要输入手机号 */ $needMobile = false; if ($data['codeid'] == 2) { $needMobile = true; } else if ($this->config['reg_real_name_check'] == 1) { $needMobile = true; } if ($needMobile) { if ($data['moblie'] == '') { $return['msg'] = '手机号码不能为空!'; } elseif (!CheckMobile($data['moblie'])) { $return['msg'] = '手机格式错误!'; } else { $moblieNum = $this->getMemberNum(array('moblie' => $data['moblie'])); if ($moblieNum > 0) { $return['msg'] = '手机已存在!'; } } if ($return['msg']) { $return['errcode'] = 8; return $return; } } /* 是否要输入email */ $needEmail = false; if ($data['codeid'] == 3) { $needEmail = true; } if ($needEmail) { if ($data['email'] == '') { $return['msg'] = '邮箱不能为空'; } elseif (CheckRegEmail($data['email']) == false) { $return['msg'] = '邮箱格式错误!'; } else { $emailNum = $this->getMemberNum(array('email' => $data['email'])); if ($emailNum > 0) { $return['msg'] = '邮箱已存在,请重新输入!'; } } if ($return['msg']) { $return['errcode'] = 8; return $return; } } /* 是否验证短信验证码 */ $needMsg = false; if ($data['codeid'] == 2 && $this->config['sy_msg_regcode'] == '1') { $needMsg = true; } else if ($this->config['reg_real_name_check'] == 1) { $needMsg = true; } if ($needMsg) { $regCertMobile = $this->select_once('company_cert', array('type' => '2', 'check' => $data['moblie'], 'orderby' => 'ctime,desc'), '`check2`,`ctime`'); $codeTime = $noticeM->checkTime($regCertMobile['ctime']); if ($data['moblie_code'] == '') { $return['msg'] = '短信验证码不能为空!'; $return['errcode'] = 8; return $return; } elseif (!$codeTime) { $return['msg'] = '短信验证码验证超时,请重新点击发送验证码!'; $return['errcode'] = 8; return $return; } elseif ($regCertMobile['check2'] != $data['moblie_code']) { $return['msg'] = '短信验证码错误!'; $return['errcode'] = 8; return $return; } else { $adata['moblie_status'] = '1'; } } /* 已通过短信验证,则不需要极验证、图片验证 */ if ($data['wxapp'] != 1) { if (!$needMsg) { $result = $noticeM->jycheck($data['code'], '注册会员'); if (!empty($result)) { $return['msg'] = $result['msg']; $return['errcode'] = 8; return $return; } } } /* 手机注册和邮箱注册 */ if ($data['codeid'] == '2') { $data['username'] = $data['moblie']; } elseif ($data['codeid'] == '3') { $data['username'] = $data['email']; } $password = $data['password']; $pwmsg = regPassWordComplex($password);//检测用户名复杂度 /* 密码 */ if ($data['password'] == '') { $return['msg'] = '密码不能为空!'; $return['errcode'] = 8; return $return; } elseif (mb_strlen($data['password']) < 6 || mb_strlen($data['password']) > 20) { $return['msg'] = '密码长度应在6-20位!'; $return['errcode'] = 8; return $return; } elseif ($pwmsg != '') { $return['msg'] = $pwmsg; $return['errcode'] = 8; return $return; } if ($data['username']) { $nid = $this->getMemberNum(array('username' => $data['username'])); if ($nid) { $return['msg'] = '账户名已存在!'; $return['errcode'] = 8; return $return; } if ($this->config['sy_uc_type'] == "uc_center") { include APP_PATH . 'data/api/uc/config.inc.php'; include APP_PATH . '/api/uc/include/db_mysql.class.php'; include APP_PATH . '/api/uc/uc_client/client.php'; $ucusername = $data['username']; //没有邮箱的情况下使用默认邮箱 if (!$_POST['email']) { $ucemail = $ucinfo['UC_EMAIL']; } else { $ucemail = $_POST['email']; } $uid = uc_user_register($ucusername, $_POST['password'], $ucemail); if ($uid <= 0) { switch ($uid) { case "-1": $return['msg'] = '用户名不合法!'; break; case "-2": $return['msg'] = '包含不允许注册的词语!'; break; case "-3": $return['msg'] = '用户名已经存在!'; break; case "-4": $return['msg'] = 'Email 格式有误!'; break; case "-5": $return['msg'] = 'Email 不允许注册!'; break; case "-6": $return['msg'] = '该 Email 已经被注册!'; break; } $return['errcode'] = 8; return $return; } else { list($uid, $username, $password, $email, $salt) = uc_user_login($ucusername, $_POST['password']); $pass = md5(md5($_POST['password']) . $salt); } } elseif ($this->config['sy_pw_type'] == 'pw_center') { include(APP_PATH . '/api/pw_api/pw_client_class_phpapp.php'); $password = $data['password']; $email = $data['email']; $pw = new PwClientAPI($data['username'], $password, $email); $pwuid = $pw->register(); $salt = substr(uniqid(rand()), -6); $pass = passCheck($password, $salt); } else { $salt = substr(uniqid(rand()), -6); $pass = passCheck($data['password'], $salt); } if (isset($_COOKIE['wxid'])) { $source = '9'; } elseif (isset($_SESSION['wx']['openid'])) { $source = '4'; } elseif (isset($_SESSION['qq']['openid'])) { $source = '8'; } elseif (isset($_SESSION['sina']['openid'])) { $source = '10'; } elseif (isset($data['source'])) { $source = $data['source']; } else { $source = 1; } /* 生成uid */ $adata['username'] = $data['username']; $adata['password'] = $pass; $adata['email'] = $data['email']; $adata['moblie'] = $data['moblie']; $adata['did'] = !empty($data['did']) ? $data['did'] : $this->config['did']; $adata['status'] = 1; $adata['salt'] = $salt; $adata['source'] = $source; $adata['reg_date'] = time(); $adata['reg_ip'] = $ip; $adata['qqid'] = $_SESSION['qq']['openid']; $adata['sinaid'] = $_SESSION['sina']['openid']; $adata['wxid'] = $_SESSION['wx']['openid']; // 小程序邀请注册 $adata['regcode'] = isset($data['fromUser']) ? $data['fromUser'] : (int)$_COOKIE['regcode']; if ($this->config['sy_reg_type'] == 2) { $adata['usertype'] = $data['reg_type']; if (isset($data['wxapp'])) { if (isset($data['bdopenid'])) { $adata['bdopenid'] = $data['bdopenid']; } if (isset($data['app_wxid'])) { $adata['app_wxid'] = $data['app_wxid']; } if (isset($data['wxopenid'])) { $adata['wxopenid'] = $data['wxopenid']; } if (isset($data['unionid'])) { $adata['unionid'] = $data['unionid']; } if (isset($data['qqid'])) { $adata['qqid'] = $data['qqid']; } if (isset($data['qqunionid'])) { $adata['qqunionid'] = $data['qqunionid']; } } if (isset($data['reg_qq'])) { $adata['qqid'] = $data['reg_qq']['openid']; $adata['qqunionid'] = $data['reg_qq']['unionid']; } elseif (isset($data['reg_weixin'])) { $adata['wxid'] = $data['reg_weixin']['openid']; // 公众号openid $adata['unionid'] = $data['reg_weixin']['unionid']; } elseif (isset($data['reg_sina'])) { $adata['sinaid'] = $data['reg_sina']['openid']; } } else { $adata['usertype'] = 0; } $adata['maguid'] = $_SESSION['mag']['user_id']; $adata['qfyuid'] = $_POST['qfyuid']; //马甲app内注册的 if (isset($_SESSION['mag'])) { unset($_SESSION['mag']); } if (!empty($data['clientid'])) { $adata['clientid'] = $data['clientid']; $adata['deviceToken'] = $data['deviceToken']; } $userid = $this->insert_into('member', $adata); if (!$userid) { $uInfo = $this->getInfo(array('username' => $data['username']), array('field' => 'uid')); $userid = $uInfo['uid']; } if ($userid) { if ($this->config['sy_pw_type'] == 'pw_center') { $this->upInfo(array('pwuid' => $pwuid), array('uid' => $userid)); } //邀请注册获得积分 if (!empty($_COOKIE['regcode'])) { $regMember = $this->select_once('member', array('uid' => (int)$_COOKIE['regcode']), "`usertype`"); if (!empty($regMember)) { include_once('integral.model.php'); $IntegralM = new integral_model($this->db, $this->def); $IntegralM->invtalCheck((int)$_COOKIE['regcode'], $regMember['usertype'], 'integral_invite_reg', '邀请注册', 23); } } //处理注册赠送优惠券 if ($this->config['reg_coupon']) { $coupon = $this->select_once('coupon', array('id' => $this->config['reg_coupon'])); $cdata['uid'] = $userid; $cdata['number'] = time(); $cdata['ctime'] = time(); $cdata['coupon_id'] = $coupon['id']; $cdata['coupon_name'] = $coupon['name']; $cdata['validity'] = time() + $coupon['time'] * 86400; $cdata['coupon_amount'] = $coupon['amount']; $cdata['coupon_scope'] = $coupon['scope']; $this->insert_into('coupon_list', $cdata); } /* 发送通知短信、邮件 */ if ($data['email']) { $noticeM->sendEmailType(array('name' => $data['username'], 'username' => $data['username'], 'password' => $data['password'], 'email' => $data['email'], 'type' => 'reg', 'uid' => $userid)); } if (checkMsgOpen($this->config)) { $noticeM->sendSMSType(array('name' => $data['username'], 'username' => $data['username'], 'password' => $data['password'], 'moblie' => $data['moblie'], 'type' => 'reg', 'uid' => $userid, 'port' => $data['port'])); } $this->upInfo(array('uid' => $userid), array('login_date' => time(), 'login_ip' => $ip)); $return['msg'] = '注册成功'; $return['errcode'] = 1; // app 需要token if (!empty($data['wxapp'])) { if ($this->config['sy_reg_type'] == 2) { $token = md5($data['username'] . $pass . $salt . $adata['usertype']); $return['user'] = array('uid' => $userid, 'usertype' => $adata['usertype'], 'token' => $token); $this->addIdentInfo($userid, array('reg_name' => $data['reg_name'], 'reg_link' => $data['reg_link'], 'reg_type' => $data['reg_type'], 'source' => $data['source'])); } else { $token = md5($data['username'] . $pass . $salt . '0'); $return['user'] = array('uid' => $userid, 'usertype' => 0, 'token' => $token); } if (!empty($data['clientid'])) { //清除其他账号clientid $this->clearPushId($data['clientid'], $userid); } } else { require_once('cookie.model.php'); $cookie = new cookie_model($this->db, $this->def); $cookie->unset_cookie(); if ($this->config['sy_reg_type'] == 2) { $cookie->add_cookie($userid, $data['username'], $salt, $data['email'], $pass, $data['reg_type'], $this->config['sy_logintime'], $this->config['did']); $newResult = $this->addIdentInfo($userid, array('reg_name' => $data['reg_name'], 'reg_link' => $data['reg_link'], 'reg_type' => $data['reg_type'], 'source' => $data['source'])); $return['url'] = $newResult['url']; $return['reg_type'] = $this->config['sy_reg_type']; } else { $cookie->add_cookie($userid, $data['username'], $salt, $data['email'], $pass, '', $this->config['sy_logintime'], $this->config['did']); } } return $return; } else { $this->addErrorLog('', 1, $return['msg']); $return['msg'] = '注册失败'; $return['errcode'] = 8; return $return; } } else { $return['msg'] = '用户名不能为空!'; $return['errcode'] = 8; return $return; } } /** * 选择身份直接注册账号,添加基本信息 * @param $uid * @param array $data * @return mixed */ private function addIdentInfo($uid, $data = array()) { $usertype = $data['reg_type']; $user = $this->getInfo(array('uid' => intval($uid)), array('field' => '`uid`,`username`,`password`,`salt`,`email`,`moblie`,`moblie_status`,`email_status`,`did`,`login_date`')); //根据激活类型 生成对应信息表附表信息 if ($usertype == '1') { $table = 'member_statis'; $table2 = 'resume'; $data1 = array('uid' => $user['uid']); $crm_uid = $this->getCrmUid(array('type' => '1')); $data2 = array( 'uid' => $user['uid'], 'name' => $data['reg_name'], 'email' => $user['email'], 'email_status' => $user['email_status'], 'telphone' => $user['moblie'], 'r_status' => $this->config['user_state'], 'moblie_status' => $user['moblie_status'], 'crm_uid' => $crm_uid, 'crm_time' => $crm_uid ? time() : '', 'did' => !empty($user['did']) ? $user['did'] : $this->config['did'], 'login_date' => time() ); } elseif ($usertype == '2') { $table = 'company_statis'; $table2 = 'company'; require_once('rating.model.php'); $ratingM = new rating_model($this->db, $this->def); $data1 = $ratingM->fetchRatingInfo(array('uid' => $user['uid'])); $data1['uid'] = $user['uid']; $data1['did'] = $this->config['did']; $data2['uid'] = $user['uid']; $data2['name'] = $data['reg_name']; $data2['linkman'] = $data['reg_link']; $data2['linkmail'] = $user['email']; $data2['linktel'] = $user['moblie']; $data2['rating'] = $data1['rating']; $data2['rating_name'] = $data1['rating_name']; $data2['vipstime'] = $data1['vip_stime']; $data2['vipetime'] = $data1['vip_etime']; $data2['did'] = !empty($user['did']) ? $user['did'] : $this->config['did']; $data2['email_status'] = $user['email_status']; $data2['moblie_status'] = $user['moblie_status']; $data2['r_status'] = $this->config['com_status']; $data2['login_date'] = time(); if ($this->config['sy_crm_duty'] == 1) { $crm_uid = $this->getCrmUid(array('type' => '2')); } if ($crm_uid) { $data2['crm_uid'] = $crm_uid; $data2['crm_time'] = time(); } } elseif ($usertype == '3') { $table = 'lt_statis'; $table2 = 'lt_info'; require_once('rating.model.php'); $ratingM = new rating_model($this->db, $this->def); $data1 = $ratingM->ltratingInfo(0, $uid); $data1['uid'] = $user['uid']; $data2['uid'] = $user['uid']; $data2['name'] = $data['reg_name']; $data2['email'] = $user['email']; $data2['moblie'] = $user['moblie']; $data2['did'] = !empty($user['did']) ? $user['did'] : $this->config['did']; $data2['email_status'] = $user['email_status']; $data2['moblie_status'] = $user['moblie_status']; $data2['r_status'] = $this->config['lt_status']; } elseif ($usertype == '4') { $table = 'px_train_statis'; $table2 = 'px_train'; $data1['uid'] = $user['uid']; $data2['uid'] = $user['uid']; $data2['name'] = $data['name']; $data2['linkman'] = $data['reg_link']; $data2['linkmail'] = $user['email']; $data2['linktel'] = $user['moblie']; $data2['email_status'] = $user['email_status']; $data2['moblie_status'] = $user['moblie_status']; $data2['did'] = !empty($user['did']) ? $user['did'] : $this->config['did']; $data2['r_status'] = $this->config['px_status']; } if ($table) { require_once('log.model.php'); $LogM = new log_model($this->db, $this->def); //容错机制 判断附表数据是否存在 不存在才作新增操作 $existTable = $this->select_num($table, array('uid' => $user['uid'])); if ($existTable < 1) { $this->insert_into($table, $data1); //会员注册插入会员日志 $LogM->addMemberLog($user['uid'], $usertype, '用户:' . $user['username'] . '注册成功'); //判断是否记录已发送 require_once 'integral.model.php'; $IntegralM = new integral_model($this->db, $this->def); $integralwhere['com_id'] = $user['uid']; $integralwhere['pay_remark'] = '注册赠送'; $Interpay = $IntegralM->getInfo($integralwhere); if (empty($Interpay) && $usertype != 5) { if ($this->config['integral_reg'] > 0) { $IntegralM->company_invtal($user['uid'], $usertype, $this->config['integral_reg'], true, '注册赠送', true, 2, 'integral', 23); } if ($this->config['integral_login']) { $IntegralM->invtalCheck($user['uid'], $usertype, 'integral_login', '会员登录', 22); } if ($this->config['integral_mobliecert'] && $user['moblie_status'] == 1) { $IntegralM->invtalCheck($user['uid'], $usertype, 'integral_mobliecert', '手机绑定'); } } } //会员日志,记录手动登录 $LogM->addMemberLog($user['uid'], $usertype, '用户选择身份成功'); // 登录日志 $logtime = date('Ymd', $user['login_date']); $nowtime = date('Ymd', time()); if ($logtime != $nowtime) { $logdata['uid'] = $user['uid']; $logdata['usertype'] = $usertype; $logdata['did'] = $user['did']; $LogM->addLoginlog($logdata, $user); } } $existTable2 = $this->select_num($table2, array('uid' => $user['uid'])); if ($existTable2 < 1) { $this->insert_into($table2, $data2); if ($usertype == '2' && $data2['r_status'] == 0) { require_once 'admin.model.php'; $adminM = new admin_model($this->db, $this->def); $adminM->sendAdminMsg(array('first' => '有新的企业会员《' . $user['username'] . '》需要审核,账号ID(' . $user['uid'] . ')', 'type' => 9)); } } if ($usertype == 1) { if ($data['source'] == 1) { $return['url'] = Url('member', array('c' => 'expect', 'act' => 'add')); } elseif ($data['source'] == 2) { $return['url'] = Url('wap') . 'member/index.php?c=addresume'; } } else { if ($data['source'] == 1) { $return['url'] = Url('member', array('c' => 'info')); } else { $return['url'] = Url('wap') . 'member/index.php?c=info'; } } return $return; } function insertMember($data = array()) { $nid = $this->insert_into('member', $data); return $nid; } /** * @desc 注册成功,选择身份 * @param array $data * @return array $return */ function upUserType($data = array()) { $uid = intval($data['uid']); $usertype = intval($data['usertype']); if (in_array($usertype, array('1', '2', '3', '4'))) { $user = $this->getInfo(array('uid' => $uid), array('field' => '`uid`,`username`,`email_status`,`moblie_status`,`password`,`salt`,`email`,`moblie`,`did`')); $return = array(); if ($user['uid']) { // 增加来源 if (isset($data['provider'])) { $user['provider'] = $data['provider']; } if (isset($data['iswap'])) { $user['source'] = 2; } $this->activUser($user['uid'], $usertype, $user); if (!isset($data['wxapp'])) { $cookie = new cookie_model($this->db, $this->def); $cookie->setcookie('usertype', intval($usertype), time() + 86400); } if (isset($data['iswap'])) { if ($usertype == 1) { $return['url'] = Url('wap') . 'member/index.php?c=addresume'; } else { $return['url'] = Url('wap') . 'member/index.php?c=info'; } } else { if ($usertype == 1) { $return['url'] = Url('member', array('c' => 'expect', 'act' => 'add')); } else { $return['url'] = Url('member', array('c' => 'info')); } } $return['errcode'] = 1; // uni-app 需要token if (isset($data['wxapp'])) { $token = md5($user['username'] . $user['password'] . $user['salt'] . $usertype); $return['user'] = array('uid' => $uid, 'usertype' => $usertype, 'token' => $token); } } else { $return['msg'] = '请先注册'; $return['errcode'] = 9; } } else { $return['msg'] = '参数错误,请正确选择!'; $return['errcode'] = 9; } return $return; } /** * 选择身份 * @param $uid * @param $usertype * @param array $user */ public function activUser($uid, $usertype, $user = array()) { $this->upInfo(array('uid' => intval($uid)), array('usertype' => $usertype)); if (empty($user)) { $user = $this->getInfo(array('uid' => intval($uid)), array('field' => '`uid`,`username`,`password`,`salt`,`email`,`moblie`,`moblie_status`,`email_status`,`did`,`login_date`')); } //根据激活类型 生成对应信息表附表信息 if ($usertype == '1') { $table = 'member_statis'; $table2 = 'resume'; $data1 = array('uid' => $user['uid']); $crm_uid = $this->getCrmUid(array('type' => '1')); $data2 = array( 'uid' => $user['uid'], 'email' => $user['email'], 'email_status' => $user['email_status'], 'telphone' => $user['moblie'], 'r_status' => $this->config['user_state'], 'moblie_status' => $user['moblie_status'], 'crm_uid' => $crm_uid, 'crm_time' => $crm_uid ? time() : '', 'did' => !empty($user['did']) ? $user['did'] : $this->config['did'], 'login_date' => time() ); } elseif ($usertype == '2') { $table = 'company_statis'; $table2 = 'company'; require_once('rating.model.php'); $ratingM = new rating_model($this->db, $this->def); $data1 = $ratingM->fetchRatingInfo(array('uid' => $user['uid'])); $data1['uid'] = $user['uid']; $data1['did'] = $this->config['did']; $data2['uid'] = $user['uid']; $data2['linkmail'] = $user['email']; $data2['linktel'] = $user['moblie']; $data2['rating'] = $data1['rating']; $data2['rating_name'] = $data1['rating_name']; $data2['vipstime'] = $data1['vip_stime']; $data2['vipetime'] = $data1['vip_etime']; $data2['did'] = !empty($user['did']) ? $user['did'] : $this->config['did']; $data2['email_status'] = $user['email_status']; $data2['moblie_status'] = $user['moblie_status']; $data2['r_status'] = $this->config['com_status']; $data2['login_date'] = time(); if ($this->config['sy_crm_duty'] == 1) { $crm_uid = $this->getCrmUid(array('type' => '2')); } if ($crm_uid) { $data2['crm_uid'] = $crm_uid; $data2['crm_time'] = time(); } } elseif ($usertype == '3') { $table = 'lt_statis'; $table2 = 'lt_info'; require_once('rating.model.php'); $ratingM = new rating_model($this->db, $this->def); $data1 = $ratingM->ltratingInfo(0, $uid); $data1['uid'] = $user['uid']; $data2['uid'] = $user['uid']; $data2['email'] = $user['email']; $data2['moblie'] = $user['moblie']; $data2['did'] = !empty($user['did']) ? $user['did'] : $this->config['did']; $data2['email_status'] = $user['email_status']; $data2['moblie_status'] = $user['moblie_status']; $data2['r_status'] = $this->config['lt_status']; } elseif ($usertype == '4') { $table = 'px_train_statis'; $table2 = 'px_train'; $data1['uid'] = $user['uid']; $data2['uid'] = $user['uid']; $data2['linkmail'] = $user['email']; $data2['linktel'] = $user['moblie']; $data2['email_status'] = $user['email_status']; $data2['moblie_status'] = $user['moblie_status']; $data2['did'] = !empty($user['did']) ? $user['did'] : $this->config['did']; $data2['r_status'] = $this->config['px_status']; } if ($table) { require_once('log.model.php'); $LogM = new log_model($this->db, $this->def); //容错机制 判断附表数据是否存在 不存在才作新增操作 $existTable = $this->select_num($table, array('uid' => $user['uid'])); if ($existTable < 1) { $this->insert_into($table, $data1); //会员注册插入会员日志 $LogM->addMemberLog($user['uid'], $usertype, '用户:' . $user['username'] . '注册成功'); //判断是否记录已发送 require_once 'integral.model.php'; $IntegralM = new integral_model($this->db, $this->def); $integralwhere['com_id'] = $user['uid']; $integralwhere['pay_remark'] = '注册赠送'; $Interpay = $IntegralM->getInfo($integralwhere); if (empty($Interpay) && $usertype != 5) { if ($this->config['integral_reg'] > 0) { $IntegralM->company_invtal($user['uid'], $usertype, $this->config['integral_reg'], true, '注册赠送', true, 2, 'integral', 23); } if ($this->config['integral_login']) { $IntegralM->invtalCheck($user['uid'], $usertype, 'integral_login', '会员登录', 22); } if ($this->config['integral_mobliecert'] && $user['moblie_status'] == 1) { $IntegralM->invtalCheck($user['uid'], $usertype, 'integral_mobliecert', '手机绑定'); } } } //会员日志,记录手动登录 $LogM->addMemberLog($user['uid'], $usertype, '用户选择身份成功'); // 登录日志 $logtime = date('Ymd', $user['login_date']); $nowtime = date('Ymd', time()); if ($logtime != $nowtime) { $logdata['uid'] = $user['uid']; $logdata['usertype'] = $usertype; $logdata['did'] = $user['did']; $LogM->addLoginlog($logdata, $user); } } $existTable2 = $this->select_num($table2, array('uid' => $user['uid'])); if ($existTable2 < 1) { $this->insert_into($table2, $data2); if ($usertype == '2' && $data2['r_status'] == 0) { require_once 'admin.model.php'; $adminM = new admin_model($this->db, $this->def); $adminM->sendAdminMsg(array('first' => '有新的企业会员《' . $user['username'] . '》需要审核,账号ID(' . $user['uid'] . ')', 'type' => 9)); } } } /** * @desc 企业 / 个人注册,查询CRM信息绑定 * @param array $data * @return mixed */ public function getCrmUid($data = array()) { if ($data['city'] == 1) { $crmWhere = array(); $crmWhere['is_crm'] = '1'; $crmWhere['status'] = '1'; $crmWhere['PHPYUNBTWSTART_A'] = ''; $crmWhere['crm_city'][] = array('findin', $data['provinceid'], 'OR'); $crmWhere['crm_city'][] = array('findin', $data['cityid'], 'OR'); if ($data['three_cityid']) { $crmWhere['crm_city'][] = array('findin', $data['three_cityid'], 'OR'); } $crmWhere['PHPYUNBTWEND_A'] = ''; $crmWhere['orderby'] = 'uid'; $crms = $this->select_all('admin_user', $crmWhere, '`uid`'); } else { $day = date('w') == 0 ? 7 : date('w'); $crms = $this->select_all('admin_user', array('is_crm' => 1, 'status' => 1, 'crm_duty' => array('findin', $day), 'orderby' => 'uid'), '`uid`'); } if (is_array($crms)) { foreach ($crms as $k => $v) { $CrmUid[$v['uid']] = $k + 1; $CrmK[$k] = $v['uid']; } if ($data['type'] == '1') { $endCrm = $this->select_once('resume', array('crm_uid' => array('>', 0), 'orderby' => 'uid, desc'), '`crm_uid`'); } elseif ($data['type'] == '2') { $sql = "SELECT `crm_uid` FROM " . DEF_DATA . "company LEFT JOIN " . DEF_DATA . "member ON " . DEF_DATA . "company.uid = " . DEF_DATA . "member.uid WHERE " . DEF_DATA . "member.source <> 16 AND " . DEF_DATA . "company.crm_uid > 0 ORDER BY " . DEF_DATA . "company.uid DESC LIMIT 1;"; $endCrm = $this->DB_query_all($sql, 'one'); } if (!$CrmUid[$endCrm['crm_uid']]) { $CrmUid[$endCrm['crm_uid']] = 0; } if ($CrmUid[$endCrm['crm_uid']] >= count($crms)) { $crm_uid = $CrmK[0]; } else { $crm_uid = $CrmK[$CrmUid[$endCrm['crm_uid']]]; } } return $crm_uid; } //快捷登录信息绑定 public function bindUser($username, $password, $bindinfo) { if ($username && $password) { $userinfo = $this->select_once('member', array('username' => $username)); if (!$userinfo && CheckMobile($username)) {//手机号登录 $user = $this->select_once('member', array('moblie' => $username), 'username,usertype,password,uid,usertype,salt,status,did,login_date'); $binding = $this->getUserInfo(array('uid' => $user['uid'], 'moblie_status' => 1), array('usertype' => $user['usertype'], 'field' => 'uid')); if (!empty($binding)) { $userinfo = $user; } } if (!$userinfo && CheckRegEmail($username)) {//邮箱登录 $user = $this->select_once('member', array('email' => $username), 'username,usertype,password,uid,usertype,salt,status,did,login_date'); $binding = $this->getUserInfo(array('uid' => $user['uid'], 'email_status' => 1), array('usertype' => $user['usertype'], 'field' => 'uid')); if (!empty($binding)) { $userinfo = $user; } } if (!empty($userinfo)) { $res = passCheck($password, $userinfo['salt']) == $userinfo['password'] ? true : false; if ($res) { if ($userinfo['status'] == '1') { //开始绑定操作 if ($bindinfo['qqid']) { $sqlBind['qqid'] = $bindinfo['qqid']; $sqlBind['qqunionid'] = $bindinfo['qqunionid']; } if ($bindinfo['sinaid']) { $sqlBind['sinaid'] = $bindinfo['sinaid']; } if ($bindinfo['wxid']) { $sqlBind['wxid'] = $bindinfo['wxid']; $sqlBind['unionid'] = $bindinfo['wxunionid']; } if ($sqlBind) { $this->update_once('member', $sqlBind, array('uid' => $userinfo['uid'])); $error['info'] = $userinfo; $error['error'] = '1'; } else { $error['msg'] = '绑定失败!'; } } else { $error['msg'] = '该账户正在审核中,请稍后再绑定'; } } else { $error['msg'] = '密码错误,请重试!'; } } else { $error['msg'] = '请输入正确的账户名!'; } } else { $error['msg'] = '请输入需要绑定的账户、密码!'; } return $error; } function upMemberInfo($uData = array(), $setData = array()) { if (!empty($setData)) { $result = $this->addMemberCheck($setData, $uData['uid'], $uData['usertype']); if ($result['msg']) { $result['errcode'] = 8; $result['url'] = $_SERVER['HTTP_REFERER']; return $result; } if (!empty($setData['did'])) { $result['did'] = $setData['did']; } $result['reg_ip'] = $setData['reg_ip']; if ($setData['utype'] == 'admin') { $result['moblie'] = $result['moblie'] ? $result['moblie'] : $setData['moblie']; $result['email'] = $result['email'] ? $result['email'] : $setData['email']; } $nid = $this->upInfo(array('uid' => $uData['uid']), $result); if ($nid) { if ($setData['utype'] == 'admin') { if ($result['moblie']) { $this->update_once('resume', array('moblie_status' => '0', 'telphone' => ''), array('telphone' => $result['moblie'], 'uid' => array('<>', $uData['uid']))); $this->update_once('company', array('moblie_status' => '0', 'linktel' => ''), array('linktel' => $result['moblie'], 'uid' => array('<>', $uData['uid']))); $this->update_once('lt_info', array('moblie_status' => '0', 'moblie' => ''), array('moblie' => $result['moblie'], 'uid' => array('<>', $uData['uid']))); $this->update_once('px_train', array('moblie_status' => '0', 'linktel' => ''), array('linktel' => $result['moblie'], 'uid' => array('<>', $uData['uid']))); } if ($result['email']) { $this->update_once('resume', array('email_status' => '0', 'email' => ''), array('email' => $result['email'], 'uid' => array('<>', $uData['uid']))); $this->update_once('company', array('email_status' => '0', 'linkmail' => ''), array('linkmail' => $result['email'], 'uid' => array('<>', $uData['uid']))); $this->update_once('lt_info', array('email_status' => '0', 'email' => ''), array('email' => $result['email'], 'uid' => array('<>', $uData['uid']))); $this->update_once('px_train', array('email_status' => '0', 'linkmail' => ''), array('linkmail' => $result['email'], 'uid' => array('<>', $uData['uid']))); } $this->update_once('resume', array('telphone' => $result['moblie'], 'email' => $result['email']), array('uid' => $uData['uid'])); $this->update_once('company', array('linktel' => $result['moblie'], 'linkmail' => $result['email']), array('uid' => $uData['uid'])); $this->update_once('lt_info', array('moblie' => $result['moblie'], 'email' => $result['email']), array('uid' => $uData['uid'])); $this->update_once('px_train', array('linktel' => $result['moblie'], 'linkmail' => $result['email']), array('uid' => $uData['uid'])); } } $result['msg'] = $nid ? '修改成功!' : '修改失败!'; $result['errcode'] = $nid ? 9 : 8; $lasturl = str_replace('&', '&', $uData['lasturl']); $result['url'] = $lasturl; return $result; } } function delMember($del) { if (!empty($del)) { $return = array(); if (is_array($del)) { $delid = pylode(',', $del); $return['layertype'] = 1; } else { $return['layertype'] = 0; $delid = $del; } $resume = $this->select_all('resume', array('uid' => array('in', $delid)), '`uid`'); if (is_array($resume) && $resume) { foreach ($resume as $v) { if ($v['uid']) { $rids[] = $v['uid']; } } } $comacc = $this->select_all('company_account', array('uid' => array('in', $delid)), '`uid`'); if (is_array($comacc) && $comacc) { foreach ($comacc as $v) { if ($v['uid']) { $comaccids[] = $v['uid']; } } } $company = $this->select_all('company', array('uid' => array('in', $delid)), '`uid`'); if (is_array($company) && $company) { foreach ($company as $v) { if ($v['uid']) { $comids[] = $v['uid']; } } } $lt = $this->select_all('lt_info', array('uid' => array('in', $delid)), '`uid`'); if (is_array($lt) && $lt) { foreach ($lt as $v) { $ltids[] = $v['uid']; } } $px = $this->select_all('px_train', array('uid' => array('in', $delid)), '`uid`'); if (is_array($px) && $px) { foreach ($px as $v) { if ($v['uid']) { $pxids[] = $v['uid']; } } } $gq = $this->select_all('gq_info', array('uid' => array('in', $delid)), '`uid`'); if (is_array($gq) && $gq) { foreach ($gq as $v) { if ($v['uid']) { $gqids[] = $v['uid']; } } } $result = $this->delete_all('member', array('uid' => array('in', $delid)), ''); if ($result) { if (is_array($rids) && !empty($rids)) { $result = $this->delUser(pylode(',', $rids)); } if (is_array($comids) && !empty($comids)) { $result = $this->delCom(pylode(',', $comids)); } if (is_array($ltids) && !empty($ltids)) { $result = $this->delLt(pylode(',', $ltids)); } if (is_array($pxids) && !empty($pxids)) { $result = $this->delTrain(pylode(',', $pxids)); } if (is_array($gqids) && !empty($gqids)) { $result = $this->delgq(pylode(',', $gqids)); } if (is_array($comaccids) && !empty($comaccids)) { $result = $this->delete_all('company_account', array('uid' => array('in', pylode(',', $comaccids))), ''); } } $return['errcode'] = $result ? 9 : 8; $return['msg'] = $result ? '会员删除成功' : '会员删除失败'; } else { $return['msg'] = '请选择您要删除的会员'; $return['errcode'] = '8'; } return $return; } /** * 小程序和app账号绑定(微信、QQ、新浪微博) */ public function loginBind($data) { if (!empty($data)) { if (empty($data['openid'])) { $return['error'] = 2; $return['msg'] = '参数异常,绑定失败'; return $return; } $uni = 'wxapp'; $openid = $data['openid']; $field = '`uid`,`username`,`password`,`salt`,`usertype`'; if ($data['type'] == 'weixin') { if ($data['provider'] == 'app') { // app内 $field .= ',`app_wxid`,`unionid`'; $up = array('app_wxid' => $openid); $uni = 'APP/微信'; } else { // 微信小程序内 $field .= ',`wxopenid`,`unionid`'; $up = array('wxopenid' => $openid); $uni = '微信小程序'; } if (!empty($data['unionid'])) { $up['unionid'] = $data['unionid']; } } elseif ($data['type'] == 'baidu') { $field .= ',`bdopenid`'; $up = array('bdopenid' => $openid); $uni = "百度小程序"; } elseif ($data['type'] == 'qq') { $field .= ',`qqid`,`qqunionid`'; $up = array('qqid' => $openid, 'qqunionid' => !empty($data['unionid']) ? $data['unionid'] : ''); if ($data['provider'] == 'app') { $uni = 'APP/QQ'; } else { $uni = 'QQ'; } } elseif ($data['type'] == 'sinaweibo') { $field .= ',`sinaid`'; $up = array('sinaid' => $openid); if ($data['provider'] == 'app') { $uni = 'APP/weibo'; } else { $uni = 'weibo'; } } $user = $this->select_once('member', array('uid' => $data['uid']), $field); if (isset($up)) { $nid = $this->upInfo(array('uid' => $user['uid']), $up); if ($data['type'] == 'weixin' && $data['provider'] == 'weixin' && !empty($data['unionid']) && empty($this->config['mini_wxopen'])) { // 微信小程序内登录的,已绑定开放平台的,处理微信小程序绑定微信开放平台状态 $new_config = array('mini_wxopen' => 1); include 'config.model.php'; $configM = new config_model($this->db, $this->def); $configM->setConfig($new_config); // 重新生成config.php缓存 $configM->makeConfig(); } require_once('log.model.php'); $LogM = new log_model($this->db, $this->def); $LogM->addMemberLog($user['uid'], $user['usertype'], $uni . '绑定成功'); // 清空该账号的其他绑定账号 $upWhere = array('uid' => array('<>', $user['uid'])); if ($data['type'] == 'weixin') { if (!empty($data['unionid']) && $data['unionid'] != $user['unionid']) { $upWhere['PHPYUNBTWSTART'] = ''; $upWhere['unionid'] = $data['unionid']; if ($data['provider'] == 'app') { // app内 $upWhere['app_wxid'] = array('=', $openid, 'OR'); } else { // 微信小程序内 $upWhere['wxopenid'] = array('=', $openid, 'OR'); } $upWhere['PHPYUNBTWEND'] = ''; } else { if ($data['provider'] == 'app') { // app内 $upWhere['app_wxid'] = $openid; } else { // 微信小程序内 $upWhere['wxopenid'] = $openid; } } $clear = array('wxid' => '', 'app_wxid' => '', 'wxopenid' => '', 'unionid' => ''); } elseif ($data['type'] == 'baidu') { $upWhere['bdopenid'] = $openid; $clear = array('bdopenid' => ''); } elseif ($data['type'] == 'qq') { if (!empty($data['unionid']) && $data['unionid'] != $user['qqunionid']) { $upWhere['PHPYUNBTWSTART'] = ''; $upWhere['qqunionid'] = $data['unionid']; $upWhere['qqid'] = array('=', $openid, 'OR'); $upWhere['PHPYUNBTWEND'] = ''; $clear = array('qqid' => '', 'qqunionid' => ''); } else { $upWhere['qqid'] = $openid; $clear = array('qqid' => ''); } } elseif ($data['type'] == 'sinaweibo') { $upWhere['sinaid'] = $openid; $clear = array('sinaid' => ''); } else { // 参数错误,清除清理查询条件 $upWhere = array(); } if (!empty($upWhere) && !empty($clear)) { $bm = $this->select_all('member', $upWhere, '`uid`,`usertype`'); if (!empty($bm)) { $bmuid = array(); foreach ($bm as $bv) { $bmuid[] = $bv['uid']; $LogM->addMemberLog($bv['uid'], $bv['usertype'], '在' . $uni . '解除绑定,绑定到新账号(ID:' . $user['uid'] . ')'); } $this->upInfo(array('uid' => array('in', pylode(',', $bmuid))), $clear); } } } if (isset($nid)) { $return['error'] = 0; $return['msg'] = ''; $token = md5($user['username'] . $user['password'] . $user['salt'] . $user['usertype']); $return['user'] = array('uid' => $user['uid'], 'usertype' => $user['usertype'], 'token' => $token); } else { $return['error'] = 2; $return['msg'] = '绑定失败'; } return $return; } } /** * 小程序和app第三方登录检测(微信、QQ、新浪微博) */ public function loginCheck($data) { if ($data['type'] == 'weixin') { if ($data['provider'] == 'app') { // app内微信登录 if (!empty($data['unionid'])) { $where = array('unionid' => $data['unionid'], 'app_wxid' => array('=', $data['openid'], 'OR')); } else { $where = array('app_wxid' => $data['openid']); } $uni = 'APP/微信'; } else { // 微信小程序内微信登录 if (!empty($data['unionid'])) { $where = array('unionid' => $data['unionid'], 'wxopenid' => array('=', $data['openid'], 'OR')); } else { $where = array('wxopenid' => $data['openid']); } $uni = '微信小程序'; } } elseif ($data['type'] == 'baidu') { // 百度小程序内百度登录 $where = array('bdopenid' => $data['openid']); } elseif ($data['type'] == 'qq') { if (!empty($data['unionid'])) { $where = array('qqunionid' => $data['unionid']); } else { $where = array('qqid' => $data['openid']); } $uni = 'APP/QQ'; } elseif ($data['type'] == 'sinaweibo') { $where = array('sinaid' => $data['openid']); $uni = 'APP/weibo'; } $userinfo = $this->getInfo($where, array('field' => 'uid,username,password,salt,usertype,login_date,status')); if (!empty($userinfo)) { if ($userinfo['status'] == '2') { $return['error'] = 3; $return['msg'] = '您的账号已被锁定'; return $return; } $time = time(); $ip = fun_ip_get(); $upLogin = array( 'login_ip' => $ip, 'login_date' => $time, 'login_hits' => array('+', 1) ); if (!empty($data['clientid'])) { $upLogin['clientid'] = $data['clientid']; $upLogin['deviceToken'] = $data['deviceToken']; //清除其他账号clientid $this->clearPushId($data['clientid'], $userinfo['uid']); } if ($data['provider'] == 'app') { // app内微信登录 $upLogin['app_wxid'] = $data['openid']; } else { // 微信小程序内微信登录 $upLogin['wxopenid'] = $data['openid']; } if (!empty($data['unionid'])) { $upLogin['unionid'] = $data['unionid']; } $this->upInfo(array('uid' => $userinfo['uid']), $upLogin); if ($userinfo['usertype'] > 0) { // 同步登录时间 $this->update_once('company', array('login_date' => time()), array('uid' => $userinfo['uid'])); $this->update_once('resume', array('login_date' => time()), array('uid' => $userinfo['uid'])); //会员日志,记录手动登录 require_once('log.model.php'); $LogM = new log_model($this->db, $this->def); $LogM->addMemberLog($userinfo['uid'], $userinfo['usertype'], $uni . '登录成功'); // 有身份类型的记录登录日志、加登录积分 $logtime = date('Ymd', $userinfo['login_date']); $nowtime = date('Ymd', $time); if ($logtime != $nowtime) { require_once 'integral.model.php'; $IntegralM = new integral_model($this->db, $this->def); $IntegralM->invtalCheck($userinfo['uid'], $userinfo['usertype'], 'integral_login', '会员登录', 22); //登录日志 $logindata = array( 'uid' => $userinfo['uid'], 'usertype' => $userinfo['usertype'] ); $LogM->addLoginlog($logindata, $data); } } $token = md5($userinfo['username'] . $userinfo['password'] . $userinfo['salt'] . $userinfo['usertype']); $return['error'] = $userinfo['usertype'] > 0 ? 0 : 1; $return['errmsg'] = ''; $return['user'] = array('uid' => $userinfo['uid'], 'usertype' => $userinfo['usertype'], 'token' => $token); if ($data['provider'] == 'weixin' && !empty($data['unionid']) && empty($this->config['mini_wxopen'])) { // 微信小程序内登录的,已绑定开放平台的,处理微信小程序绑定微信开放平台状态 $new_config = array('mini_wxopen' => 1); include 'config.model.php'; $configM = new config_model($this->db, $this->def); $configM->setConfig($new_config); // 重新生成config.php缓存 $configM->makeConfig(); } } else { if (!empty($data['phoneEncrypt']) && !empty($data['phoneIv'])) { // 如果传了微信手机号解密参数(属于微信小程序) $return = $this->decodePhoneNumber($data); } else { if (!empty($data['cnewcount'])) { if ($data['type'] == 'weixin' && $data['provider'] == 'weixin') { $provider = 'wxxcx'; } else { $provider = $data['provider']; } $return = $this->fastReg($data, $provider, $data['type']); } else { $return['error'] = 2; $return['msg'] = ''; $return['user'] = array(); } } } return $return; } /** * 微信小程序通过解密getPhoneNumber接口参数,来获取手机号。 然后检测是否绑定账号,没绑定的,自动注册账号 */ public function decodePhoneNumber($data = array()) { $iv = $data['phoneIv']; $encryptedData = $data['phoneEncrypt']; //解密手机号 include APP_PATH . "/api/wxapp/PHP/wxBizDataCrypt.php"; $pc = new wxBizDataCrypt($data['appid'], $data['session_key']); $errCode = $pc->decryptData($encryptedData, $iv, $res); if ($errCode !== 0) { $return['error'] = $errCode; $return['errmsg'] = '数据异常,请稍后重试'; } else { //根据手机号查询已有数据,如没有则注册新账号 $res = json_decode($res, true); $phone = $res['purePhoneNumber']; if (!$phone || $phone == '') { $return['error'] = 2; $return['errmsg'] = '微信绑定手机号错误'; } else { $user = $this->select_once('member', array('moblie' => $phone), '`uid`,`usertype`'); if (!empty($user)) { //已有账号,绑定微信 $data['uid'] = $user['uid']; if ($user['usertype'] == 1 || $user['usertype'] == 2 || $user['usertype'] == 0) { $return = $this->loginBind($data); } else { $return['error'] = -1; $return['errmsg'] = "只能登录个人或企业身份账号"; } } else { $wdata = array( 'moblie' => $phone, 'openid' => $data['openid'], 'unionid' => $data['unionid'], 'source' => $data['source'] ); $return = $this->fastReg($wdata, 'wxxcx'); } } } return $return; } //申请切换用户列表 public function getUserChangeList($where, $data = array()) { $usertype = array('1' => '个人会员', '2' => '企业会员', '3' => '猎头会员', '4' => '培训会员'); $field = empty($data['field']) ? '*' : $data['field']; $rows = $this->select_all('user_change', $where, $field); if (is_array($rows) && $rows) { foreach ($rows as $val) { $memberid[] = $val['uid']; } $member = $this->select_all('member', array('uid' => array('in', pylode(',', $memberid))), '`uid`,moblie'); foreach ($rows as $k => $v) { $rows[$k]['pres_usertype'] = $usertype[$v['pres_usertype']]; $rows[$k]['apply_usertype'] = $usertype[$v['apply_usertype']]; foreach ($member as $val) { if ($v['uid'] == $val['uid']) { $rows[$k]['moblie'] = $val['moblie']; } } } } return $rows; } public function addUserChange($addData = array()) { $return = $this->insert_into('user_change', $addData); return $return; } public function upusChange($whereData = array(), $upData = array()) { $return = $this->update_once('user_change', $upData, $whereData); return $return; } // 获取账户信息 function getUserChangeInfo($where, $data = array()) { $field = empty($data['field']) ? '*' : $data['field']; $rows = $this->select_once('user_change', $where, $field); return $rows; } function upAllUserChange($idarr, $data = array(), $port = null) { $status = $data['status']; if (!empty($idarr)) { $rows = $this->select_all('user_change', array('id' => array('in', pylode(',', $idarr)), 'status' => array('<>', 1))); $ids = array(); $uidarr = array(); foreach ($rows as $k => $v) { $ids[] = $v['id']; $uidarr[] = $v['uid']; } $nid = $this->update_once('user_change', $data, array('id' => array('in', pylode(',', $ids)))); if ($nid) { //审核通过 $mems = $this->select_all('member', array('uid' => array('in', pylode(',', $uidarr))), '`uid`,`moblie`'); $mobliearr = array(); foreach ($mems as $mk => $mv) { $mobliearr[$mv['uid']] = $mv['moblie']; } $ucarr = $this->select_all('user_change', array('id' => array('in', pylode(',', $ids)))); foreach ($ucarr as $uk => $uv) { $this->actUserchange($uv['id'], $uv['uid'], $uv['apply_usertype'], $uv['name'], $status, $mobliearr[$uv['uid']], $port); } $return['msg'] = '转换会员审核成功'; $return['errcode'] = 9; } else { //审核失败 $return['msg'] = '转换会员审核失败'; $return['errcode'] = 8; } } else { $return['msg'] = '请选择要转换的用户'; $return['errcode'] = 8; } return $return; } //审核 function upUserChange($id, $uid, $moblie, $data = array(), $port = null) { $status = $data['status']; $nid = $this->update_once('user_change', $data, array('id' => $id)); if ($nid) { //审核通过 $userwhere['id'] = $id; $userwhere['uid'] = $uid; $userows = $this->getUserChangeInfo($userwhere); if ($userows) { $this->actUserchange($id, $uid, $userows['apply_usertype'], $userows['name'], $status, $moblie, $port); $return['msg'] = '转换会员(ID:' . $id . ')审核成功'; $return['errcode'] = 9; } else { $return['msg'] = '转换会员数据不存在'; $return['errcode'] = 8; } } else { //审核失败 $return['msg'] = '转换会员(ID:' . $id . ')审核失败'; $return['errcode'] = 8; } return $return; } /** * 身份切换 * $data 处理的数据 * $data['uid'] * $data['usertype'] 需要切换成的身份 */ public function changeUsertype($data = array()) { $return = array( 'errcode' => 8, 'msg' => '' ); $uid = intval($data['uid']); $usertype = intval($data['usertype']); if (!$uid) { $return['msg'] = '请先登录!'; return $return; } //判断是否有子账户 if (!empty($data['spid'])) { $return['msg'] = '当前为子账户,不支持切换!'; return $return; } //参数判断 if (!in_array($usertype, array(1, 2, 3, 4))) { $return['msg'] = '无法转换成此身份!'; return $return; } //先获取uid信息 $memField = array('field' => '`uid`,`username`, `usertype`, `pid`, `email`, `moblie`, `address`,`salt`,`email`,`password`,`did`,`moblie_status`,`email_status`,`did`'); $memInfo = $this->getInfo(array('uid' => $uid), $memField); if (empty($memInfo)) { $return['msg'] = '数据错误!'; return $return; } //判断转换的身份 相同身份切换 直接返回成功,常见于同浏览器多窗口切换 或 后台管理员切换 if (empty($usertype) || $usertype == $memInfo['usertype']) { $return = array( 'errcode' => 9, 'msg' => 'ok', 'memInfo' => $memInfo ); return $return; } // 添加切换身份日志 $marr = array( 'uid' => $uid, 'usertype' => $usertype, 'content' => '用户' . $memInfo['username'] . '切换身份成功', 'opera' => 11, 'type' => 1, 'ip' => fun_ip_get(), 'ctime' => time(), 'did' => $memInfo['did'] ); $this->insert_into('member_log', $marr); // 根据切换的身份,来选择身份 $this->activUser($uid, $usertype, $memInfo); $return = array( 'errcode' => 9, 'msg' => 'ok', 'memInfo' => $memInfo ); return $return; } /** * 后台切换身份后处理 */ function actUserchange($id, $uid, $usertype, $username, $status, $moblie, $port = null) { require_once 'notice.model.php'; $noticeM = new notice_model($this->db, $this->def); if ($status == 1) { switch ($usertype) { case '1' : $table = 'resume'; break; case '2' : $table = 'company'; break; case '3' : $table = 'lt_info'; break; case '4' : $table = 'px_train'; break; } $existTable = $this->select_num($table, array('uid' => $uid)); if ($existTable < 1) { $this->activUser($uid, $usertype); } $this->update_once('member', array('usertype' => $usertype), array('uid' => $uid)); } include_once('weixin.model.php'); $Weixin = new weixin_model($this->db, $this->def); $userdata = array( 'id' => $id, 'uid' => $uid, 'status' => $status ); $Weixin->sendWxUsercahnge($userdata); if ($moblie) { //发送短信 $sendData['type'] = 'userchange'; $sendData['moblie'] = $moblie; if ($status == 1) { $sendData['status'] = '切换成功'; } else { $sendData['status'] = '拒绝切换'; } $sendData['port'] = $port; $noticeM->sendSMSType($sendData); } } /** * 删除简历 * @param string $id 格式:单个,如1 ; 批量,如1,2,3 * @param array $data */ public function delUserChange($id) { if (!empty($id)) { $return = array( 'errcode' => 8, 'layertype' => 0, 'msg' => '' ); if (is_array($id)) { $ids = $id; $return['layertype'] = 1; } else { $ids = @explode(',', $id); } $id = pylode(',', $ids); $return['id'] = $this->delete_all('user_change', array('id' => array('in', $id)), ''); $return['msg'] = '申请转换会员信息(ID:' . pylode(',', $ids) . ')'; $return['errcode'] = $return['id'] ? '9' : '8'; $return['msg'] = $return['id'] ? $return['msg'] . '删除成功!' : $return['msg'] . '删除失败!'; } else { $return['msg'] = '请选择您要删除的申请转换会员信息!'; $return['errcode'] = 8; } return $return; } /** * 用户申请切换身份校验 * errcode 1:有条件不符并且有跳转链接 2:有错误提示无需跳转 3:拒绝 重新申请 5:需要填写申请理由 6:身份申请成功 等待审核 9:身份切换成功 */ function checkChangeApply($uid, $usertype, $body = '') { if (empty($uid)) { $return['msg'] = '请先登录'; $return['url'] = Url('login'); $return['errcode'] = 1; } elseif ($this->config['sy_user_change'] != '1') { $return['msg'] = '请联系管理员进行操作!'; $return['errcode'] = 2; } else { $uid = (int)$uid; $usertype = (int)$usertype; //获取账户基本信息 $where['uid'] = $uid; $user = $this->getInfo($where, array('field' => '`usertype`,`username`,`salt`,`email`,`password`,`pid`,`wxopenid`,`wxid`,`did`')); if ($user['usertype'] > 0) { //查询是否有申请记录 $cahnge = $this->getUserChangeInfo(array('uid' => $uid, 'orderby' => 'id,desc')); //已经有申请记录的 禁止重复申请 if (!empty($cahnge) && $cahnge['status'] == 0) { $utypes = array('1' => '个人会员', '2' => '企业会员', '3' => '猎头会员', '4' => '培训会员'); $return['msg'] = '您已申请' . $utypes[$cahnge['apply_usertype']] . ',请等待管理员审核'; $return['wxopenid'] = $user['wxopenid']; $return['wxid'] = $user['wxid']; $return['errcode'] = 6; } else { //之前申请过并且被拒绝的 如果有body内容,则视为重新申请 if ($cahnge['status'] == 2 && !$body) { $return['msg'] = '管理员已拒绝您的申请,原因:' . $cahnge['statusbody']; $return['errcode'] = 3; } else { if ($this->config['sy_change_noshen'] != '1') { if ($usertype == 1) { $InfoNum = $this->select_num('resume', $where); } else if ($usertype == 2) { $InfoNum = $this->select_num('company', $where); } else if ($usertype == 3) { $InfoNum = $this->select_num('lt_info', $where); } else if ($usertype == 4) { $InfoNum = $this->select_num('px_train', $where); } } //免审核或已经审核过的可以直接切换 if ($InfoNum > 0 || $this->config['sy_change_noshen'] == '1') { $changeData['uid'] = $uid; $changeData['usertype'] = $usertype; $changeData['spid'] = $user['pid']; $res = $this->changeUsertype($changeData); if ($res['errcode'] == 9) { require_once('cookie.model.php'); $cookieM = new cookie_model($this->db, $this->def); $cookieM->add_cookie($uid, $user['username'], $user['salt'], $user['email'], $user['password'], $usertype, $this->config['sy_logintime'], $user['did']); $return['errcode'] = 9; $token = md5($user['username'] . $user['password'] . $user['salt'] . $usertype); $return['user'] = array('uid' => $uid, 'usertype' => $usertype, 'token' => $token); } else { $return['msg'] = $res['msg']; $return['errcode'] = 4; } } else { //需要重新申请 如果有BODY字段 视为提交新申请 没有body则返回说明状态 if ($body != '') { $addData = array( 'uid' => $uid, 'name' => $user['username'], 'did' => $user['did'], 'apply_usertype' => $usertype, 'pres_usertype' => $user['usertype'], 'applybody' => $body, 'apply_time' => time(), 'lastupdate' => time(), 'type' => 1, 'state' => 0, ); $this->addUserChange($addData); $return['wxid'] = $user['wxid']; $return['msg'] = '申请成功,请等待管理员审核!'; $return['errcode'] = 6; } else { $return['errcode'] = 5;//需要填写申请理由 } } } } } else { $return['msg'] = '请先完善基本信息或者退出登录选择新身份'; $return['url'] = $_SERVER['HTTP_REFERER']; $return['errcode'] = 1; } } return $return; } /** * 第三方登录绑定账号 * @param array $data * @param string $type * @return array|string[] */ function bindacount($data = array(), $type = '') { $username = $data['username']; $return = array('msg' => '系统繁忙', 'errcode' => 8); require('notice.model.php'); $noticeM = new notice_model($this->db, $this->def); //会员已登录判断 if (!empty($data['uid']) && $data['uid'] > 0 && $username != '') { if ($data['usertype'] == '1') { return array('msg' => '您现在是个人会员登录状态!'); } elseif ($data['usertype'] == '2') { return array('msg' => '您现在是企业会员登录状态!'); } elseif ($data['usertype'] == '3') { return array('msg' => '您现在是猎头会员登录状态!'); } elseif ($data['usertype'] == '4') { return array('msg' => '您现在是培训会员登录状态!'); } } //验证码判断 if (!isset($data['provider'])) { $result = $noticeM->jycheck($data['authcode'], '前台登录'); if (!empty($result)) { return array('msg' => $result['msg'], 'errcode' => '8'); } } if (CheckRegUser($username) == false && CheckRegEmail($username) == false && ($username != '')) { return array('msg' => '用户名包含特殊字符或为空!', 'errcode' => '8'); } $where = array('username' => $username); if (CheckMobile($username)) { $where['PHPYUNBTWSTART'] = 'OR'; $where['moblie'] = $username; $where['moblie_status'] = 1; $where['PHPYUNBTWEND'] = ''; } //邮箱登录 if (CheckRegEmail($username)) { $where['PHPYUNBTWSTART'] = 'OR'; $where['email'] = $username; $where['email_status'] = 1; $where['PHPYUNBTWEND'] = ''; } $user = $this->getInfo($where); if (!empty($user)) { if ($user['status'] == '2') { return array('msg' => '您的账号已被锁定!', 'errcode' => '8', 'url' => Url('register', array('c' => 'ok', 'type' => 2), '1')); } //普通密码校验 $res = passCheck($data['password'], $user['salt'], $user['password']); if ($res) { //cookie设置 if (!isset($data['provider'])) { require_once('cookie.model.php'); $cookie = new cookie_model($this->db, $this->def); $cookie->unset_cookie(); $cookie->add_cookie($user['uid'], $user['username'], $user['salt'], $user['email'], $user['password'], $user['usertype'], $this->config['sy_logintime'], $user['did']); } //会员登录信息变更 $ip = fun_ip_get(); $upLogin = array( 'login_ip' => $ip, 'login_date' => time(), 'login_hits' => array('+', 1) ); if (isset($data['provider'])) { if (!empty($data['clientid'])) { $upLogin['clientid'] = $data['clientid']; $upLogin['deviceToken'] = $data['deviceToken']; //清除其他账号clientid $this->clearPushId($data['clientid'], $user['uid']); } } if ($type == 'weixin') { if (isset($data['provider'])) { if ($data['provider'] == 'app') { $upLogin['app_wxid'] = !empty($data['openid']) ? $data['openid'] : ''; } else { $upLogin['wxopenid'] = !empty($data['openid']) ? $data['openid'] : ''; } } else { $upLogin['wxid'] = !empty($data['openid']) ? $data['openid'] : ''; } $upLogin['unionid'] = !empty($data['unionid']) ? $data['unionid'] : ''; } elseif ($type == 'qq') { $upLogin['qqid'] = !empty($data['openid']) ? $data['openid'] : ''; $upLogin['qqunionid'] = !empty($data['unionid']) ? $data['unionid'] : ''; } elseif ($type == 'sinaweibo') { $upLogin['sinaid'] = !empty($data['openid']) ? $data['openid'] : ''; } elseif ($type == "baidu") { $upLogin['bdopenid'] = !empty($data['openid']) ? $data['openid'] : ''; } $this->upInfo(array('uid' => $user['uid']), $upLogin); if (!empty($user['usertype'])) { // 同步登录时间 $this->update_once('company', array('login_date' => time()), array('uid' => $user['uid'])); $this->update_once('resume', array('login_date' => time()), array('uid' => $user['uid'])); //登录日志 if (isset($data['provider'])) { if ($data['source'] == '3') { $state_content = 'app绑定账号'; } elseif ($data['source'] == '13') { $state_content = '微信小程序绑定账号'; } elseif ($data['source'] == '19') { $state_content = '百度小程序绑定账号'; } } elseif ($type == 'weixin') { $state_content = $data['source'] == 1 ? 'PC绑定微信' : 'wap绑定微信'; } elseif ($type == 'qq') { $state_content = $data['source'] == 1 ? 'PC绑定QQ' : 'wap绑定QQ'; } elseif ($type == 'sinaweibo') { $state_content = $data['source'] == 1 ? 'PC绑定新浪微博' : 'wap绑定新浪微博'; } //会员日志,记录手动登录 require_once('log.model.php'); $LogM = new log_model($this->db, $this->def); $LogM->addMemberLog($user['uid'], $user['usertype'], $state_content . '登录成功'); $logtime = date('Ymd', $user['login_date']); $nowtime = date('Ymd', time()); if ($logtime != $nowtime) { //登录积分 include_once('integral.model.php'); $integralM = new integral_model($this->db, $this->def); $integralM->invtalCheck($user['uid'], $user['usertype'], 'integral_login', '会员登录', 22); // 登录日志 $logdata['content'] = $state_content; $logdata['uid'] = $user['uid']; $logdata['usertype'] = $user['usertype']; $logdata['did'] = $user['did']; $LogM->addLoginlog($logdata); } } if (empty($user['usertype'])) { $return['errcode'] = 2; $return['msg'] = ''; } else { $return['errcode'] = 9; $return['msg'] = '登录成功'; } if (isset($data['source'])) { // wap、pc所需跳转地址 if ($data['source'] == 2) { $return['url'] = Url('wap', array(), 'member'); } elseif ($data['source'] == 1) { $return['url'] = $this->config['sy_weburl'] . '/member/index.php'; } } // app/小程序, 需要token if (isset($data['provider'])) { if ($type == 'weixin' && $data['provider'] == 'weixin' && !empty($data['unionid']) && empty($this->config['mini_wxopen'])) { // 微信小程序内登录的,已绑定开放平台的,处理微信小程序绑定微信开放平台状态 $new_config = array('mini_wxopen' => 1); include 'config.model.php'; $configM = new config_model($this->db, $this->def); $configM->setConfig($new_config); // 重新生成config.php缓存 $configM->makeConfig(); } $token = md5($user['username'] . $user['password'] . $user['salt'] . $user['usertype']); if ($user['usertype'] > 0) { $usertype = $user['usertype']; } else { $usertype = 0; } $return['user'] = array('uid' => $user['uid'], 'usertype' => $usertype, 'token' => $token); if ($user['pid']) { $return['user']['spid'] = 1; } } return $return; } else { return array('msg' => '用户名或密码不正确!', 'errcode' => '8'); } } else { return array('msg' => '用户名或密码不正确!', 'errcode' => '8'); } return $return; } /** * 微信/QQ等直接登录注册 * @param array $data * @param string $type * @param string $provider * @return mixed */ function fastReg($data = array(), $type = '', $provider = 'weixin') { // 微信小程序和百度小程序不需要验证 if ($type != 'wxxcx' && $data['moblie'] != '') { // 验证手机号 if (!CheckMobile($data['moblie'])) { $return['msg'] = '手机格式错误!'; } else { //检查手机号是否已存在 如果存在则直接绑定 $mobileUser = $this->getInfo(array('moblie' => $data['moblie'])); } if ($return['msg']) { $return['errcode'] = 8; return $return; } $regCertMobile = $this->select_once('company_cert', array('type' => '2', 'check' => $data['moblie'], 'orderby' => 'ctime,desc'), '`check2`,`ctime`'); include_once('notice.model.php'); $noticeM = new notice_model($this->db, $this->def); $codeTime = $noticeM->checkTime($regCertMobile['ctime']); if ($data['moblie_code'] == '') { $return['msg'] = '短信验证码不能为空!'; $return['errcode'] = 8; return $return; } elseif (!$codeTime) { $return['msg'] = '短信验证码验证超时,请重新点击发送验证码!'; $return['errcode'] = 8; return $return; } elseif ($regCertMobile['check2'] != $data['moblie_code']) { $return['msg'] = '短信验证码错误!'; $return['errcode'] = 8; return $return; } if ($this->config['sy_msg_regcode'] == '1' || $type != '') { $needMsg = true; } if (!$needMsg) { $result = $noticeM->jycheck($data['code'], '前台登录'); if (!empty($result)) { $return['msg'] = $result['msg']; $return['errcode'] = 8; return $return; } } } if (!empty($mobileUser['uid'])) { //直接绑定该账户 if ($mobileUser['status'] == '2') { $return['msg'] = '当前手机号对应账户已被锁定!'; $return['errcode'] = 8; } else { if ($provider == 'weixin') { if ($type != '') { if ($type == 'app') { $mdata['app_wxid'] = !empty($data['openid']) ? $data['openid'] : ''; $loginType = 'APP/微信'; } else { $mdata['wxopenid'] = !empty($data['openid']) ? $data['openid'] : ''; $loginType = '微信小程序'; } } else { $mdata['wxid'] = !empty($data['openid']) ? $data['openid'] : ''; $loginType = '微信公众号'; } $mdata['unionid'] = !empty($data['unionid']) ? $data['unionid'] : ''; } elseif ($provider == 'qq') { $mdata['qqid'] = !empty($data['openid']) ? $data['openid'] : ''; $mdata['qqunionid'] = !empty($data['unionid']) ? $data['unionid'] : ''; $loginType = 'QQ'; } elseif ($provider == 'sinaweibo') { $mdata['sinaid'] = !empty($data['openid']) ? $data['openid'] : ''; $loginType = 'weibo'; } //更新登录信息 $ip = fun_ip_get(); $mdata['login_ip'] = $ip; $mdata['login_date'] = time(); $mdata['login_hits'] = array('+', 1); if ($type == 'app') { if (!empty($data['clientid'])) { $mdata['clientid'] = $data['clientid']; $mdata['deviceToken'] = $data['deviceToken']; //清除其他账号clientid $this->clearPushId($data['clientid'], $mobileUser['uid']); } } //更新绑定 登录信息 $this->upInfo(array('uid' => $mobileUser['uid']), $mdata); if (!empty($mobileUser['usertype'])) { // 同步登录时间 $this->update_once('company', array('login_date' => time()), array('uid' => $mobileUser['uid'])); $this->update_once('resume', array('login_date' => time()), array('uid' => $mobileUser['uid'])); //会员日志,记录手动登录 require_once('log.model.php'); $LogM = new log_model($this->db, $this->def); $LogM->addMemberLog($mobileUser['uid'], $mobileUser['usertype'], $loginType . '绑定账号短信登录成功'); $logtime = date('Ymd', $mobileUser['login_date']); $nowtime = date('Ymd', time()); if ($logtime != $nowtime) { //登录积分 require_once('integral.model.php'); $IntegralM = new integral_model($this->db, $this->def); $IntegralM->invtalCheck($mobileUser['uid'], $mobileUser['usertype'], 'integral_login', '会员登录', 22); //登录日志 $logdata['uid'] = $mobileUser['uid']; $logdata['usertype'] = $mobileUser['usertype']; $logdata['did'] = $mobileUser['did']; $LogM->addLoginlog($logdata, array('provider' => $provider)); } } if ($type == '') { // 非小程序/APP require_once('cookie.model.php'); $cookie = new cookie_model($this->db, $this->def); $cookie->unset_cookie(); $cookie->add_cookie($mobileUser['uid'], $mobileUser['username'], $mobileUser['salt'], $mobileUser['email'], $mobileUser['password'], $mobileUser['usertype'], $this->config['sy_logintime'], $mobileUser['did']); } else { // 小程序/APP $token = md5($mobileUser['username'] . $mobileUser['password'] . $mobileUser['salt'] . $mobileUser['usertype']); $return['user'] = array('uid' => $mobileUser['uid'], 'usertype' => $mobileUser['usertype'], 'token' => $token); if ($type == 'wxxcx' && !empty($data['unionid']) && empty($this->config['mini_wxopen'])) { // 微信小程序内登录的,已绑定开放平台的,处理微信小程序绑定微信开放平台状态 $new_config = array('mini_wxopen' => 1); include 'config.model.php'; $configM = new config_model($this->db, $this->def); $configM->setConfig($new_config); // 重新生成config.php缓存 $configM->makeConfig(); } } $return['msg'] = '账户绑定成功!'; $return['errcode'] = 9; if ($type != '') { $return['error'] = 1; } } } else { $ip = fun_ip_get(); $time = time(); $salt = substr(uniqid(rand()), -6); $rand = mt_rand(111111, 999999); // 处理用户名 if (!empty($data['moblie'])) { $username = $data['moblie']; } else { if ($provider == 'weixin') { $username = 'wxid_' . $time . $rand; } elseif ($provider == 'qq') { $username = 'qqid_' . $time . $rand; } elseif ($provider == 'sinaweibo') { $username = 'sinaid_' . $time . $rand; } } $mdata = array( 'username' => $username, 'password' => passCheck($rand, $salt), 'salt' => $salt, 'moblie' => !empty($data['moblie']) ? $data['moblie'] : '', 'moblie_status' => !empty($data['moblie']) ? 1 : 0, 'usertype' => 0, 'reg_date' => $time, 'reg_ip' => $ip, 'login_date' => $time, 'login_ip' => $ip, 'status' => 1, 'source' => $data['source'], 'clientid' => !empty($data['clientid']) ? $data['clientid'] : '', 'deviceToken' => !empty($data['deviceToken']) ? $data['deviceToken'] : '', 'did' => $this->config['did'] ); if ($provider == 'weixin') { if ($type != '') { if ($type == 'app') { $mdata['app_wxid'] = !empty($data['openid']) ? $data['openid'] : ''; } else { $mdata['wxopenid'] = !empty($data['openid']) ? $data['openid'] : ''; } } else { $mdata['wxid'] = !empty($data['openid']) ? $data['openid'] : ''; } $mdata['unionid'] = !empty($data['unionid']) ? $data['unionid'] : ''; } elseif ($provider == 'qq') { $mdata['qqid'] = !empty($data['openid']) ? $data['openid'] : ''; $mdata['qqunionid'] = !empty($data['unionid']) ? $data['unionid'] : ''; } elseif ($provider == 'sinaweibo') { $mdata['sinaid'] = !empty($data['openid']) ? $data['openid'] : ''; } $userid = $this->insert_into('member', $mdata); if ($userid) { //处理注册赠送优惠券 if ($this->config['reg_coupon']) { $coupon = $this->select_once('coupon', array('id' => $this->config['reg_coupon'])); $cdata['uid'] = $userid; $cdata['number'] = $time; $cdata['ctime'] = $time; $cdata['coupon_id'] = $coupon['id']; $cdata['coupon_name'] = $coupon['name']; $cdata['validity'] = $time + $coupon['time'] * 86400; $cdata['coupon_amount'] = $coupon['amount']; $cdata['coupon_scope'] = $coupon['scope']; $this->insert_into('coupon_list', $cdata); } if ($type == '') { // 非小程序/APP require_once('cookie.model.php'); $cookie = new cookie_model($this->db, $this->def); $cookie->unset_cookie(); $cookie->add_cookie($userid, $mdata['username'], $salt, '', $mdata['password'], '', $this->config['sy_logintime'], $mdata['did']); } else { // 小程序/APP $token = md5($mdata['username'] . $mdata['password'] . $salt . '0'); $return['user'] = array('uid' => $userid, 'usertype' => 0, 'token' => $token); } $return['msg'] = '注册成功'; $return['errcode'] = 9; if ($type != '') { $return['error'] = 1; } $return['uid'] = $userid; } else { $return['msg'] = '注册失败'; $return['errcode'] = 8; //增加错误日志 $this->addErrorLog('', 1, $return['msg']); } } if ($type == 'wxxcx' && !empty($data['unionid']) && empty($this->config['mini_wxopen'])) { // 微信小程序内登录的,已绑定开放平台的,处理微信小程序绑定微信开放平台状态 $new_config = array('mini_wxopen' => 1); include 'config.model.php'; $configM = new config_model($this->db, $this->def); $configM->setConfig($new_config); // 重新生成config.php缓存 $configM->makeConfig(); } if ($type != '' && $return['errcode'] == 8) { $return['error'] = -1; $return['errmsg'] = $return['msg']; $return['user'] = array(); unset($return['msg']); } return $return; } /** * 清除其他账号绑定的app推送标识 */ function clearPushId($clientid, $uid = '') { if (!empty($clientid)) { if ($uid == '') { $this->update_once('member', array('clientid' => '', 'deviceToken' => ''), array('clientid' => $clientid)); } else { $appmember = $this->select_all('member', array('clientid' => $clientid, 'uid' => array('<>', $uid)), 'uid'); if (!empty($appmember)) { $appuid = array(); foreach ($appmember as $v) { $appuid[] = $v['uid']; } $this->update_once('member', array('clientid' => '', 'deviceToken' => ''), array('uid' => array('in', pylode(',', $appuid)))); } } } } } ?>