'member_statis', 2 => 'company_statis', 3 => 'lt_statis', 4 => 'px_train_statis' ); $tb = $TBList[$uType]; $select = $data['field'] ? $data['field'] : '*'; $statis = $this -> select_once($tb, array('uid' => $uid), $select); if ($statis && is_array($statis)) { $statis['packfk'] = sprintf('%.2f', $statis['packpay']); $statis['freeze_n'] = sprintf('%.2f', $statis['freeze']); $statis['vip_stime_n'] = date('Y-m-d', $statis['vip_stime']); $statis['vip_etime_n'] = $statis['vip_etime'] > 0 ? date('Y-m-d', $statis['vip_etime']): '不限'; return $statis; } } } /** * @desc 获取账户套餐数据信息列表 * * @param array $whereData * @param array $data * @return $statis */ function getList($whereData = array(), $data = array()) { if (! empty($whereData)) { $uType = $data['usertype'] ? intval($data['usertype']) : 2; $TBList = array( 1 => 'member_statis', 2 => 'company_statis', 3 => 'lt_statis', 4 => 'px_train_statis' ); $tb = $TBList[$uType]; $select = $data['field'] ? $data['field'] : '*'; $statis = $this -> select_all($tb, $whereData, $select); if ($statis && is_array($statis)) { if(in_array($uType, array(2, 3))){ foreach ($statis as $sk => $sv) { if(isset($sv['vip_stime']) && $sv['vip_stime'] > 0){ $statis[$sk]['vip_stime_str'] = date('Y-m-d', $sv['vip_stime']); } if($sv['vip_etime'] > 0){ $statis[$sk]['vip_etime_str'] = date('Y-m-d', $sv['vip_etime']); }else{ $statis[$sk]['vip_etime_str'] = '永久'; } if($sv['rating_type'] == 1){ $statis[$sk]['rating_type_name'] = '套餐模式'; }elseif ($sv['rating_type'] == 2) { $statis[$sk]['rating_type_name'] = '时间模式'; } } } return $statis; } } } /** * @desc 更新账户套餐数据信息 * * @param array $data 更新数据 * @param array $whereData * @return bool */ function upInfo($data = array(), $whereData = array()) { if (!empty($data) && $whereData) { $uid = intval($whereData['uid']); $uType = intval($whereData['usertype']); $ratingid = intval($data['rating']); $TBList = array( 1 => 'member_statis', 2 => 'company_statis', 3 => 'lt_statis', 4 => 'px_train_statis' ); $tb = $TBList[$uType]; /* 更新职位表会员等级字段,名企数据 */ if($uType == 2 && $ratingid){ if (empty($data['rating_name']) || empty($data['vip_etime'])) { require_once 'rating.model.php'; $ratingM = new rating_model($this->db, $this->def); $ratingInfo = $ratingM -> ratingInfo($ratingid, $uid); $data['rating_name'] = $ratingInfo['rating_name']; $data['vip_etime'] = $ratingInfo['vip_etime']; } $this -> update_once('company_job', array('rating' => $ratingid), array('uid' => $uid)); $this -> update_once('company', array('rating' => $ratingid,'rating_name'=>$data['rating_name'],'vipstime'=>time(),'vipetime'=>$data['vip_etime']), array('uid' => $uid)); } /* 管理员修改企业,变更会员等级,记录订单数据 */ if (isset($whereData['adminedit']) && isset($whereData['info'])) { $rinfo = $whereData['info']; if($rinfo['time_start'] < time() && $rinfo['time_end'] > time()){ $price = $rinfo['yh_price']; }else{ $price = $rinfo['service_price']; } if($price > 0 && ($uType == 2||$uType == 3)){ $statisInfo = $this -> select_once($tb, array('uid' => $uid)); if ($statisInfo['rating'] != $rinfo['id']) { $rinfo['usertype'] = $uType; $this -> addComOrder($rinfo, $uid, $ratingid); } } $hData = array( 'rating_id' => $ratingid, 'rating' => $data['name'], 'servide_price' => $price, 'time_start' => time(), 'time_end' => $rinfo['service_time'] ); $this -> update_once('hotjob', $hData, array('uid' => $uid)); } $nid = $this -> update_once($tb, $data, array('uid'=>$uid)); return $nid; } } /** * @desc 管理员修改会员等级,记录订单 * * @param array $data * @param int $uid * @param int $rating 会员等级 */ private function addComOrder($data = array(), $uid = null, $rating = null) { if($data['time_start'] < time() && $data['time_end'] > time()){ $price = floatval($data['yh_price']); }else{ $price = floatval($data['service_price']); } $comInfo = $this->select_once('company', array('uid' => $uid), '`crm_uid`'); $dingdan = time().rand(10000,99999); $order = array( 'order_id' => $dingdan, 'order_price' => $price, 'type' => 1, 'order_time' => time(), 'order_state' => '2', 'order_remark' => '管理员修改会员套餐', 'uid' => intval($uid), 'usertype' => $data['usertype'], 'did' => $this->config['did'], 'rating' => intval($rating), 'order_type' => 'adminpay' ); if ((int)$comInfo['crm_uid'] > 0){ $order['crm_uid'] = $comInfo['crm_uid']; } $this ->insert_into('company_order', $order); } /** * @desc 新增账户,添加账户套餐数据信息 * * @param array $data * @param array $where */ function addInfo($data = array(), $where = array()) { if (!empty($data)) { $uType = intval($where['usertype']); $TBList = array( 1 => 'member_statis', 2 => 'company_statis', 3 => 'lt_statis', 4 => 'px_train_statis' ); $tb = $TBList[$uType]; return $this -> insert_into($tb, $data); } } /** * @desc 企业 会员套餐过期检测,并处理 */ public function vipOver($uid, $usertype = null){ $statis = $this -> getInfo($uid, array('usertype' => $usertype));//查询会员信息 $cominfo = $this -> select_once('company',array('uid'=>$uid)); if($usertype==2){ $time = time(); if($this->config['sy_maturityday']>0){ $endtimevip = $time+$this->config['sy_maturityday']*86400; }else{ $endtimevip = $time+30*86400; } if(!isVip($statis['vip_etime'])){ $statis['remind']=1; } } $sonList = $this -> select_all('company_account', array('comid' => $uid), '`uid`'); // 查询是否有子账号 if (!empty($sonList) && is_array($sonList)) { // 子账号 $spids = array(); foreach ($sonList as $v){ $spids[] = $v['uid']; } } if($statis['vip_etime'] && !isVip($statis['vip_etime']) && $cominfo['r_status']!=4){ //已过期非暂停会员 //会员到期,变为过期会员 if($this->config['com_vip_done'] == '0'){ // 会员等级未清0的才需要处理,不加此判断,过期的企业,调用会重复处理 if ($statis['rating'] > 0){ $data = array( 'job_num' => '0', 'breakjob_num' => '0', 'down_resume' => '0', 'invite_resume' => '0', 'zph_num' => '0', 'top_num' => '0', 'rec_num' => '0', 'urgent_num' => '0', 'sons_num' => '0', 'chat_num' => '0', 'spview_num' => '0', 'oldrating_name'=> $statis['rating_name'], 'rating_name' => '过期会员', 'rating_type' => '0', 'rating' => '0' ); $this -> upInfo($data, array('uid' => $uid,'usertype' => $usertype)); $this -> update_once('company', array('rating'=>$data['rating'], 'rating_name'=>$data['rating_name']), array('uid' => $uid)); $upJobArr['rating'] = 0; //会员到期职位下架 if($this -> config['jobunder'] == '1'){ $upJobArr['status'] = 1; } $this -> update_once('company_job', $upJobArr, array('uid' => $uid)); // 清空子账号套餐数据 if(!empty($spids)){ $this -> update_once('company_statis', $data, array('uid' => array('in', pylode(',', $spids)))); $this -> update_once('member', array('status'=>2, 'lock_info'=>'会员主体到期,子账号锁定'), array('uid' => array('in', pylode(',', $spids)), 'usertype' => 2)); } } // 过期会员,会员模式、会员等级清0 $statis['rating_name'] = '过期会员'; $statis['rating_type'] = '0'; $statis['rating'] = '0'; }else{ //会员到期,会员等级保留 //修改会员等级 require_once 'rating.model.php'; $ratingM = new rating_model($this->db, $this->def); $rat_value = $ratingM -> ratingInfo($this->config['com_vip_done'], $uid); $this -> upInfo($rat_value,array('uid' => $uid, 'usertype' => $usertype)); $this -> update_once('company_job', array('rating' => $this->config['com_vip_done']), array('uid' => $uid)); $this -> update_once('company', array('rating' => $this->config['com_vip_done'],'rating_name' => $rat_value['rating_name']), array('uid' => $uid)); // 清空子账号套餐数据 if(!empty($spids)){ $sData = array( 'job_num' => 0, 'breakjob_num' => 0, 'down_resume' => 0, 'invite_resume' => 0, 'zph_num' => 0, 'top_num' => 0, 'rec_num' => 0, 'urgent_num' => 0, 'sons_num' => 0, 'chat_num' => 0, 'spview_num' => 0, 'rating_name' => $rat_value['rating_name'], 'rating_type' => $rat_value['rating_type'], 'rating' => $rat_value['rating'] ); $this -> update_once('company_statis', $sData, array('uid' => array('in', pylode(',', $spids)))); $this -> update_once('member', array('status' => 2, 'lock_info' => '会员主体到期,子账号锁定'), array('uid' => array('in', pylode(',', $spids)), 'usertype' => 2)); } } } //会员未到期,永久会员(含过期会员) if(isVip($statis['vip_etime'])){ if($statis['rating_type'] == '2'){//时间会员 $addjobnum = '1'; $spviewNum = '1'; }else if($statis['rating_type'] == '1'){//套餐会员 $addjobnum = $statis['job_num'] > 0 ? '1' : '2'; $spviewNum = $statis['spview_num'] > 0 ? '1' : '2'; }else{ // 过期 $addjobnum = '0'; $spviewNum = '0'; } }else { // 过期 $addjobnum = '0'; $spviewNum = '0'; } if($statis['rating'] > 0){ if($statis['vip_etime'] && isVip($statis['vip_etime'])){ $statis['days'] = round(($statis['vip_etime']-time())/3600/24) ; } } $statis['addjobnum'] = $addjobnum; $statis['spviewNum'] = $spviewNum; $statis['pay_format'] = number_format($statis['pay'],2); $statis['integral_format'] = number_format($statis['integral']); return $statis; } function vipLtOver($uid, $usertype = null){ $statis = $this -> select_once('lt_statis',array('uid'=>$uid)); if($statis['rating']){ $rating = $this->select_once('company_rating',array('id'=>$statis['rating'],'category'=>'2')); } if($statis['vip_etime'] && !isVip($statis['vip_etime'])){//过期会员 if($this->config['lt_vip_done']=='0'){//会员到期,变为过期会员 // 会员等级未清0的才需要处理,不加此判断,过期的猎头,调用会重复处理 if ($statis['rating'] > 0){ $data = array( 'lt_job_num' => 0, 'lt_breakjob_num' => 0, 'lt_down_resume' => 0, 'chat_num' => 0, 'rating_name' => '过期会员', 'rating_type' => 0, 'rating' => 0 ); $this -> update_once('lt_statis',$data,array('uid'=>$uid)); } // 过期会员,会员模式、会员等级清0 $statis['rating_name'] = '过期会员'; $statis['rating_type'] = '0'; $statis['rating'] = '0'; }else{//会员到期,--变为系统默认会员 //修改会员等级 require_once 'rating.model.php'; $ratingM = new rating_model($this->db, $this->def); $rat_value = $ratingM->ltratingInfo($this->config['lt_vip_done'],$uid); $this -> update_once('lt_statis',$rat_value,array('uid'=>$uid)); } } if(isVip($statis['vip_etime'])){ if($statis['rating_type'] =='2'){ $addltjobnum = '1'; }else if($statis['rating_type']=='1'){ if($statis['lt_job_num'] > 0){ $addltjobnum = '1'; }else{ $addltjobnum = '2'; } }else{ $addltjobnum = '0'; } }else { $addltjobnum = '0'; } $statis['integral_format'] = number_format($statis['integral']); $statis['addltjobnum'] = $addltjobnum; return $statis; } /* * */ function getCom($data=array()) { $uid = intval($data['uid']); $usertype = intval($data['usertype']); $jobnum = intval($data['jobnum'])?intval($data['jobnum']):1; $statis = $this -> getInfo($uid,array('usertype' =>$usertype)); if ($statis['uid'] == '') { $statis = $this->vipOver($uid, 2); } if ($statis['rating_type'] == '' && $statis['rating']) { $rating = $this -> select_once('company_rating',array('id'=>$statis['rating']),'`type`'); $this -> upInfo(array('rating_type' => $rating['type']), array('usertype' => $usertype, 'uid' => $uid)); $statis['rating_type'] = $rating['type']; } if ($statis['rating_type'] && $statis['rating']) { if ($statis['rating_type'] == '1' && $statis['job_num'] >= $jobnum && isVip($statis['vip_etime'])) { $arr = array( 'job_num' => array('-', $jobnum) ); } elseif ($statis['rating_type'] == '2' && isVip($statis['vip_etime'])) { if($data['upstatus']==1){//上架职位专用判断 require_once ('company.model.php'); $companyM = new company_model($this->db, $this->def); $dcReturn = $companyM->comVipDayActionCheck('jobnum',$uid); if($dcReturn['status']==-1){ return array('msg'=>$dcReturn['msg'],'errcode' => 8); }else if($dcReturn['status']==1){ if($dcReturn['restnum']<$jobnum){ return array('msg'=>'您当天发布职位数量还剩'.$dcReturn['restnum'].'个,不足以上架'.$jobnum.'个职位!','errcode' => 8); }else{ return array('rating_type'=>'2','errcode' => 9); } } }else{ $arr = null; } } else { return array('msg'=>'你的套餐已用完!','errcode' => 8); } if ($arr) { $this -> upInfo($arr, array('uid' => $uid, 'usertype' => $usertype)); } } else { return array('msg'=>'你的会员已经到期,请先购买会员!','errcode'=>8); } } function getLtCom($type,$data=array()){ $statis = $this->vipLtOver($data['uid']); if($statis['rating_type']&&$statis['rating']){ $arr = array(); if($type==1){ if($statis['rating_type']=='1' && $statis['lt_job_num']>0 && isVip($statis['vip_etime'])){ $arr['lt_job_num'] = array('-','1'); }elseif($statis['rating_type']=='2' && isVip($statis['vip_etime'])){ //未过期或者永久时间会员 $value=null; }else{ return array('msg'=>'会员套餐已用完!','errcode'=>8); } }elseif($type==3){ if($statis['rating_type']=='1' && $statis['lt_breakjob_num']>0 && isVip($statis['vip_etime'])){ $arr['lt_breakjob_num']= array('-','1'); }elseif($statis['rating_type']=='2' && isVip($statis['vip_etime'])){//未过期或者永久时间会员 $value=null; }else{ return array('msg'=>'会员套餐已用完!','errcode'=>8); } } if($arr){ $this->update_once('lt_statis',$arr,array('uid'=>$data['uid'])); } }else{ return array('msg'=>'会员已到期!','errcode'=>8); } } /** * @desc 分配子账号的套餐数据 * @param int $data['uid'] 主账号 * @param int $data['spid'] 子账号 * @param 其他分配的参数 job_num:发布职位数 resume:下载简历数 interview:邀请人才面试数 * breakjob_num:刷新职位数 part_num:发布兼职职位 breakpart_num:刷新兼职职位 * lt_job_num:发布猎头职位 lt_breakjob_num:刷新猎头职位 lt_resume:下载优质简历 * zph_num:招聘会报名次数 * * 2019-06-27 暂时只支持企业主账号分配给子账号套餐 */ public function assignChildStatis($data = array()){ $res = array( 'ecode' => 0, 'msg' => '' ); if(empty($data['spid']) || empty($data['uid'])){ $res = array( 'ecode' => 1, 'msg' => '缺少uid' ); return $res; } $accountInfo = $this -> select_once('company_account', array('uid' => $data['spid']), '`uid`'); if(empty($accountInfo)){ $res = array( 'ecode' => 2, 'msg' => '子账号信息错误' ); return $res; } //获取主账号的套餐数据 $fatherData = $this -> getInfo($data['uid'], array('usertype' => 2)); if(empty($fatherData)){ $res = array( 'ecode' => 2, 'msg' => '主账号套餐信息错误' ); return $res; } //获取子账号的套餐数据 $oldSonData = $this -> getInfo($data['spid'], array('usertype' => 2)); if(empty($oldSonData)){ $res = array( 'ecode' => 2, 'msg' => '子账号套餐信息错误' ); return $res; } //分配的套餐字段 if($fatherData['rating_type'] == 1){ $assignField = array( 'job_num', 'breakjob_num', 'down_resume', 'invite_resume', 'zph_num', 'top_num', 'urgent_num', 'rec_num', 'sons_num', 'chat_num' ); }else if($fatherData['rating_type'] == 2){ $assignField = array( 'top_num', 'urgent_num', 'rec_num', 'sons_num', 'chat_num' ); } //主账号的数量大于分配的数量 $fatherRemain = $errorfield = $sonData = array(); foreach ($assignField as $assV) { $data[$assV] = floor($data[$assV]); //if(bccomp($fatherData[$assV], bcadd($data[$assV], $oldSonData[$assV]), 2) != -1){ if(bccomp($fatherData[$assV], $data[$assV], 2) != -1){ $fatherRemain[$assV] = bcsub($fatherData[$assV], $data[$assV]); $sonData[$assV] = array('+', $data[$assV]); }else{ $errorfield[] = $assV; } } if(!empty($errorfield) || empty($fatherRemain)){ $res = array( 'ecode' => 3, 'msg' => '分配的数量大于主账号的数量无法分配' ); return $res; } //修改主账号的套餐数量 $updId = $this -> update_once('company_statis', $fatherRemain, array('uid' => $data['uid'])); if(empty($updId)){ $res = array( 'ecode' => 4, 'msg' => '修改主账号数量错误' ); return $res; } //此会员为时间模式时,如果子账号分配的数量为0,则以主账号的数据为准 if($fatherData['rating_type'] == 2){ $timeField = array( 'job_num', 'breakjob_num', 'down_resume', 'invite_resume', 'zph_num' ); foreach ($timeField as $timeV) { if(empty($data[$timeV])){ $sonData[$timeV] = $fatherData[$timeV]; } } } //补充主账号的信息 $sonData['rating'] = $fatherData['rating']; $sonData['rating_name'] = $fatherData['rating_name']; $sonData['rating_type'] = $fatherData['rating_type']; $sonData['vip_stime'] = $fatherData['vip_stime']; $sonData['vip_etime'] = $fatherData['vip_etime']; //修改子账号数据 $sonId = $this -> update_once('company_statis', $sonData, array('uid' => $data['spid'])); //返回数据 if(empty($sonId)){ $res = array( 'ecode' => 8, 'msg' => '分配失败' ); }else{ $res = array( 'ecode' => 9, 'msg' => '分配成功' ); //增加会员日志 require_once ('log.model.php'); $LogM = new log_model($this->db, $this->def); $LogM -> addMemberLog($data['pid'], 2, '子账号uid:'.$data['uid'].'分配套餐成功', 27, 1); } return $res; } /** * 计划任务:会员到期自动下架职位 * data['unit'] all 传入此值时,更新全部会员 */ function setVipedupjob($data = array()){ $time = date('Y-m-d',strtotime('-7 day')); $endtime = strtotime($time.' 23:59:59'); $statisWhere['PHPYUNBTWSTART_A'] = ''; if(isset($data['unit']) && $data['unit'] == 'all'){ $statisWhere['vip_etime'][] = array('>', 0, 'AND'); }else{ $statisWhere['vip_etime'][] = array('>=', $endtime, 'AND'); } $statisWhere['vip_etime'][] = array('<=', strtotime('today'), 'AND'); $statisWhere['PHPYUNBTWEND_A'] = ''; $num = $this -> select_num('company_statis', $statisWhere); if ($num>0){ $comstatis = $this -> select_all('company_statis', $statisWhere ,'`uid`,`vip_etime`,`rating_name`'); if(is_array($comstatis)){ foreach($comstatis as $key=>$value){ $uid[] = $value['uid']; } $where = array(); $where['uid'] = array('in',pylode(',', $uid)); $where['status'] = array('<>', 1); $where['r_status'] = array('<>', 4); $jobnum = $this -> select_num('company_job', $where); for($i=1; $i<=ceil($jobnum/500); $i++){ $where['limit'] = array((($i-1)*500),($i*500)); $jobids = array(); $joblist = $this -> select_all('company_job', $where, '`id`,`uid`,`name`'); foreach($joblist as $k=>$v){ $jobids[]=$v['id']; } $this -> update_once('company_job', array('status' => 1), array('id'=>array('in', pylode(',',$jobids)))); } } } } /** * @desc 获取某一个参数是否可用;激活子账号 * * @param int $data['uid'] * @param int $data['spid'] 激活子账号UID * @param string $data['item'] * item值 job_num:职位数 breakjob_num:刷新职位数 down_resume:下载简历数 invite_resume:邀请面试数 zph_num:邀请面试数 sons_num:子账号数量 top_num:置顶数 urgent_num:紧急数 rec_num:推荐数 * */ public function getItemUseCondition($data = array()){ $res = array( 'ecode' => 8, 'msg' => '' ); $uid = intval($data['uid']); $spid = intval($data['spid']); if(empty($uid)){ $res['msg'] = '缺少uid'; return $res; } if(empty($data['item'])){ $res['msg'] = '缺少参数项'; return $res; } //参数项对应单独购买时的参数 $buyItems = array( 'sons_num' => 'integral_sons_num' ); //时间模式时需要计算每日最大数量的参数项 $dayItems = array( 'job_num', 'breakjob_num', 'down_resume', 'invite_resume', 'zph_num' ); //按次数统计的参数项 $numItems = array( 'top_num', 'urgent_num', 'rec_num', 'sons_num' ); //获取uid的statis数据 $statis = $this -> getInfo($uid, array('usertype' => 2)); if(empty($statis) || !isset($statis[$data['item']])){ $res['msg'] = '数据错误'; return $res; } //判断使用支付的模式 $payType = 'normal'; if($this -> config['com_integral_online'] == 4){ $payType = 'vip'; }elseif ($this -> config['com_integral_online'] == 3) { $payType = !in_array('createson', explode(',', $this->config['sy_only_price'])) ? 'integral' : 'money'; }elseif ($this -> config['com_integral_online'] == 2) { $payType = 'money'; } $res['ecode'] = 55; $res['data']['paytype'] = $payType; $res['data']['payunit'] = $payType == 'integral' ? $this -> config['integral_pricename'] : '元'; $payMoney = 0; if(array_key_exists($data['item'], $buyItems)){ $payMoney = $this -> config[$buyItems[$data['item']]]; } //过期会员 if(!isVip($statis['vip_etime'])){ $res['msg'] = '您的会员已到期'; $res['data']['paymoney'] = $this -> calculateMoney($payMoney, $payType); return $res; } $remainNum = $statis[$data['item']]; //判断后台是否开启该单项购买 $single_can = @explode(',', $this->config['com_single_can']); $serverOpen = 1; if(!in_array('createson',$single_can)){ $serverOpen = 0; } //没有过期时数量判断,1为套餐模式,2为时间模式 if($statis['rating_type'] == 1 || in_array($data['item'], $numItems)){ if($statis[$data['item']] < 1){ $res['data']['paymoney'] = $this -> calculateMoney($payMoney, $payType); if($serverOpen){ $res['msg'] = '很抱歉,您的套餐数量已用完,继续操作将会消费 '.$res['data']['paymoney'].' '.$res['data']['payunit']; }else{ $res['msg'] = '您的套餐数量已用完,请前往购买会员'; } return $res; } }elseif ($statis['rating_type'] == 2) { //参数项的值大于0时,需要去计算每日已经使用的数量,$dayUsedNum 需要去对应的方法去计算 if(in_array($data['item'], $dayItems) && $statis[$data['item']] > 0){ $dayUsedNum = 0; if($dayUsedNum >= $statis[$data['item']]){ $res['msg'] = '已超过每日最大操作次数'; $res['data']['paymoney'] = $this -> calculateMoney($payMoney, $payType); return $res; } } } if (!empty($spid)) { $this->update_once('member', array('status' => '1', 'lock_info' => ''), array('uid' => $spid)); $staisInfo = $this->getInfo($uid, array('usertype' => 2, 'field' => '`sons_num`')); if(!empty($staisInfo) && $staisInfo['sons_num'] > 0){ $this -> upInfo(array('sons_num' => array('-', 1)), array('usertype' => 2, 'uid' => $uid)); } $res = array( 'ecode' => 9, 'msg' => '子账号激活成功' ); }else { $res = array( 'ecode' => 9, 'msg' => 'ok', 'data' => array('remain' => $remainNum) ); } return $res; } /** * 计算金额 */ private function calculateMoney($payMoney, $payType){ if($payType == 'integral'){ $payMoney = bcmul($payMoney, $this -> config['integral_proportion'], 2); } return floatval($payMoney); } public function getStatisTotal($timeBegin, $timeEnd,$userType){ //调用MODEL require_once ('companyorder.model.php'); $CompanyorderM = new companyorder_model($this->db, $this->def); require_once ('pack.model.php'); $PackM = new pack_model($this->db, $this->def); if($userType){ require_once ('userinfo.model.php'); $UserinfoM = new userinfo_model($this->db, $this->def); $memberwhere['usertype'] = $userType; $member = $UserinfoM->getList($memberwhere,array('field'=>'`uid`')); foreach($member as $val){ $uidArr[] = $val['uid']; } $uidStr = implode(',', $uidArr); $where['uid'] = array('in',pylode(',',$uidStr)); $mwhere['uid'] = array('in',pylode(',',$uidStr)); } $where['order_state'] = 2; if($timeBegin !=''){ $where['order_time'][] = array('>=', $timeBegin); $where['order_time'][] = array('<=', $timeEnd,'AND'); } $field = 'sum(order_price) as `num`'; $row = $CompanyorderM->getList($where,array('field'=>$field)); $in = isset($row[0]['num']) && $row[0]['num'] > 0 ? $row[0]['num'] : 0; $mwhere['order_state'] = 1; if($timeBegin != ''){ $mwhere['time'][] = array('>=', $timeBegin); $mwhere['time'][] = array('<=', $timeEnd,'AND'); } $mfield = 'sum(order_price) as `num`'; $mrow = $PackM->getList($mwhere,array('field'=>$mfield)); $out = isset($mrow[0]['num']) && $mrow[0]['num'] > 0 ? $mrow[0]['num'] : 0; $net_income = $in - $out; return array($in, $out, $net_income); } /** * 计划任务:会员到期自动变更会员等级 * data['unit'] all 传入此值时,更新全部会员 */ function setViped(){ $statisWhere['PHPYUNBTWSTART_A'] = ''; $statisWhere['vip_etime'][] = array('>', 0, 'AND'); $statisWhere['vip_etime'][] = array('<=', strtotime('today')); $statisWhere['PHPYUNBTWEND_A'] = ''; $statisWhere['rating'] = array('>', 0); $num = $this -> select_num('company_statis', $statisWhere); if ($num>0){ $comstatis = $this -> select_all('company_statis', $statisWhere ,'`uid`'); if(is_array($comstatis)){ foreach($comstatis as $value){ $uid[] = $value['uid']; } // 查询并清掉暂停的企业 $cuid = array(); $comList = $this -> select_all('company', array('uid' => array('in',pylode(',', $uid))), '`uid`,`r_status`'); foreach ($comList as $v){ if ($v['r_status'] == 4){ $cuid[] = $v['uid']; } } if (!empty($cuid)){ foreach($comstatis as $key=>$value){ if (in_array($value['uid'], $cuid)){ unset($comstatis[$key]); } } } // 查询并清掉暂停的企业 end if (!empty($comstatis)){ $euid = array(); foreach($comstatis as $value){ $euid[] = $value['uid']; } // 提前获取要批量设置的会员等级 if($this->config['com_vip_done'] != '0'){ $rating = $this->select_once('company_rating', array('id'=>$this->config['com_vip_done'],'category' => 1)); } $cnum = count($comstatis); $limit = 200; $where = array( 'uid' => array('in',pylode(',', $euid)) ); for($i=1; $i<=ceil($cnum/$limit); $i++){ $where['limit'] = array((($i-1)*$limit),($i*$limit)); $suids = array(); $statislist = $this -> select_all('company_statis', $where, '`uid`,`rating_name`'); foreach($statislist as $val){ $suids[] = $val['uid']; } // 查询是否有子账号 $spids = array(); $sonList = $this -> select_all('company_account', array('comid' => array('in',pylode(',', $suids))), '`uid`'); if (!empty($sonList) && is_array($sonList)) { foreach ($sonList as $v){ $spids[] = $v['uid']; } } // 过期会员清空批量处理 if($this->config['com_vip_done'] == '0'){ $data = array( 'job_num' => '0', 'breakjob_num' => '0', 'down_resume' => '0', 'invite_resume' => '0', 'zph_num' => '0', 'top_num' => '0', 'rec_num' => '0', 'urgent_num' => '0', 'sons_num' => '0', 'chat_num' => '0', 'spview_num' => '0', 'rating_name' => '过期会员', 'rating_type' => '0', 'rating' => '0' ); $this -> update_once('company_statis', $data, array('uid' => array('in',pylode(',', $suids)))); $this -> update_once('company', array('rating'=>$data['rating'], 'rating_name'=>$data['rating_name']), array('uid' => array('in',pylode(',', $suids)))); $upJobArr = array('rating'=>0); //会员到期职位下架 if($this -> config['jobunder'] == '1'){ $upJobArr['status'] = 1; } $this -> update_once('company_job', $upJobArr, array('uid' => array('in',pylode(',', $suids)))); // 清空子账号套餐数据 if(!empty($spids)){ $this -> update_once('company_statis', $data, array('uid' => array('in', pylode(',', $spids)))); $this -> update_once('member', array('status'=>2, 'lock_info'=>'会员主体到期,子账号锁定'), array('uid' => array('in', pylode(',', $spids)), 'usertype' => 2)); } }elseif (!empty($rating)){ $rat_value = array( 'job_num' => $rating['job_num'], 'breakjob_num' => $rating['breakjob_num'], 'down_resume' => $rating['resume'], 'invite_resume' => $rating['interview'], 'zph_num' => $rating['zph_num'], 'top_num' => $rating['top_num'], 'rec_num' => $rating['rec_num'], 'urgent_num' => $rating['urgent_num'], 'sons_num' => $rating['sons_num'], 'chat_num' => $rating['chat_num'], 'spview_num' => $rating['spview_num'], 'rating_name' => $rating['name'], 'rating_type' => $rating['type'], 'rating' => $rating['id'], 'vip_stime' => time() ); // 会员等级到期时间。服务有效时间为0的是永久,不需要到期时间 if ($rating['service_time'] > 0){ $rat_value['vip_etime'] = time() + 86400 * $rating['service_time']; }else{ $rat_value['vip_etime'] = 0; } $this -> update_once('company_statis', $rat_value, array('uid' => array('in',pylode(',', $suids)))); $this -> update_once('company_job', array('rating' => $rating['id'], 'uid' => array('in',pylode(',', $suids)))); $this -> update_once('company', array('rating' => $rating['id'],'rating_name' => $rating['name']), array('uid' => array('in',pylode(',', $suids)))); // 清空子账号套餐数据 if(!empty($spids)){ $sData = array( 'job_num' => 0, 'breakjob_num' => 0, 'down_resume' => 0, 'invite_resume' => 0, 'zph_num' => 0, 'top_num' => 0, 'rec_num' => 0, 'urgent_num' => 0, 'sons_num' => 0, 'chat_num' => 0, 'spview_num' => 0, 'rating_name' => $rating['name'], 'rating_type' => $rating['type'], 'rating' => $rating['id'] ); $this -> update_once('company_statis', $sData, array('uid' => array('in', pylode(',', $spids)))); $this -> update_once('member', array('status' => 2, 'lock_info' => '会员主体到期,子账号锁定'), array('uid' => array('in', pylode(',', $spids)), 'usertype' => 2)); } } } } } } // 处理猎头 $lwhere = array( 'vip_etime' => array('<', strtotime('today')), 'rating' => array('>', 0) ); $num = $this->select_num('lt_statis', $lwhere); if ($num > 0){ $ltStatis = $this->select_all('lt_statis', $lwhere ,'`uid`'); $uid = array(); foreach ($ltStatis as $v){ $uid[] = $v['uid']; } //会员到期,变为过期会员 if($this->config['lt_vip_done']=='0'){ $data = array( 'lt_job_num' => 0, 'lt_breakjob_num' => 0, 'lt_down_resume' => 0, 'chat_num' => 0, 'rating_name' => '过期会员', 'rating_type' => 0, 'rating' => 0 ); $this -> update_once('lt_statis',$data,array('uid'=>array('in',pylode(',', $uid)))); }else{ $ltrating = $this->select_once('company_rating', array('id'=>$this->config['lt_vip_done'],'category' => 2)); if (!empty($ltrating)){ $rat_value = array( 'lt_job_num' => $ltrating['lt_job_num'], 'lt_breakjob_num' => $ltrating['lt_breakjob_num'], 'lt_down_resume' => $ltrating['lt_resume'], 'chat_num' => $ltrating['chat_num'], 'rating_name' => $ltrating['name'], 'rating_type' => $ltrating['type'], 'rating' => $ltrating['id'], 'vip_etime' => time() + 86400 * $ltrating['service_time'], 'vip_stime' => time() ); $this -> update_once('lt_statis',$rat_value,array('uid'=>array('in',pylode(',', $uid)))); } } } } } ?>