select_once('company_job',$where);
if(!empty($jobOne)){
include (APP_PATH."/config/db.data.php");
$cache = $this -> getClass(array('com','city','hy'));
$jobOne['hy_n'] = $cache['industry_name'][$jobOne['hy']];
$jobOne['cityname'] = $cache['city_name'][$jobOne['cityid']];
$jobOne['job_one'] = $cache['job_name'][$jobOne['job1']];
$jobOne['job_two'] = $cache['job_name'][$jobOne['job1_son']];
$jobOne['job_three'] = $cache['job_name'][$jobOne['job_post']];
$jobOne['marriage_n'] = $cache['comclass_name'][$jobOne['marriage']];
$jobOne['number_n'] = $cache['comclass_name'][$jobOne['number']];
$jobOne['report_n'] = $cache['comclass_name'][$jobOne['report']];
$jobOne['sex_n'] = $arr_data['sex'][$jobOne['sex']];
$jobOne['age_n'] = $cache['comclass_name'][$jobOne['age']];
if($jobOne['maxsalary']>0){
if($this->config['resume_salarytype']==1){
$jobOne['salary'] = $jobOne['minsalary'].'-'.$jobOne['maxsalary'];
}else{
if($jobOne['maxsalary']<1000){
if($this->config['resume_salarytype']==2){
$jobOne['salary'] = "1千以下";
}elseif($this->config['resume_salarytype']==3){
$jobOne['salary'] = "1K以下";
}elseif($this->config['resume_salarytype']==4){
$jobOne['salary'] = "1k以下";
}
}else{
$jobOne['salary'] = changeSalary($jobOne['minsalary']).'-'.changeSalary($jobOne['maxsalary']);
}
}
}elseif($jobOne['minsalary']>0){
if($this->config['resume_salarytype']==1){
$jobOne['salary'] = $jobOne['minsalary'];
}else{
$jobOne['salary'] = changeSalary($jobOne['minsalary']);
}
}else{
$jobOne['salary'] = '面议';
}
$jobOne['exp_n'] = $cache['comclass_name'][$jobOne['exp']];
$jobOne['edu_n'] = $cache['comclass_name'][$jobOne['edu']];
//联系方式
$comInfo = $this->select_once('company',array('uid'=>$jobOne['uid']),'`name`,`address`,`linktel`,`linkphone`');
if($jobOne['islink']=='2'){
$jobLink = $this-> select_once('company_job_link',array('jobid'=>$jobOne['id']), '`linkman`,`linkmoblie`');
}
if(!empty($jobLink)){
$jobOne['linktel'] = $jobLink['linkmoblie'];
}else{
if($comInfo['linktel']){
$jobOne['linktel'] = $comInfo['linktel'];
}else{
$jobOne['linktel'] = $comInfo['linkphone'];
}
}
$jobOne['address'] = $comInfo['address'];
//赏金信息
$shareList = $this->select_once('company_job_share',array('jobid'=>intval($jobOne['id'])));
if(!empty($shareList)){
$jobOne['packid'] = $shareList['id'];
$jobOne['packnum'] = $shareList['packnum'];
$jobOne['packmoney'] = $shareList['packmoney'];
$jobOne['packprice'] = $shareList['packprice'];
$jobOne['nowprice'] = sprintf("%.2f", $shareList['packnum']*$shareList['packmoney']);
}
}
return $jobOne;
}
/**
* @desc 分享红包职位,多条查询(phpyun 5.0)
*/
function getShareJobList($whereData = array(), $data = array()) {
$field = $data['field'] ? $data['field'] : '*';
$List = $this -> select_all('company_job_share', $whereData, $field);
if (!empty($List)){
$List = $this -> subShareJob($List);
}
return $List;
}
/**
* @desc 订单生成
* @param array $data
*/
private function addOrder($data = array()){
require_once 'companyorder.model.php';
$orderM = new companyorder_model($this->db, $this->def);
return $orderM -> addOrder($data);
}
/**
* @desc 分享红包职位 -- 列表信息补充(phpyun 5.0)
*/
private function subShareJob($List){
foreach ($List as $v){
$ids[] = $v['jobid'];
}
/* 提取职位信息 */
$jWhere['id'] = array('in', pylode(',', $ids));
$jData['field'] = '`id`,`name`,`com_name`,`lastupdate`';
$jobList = $this -> getJobList($jWhere, $jData);
$job = $jobList['list'];
if (is_array($job)) {
foreach ($job as $key => $value){
$jobrows[$value['id']] = $value;
}
}
/* 提取推广记录 */
$lWhere['jobid'] = array('in', pylode(',', $ids));
$lData['field'] = '`jobid`';
$shareLog = $this -> getShareLogList($lWhere, $lData);
$shareNum = array();
if (is_array($shareLog)) {
foreach ($shareLog as $val){
$shareNum[$val['jobid']]++;
}
}
foreach ($List as $k => $v){
$List[$k]['name'] = $jobrows[$v['jobid']]['name'];
$List[$k]['com_name'] = $jobrows[$v['jobid']]['com_name'];
$List[$k]['nowprice'] = sprintf("%.2f", $v['packnum'] * $v['packmoney']);
$List[$k]['sharenum'] = intval($shareNum[$v['jobid']]);
$List[$k]['lastupdate'] = timeForYear($jobrows[$v['jobid']]['lastupdate']);
$List[$k]['wapurl'] = Url('wap', array('c'=>'job','a'=>'comapply','id'=>$v['jobid']));
}
return $List;
}
/**
* @desc 引用job类 ,获取职位信息 (phpyun 5.0)
*/
private function getJobList($whereData, $data = array()) {
require_once 'job.model.php';
$jobM = new job_model($this->db, $this->def);
return $jobM -> getList($whereData, $data);
}
/**
* @desc 查询分享红包职位记录,多条查询 (phpyun 5.0)
*/
function getShareLogList($whereData, $data = array()) {
$field = $data['field'] ? $data['field'] : '*';
$List = $this -> select_all('company_job_sharelog', $whereData, $field);
if(!empty($List)){
foreach($List as $k=>$v){
$List[$k]['time_n'] = date('Y-m-d H:i:s',$v['time']);
}
}
return $List;
}
function getShareLogNum($where){
return $this->select_num('company_job_sharelog',$where);
}
/**
* $desc 悬赏职位查询(phpyun 5.0)
*/
function getRewardJobInfo($id, $data = array()) {
$field = $data['field'] ? $data['field'] : '*';
if($data['uid']){
$getWhere = array('jobid'=>intval($id),'uid'=>$data['uid']);
}else{
$getWhere = array('jobid'=>intval($id));
}
$info = $this -> select_once('company_job_reward', $getWhere, $field);
if($data['isjob']==1 && !empty($info)){
require_once 'job.model.php';
$jobM = new job_model($this->db, $this->def);
$jobInfo = $jobM->getInfo(array('id' => $info['jobid']),array('com'=>'yes'));
$info['jobinfo'] = $jobInfo;
}
return $info;
}
/**
* $desc 悬赏职位查询(phpyun 5.0)
*/
function getRewardJobList($whereData = array(), $data = array()) {
$field = $data['field'] ? $data['field'] : '*';
$List = $this -> select_all('company_job_reward', $whereData, $field);
if ($data['utype'] == 'admin') {
$List = $this -> subRewardJob($List);
}
return $List;
}
/**
* @desc 补充悬赏职位列表信息 (phpyun 5.0)
*/
private function subRewardJob($List) {
foreach ($List as $v){
$jobids[] = $v['jobid'];
}
/* 提取职位信息 */
$JWhere['id'] = array('in', pylode(',', $jobids));
$JData['field'] = '`id`,`name`,`com_name`,`status`,`lastupdate`';
$jobListA = $this -> getJobList($JWhere, $JData);
$job = $jobListA['list'];
/* 应聘人数 */
$rWhere['jobid'] = array('in', pylode(',', $jobids));
$rWhere['groupby'] = 'jobid';
$rData['field'] = '`jobid`, count(*) as num';
$sqList = $this -> getJobRewardList($rWhere, $rData);
/* 仲裁 */
$zWhere['jobid'] = array('in', pylode(',', $jobids));
$zWhere['status'] = '26';
$zData['field'] = '`jobid`, `status`';
$sqArb = $this -> getJobRewardList($zWhere, $zData);
foreach ($List as $k => $v){
foreach ($job as $jv){
if ($v['jobid'] == $jv['id']) {
$List[$k]['name'] = $jv['name'];
$List[$k]['com_name'] = $jv['com_name'];
$List[$k]['status'] = $jv['status'];
$List[$k]['lastupdate'] = $jv['lastupdate'];
}
}
foreach ($sqList as $sv){
if ($v['jobid'] == $sv['jobid']) {
$List[$k]['sqnum'] = $sv['num'];
}
}
foreach ($sqArb as $rv){
if ($v['jobid'] == $rv['jobid']) {
$List[$k]['sqArb'] = $rv['status'];
}
}
$List[$k]['sqnum'] = $List[$k]['sqnum']?$List[$k]['sqnum']:0;
}
return $List;
}
/**
* $desc 悬赏职位查询--小程序
*/
function getRewardJobWxList($whereData = array(), $data = array()) {
$field = $data['field'] ? $data['field'] : '*';
$List = $this -> select_all('company_job', $whereData, $field);
if(is_array($List)){
foreach($List as $key=>$value){
$jobId[] = $value['id'];
}
$rewardList = $this->select_all('company_job_reward',array('jobid'=>array('in',pylode(',',$jobId))));
if(is_array($rewardList)){
foreach($rewardList as $key=>$value){
$rewadArr[$value['jobid']] = $value;
}
}
$cache = $this -> getClass(array('com','city'));
foreach($List as $key=>$value){
if($value['minsalary'] && $value['maxsalary']){
if($this->config['resume_salarytype']==1){
$List[$key]['job_salary'] = $value['minsalary']."~".$value['maxsalary'];
}else{
if($value['maxsalary']<1000){
if($this->config['resume_salarytype']==2){
$List[$key]['job_salary'] = "1千";
}elseif($this->config['resume_salarytype']==3){
$List[$key]['job_salary'] = "1K";
}elseif($this->config['resume_salarytype']==4){
$List[$key]['job_salary'] = "1k";
}
}else{
$List[$key]['job_salary'] = changeSalary($value['minsalary'])."~".changeSalary($value['maxsalary']);
}
}
}elseif($value['minsalary']){
if($this->config['resume_salarytype']==1){
$List[$key]['job_salary'] = $value['minsalary'];
}else{
$List[$key]['job_salary'] = changeSalary($value['minsalary']);
}
}else{
$List[$key]['job_salary'] = "面议";
}
$List[$key]['cityname'] = $cache['city_name'][$value['cityid']]?$cache['city_name'][$value['cityid']]:$cache['city_name'][$value['provinceid']];
$List[$key]['sqmoney'] = floatval( $rewadArr[$value['id']]['sqmoney']);
$List[$key]['invitemoney'] = floatval( $rewadArr[$value['id']]['invitemoney']);
$List[$key]['offermoney'] = floatval( $rewadArr[$value['id']]['offermoney']);
$List[$key]['money'] = floatval( $rewadArr[$value['id']]['money']);
$List[$key]['job_exp'] = $cache['comclass_name'][$value['exp']];
$List[$key]['job_edu'] = $cache['comclass_name'][$value['edu']];
}
}
return $List;
}
/**
* @desc 查询company_job_rewardlist表
*/
function getJobRewardList($whereData = array(), $data = array()) {
$field = $data['field'] ? $data['field'] : '*';
$List = $this -> select_all('company_job_rewardlist', $whereData, $field);
if (!empty($List)) {
if ($data['utype']) {
$List = $this -> subJobReward($List,$data);
}
}
return $List;
}
/**
* @desc 悬赏应聘列表补充信息
*/
private function subJobReward($List,$data=array()) {
foreach ($List as $v){
$jobid[] = $v['jobid'];
if ($v['usertype'] == '3') {
$lteid[] = $v['eid'];
$ltuids[] = $v['uid'];
}else{
$uids[] = $v['uid'];
$eid[] = $v['eid'];
}
$rewardid[] = $v['id'];
}
require_once 'resume.model.php';
$resumeM = new resume_model($this->db, $this->def);
$members = $resumeM->getResumeList(array('uid'=>array('in',pylode(',',$uids))));
require_once 'lietou.model.php';
$ltM = new lietou_model($this->db, $this->def);
$lts = $ltM->getList(array('uid'=>array('in',pylode(',',$uids))));
/* 提取职位名称信息 */
$jWhere['id'] = array('in', pylode(',', $jobid));
$jData['field'] = '`id`,`name`';
$jobListA = $this -> getJobList($jWhere);
$job = $jobListA['list'];
/* 查询简历信息 */
if (!empty($eid)) {
$rWhere['id'] = array('in', pylode(',', $eid));
$rData['field'] = '`id`,`uname`,`edu`,`exp`,`job_classid`';
$listA = $this -> getResumeList($rWhere, $rData);
$ulist = $listA['list'];
}
/* 查询猎头简历信息 */
if (!empty($lteid)) {
$ltWhere['id'] = array('in', pylode(',', $lteid));
$ltData['field'] = '`id`,`name`,`edu`,`exp`,`jobname`,`linktel`';
$ltulist = $this -> getLtResumeList($ltWhere, $ltData);
}
/* 查询操作日志 */
$logWhere['rewardid'] = array('in', pylode(',', $rewardid));
$logWhere['orderby'] = 'id,asc';
$logData['field'] = '*';
$logList = $this -> getJobRewardLogList($logWhere, $logData);
$logListArr = array();
if (is_array($logList)) {
foreach ($logList as $value){
$logListArr[$value['rewardid']][] = $value;
}
}
if($data['utype']=='admin' || $data['utype']=='com'){
$utype=2;
}else{
$utype=1;
}
foreach ($List as $k => $v){
if($v['usertype'==3]){
foreach ($lts as $value){
if($value['uid'] == $v['uid']){
$List[$k]['photo'] = $value['photo_big'];
}
}
}else{
foreach ($members as $value){
if($value['uid'] == $v['uid']){
$List[$k]['photo'] = $value['photo'];
}
}
}
$List[$k]['wapinvite_url'] = Url('wap',array('c'=>'resume','a'=>'invite','uid'=>$v['uid'],'rewardid'=>$v['id']));
$List[$k]['log'] = $this -> getStatusInfo($v['id'], $utype, $v['status'],$logListArr[$v['id']]);
if($v['datetime']){
$List[$k]['datetime_n'] = date('Y-m-d H:i',$v['datetime']);
}
foreach ($job as $jv){
if ($v['jobid'] == $jv['id']) {
$List[$k]['name'] = $jv['name'];
$List[$k]['wapjob_url'] = Url('wap',array('c'=>'job','a'=>'comapply','id'=>$v['jobid']));
}
}
if (is_array($ulist)) {
foreach ($ulist as $uv){
if ($v['eid'] == $uv['id']) {
$List[$k]['reid'] = $uv['id'];
$List[$k]['uname'] = $data['utype']=='admin'?$uv['uname']:mb_substr($uv['uname'],0,1,'utf-8').'**';
$List[$k]['edu'] = $uv['edu_n'];
$List[$k]['exp'] = $uv['exp_n'];
if ($uv['job_classid']) {
$List[$k]['jobclass'] = $uv['job_classname'];
}
}
}
}
if (is_array($ltulist)) {
foreach ($ltulist as $ltv){
if ($v['eid'] == $ltv['id']) {
$List[$k]['uname'] = $data['utype']=='admin'?$ltv['name']:mb_substr($ltv['name'],0,1,'utf-8').'**';
$List[$k]['edu'] = $ltv['edu_n'];
$List[$k]['exp'] = $ltv['exp_n'];
$List[$k]['jobclass'] = $ltv['jobname'];
$List[$k]['linktel'] = $ltv['linktel'];
}
}
}
}
return $List;
}
/**
* @desc 查询简历信息
*/
private function getResumeList($whereData = array(), $data = array()){
require_once 'resume.model.php';
$resumeM = new resume_model($this->db, $this->def);
return $resumeM -> getList($whereData, $data);
}
/**
* @desc 查询猎头简历库信息
*/
private function getLtResumeList($whereData = array(), $data = array()){
require_once 'talent.model.php';
$talentM = new talent_model($this->db, $this->def);
return $talentM -> getList($whereData, $data);
}
/**
* @desc 查询操作日志 company_job_rewardlog
*/
function getJobRewardLogList($whereData = array(), $data = array()) {
$field = $data['field'] ? $data['field'] : '*';
$List = $this -> select_all('company_job_rewardlog', $whereData, $field);
return $List;
}
//查询分享红包职位
function getShareJob(){
$where = array(
'sharepack' => 1,
'state' => 1,
'r_status' => 1,
'status' => 0
);
$jobList = $this->select_all('company_job',$where,"`id`,`uid`,`name`,`com_name`,`lastupdate`,`description`,`cityid`,`minsalary`,`maxsalary`");
if(is_array($jobList)){
foreach($jobList as $key=>$value){
$jobId[] = $value['id'];
}
$shareList = $this->select_all(
'company_job_share',
array(
'jobid' => array('in',pylode(',',$jobId)),
'orderby' => 'id'
)
);
if(is_array($shareList)){
include PLUS_PATH."/city.cache.php";
foreach($shareList as $k=>$v){
foreach($jobList as $key=>$value){
if($v['jobid'] == $value['id']){
$job[$k] = $value;
$job[$k]['description'] = strip_tags($value['description']);
$job[$k]['cityname'] = $city_name[$value['cityid']];
if($value['maxsalary']>0){
if($this ->config['resume_salarytype']==1){
$job[$k]['salary'] = $value['minsalary'].'-'.$value['maxsalary'];
}else{
if($value['maxsalary']<1000){
if($this->config['resume_salarytype']==2){
$job[$k]['salary'] = '1千';
}elseif($this->config['resume_salarytype']==3){
$job[$k]['salary'] = '1K';
}elseif($this->config['resume_salarytype']==4){
$job[$k]['salary'] = '1k';
}
}else{
$job[$k]['salary'] = changeSalary($value['minsalary']).'-'.changeSalary($value['maxsalary']);
}
}
}elseif($value['minsalary']>0){
if($this ->config['resume_salarytype']==1){
$job[$k]['salary'] = $value['minsalary'];
}else{
$job[$k]['salary'] = changeSalary($value['minsalary']);
}
}
$job[$k]['packnum'] = $v['packnum'];
$job[$k]['packmoney'] = $v['packmoney'];
$job[$k]['packprice'] = $v['packprice'];
$job[$k]['nowprice'] = sprintf("%.2f", $v['packnum']*$v['packmoney']);
}
}
}
}
}
return $job;
}
/**
* @desc 删除分享红包职位
* @param int $uid
* @param int $jobid
* @param array $data :utype=admin,后台管理员删除
*/
function delShareJob($uid,$jobid,$data = array()){
//查询原有职位 是否有未用完的赏金
$shareJob = $this->select_once('company_job_share',array('jobid' => $jobid, 'uid' => $uid), '`packnum`,`packmoney`,`uid`');
if($shareJob['uid'] != $uid){
$return['msg'] = '非法操作!';
$return['errcode'] = '8';
return $return;
}
if($shareJob['packnum']>0){
$price = $shareJob['packnum'] * $shareJob['packmoney'];
//退还赏金
$this->update_once('company_statis',array('packpay'=>array('+', $price)),array('uid'=>intval($shareJob['uid'])));
//生成记录
$this->orderLog($price,intval($shareJob['uid']),'取消职位赏金分享,退还剩余赏金!',1);
}
$this -> update_once('company_job',array('sharepack'=>'0'),array('id'=>intval($jobid)));
$this -> delete_all('company_job_sharelog', array('jobid'=>intval($jobid)), '');
/* 后台管理员删除,提示已经系统信息发送 */
if ($data['utype'] == 'admin') {
$job = $this -> select_once('company_job',array('id'=>intval($jobid)), '`name`,`uid`');
$return['id'] = $this->delete_all("company_job_share",array('jobid'=>intval($jobid)),'');
if($return['id']){
$msg = '管理员删除职位《'.$job['name'].'》分享';
//发送系统通知
include_once('sysmsg.model.php');
$sysmsgM = new sysmsg_model($this->db, $this->def);
$sysmsgM -> addInfo(array('uid'=>$uid,'usertype'=>2, 'content'=>$msg));
}
$return['msg'] = '分享职位(ID:'.$jobid.')';
$return['errcode'] = $return['id'] ? '9' :'8';
$return['msg'] = $return['id'] ? $return['msg'].'删除成功!' : $return['msg'].'删除失败!';
return $return;
}else{
$nid = $this->delete_all("company_job_share",array('jobid'=>intval($jobid)),'');
$return['errcode'] = $nid ? '9' : '8';
$return['msg'] = $nid ? '取消成功' : '取消失败';
return $return;
}
}
function delrewardJob($uid, $jobid, $data = array()){
$reward = $this -> getRewardJobInfo($jobid, array('field'=>'`id`,`uid`'));
if($reward['uid'] != $uid && $data['utype']!='admin'){
$return['msg'] = '非法操作!';
$data['error'] = '1';
$return['errcode'] = '8';
return $return;
}
if($reward['id']){
//查询原有职位 是否有未执行完流程的赏单
$where['comid'] = intval($reward['uid']);
$where['jobid'] = intval($jobid);
$where['status'] = array('notin', '0,8,18,9,20,21,23,26,27,28,29');
$rewardJobNum = $this -> select_num('company_job_rewardlist', $where);
if($rewardJobNum > 0){
$data['errcode'] = 8;
$data['error'] = '1';
$data['msg'] = '当前职位还有未执行完的推荐赏单!';
}else{
$job = $this -> select_once('company_job', array('id'=>intval($jobid)),'`name`,`uid`');
//删除相关职位以及赏单
$this -> delete_all('company_job_reward', array('uid'=>intval($reward['uid']), 'jobid'=>intval($jobid)),'');
if (!empty($job)) {
$this -> update_once('company_job', array('rewardpack'=>'0'), array('uid'=>intval($reward['uid']), 'id'=>intval($jobid)));
}
//删除推荐简历列表
$this -> delete_all('company_job_rewardlist', array('comid'=>intval($reward['uid']), 'jobid'=>intval($jobid)), '');
//删除流程日志记录
$this -> delete_all('company_job_rewardlog', array('jobid'=>intval($jobid)), '');
$data['error'] = '0';
$data['errcode'] = 9;
if ($data['utype']=='admin') {
$msg = '管理员删除职位《'.$job['name'].'》悬赏';
//发送系统通知
include_once('sysmsg.model.php');
$sysmsgM = new sysmsg_model($this->db, $this->def);
$sysmsgM -> addInfo(array('uid'=>intval($job['uid']),'usertype'=>2, 'content'=>$msg));
$data['msg'] = '删除悬赏职位《'.$job['name'].'》';
}
}
}else{
$data['errcode'] = 8;
$data['error'] = '1';
$data['msg'] = '请选择正确的职位!';
}
return $data;
}
/*格式案例*/
/*
* @name 函数名称、作用 (必须)
* @abstract 申明变量/类/方法(建议写)
* @author 函数作者 (必须)
* @other 其他需要注明事项
*/
/*单行说明*/
/*
* @name 分享红包浏览赏金发放处理函数
* @abstract job:分享职位数据 uid:分享人UID openid:浏览者微信ID
* @author KSC 2017-12-11
*/
/*当前分享职位还有余额*/
function shareJobLook($job, $uid, $openid)
{
/* 当前分享职位还有余额 */
if ($job['packid'] && $job['packnum'] > 0) {
// 查询相关openid是否已记录
$lookLog = $this->select_num('company_job_sharelog', array( 'jobid' => $job['id'], 'wxid' => $openid));
if ($lookLog < 1) {
// 查询当前用户类型
$User = $this->select_once('member', array('uid' => $uid),'`usertype`');
if ($User['usertype'] == '1') {
$Table = 'member_statis';
} elseif ($User['usertype'] == '2') {
$Table = 'company_statis';
}
if ($Table) {
// 此处单独查询statis表 只是为了兼容升级用户 防止新增红包金额字段为NULL导致无法增加金额
$Statis = $this->select_once($Table, array('uid' => $uid));
if (! empty($Statis)) {
// 减除分享余额
$this->update_once('company_job_share', array('packnum' => array('-', 1)), array('id' => $job['packid']));
// 当数量最后剩余1时 也就是本次分享结束 该职位的分享赏金已用完,取消该职位红包状态
if ($job['packnum'] == '1') {
$this->update_once('company_job', array('sharepack' => 0), array('id' => $job['id']));
}
// 插入浏览记录
$this->insert_into('company_job_sharelog', array('uid' => (int)$uid, 'jobid' => $job['id'], 'jobname' => $job['name'], 'packmoney' => $job['packmoney'], 'comid' => $job['uid'], 'wxid' => $openid, 'time' => time()));
// 赏金发放到账户
$this->update_once($Table, array('packpay' => bcadd($Statis['packpay'], $job['packmoney'], 2)), array('uid' => $uid));
// 发放记录
$dingdan = time().rand(10000, 99999);
$this->insert_into('company_pay', array('order_id' => $dingdan, 'order_price' => $job['packmoney'], 'pay_time' => time(), 'pay_state' => 2, 'com_id' => $uid, 'pay_remark' => '分享红包浏览赏金', 'type' => 2, 'pay_type' => 2, 'did' => 0));
// 减除发布者数量
}
}
}
}
}
//拉取微信访客OPENID
function getWxOpenid($url, $isuser = ''){
$app_id = $this->config['wx_appid'];
$app_secret = $this->config['wx_appsecret'];
$my_url = $url;
$code = $_GET['code'];
session_start();
if(empty($code) || $code == $_SESSION['wxcode']){
$_SESSION['wx']['state'] = md5(uniqid(rand(), TRUE));
$dialog_url ="https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$app_id."&redirect_uri=".urlencode($my_url)."&response_type=code&scope=snsapi_userinfo&state=".$_SESSION['wx']['state']."#wechat_redirect";
header("location:".$dialog_url);
}else{
$_SESSION['wxcode'] = $code;
}
if($_GET['state'] == $_SESSION['wx']['state']){
$token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" . $app_id . "&secret=" . $app_secret . "&code=".$code."&grant_type=authorization_code";
if(function_exists('curl_init')) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$token_url);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$response=curl_exec ($ch);
curl_close ($ch);
$user = json_decode($response,true);
//是否读取昵称等信息
if($user['openid'] && $isuser == '1'){
$nick_url = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$user['access_token'].'&openid='.$user['openid'].'&lang=zh_CN';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$nick_url);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$response = curl_exec ($ch);
curl_close ($ch);
$user = json_decode($response,true);
}
}
}
return $user;
}
//分享红包推广生成订单
function redPackOrder($data){
if($data['jobid'] && $data['packmoney'] && $data['packnum']){
//判断金额 数量
$packmoney = sprintf("%.2f", $data['packmoney']);
$packnum = floatval($data['packnum']);
if($packmoney>0 && $packnum>0){
//判断职位ID真实性
$job = $this->select_once('company_job', array('id' => $data['jobid'], 'uid' => $data['uid']),'`id`,`uid`,`sharepack`');
if(empty($job)){
$return['error'] = '请选择正确的推广职位!';
}elseif($job['sharepack']=='1'){
$return['error'] = '当前职位正在推广中,请不要重复设置!';
}else{
//该职位是否已经做了推广,防止重复
//计算需付费金额
$price = $packnum * $packmoney;
//最后确认金额完整性
if($price < 1){
$return['error'] = '推广总金额不得小于1元!';
}else{
//生成相关订单
$dingdan=time().rand(10000,99999);
$orderData['type']='8';//8 分享红包推广 9悬赏红包 10 职位置顶 11职位紧急 12 职位推荐 13自动刷新
$orderData['order_id']=$dingdan;
$orderData['order_price']=$price;
$orderData['order_type']=$data['pay_type'];
$orderData['order_time']=time();
$orderData['order_state']="1";
$orderData['order_remark']='分享职位推广';
$orderData['uid']=$data['uid'];
$orderData['usertype']=$data['usertype'];
$orderData['did']=$data['did'];
$orderData['order_info']=serialize(array('jobid'=>$data['jobid'],'packnum'=>$data['packnum'],'packmoney'=>$data['packmoney'],'packprice'=>$price));
$id=$this->addOrder($orderData);
if($id){
$orderData['id']=$id;
$return['order']=$orderData;
}else{
$return['error'] = '订单生成失败!';
}
}
}
}else{
$return['error'] = '请正确填写推广金额及发放数量!';
}
}else{
$return['error'] = '参数填写错误,请重新设置!';
}
return $return;
}
//悬赏红包推广生成订单
function rewardPackOrder($data){
$uid = intval($data['uid']);
$usertype = intval($data['usertype']);
$did = $data['did'] ? intval($data['did']) : $this->config['did'];
$paytype = $data['paytype'];
if($data['jobid'] && $data['rewardid']){
$jobid = intval($data['jobid']);
$rewardid = intval($data['rewardid']);
//验证当前赏金职位真实性
$reward = $this -> select_once('company_job_rewardlist', array('id' => $rewardid, 'comid' => $uid,'jobid' => $jobid));
//判断金额 数量
if($reward['money']>0){
//判断职位ID真实性
$job = $this->select_once('company_job', array('uid' => $uid, 'id' => $jobid),"`id`,`uid`");
if(empty($job)){
$return['error'] = '请选择正确的悬赏职位!';
}else{
//该职位是否已经做了推广,防止重复
//计算需付费金额
$price = $reward['money'];
//最后确认金额完整性
if($price < 1){
$return['error'] = '职位赏金错误,请重试!';
}else{
//删除重复订单
$order = $this->select_all('company_order', array('uid' => $uid, 'usertype' => 2, 'type' => 9, 'rewardid' => $rewardid, 'order_state' => '1'));
if ($order) {
$this->update_once('company_order', array('order_state' => 4, 'order_remark' => '重复下单,交易关闭'), array('uid' => $uid, 'usertype' => 2, 'type' => 9, 'rewardid' => $rewardid, 'order_state' => '1'));
}
//生成相关订单
$dingdan = time().rand(10000,99999);
$orderData['type'] = '9';// 9悬赏红包
$orderData['order_id'] = $dingdan;
$orderData['order_price'] = $price;
$orderData['order_time'] = time();
$orderData['order_type'] = $paytype;
$orderData['order_state'] = '1';
$orderData['order_remark'] = '预先支付职位赏金';
$orderData['uid'] = $uid;
$orderData['usertype'] = $usertype;
$orderData['did'] = $did;
$orderData['rewardid'] = $rewardid;
$id = $this -> addOrder($orderData);
if($id){
$orderData['id'] = $id;
$return['order'] = $orderData;
}else{
$return['error'] = '订单生成失败!';
}
}
}
}else{
$return['error'] = '职位赏金不正确,请重试!';
}
}else{
$return['error'] = '参数填写错误,请重新设置!';
}
return $return;
}
//发布悬赏职位
function rewardJob($data){
if($data['jobid']){
if(($data['sqmoney']+$data['invitemoney']+$data['offermoney'])>1){
//判断职位ID真实性
$job = $this -> select_once("company_job",array('uid'=>$data['uid'],'id'=>$data['jobid']),"`id`,`uid`,`rewardpack`");
if(empty($job)){
$return['error'] = '请选择正确的推广职位!';
}elseif($job['rewardpack']=='1'){
$return['error'] = '当前职位已是赏金职位,请不要重复设置!';
}else{
//生成悬赏职位
$val['uid'] = $job['uid'];
$val['jobid'] = $job['id'];
$val['sqmoney'] = floatval($data['sqmoney']);
$val['invitemoney'] = floatval($data['invitemoney']);
$val['offermoney'] = floatval($data['offermoney']);
$val['money'] = (floatval($data['offermoney'])+floatval($data['invitemoney'])+floatval($data['sqmoney']));
$val['stime'] = time();
$val['project'] = $data['project'];
$val['exp'] = $data['exp'];
$val['edu'] = $data['edu'];
$val['skill'] = $data['skill'];
$this -> insert_into("company_job_reward",$val);
//修改职位悬赏属性字段
$this -> update_once("company_job",array('rewardpack'=>'1'),array('id'=>$job['id']));
$return['error'] = 'ok';
}
}else{
$return['error'] = '悬赏总金额不得低于1元!';
}
}else{
$return['error'] = '参数填写错误,请重新设置!';
}
return $return;
}
//查询单个用户赏金申请记录(个人用)
function getRewardInfo($jobid,$uid,$usertype='1'){
$rewardInfo = $this->select_once('company_job_rewardlist',array('jobid' => intval($jobid), 'uid' => intval($uid)));
return $rewardInfo;
}
//用户申请记录 企业用
function getReward($id,$uid){
$rewardInfo = $this->select_once("company_job_rewardlist",array('id'=>(int)$id,'comid'=>(int)$uid));
return $rewardInfo;
}
//悬赏应聘记录
/*function getRewardJob($jobid,$isjob='0'){
$rewardJob = $this->select_once("company_job_reward","`jobid`='".(int)$jobid."'");
if($isjob=='1' && !empty($rewardJob)){
//查询相关职位信息
$jobInfo = $this->select_once("company_job","`id`='".$rewardJob['jobid']."'");
$rewardJob['jobinfo'] = $jobInfo;
}
return $rewardJob;
}*/
/**
* @desc 查询悬赏单相关的各类信息 包括职位、企业、个人、状态等
*/
function getRewardAll($id,$status=''){
$rewardJob = $this->select_once('company_job_rewardlist',array('id'=>(int)$id));
if(!empty($rewardJob)){
//查企业
$comInfo = $this->select_once("company",array('uid'=>$rewardJob['comid']));
//查职位
$jobInfo = $this->select_once("company_job",array('id'=>$rewardJob['jobid']));
//查个人
$userInfo = $this->select_once("resume",array('uid'=>$rewardJob['uid']));
if($status){
$nowReward = $this->select_once("company_job_rewardlog",array('rewardid'=>$rewardJob['id'],'status'=>$status));
$Data['loginfo'] = $nowReward['loginfo'];
$Data['arbinfo'] = $nowReward['remark'];
$Data['arbpic'] = checkpic($nowReward['arbpic']);
}
//整理返回信息
$Data['comname'] = $comInfo['name'];
if(!$comInfo['linktel']){
$Data['linkphone'] = $comInfo['linkphone'];
}else{
$Data['linktel'] = $comInfo['linktel'];
}
$Data['jobname'] = $jobInfo['name'];
$Data['username'] = $userInfo['name'];
$Data['telphone'] = $userInfo['telphone'];
}
return $Data;
}
// 判断是否有申请资格
function veriftyUser($jobid, $uid, $usertype)
{
$return = array();
if (! $jobid) {
$return['error'] = 5;
$return['msg'] = '请选择正确的赏金职位!';
} else {
if (! $uid) {
$return['error'] = 0;
$return['msg'] = '请先登录!';
} else {
// 个人登录情况下 只有自荐
if ($usertype == 1) {
// 判断是否需要手机认证
if ($this->config['sy_reward_tel'] == '1') {
// 查询用户是否手机认证
$userInfo = $this->select_once('resume', array('uid' => intval($uid)), "`moblie_status`");
if ($userInfo['moblie_status'] != '1') {
$return['error'] = 9;
$return['msg'] = '请先进行手机认证!';
}
}
if (! $return['msg']) {
$sqNum = $this->select_num('company_job_rewardlist', array('uid' => intval($uid), 'status' => array('notin', '18, 19, 20, 21, 23, 26, 27, 28, 29')));
if ($this->config['sy_reward_sqnum'] > 0 && $sqNum >= $this->config['sy_reward_sqnum']) {
$return['error'] = 8;
$return['msg'] = '最多只能同时申请' . $this->config['sy_reward_sqnum'] . '份悬赏职位';
} else {
// 当前职位是否开通悬赏并正在招聘
$jobInfo = $this->select_once('company_job', array('id' => intval($jobid), 'rewardpack' => 1, 'state' => 1, 'r_status' => 1, 'status' => 0));
if (empty($jobInfo)) {
$return['error'] = 3;
$return['msg'] = '悬赏职位不存在或已停止赏金招聘!';
} else {
// 判断之前是否已申请
$rows = $this -> select_once('userid_job', array('uid' => intval($uid),'isdel'=>9,'job_id' => intval($jobid)), '`id`');
if (! empty($rows)) {
$return['error'] = 6;
$return['msg'] = '您已申请过该职位!';
} else {
$rewardInfo = $this->getRewardInfo($jobid, $uid);
if (! empty($rewardInfo)) {
$return['error'] = 3;
$return['msg'] = '您已申请过该职位!';
} else {
$rewardJob = $this->select_once('company_job_reward', array('jobid' => intval($jobInfo['id'])));
// 判断是否已邀请面试
$useridmsg = $this->select_once('userid_msg', array('uid' => intval($uid),'isdel'=>9,'jobid' => intval($jobid)), '`id`');
if (! empty($useridmsg)) {
$return['error'] = 4;
$return['msg'] = '该职位已邀请您面试,无需再投简历!';
} else {
$rows = $this -> select_once('resume_expect', array('uid' => intval($uid), 'defaults' => 1), '`id`,`name`,`r_status`,`status`,`state`');
if (! empty($rows)) {
if ($rows['state'] == '1') {
if($rows['status'] != '1'){
$return['error'] = 13;
$return['msg'] = '请先公开您的简历!';
}else{
$data['jobid'] = $jobInfo['id'];
$data['comid'] = $jobInfo['uid'];
$data['eid'] = $rows['id'];
$data['name'] = $rows['name'];
$return['error'] = 1;
// 测试匹配度
if ($rewardJob['exp'] == '1') {
$expNum = $this -> select_num('resume_work', array('eid' => $rows['id']));
if ($expNum < 1) {
$data['exptype'] = 1; // 工作经历不匹配
$return['error'] = 7;
$return['msg'] = '简历暂不符合职位要求,缺少工作经历';
}
}
if ($rewardJob['edu'] == '1') {
$eduNum = $this -> select_num('resume_edu', array('eid' => $rows['id']));
if ($eduNum < 1) {
$data['edutype'] = 1; // 教育经历不匹配
$return['error'] = 7;
$return['msg'] = '简历暂不符合职位要求,缺少教育经历';
}
}
if ($rewardJob['skill'] == '1') {
$skillNum = $this->select_num('resume_skill', array('eid' => $rows['id'], 'pic' => array('<>', '')));
if ($skillNum < 1) {
$return['error'] = 7;
$data['skilltype'] = 1;
$return['msg'] = '简历暂不符合职位要求,缺少技能证书';
}
}
if ($rewardJob['project'] == '1') {
$projectNum = $this->select_num('resume_project', array('eid' => $rows['id']));
if ($projectNum < 1) {
$return['error'] = 7;
$data['projecttype'] = 1;
$return['msg'] = '简历暂不符合职位要求,缺少项目经历';
}
}
$data['sqmoney'] = $rewardJob['sqmoney'];
$data['invitemoney'] = $rewardJob['invitemoney'];
$data['offermoney'] = $rewardJob['offermoney'];
$data['money'] = $rewardJob['money'];
$return['data'] = $data;
}
} else {
$return['error'] = 10;
$return['msg'] = '您的简历正在审核,暂无法使用!';
}
} else {
$return['error'] = 2;
$return['msg'] = '您还没有合适的简历,是否先添加简历?';
}
}
}
}
}
}
}
} elseif ($usertype == 3) {
// 查询简历库是否有合适简历
$talentNum = $this->select_num('lt_talent', array('uid' => intval($uid)));
if ($talentNum > 0) {
$return['error'] = 12; // 简历库有简历 弹出推荐界面
} else {
$return['error'] = 11; // 没有简历库 提醒创建
}
} else {
$return['error'] = 3;
$return['msg'] = '仅支持个人自荐以及猎头中介推荐!';
}
}
}
if ($return['msg']) {
$return['msg'] = $return['msg'];
}
return $return;
}
function veriftyLtuser($jobid,$uid,$usertype,$eid){
if(!$jobid){
$return['error'] = 5;
$return['msg'] = '请选择正确的赏金职位!';
}else{
if(!$uid){
$return['error'] = 0;
$return['msg'] = '请先登录!';
}else{
if($usertype==3){
//当前职位是否开通悬赏并正在招聘
$jobInfo = $this->select_once('company_job', array('id' => $jobid, 'rewardpack' => 1, 'state' => 1, 'r_status' => 1, 'status' => 0));
if(empty($jobInfo)){
$return['error']= 3;
$return['msg'] = '悬赏职位不存在或已停止赏金招聘!';
}else{
//查询简历是否符合需求
$expectInfo = $this->select_once('lt_talent', array('uid' => $uid, 'id' => $eid));
if(!empty($expectInfo)){
if($this->config['sy_reward_tel']=='1' && $expectInfo['telstatus']!='1'){
$return['error'] = 8;
$return['msg'] = '当前简历还未授权认证,无法推荐!';
}else{
$sqNum = $this->select_num('company_job_rewardlist', array('eid' => $eid, 'status' => array('notin', '18,19,20,21,23,26,27,28,29')));
if($sqNum>0){
$return['error']= 8;
$return['msg'] = '当前简历已推荐,请耐心等待企业回复';
}else{
//验证是否重复推荐
$sqNumjob = $this->select_num('company_job_rewardlist', array('eid' => $eid, 'jobid' => $jobid));
if($sqNumjob>0){
$return['error'] = 9;
$return['msg'] = '请不要重复推荐';
}else{
//验证职位需求
$rewardJob = $this->select_once('company_job_reward', array('jobid' => $jobInfo['id']));
$data['jobid'] = $jobInfo['id'];
$data['comid'] = $jobInfo['uid'];
$data['eid'] = $expectInfo['id'];
$data['name'] = $expectInfo['name'];
$return['error']= 1;
//测试匹配度
if($rewardJob['exp']=='1' && $expectInfo['expinfo']==''){
$data['exptype'] = 1;//工作经历不匹配
$return['error'] = 7;
$return['msg'] = '简历暂不符合职位要求,缺少工作经历';
}
if($rewardJob['edu']=='1' && $expectInfo['eduinfo']==''){
$data['edutype'] = 1;//教育经历不匹配
$return['error'] = 7;
$return['msg'] = '简历暂不符合职位要求,缺少教育经历';
}
if($rewardJob['skill']=='1' && $expectInfo['skillinfo']==''){
$return['error'] = 7;
$data['skilltype'] = 1;
$return['msg'] = '简历暂不符合职位要求,缺少技能特长描述';
}
if($rewardJob['project']=='1' && $expectInfo['projectinfo']==''){
$return['error'] = 7;
$data['projecttype']= 1;
$return['msg'] = '简历暂不符合职位要求,缺少项目经历';
}
$data['sqmoney'] = $rewardJob['sqmoney'];
$data['invitemoney'] = $rewardJob['invitemoney'];
$data['offermoney'] = $rewardJob['offermoney'];
$data['money'] = $rewardJob['money'];
$return['data'] = $data;
}
}
}
}else{
$return['error']= 2;
$return['msg'] = '简历数据错误,请重新推荐!';
}
}
}else{
$return['error']= 3;
$return['msg'] = '仅支持个人自荐以及猎头中介推荐!';
}
}
}
if($return['msg']){
$return['msg'] = $return['msg'];
}
return $return;
}
//申请悬赏职位
function sqRewardJob($jobid,$uid,$usertype,$eid=''){
//验证资格
if($usertype==3){
$verifty = $this->veriftyLtuser($jobid,$uid,$usertype,$eid);
}else{
$verifty = $this->veriftyUser($jobid,$uid,$usertype);
}
if($verifty['error']=='1'){//验证通过
//插入申请记录
$data['uid'] = (int)$uid;
$data['eid'] = (int)$verifty['data']['eid'];
$data['comid'] = (int)$verifty['data']['comid'];
$data['jobid'] = (int)$jobid;
$data['datetime'] = time();
$data['status'] = 0;
$data['sqmoney'] = $verifty['data']['sqmoney'];
$data['invitemoney']= $verifty['data']['invitemoney'];
$data['offermoney'] = $verifty['data']['offermoney'];
$data['money'] = $verifty['data']['money'];
$data['usertype'] = $usertype;
$cid = $this->insert_into('company_job_rewardlist',$data);
return array('error'=>1,'comuid'=>$data['comid'],'tid'=>$cid);
}else{
return $verifty;
}
}
function getStatusInfo($rewardid,$utype,$status,$rewardLog=array()){
$hour = $this->config['sy_reward_hour'];
if(empty($rewardLog)){
$rewardLog = $this->getJobRewardLogList(array('rewardid'=>$rewardid,'orderby'=>'id,asc'));
}
if(is_array($rewardLog)){
foreach($rewardLog as $key=>$value){
if($value['status']==$status){
$rewardInfo = $value;
}
//展示操作流程记录
if($value['status']=='1'){
$msg = '企业查阅简历,预先支付全额赏金';
if($value['pay']>0){
$msg.=',发放投递赏金'.$value['pay'].'元。';
}
}elseif($value['status']=='2'){
$msg = '企业邀请面试。
'.$value['loginfo'];
}elseif($value['status']=='3'){
$msg = '求职者接受面试邀请。';
}elseif($value['status']=='4'){
$msg = '求职者已确认面试。';
}elseif($value['status']=='5'){
$msg = '企业已确认求职者面试';
if($value['pay']>0){
$msg.=',发放面试赏金'.$value['pay'].'元。';
}
if($key==(count($rewardLog)-1)){
$endMsg = '等待企业发放Offer';
}
}elseif($value['status']=='6'){
$msg = '企业发出Offer';
}elseif($value['status']=='7'){
$msg = '求职者确认已入职';
}elseif($value['status']=='8'){
$msg = '企业确认入职';
if($value['pay']>0){
$msg.=',发放入职赏金'.$value['pay'].'元。';
}
}elseif($value['status']=='18'){
$msg = '求职者取消申请';
}elseif($value['status']=='19'){
$msg = '企业结束赏单';
}elseif($value['status']=='20'){
$msg = '企业放弃该简历';
}elseif($value['status']=='21'){
$msg = '求职者拒绝面试';
}elseif($value['status']=='22'){
$msg = '企业否认求职者参与面试';
}elseif($value['status']=='23'){
$msg = '企业认为未达要求,本次推荐结束';
}elseif($value['status']=='24'){
$msg = '求职者放弃入职';
}elseif($value['status']=='25'){
$msg = '企业否认已入职';
}elseif($value['status']=='26'){
$msg = $value['loginfo'].'
申请自述:'.$value['remark'];
}elseif($value['status']=='27'){
$msg = '求职者放弃仲裁';
}elseif($value['status']=='28'){
$msg = $value['loginfo'].'
仲裁说明:'.$value['remark'];
}elseif($value['status']=='29'){
$msg = $value['loginfo'].'
仲裁说明:'.$value['remark'];
}
$showLog['time'] = $value['ctime'];
$showLog['time_n'] = date('Y-m-d H:i',$value['ctime']);
$showLog['info'] = $msg;
$logList['loglist'][] = $showLog;
}
}
if($status=='0'){
$nowMsg = '等待企业查看';
}elseif($status=='1'){
$nowMsg = '企业已预付赏金查看简历';
$endMsg = '等待企业邀请面试';
//可操作项
if($utype=='2'){//企业操作
$input[] = array('name'=>'邀请面试','status'=>'2');
}
}elseif($status=='2'){
$nowMsg = '企业已邀请面试';
$endMsg = '等待求职者接受面试邀请';
if($utype=='1'){//企业操作
$input[] = array('name'=>'接受面试','status'=>'3');
$input[] = array('name'=>'拒绝面试','status'=>'21');
}
if($utype=='2'){
//判断当前操作状态是否超过24小时,超过固定时间段个人无回应则可以直接结束赏单退回剩余赏金
$hourTime = $hour-round((time()-$rewardInfo['ctime'])/3600,1);
if($hourTime<=0){
$input[] = array('name'=>'结束赏单','status'=>'19');
}
}
}elseif($status=='3'){
$nowMsg = '求职者接受邀请';
$endMsg = '等待求职者确认面试';
if($utype=='1'){//企业操作
$input[] = array('name'=>'确认已面试','status'=>'4');
}
if($utype=='2'){
//判断当前操作状态是否超过24小时,超过固定时间段个人无回应则可以直接结束赏单退回剩余赏金
$hourTime = $hour-round((time()-$rewardInfo['ctime'])/3600,1);
if($hourTime<=0){
$input[] = array('name'=>'结束赏单','status'=>'19');
}
}
}elseif($status=='4'){
$nowMsg = '求职者确认面试';
$endMsg = '等待企业确认面试';
if($utype=='2'){//企业操作
$input[] = array('name'=>'确认已面试','status'=>'5');
$input[] = array('name'=>'否认已面试','status'=>'22');
//判断当前操作状态是否超过24小时
}
if($utype=='1'){
//判断当前操作状态是否超过24小时,超过固定时间段企业无回应则可以直接领取相应阶段赏金
$hourTime = $hour-round((time()-$rewardInfo['ctime'])/3600,1);
if($hourTime<=0){
$input[] = array('name'=>'领取赏金','status'=>'18');
}
}
}elseif($status=='5'){
$nowMsg = '企业已确认面试';
$endMsg = '等待企业发放Offer';
if($utype=='2'){//企业操作
$input[] = array('name'=>'发放Offer','status'=>'6');
$input[] = array('name'=>'未达要求','status'=>'23');
}
}elseif($status=='6'){
$nowMsg = '企业已发放Offer';
$endMsg = '等待求职者入职';
if($utype=='1'){//企业操作
$input[] = array('name'=>'确认入职','status'=>'7');
$input[] = array('name'=>'放弃入职','status'=>'24');
}
if($utype=='2'){
//判断当前操作状态是否超过24小时,超过固定时间段个人无回应则可以直接结束赏单退回剩余赏金
$hourTime = $hour-round((time()-$rewardInfo['ctime'])/3600,1);
if($hourTime<=0){
$input[] = array('name'=>'结束赏单','status'=>'19');
}
}
}elseif($status=='7'){
$nowMsg = '求职者已确认入职';
$endMsg = '等待企业确认入职';
if($utype=='2'){//企业操作
$input[] = array('name'=>'确认入职','status'=>'8');
$input[] = array('name'=>'否认入职','status'=>'25');
}
if($utype=='1'){
//判断当前操作状态是否超过24小时,超过固定时间段企业无回应则可以直接领取相应阶段赏金
$hourTime = $hour-round((time()-$rewardInfo['ctime'])/3600,1);
if($hourTime<=0){
$input[] = array('name'=>'领取赏金','status'=>'18');
}
}
}elseif($status=='8'){
$nowMsg = '企业确认入职';
}elseif($status=='18'){
$nowMsg = '求职者取消申请';
}elseif($status=='19'){
$nowMsg = '企业结束赏单';
}elseif($status=='20'){
$nowMsg = '企业放弃简历';
}elseif($status=='21'){
$nowMsg = '求职者拒绝面试';
}elseif($status=='22'){
$nowMsg = '企业否认求职者参与面试';
if($utype=='1'){//企业操作
$input[] = array('name'=>'申请仲裁','status'=>'26');
$input[] = array('name'=>'放弃仲裁','status'=>'27');
}
if($utype=='2'){
//判断当前操作状态是否超过24小时,超过固定时间段个人无回应则可以直接结束赏单退回剩余赏金
$hourTime = $hour-round((time()-$rewardInfo['ctime'])/3600,1);
if($hourTime<=0){
$input[] = array('name'=>'结束赏单','status'=>'19');
}
}
}elseif($status=='23'){
$nowMsg = '企业认为未达要求';
}elseif($status=='24'){
$nowMsg = '求职者放弃入职';
}elseif($status=='25'){
$nowMsg = '企业否认已入职';
if($utype=='1'){//企业操作
$input[] = array('name'=>'申请仲裁','status'=>'26');
$input[] = array('name'=>'放弃仲裁','status'=>'27');
}
if($utype=='2'){
//判断当前操作状态是否超过24小时,超过固定时间段个人无回应则可以直接结束赏单退回剩余赏金
$hourTime = $hour-round((time()-$rewardInfo['ctime'])/3600,1);
if($hourTime<=0){
$input[] = array('name'=>'结束赏单','status'=>'19');
}
}
}elseif($status=='26'){
$nowMsg = '求职者发起仲裁';
}elseif($status=='27'){
$nowMsg = '求职者放弃仲裁';
}elseif($status=='28'){
$nowMsg = '仲裁结果:企业胜出';
}elseif($status=='29'){
$nowMsg = '仲裁结果:求职者胜出';
}
$logList['nowmsg'] = $nowMsg;
$logList['input'] = $input;
$logList['endmsg']= $endMsg;
$logList['rewardinfo'] = $rewardInfo;
return $logList;
}
//日志操作
/*当前操作状态
*0:待查看
*1:企业接受简历(冻结悬赏金额)
*2:企业邀请面试 20:取消录用
*3:个人接受面试 21:个人拒绝面试
*4:个人确认面试
*5:企业确认面试,发放赏金 22:企业确认未面试
*6:企业发放offer 23:未达要求,面试不成功
*7:个人确认入职 24:拒绝入职
*8:企业确认入职,发放赏金 25:企业确认未入职
*
*26:个人申请仲裁 27:放弃仲裁 28:仲裁企业胜出 29:仲裁个人胜出
*
*18:4,7企业长时间未操作 个人可直接领取赏金
*19:个人未操作,企业可申请结束赏单2、3、6、22、25状态超24小时企业可直接结束赏单
*22、25 个人可申请仲裁
*/
function logStatus($rewardid,$status,$uid,$utype,$data=array())
{
if($rewardid && $status){
$hour = $this->config['sy_reward_hour'];
//查询当前申请单数据
$rewardInfo = $this->select_once('company_job_rewardlist', array('id'=>$rewardid));
if(!empty($rewardInfo)){
if ($data['base'] || $data['file']['tmp_name']){
$upArr = array(
'file' => $data['file'],
'dir' => 'pack',
'base' => $data['base'],
);
$result = $this -> upload($upArr);
if (!empty($result['msg'])){
$error = $result['msg'];
}elseif (!empty($result['picurl'])){
$logData['arbpic'] = $result['picurl'];
}
}
unset($data['file']);
unset($data['base']);
$rstatus = $rewardInfo['status'];
if(in_array($rewardInfo['status'],array('18','19','20','21','23','27','28','29'))){//订单处于用户操作终结状态
$error = '本次悬赏单已结束,无法继续操作!';
}else{
$logData['jobid'] = $rewardInfo['jobid'];
$logData['rewardid']= $rewardInfo['id'];
$logData['eid'] = $rewardInfo['eid'];
$logData['uid'] = $uid;
$logData['utype'] = $utype;
$logData['status'] = $status;
$logData['ostatus'] = $rstatus;
if($utype=='2'){//企业身份操作
/******************************************企业操作选项************************************/
if($rewardInfo['comid']!=$uid){
$error = '操作人身份错误!';
}elseif(!in_array($status,array('2','5','6','8','19','20','22','23','25'))){//检测操作状态
$error = '请正确操作!';
}else{
if($status=='2'){//邀请面试
if($rstatus!='1'){
if($rstatus>1){
$error = '请不要重复邀请!';
}else{
$error = '请先支付职位赏金!';
}
}else{
//邀请面试信息是否完整
if($data['linkman']==''){
$error = '请填写联系人!';
}elseif($data['linktel']==''){
$error = '请填写联系人电话!';
}elseif($data['intertime']==''){
$error = '请选择面试日期!';
}elseif($data['address']==''){
$error = '请填写面试地址!';
}else{
$invitetime = strtotime($data['intertime']);
if($invitetime>=strtotime(date('Y-m-d'))){
$logData['loginfo'] = "联系人:".$data['linkman']."
联系电话:".$data['linktel']."
面试日期:".$data['intertime']."
面试地址:".$data['address']."
面试备注:".$data['content'];
}else{
$error = '面试日期不合理!';
}
}
}
}elseif($status=='5'){//企业确认面试发放赏金
if($rstatus!='4'){
$error = '请等待求职者确认面试!';
}else{
if($rewardInfo['invitemoney']>0){
//发放面试赏金至个人账户
$logData['pay'] = $rewardInfo['invitemoney'];
$msg = '面试赏金:'.$rewardInfo['invitemoney'];
//发放赏金
$this->uppay($rewardInfo['comid'],$rewardInfo['uid'],$rewardInfo['usertype'],$rewardInfo['invitemoney'],$msg);
}
}
}elseif($status=='6'){//企业发放Offer
if($rstatus!='5'){
$error = '请先确认求职者已面试!';
}
}elseif($status=='8'){//企业确认入职
if($rstatus!='7'){
$error = '请等待求职者确认入职!';
}else{
if($rewardInfo['offermoney']>0){
//发放面试赏金至个人账户
$logData['pay'] = $rewardInfo['offermoney'];
$msg = '入职赏金:'.$rewardInfo['offermoney'];
//发放赏金
$this->uppay($rewardInfo['comid'],$rewardInfo['uid'],$rewardInfo['usertype'],$rewardInfo['offermoney'],$msg);
}
}
}elseif($status=='19'){//个人久未回应 企业结束赏单
if(!in_array($rstatus,array('2','3','6','22','25'))){
$error = '请等待求职者回应!';
}else{
$nowReward = $this->select_once("company_job_rewardlog",array('rewardid'=>$rewardid,'status'=>$rstatus));
$hourTime = $hour-round((time()-$nowReward['ctime'])/3600,1);
if($hourTime<=0){
if(in_array($rstatus,array('2','3','22'))){
$hpay = $rewardInfo['invitemoney']+$rewardInfo['offermoney'];
if($hpay>0){
$statis = $this->select_once('company_statis',array('uid'=>$rewardInfo['comid']),"`packpay`");
$this->update_once("company_statis",array('packpay'=>array('+',$hpay)),array('uid'=>$rewardInfo['comid']));
//归还赏金
$this->orderLog($hpay,$rewardInfo['comid'],'求职者久未回应,归还面试、入职赏金至赏金账户!',2);
}
}elseif(in_array($rstatus,array('6','25'))){
//退还剩余入职赏金
$hpay = $rewardInfo['offermoney'];
if($hpay>0){
$statis = $this->select_once('company_statis',array('uid'=>$rewardInfo['comid']),"`packpay`");
$this->update_once("company_statis",array('packpay'=>array('+',$hpay)),array('uid'=>$rewardInfo['comid']));
//归还赏金
$this->orderLog($hpay,$uid,'求职者久未回应,归还入职赏金至赏金账户!',2);
}
}
}else{
$error = '请耐心等待求职者回应,剩余时间:'.$hourTime.'小时!';
}
}
}elseif($status=='20'){//企业放弃简历
if($rstatus!='1'){
$error = '您还未接受简历,无需放弃!';
}else{
//退还赏金
$hpay = $rewardInfo['invitemoney']+$rewardInfo['offermoney'];
if($hpay>0){
$statis = $this->select_once('company_statis',array('uid'=>$uid),"`packpay`");
$this->update_once("company_statis",array('packpay'=>array('+',$hpay)),array('uid'=>$uid));
//归还赏金
$this->orderLog($hpay,$uid,'放弃简历,归还职位赏金至赏金账户!',2);
}
}
}elseif($status=='22'){//企业否认求职者参与面试
if($rstatus!='4'){
$error = '请等待求职者确认面试!';
}
}elseif($status=='23'){//面试失败 不录用该人才
if($rstatus!='5'){
$error = '请先确认求职者是否参与面试!';
}else{
//退还剩余入职赏金
$hpay = $rewardInfo['offermoney'];
if($hpay>0){
$statis = $this->select_once('company_statis',array('uid'=>$uid),"`packpay`");
$this->update_once("company_statis",array('packpay'=>array('+',$hpay)),array('uid'=>$uid));
//归还赏金
$this->orderLog($hpay,$uid,'企业认为未达要求,求职者面试失败,归还入职赏金至赏金账户!',2);
}
}
}elseif($status=='25'){//企业否认求职者入职
if($rstatus!='7'){
$error = '请等待求职者是否确定入职!';
}
}
}
/******************************************企业操作选项END************************************/
}elseif($utype=='1' || $utype=='3'){
/******************************************求职者操作选项************************************/
if($rewardInfo['uid']!=$uid){
$error = '操作人身份错误!';
}elseif(!in_array($status,array('3','4','7','18','21','24','26','27'))){//检测操作状态
$error = '请正确操作!';
}else{
if($status=='3'){//接受
if($rstatus!='2'){
$error = '请先等待企业发出邀请!';
}
}elseif($status=='4'){//确认参与面试
if($rstatus!='3'){
$error = '请先接受邀请面试!';
}
}elseif($status=='7'){//确认入职
if($rstatus!='6'){
$error = '请先等待企业发出offer!';
}
}elseif($status=='18'){//企业未回应 直接领取剩余赏金
if($rstatus!='4' && $rstatus!='7'){
$error = '请先等待企业回应!';
}else{
$nowReward = $this->select_once("company_job_rewardlog",array('rewardid'=>$rewardid,'status'=>$rstatus));
$hourTime = $hour-round((time()-$nowReward['ctime'])/3600,1);
if($hourTime<=0){
if($rstatus=='4'){//直接领取面试赏金
if($rewardInfo['invitemoney']>0){
//发放面试赏金至个人账户
$logData['pay'] = $rewardInfo['invitemoney'];
$msg = '面试赏金:'.$rewardInfo['invitemoney'];
//发放赏金
$this->uppay($rewardInfo['comid'],$rewardInfo['uid'],$rewardInfo['usertype'],$rewardInfo['invitemoney'],$msg);
}
}elseif($rstatus=='7'){//直接领取入职赏金
if($rewardInfo['offermoney']>0){
//发放面试赏金至个人账户
$logData['pay'] = $rewardInfo['offermoney'];
$msg = '入职赏金:'.$rewardInfo['offermoney'];
//发放赏金
$this->uppay($rewardInfo['comid'],$rewardInfo['uid'],$rewardInfo['usertype'],$rewardInfo['offermoney'],$msg);
}
}
}else{
$error = '请耐心等待企业回应,剩余时间:'.$hourTime.'小时!';
}
}
}elseif($status=='21'){//拒绝面试
if($rstatus!='2'){
$error = '请先等待企业发出邀请!';
}else{
//系统返还企业面试、入职赏金
$hpay = $rewardInfo['invitemoney']+$rewardInfo['offermoney'];
if($hpay>0){
$statis = $this->select_once('company_statis',array('uid'=>$rewardInfo['comid']),"`packpay`");
$this->update_once("company_statis",array('packpay'=>array('+',$hpay)),array('uid'=>$rewardInfo['comid']));
//归还赏金
$this->orderLog($hpay,$rewardInfo['comid'],'求职者拒绝面试,归还职位赏金至赏金账户!',2);
}
}
}elseif($status=='24'){//拒绝入职
if($rstatus!='6'){
$error = '请先等待企业发出offer!';
}else{
//退还剩余入职赏金
$hpay = $rewardInfo['offermoney'];
if($hpay>0){
$statis = $this->select_once('company_statis',array('uid'=>$rewardInfo['comid']),"`packpay`");
$this->update_once("company_statis",array('packpay'=>array('+',$hpay)),array('uid'=>$rewardInfo['comid']));
//归还赏金
$this->orderLog($hpay,$rewardInfo['comid'],'求职者拒绝入职,归还入职赏金至赏金账户!',2);
}
}
}elseif($status=='26'){//申请仲裁 企业否认面试 企业否认入职情况下
if($rstatus!='22' && $rstatus!='25' ){
$error = '暂无可仲裁需求!';
}else{
if($rstatus=='22'){
$logData['loginfo'] = '企业否认求职者参与面试,求职者发起仲裁需求,申请网站介入';
}
if($rstatus=='25'){
$logData['loginfo'] = '企业否认求职者已入职,求职者发起仲裁需求,申请网站介入';
}
if($data['arbpic']){
$logData['arbpic'] = $data['arbpic'];
}
if($data['content']){
$logData['remark'] = $data['content'];
}
}
}elseif($status=='27'){//放弃仲裁
if($rstatus!='22' && $rstatus!='25' ){
$error = '请按步骤操作!';
}else{
if($rstatus=='22'){//退还面试、入职赏金
//系统返还企业面试、入职赏金
$hpay = $rewardInfo['invitemoney']+$rewardInfo['offermoney'];
if($hpay>0){
$statis = $this->select_once('company_statis',array('uid'=>$rewardInfo['comid']),"`packpay`");
$this->update_once("company_statis",array('packpay'=>array('+',$hpay)),array('uid'=>$rewardInfo['comid']));
//归还赏金
$this->orderLog($hpay,$rewardInfo['comid'],'求职者放弃仲裁,归还职位赏金至赏金账户!',2);
}
}elseif($rstatus=='25'){//退还入职赏金
//退还剩余入职赏金
$hpay = $rewardInfo['offermoney'];
if($hpay>0){
$statis = $this->select_once('company_statis',array('uid'=>$rewardInfo['comid']),"`packpay`");
$this->update_once("company_statis",array('packpay'=>array('+',$hpay)),array('uid'=>$rewardInfo['comid']));
//归还赏金
$this->orderLog($hpay,$rewardInfo['comid'],'求职者放弃仲裁,归还入职赏金至赏金账户!',2);
}
}
}
}
}
/******************************************求职者操作选项END************************************/
}elseif($utype=='admin'){
if(!in_array($status,array('28','29'))){//检测操作状态
$error = '请正确操作!';
}else{
if($rstatus!='26'){
$error = '无人申请仲裁或仲裁已结束!';
}else{
$logData['remark'] = $data['content'];
$nowReward = $this->select_once('company_job_rewardlog',array('rewardid'=>$rewardid,'status'=>$rstatus));
if($status=='28'){//退款给企业
$logData['loginfo'] = '仲裁结果:企业胜出,系统退款结束赏单';
if($nowReward['ostatus']=='22'){//退还面试、入职赏金
$hpay = $rewardInfo['invitemoney'] + $rewardInfo['offermoney'];
if($hpay>0){
$statis = $this->select_once('company_statis',array('uid'=>$rewardInfo['comid']),"`packpay`");
$this->update_once('company_statis', array('packpay' => array('+',$hpay)),array('uid'=>$rewardInfo['comid']));
//归还赏金
$this->orderLog($hpay,$rewardInfo['comid'],'管理员仲裁,面试、入职赏金退还至赏金账户!',2);
}
}elseif($nowReward['ostatus']=='25'){
$hpay = $rewardInfo['offermoney'];
if($hpay>0){
$statis = $this->select_once('company_statis',array('uid'=>$rewardInfo['comid']),"`packpay`");
$this->update_once("company_statis",array('packpay'=>array('+',$hpay)),array('uid'=>$rewardInfo['comid']));
//归还赏金
$this->orderLog($hpay,$rewardInfo['comid'],'管理员仲裁,归还入职赏金至赏金账户!',2);
}
}
}elseif($status=='29'){//发放赏金给个人
if($nowReward['ostatus']=='22'){//发放面试赏金给个人 退还入职赏金给商家
$logData['loginfo'] = '仲裁结果:求职者胜出,系统发放面试赏金,退还入职赏金,结束赏单';
$uhpay = $rewardInfo['invitemoney'];
$chpay = $rewardInfo['offermoney'];
if($uhpay>0){
$logData['pay'] = $uhpay;
$msg = '管理员仲裁,发放面试赏金:'.$uhpay;
//发放赏金
$this->uppay($rewardInfo['comid'],$rewardInfo['uid'],$rewardInfo['usertype'],$uhpay,$msg);
}
if($chpay>0){
$statis = $this->select_once('company_statis',array('uid'=>$rewardInfo['comid']),"`packpay`");
$this->update_once("company_statis",array('packpay'=>array('+',$chpay)),array('uid'=>$rewardInfo['comid']));
//归还赏金
$this->orderLog($chpay,$rewardInfo['comid'],'管理员仲裁,发放面试赏金给用户,并退还剩余入职赏金!',2);
}
}elseif($nowReward['ostatus']=='25'){
$uhpay = $rewardInfo['offermoney'];
if($uhpay>0){
$logData['loginfo'] = '仲裁结果:求职者胜出,系统发放入职赏金,结束赏单';
$logData['pay'] = $uhpay;
$msg = '管理员仲裁,发放入职赏金:'.$uhpay;
//发放赏金
$this->uppay($rewardInfo['comid'],$rewardInfo['uid'],$rewardInfo['usertype'],$uhpay,$msg);
}
}
}
}
}
}
//以上操作条件判断完成 统一执行状态操作以及增加操作记录
if($error==''){
//更改状态
$this->upstatus($rewardInfo['id'],$status);
//操作记录
$this->statusLog($logData);
//短信微信通知
$this->sendMsg($rewardInfo,$utype,$status, $data['port']);
}
}
}else{
$error = '当前悬赏职位数据出错!';
}
}else{
//参数不全
$error = '参数不全 !';
}
return array('error'=>$error);
}
function uppay($comid,$uid,$utype,$price,$mark){
if($utype==3){
$table = 'lt_statis';
}else{
$table = 'member_statis';
}
//$statis = $this->select_once($table,array('uid'=>$uid),"`packpay`");
//增加金额记录
$this->orderLog('-'.$price,$comid,'发放'.$mark,2);
//增加求职者金额
$this->update_once($table,array('packpay'=>array('+',$price)),array('uid'=>$uid));
//增加金额记录
$this->orderLog($price,$uid,'获得'.$mark,$utype);
}
//修改赏单状态
function upstatus($id,$status){
$this->update_once('company_job_rewardlist',array('status'=>$status),array('id'=>$id));
}
//查询参与悬赏数量
function getrewardNum($where){
return $this->select_num('company_job_rewardlist',$where);
}
//操作记录
function statusLog($data){
$data['ctime'] = time();
$this->insert_into("company_job_rewardlog",$data);
}
//金额记录
function orderLog($price,$comid,$pay_remark,$utype=''){
if(!$utype){
$user = $this -> select_once('member',array('uid'=>$utype),"`usertype`");
$utype = $user['usertype'];
}
$orderid = time().rand(1000,9999);
$this->insert_into('company_pay',array('order_id' => $orderid, 'order_price' => $price, 'pay_time' => time(), 'pay_state' => '2', 'com_id' => $comid, 'pay_remark' => $pay_remark, 'type' => '2' , 'pay_type' => '100', 'usertype' => $utype));
}
//账户提现
function withDraw($uid,$usertype,$money,$realname){
$errcode = 1;
if(!$realname || !$uid || !$usertype || !$money){
$error = '参数不完整,请重试!';
$errcode = 2;
}elseif($this->config['sy_withdraw_minmoney']>0 && $this->config['sy_withdraw_minmoney']>$money){
$error = '单次提现金额必须达到'.$this->config['sy_withdraw_minmoney'].'元!';
$errcode = 3;
}else{
//判断当日已提现次数
$withNum = $this -> select_num("member_withdraw",array('uid'=>$uid,'time'=>array('>=',strtotime(date('Ymd')))));
if($withNum>=$this->config['sy_withdraw_num']){
$error = '今日提现次数已用完,请明天再试!';
$errcode = 4;
}else{
$TableNameListTwo = array(1=>'member_statis',2=>'company_statis',3=>'lt_statis',4=>'px_train_statis');
$memberInfo = $this -> select_once('member',array('uid'=>(int)$uid));
$TableNameTwo = $TableNameListTwo[$usertype];
$statis = $this -> select_once($TableNameTwo,array('uid'=>(int)$uid));
if($statis['packpay']>0){
if($money>$statis['packpay']){
$error = '提现金额不足!';
$errcode = 5;
}else{
//判断是否绑定微信
if($memberInfo['wxid']!=''){
//生成提现单
$upackpay = bcsub($statis['packpay'], $money, 2);
$ufreeze = bcadd($statis['freeze'], $money, 2);
$nid = $this->update_once($TableNameTwo,array('packpay'=>$upackpay,'freeze'=>$ufreeze),array('uid'=>(int)$uid));
if($nid){
//生成提现单 交由后台管理员审核
$order = $this -> setWdOrder($uid,$usertype,$money,$memberInfo['wxid'],$realname);
require_once('admin.model.php');
$adminM = new admin_model($this->db,$this->def);
//超过后台设定审核金额
if($this->config['sy_withdraw_money']>0 && $money>$this->config['sy_withdraw_money']){
$error = '超过限定金额,'.$this->config['sy_withdraw_money'].'元,需等待管理员审核通过后打款!';
$errcode = 6;
$adminM->sendAdminMsg(array('first'=>'用户:'.$memberInfo['username'].',申请提现:'.$money.'元','type'=>4));
}else{
$wxpay = $this -> transfersWxPay($order);
//修改提现单
$this -> update_once('member_withdraw',array('order_state'=>$wxpay['orderState'],'order_remark'=>$wxpay['remark']),array('id'=>$order['id']));
if($wxpay['orderState']!='1'){
$error = '提现失败:'.$wxpay['remark'];
$errcode = 7;
}else{
//提现成功消除冻结金额
$this -> update_once($TableNameTwo,array('freeze' => $statis['freeze']),array('uid'=>(int)$uid));
$adminM->sendAdminMsg(array('first'=>'用户:'.$memberInfo['username'].',成功提现:'.$money.'元','type'=>4));
$error = '提现成功,请关注微信账户提醒!';
$errcode = 1;
}
}
}else{
$error = '提现申请失败!';
$errcode = 2;
}
}else{
$error = '还未绑定微信账户!';
$errcode = 8;
}
}
}else{
$error = '暂无可提现金额!';
$errcode = 9;
}
}
}
return array('errcode'=>$errcode,'msg'=>$error);
}
function setWdOrder($uid,$usertype,$money,$wxid,$realname){
$dingdan = time().rand(10000,99999);
$wData['order_id'] = $dingdan;
$wData['price'] = $money;
if($this->config['sy_withdraw_pound']){
$poundPrice = round($money*$this->config['sy_withdraw_pound']/100,2);
}else{
$poundPrice = 0;
}
$wData['real_name'] = $realname;
$wData['order_price'] = $money-$poundPrice;
$wData['pound_price'] = $poundPrice;
$wData['uid'] = (int)$uid;
$wData['usertype'] = (int)$usertype;
$wData['order_state'] = 0;
$wData['wxid'] = $wxid;
$wData['time'] = time();
$nid = $this -> insert_into("member_withdraw",$wData);
$wData['id'] = $nid;
return $wData;
}
//调用微信打款接口
function transfersWxPay($order){
//调用企业付款接口 直接提现
$wxRedPackArr['openid'] = $order['wxid'];//微信用户身份ID
$wxRedPackArr['amount'] = $order['order_price']*100;//发放金额
$wxRedPackArr['partner_trade_no'] = $order['order_id'];//当前红包订单ID 自定义生成
$wxRedPackArr['spbill_create_ip'] = $this->config['sy_wxredpack_ip'];//服务器IP
$wxRedPackArr['desc'] = '商家提现';//
$wxRedPackArr['real_name'] = $order['real_name'];//
include(LIB_PATH."ApiWxHb.class.php");
$wxHb = new ApiWxHb();
$wxHbMsg = $wxHb->sendPay($wxRedPackArr);
if($wxHbMsg['result_code']=='SUCCESS'){
$return['orderState'] = '1';
}else{
if($wxHbMsg['err_code_des']){
$return['remark'] = $wxHbMsg['err_code_des'];
}elseif($wxHbMsg['return_msg']){
$return['remark'] = $wxHbMsg['return_msg'];
}else{
$return['remark'] = '微信接口API调用错误';
}
$return['orderState'] = '2';
}
return $return;
}
//仅限后台调用
function delWithdrawOrder($id){
$order = $this -> select_once("member_withdraw",array('id'=>intval($id)));
if(!empty($order)){
if($order['order_state']!='1'){//提现不成功 删除提现单需要返还冻结金额
$TableNameList = array(1=>'member_statis',2=>'company_statis',3=>'lt_statis',4=>'px_train_statis');
$Table = $TableNameList[$order['usertype']];
//查询当前提现用户资金数据
$Statis = $this -> select_once($Table,array('uid'=>$order['uid']));
if($Statis['freeze']>$order['price']){
$freeze = $Statis['freeze'] - $order['price'];
}else{
$freeze = 0;
}
$packpay = $Statis['packpay']+$order['price'];
$this -> update_once($Table,array('freeze'=>$freeze,'packpay'=>$packpay),array('uid'=>$order['uid']));
//增加操作记录
$this -> orderLog($order['price'],$order['uid'],'管理员删除提现,解冻提现金:'.$order['price'],$order['usertype']);
}
$this -> delete_all('member_withdraw',array('id'=>$order['id']));
return true;
}else{
return false;
}
}
//短信、微信通知
function sendMsg($rewardInfo, $usertype, $status, $port=null){
if($usertype=='1'){
$uid = $rewardInfo['comid'];
$smsg = '您发布的赏金职位招聘进度有新的提醒';
}else{
$uid = $rewardInfo['uid'];
$smsg = '您申请的赏金职位申请进度有新的提醒';
}
if($uid){
$memberInfo = $this->select_once('member', array('uid' => $uid),"`username`,`wxid`,`moblie`,`uid`,`usertype`");
$statusMsg = $this->getStatusInfo(0,0,$status);
if($memberInfo['moblie'] && checkMsgOpen($this -> config)){
$moblie = $memberInfo['moblie'];
$content= $smsg.':'.$statusMsg['nowmsg'].',请在'.$this->config['sy_reward_hour'].'小时内登录'.$this->config['sy_webname'].'作出回应。';
if($moblie!=""){
require_once('notice.model.php');
$notice = new notice_model($this->db, $this->def);
$notice -> sendSMS(array('mobile' => $moblie, 'content' => $content, 'uid' => $memberInfo['uid'], 'name' => $memberInfo['username'], 'port' => $port));
}
}
if($memberInfo['wxid']){
include PLUS_PATH."user.cache.php";
$jobInfo = $this->select_once('company_job', array('id' => $rewardInfo['jobid']), '`name`');
$resume = $this->select_once('resume', array('uid' => $rewardInfo['uid']), '`name`,`edu`, `exp`');
$uname = mb_substr($resume['name'],0,1,'utf-8').'**';
$edu = $userclass_name[$resume['edu']];
$exp = $userclass_name[$resume['exp']];
$rinfo = $uname.'-'.$edu.'学历-'.$exp.'工作经验';
include(APP_PATH.'app/model/weixin.model.php');
$wxM = new weixin_model($this->db,$this->def,array());
$wxM->sendWxReward(array(
'uid' => $memberInfo['uid'],
'usertype' => $memberInfo['usertype'],
'wxid' => $memberInfo['wxid'],
'first' => $smsg,
'jobname' => '赏金职位:'.$jobInfo['name'],
'rinfo' => $rinfo,
'statusinfo'=> $statusMsg['nowmsg'],
'remark' => '请在'.$this->config['sy_reward_hour'].'小时内登录'.$this->config['sy_webname'].'作出回应。'
));
}
}
}
/**
* @desc 引用userinfo类,查询member列表信息
*/
private function getMemberList($whereData = array(), $data = array()) {
require_once ('userinfo.model.php');
$MemberM = new userinfo_model($this->db, $this->def);
return $MemberM -> getList($whereData , $data);
}
/**
* @desc 获取用户姓名、企业名称
*/
private function getUserList($where = array()) {
require_once ('userinfo.model.php');
$userinfoM = new userinfo_model($this->db, $this->def);
return $userinfoM -> getUserList($where);
}
/**
* @desc 引用system类,添加系统消息
*/
private function addSystem($data) {
include_once('sysmsg.model.php');
$sysmsgM = new sysmsg_model($this->db, $this->def);
$sysmsgM -> addInfo($data);
}
/**
* 查询提现数
*/
public function getWithdrawNum($whereData){
return $this->select_num('member_withdraw',$whereData);
}
/**
* 查询全部信息
* @param 表:member_withdraw
* @param 功能说明:获取member_withdraw表里面所有提现信息
* @param 引用字段:$whereData:条件 2:$data:查询字段
*
*/
public function getList($whereData, $data = array()) {
$data['field'] = empty($data['field']) ? '*' : $data['field'];
$List = $this -> select_all('member_withdraw', $whereData, $data['field']);
if (!empty($List)) {
/* 处理后台所需数据 */
include (APP_PATH."/config/db.data.php");
foreach ($List as $k => $v){
//状态
$List[$k]['order_state_n']=strip_tags($arr_data['withdrawstate'][$v['order_state']]);
$List[$k]['time_n'] =date('Y-m-d H:i:s',$v['time']);
}
if ($data['utype']=='admin') {
$uids = array();
foreach ($List as $v){
if ($v['uid'] && !in_array($v['uid'],$uids)) {
$uids[$v['uid']] = $v['uid'];
}
}
if($uids){
// 查询用户名
$mWhere['uid'] = array('in', pylode(',', $uids));
$mData['field'] = '`uid`,`username`';
$mList = $this -> getMemberList($mWhere, $mData);
// 查询企业名称、姓名
$uWhere['uid'] = array('in', pylode(',', $uids));
$UList = $this -> getUserList($uWhere);
}
foreach ($List as $k => $v){
// 分站did字段为空的数据
if($v['did'] == ''){
$List[$k][did] = '0';
}
// 用户名
if (!empty($mList)) {
foreach ($mList as $va){
if ($v['uid'] == $va['uid']) {
$List[$k]['username'] = $va['username'];
}
}
}
// 企业名称(姓名)
if (!empty($UList)) {
foreach ($UList as $va){
if ($v['uid'] == $va['uid'] ) {
$List[$k]['comname'] = $va['name'];
}
}
}
}
}
}
return $List;
}
/**
* 获取member_withdraw 提现详情
* $whereData 查询条件
* $data 自定义处理数组
*/
public function getInfo($id,$data=array()){
$field = empty($data['field']) ? '*' : $data['field'];
if (!empty($id)) {
$info = $this -> select_once('member_withdraw',array('id'=>intval($id)), $field);
if($info && is_array($info)){
return $info;
}
}
}
/**
* @desc 确认提现
* @param int/array $id
* @param array $where
* @param array $data
*/
function setPay($id) {
if (!empty($id)) {
$row = $this->getInfo($id);
if($row['order_state']!='1'){
$TableNameListTwo = array(1=>'member_statis',2=>'company_statis',3=>'lt_statis',4=>'px_train_statis');
$TableNameTwo = $TableNameListTwo[$row['usertype']];
$statis = $this->select_once($TableNameTwo,array('uid'=>intval($row['uid'])));
$wxpay = $this->transfersWxPay($row);
$this -> update_once('member_withdraw',array('order_state'=>$wxpay['orderState'],'order_remark'=>$wxpay['remark']), array('id'=>$row['id']));
if($wxpay['orderState']=='1'){
$TableNameList = array(1=>'member_statis',2=>'company_statis');
$TableNameTwo = $TableNameList[$row[usertype]];
$this -> update_once($TableNameTwo,array('freeze'=>$statis['freeze']-$row['price']), array('uid'=>$row['uid']));
$this -> addSystem(array('uid' => $row['uid'],'usertype'=>2,'content' => '管理员操作:提现单号(ID:'.$row['order_id'].')确认成功'));
return array('errcode'=>'9','msg'=>"管理员手动提现(ID:".$id.")确认成功!");
}else{
return array('errcode'=>'8','msg'=>'提现失败:'.$wxpay['remark']);
}
}else{
return array('errcode'=>'8','msg'=>"提现单已成功提现,请勿重复提现!");
}
}
}
/**
* @desc 删除提现记录
* @desc 表:member_withdraw
* @desc 功能说明:删除member_withdraw表里面记录
* @param 引用字段:$id:删除记录
*
*/
public function delWithDraw($id){
if(!empty($id)){
$result = $this ->delWithdrawOrder($id);
if($result){
$return['msg'] = '提现记录(ID:'.$id.')删除成功';
$return['errcode'] = '9';
}else{
$return['msg'] = '提现记录(ID:'.$id.')删除失败';
$return['errcode'] = '8';
}
}else{
$return['msg'] = '请选择要删除的记录';
$return['errcode'] = '8';
}
return $return;
}
/**
* @desc 统计赏金职位 company_job_reward
* @param int $where
*/
public function getCompanyJobRewardNum($whereData){
if(!empty($whereData)){
$num = $this -> select_num('company_job_reward',$whereData);
}
return $num;
}
/**
* @desc 统计赏金职位 company_job_share
* @param int $where
*/
public function getCompanyJobShareNum($whereData){
if(!empty($whereData)){
$num = $this -> select_num('company_job_share',$whereData);
}
return $num;
}
/**
* @desc 获取缓存数据
*/
private function getClass($options){
if (!empty($options)){
include_once ('cache.model.php');
$cacheM = new cache_model($this->db, $this->def);
$cache = $cacheM -> GetCache($options);
return $cache;
}
}
/**
* @desc 商家转换积分
*
* @param array $data
*/
function saveChange($data = array()){
$data['uid'] = (int)$data['uid'];
if($data['uid']){
$changeNum = $this -> select_num("company_pay",array(
'com_id' => $data['uid'],
'pay_remark' => array('like','转换'.$this->config['integral_pricename']),
'pay_time' => array('>=',strtotime(date("Y-m-d")))
));
$data['changeprice'] = (int)$data['changeprice'];
if($changeNum >= $this->config['paypack_max_recharge'] && $this->config['paypack_max_recharge']){
$data['msg']="今日转换次数已达上限,请明日再来!";
$data['error']=3;
}elseif($this -> config['packprice_min_recharge'] > $data['changeprice']){
$data['msg']="系统最低转换金额为:".$this -> config['packprice_min_recharge'].'元';
$data['error']=2;
}elseif($data['changeprice']>0){
//查询当前用户信息
require_once('statis.model.php');
$statisM = new statis_model($this->db,$this->def);
$stInfo = $statisM -> getInfo($data['uid'],array('usertype' => (int)$data['usertype']));
if($stInfo['packpay'] >= $data['changeprice']){
$nid = $statisM->upInfo(array('packpay'=>array('-',$data['changeprice'])),array('uid'=>$data['uid'],'usertype'=>$data['usertype']));
}else{
$data['msg']="请正确填写转换金额!";
$data['error']=3;
}
if($nid){
//计算转换积分
$data['changeintegral'] = ceil($data['changeprice']*$this->config['integral_proportion']);
if($data['changeintegral']>=1){
require_once('integral.model.php');
$integralM = new integral_model($this->db,$this->def);
$integralM -> company_invtal($data['uid'],$data['usertype'],$data['changeintegral'],true,"赏金转换".$this->config['integral_pricename'],true,2,'integral',2);
$data['msg'] = '转换成功';
$data['url'] = 'index.php?c=changelist';
$data['error'] = 1;
}else{
$data['msg'] = '请填写正确的兑换金额!';
$data['url'] = 'index.php?c=change';
$data['error'] = 2;
}
}else{
$data['msg'] = '转换失败';
$data['url'] = 'index.php?c=change';
$data['error'] = 2;
}
}else{
$data['msg'] = '请正确填写转换金额';
$data['error'] = 2;
}
}
return $data;
}
/**
* @desc 获取赏金投递数目
*/
function getPackNum($WhereData = array(),$data=array()){
$Packnum = $this -> select_num('company_job_rewardlist', $WhereData);
return $Packnum;
}
/**
* @desc 获取赏金投递详细信息
*/
function getPackInfo($whereData,$data=array()){
$field = empty($data['field']) ? '*' : $data['field'];
$PackInfo = $this -> select_once('company_job_rewardlist', $whereData, $field);
if($PackInfo){
$job = $this -> select_once('company_job',array('uid'=>$whereData['comid'],'id'=>$PackInfo['jobid']),'`name`');
$resume = $this -> select_once('resume',array('uid'=>$PackInfo['uid']),'`name`');
$PackInfo['job_name'] = $job['name'];
$PackInfo['username'] = $resume['name'];
if($PackInfo['datetime']){
$PackInfo['datetime_n'] = date('Y-m-d H:i',$PackInfo['datetime']);
}
}
return $PackInfo;
}
/**
* 处理单个图片上传
* @param file/需上传文件; dir/上传目录; type/上传图片类型; base/需上传base64; preview/pc预览即上传
*/
private function upload($data = array('file'=>null,'dir'=>null,'type'=>null,'base'=>null,'preview'=>null)){
require_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;
}
}
?>