jobsService = $jobsService; $this->companyService = $companyService; $this->jobfairService = $jobfairService; $this->personService = $personService; $this->registerService = $registerService; $this->membersSetmealService = $membersSetmealService; $this->emailService = $emailService; $this->taskService = $taskService; $this->setmealService = $setmealService; $this->setmealIncrementsService = $setmealIncrementsService; $this->memberPointService = $memberPointService; $this->paymentService = $paymentService; $this->payService = $payService; $this->orderService = $orderService; $this->serviceService = $serviceService; $this->hash = 'e@LJ9V9YmCm3#CJr'; } //企业会员登录 public function companyLogin(Request $request) { $token = $request->input('token'); $auth_success = $this->check_auth($token); if (!$auth_success) { $data = ['status'=>'0','msg'=>'验证失败']; return response()->json($data); } $company_id = $request->input('uid', 0); if (!$company_id) { return false; } $company = $this->companyService->getCompany($company_id); if (!$company) { $data = ['status'=>'0','msg'=>'企业不存在']; return response()->json($data); } $key=uniqid(); Cache::put($key, $company, 1); $url=route('auth.thirdlogin.background', ['ticket' => $key])."?redirect_url=".urlencode(route('com.index')); return redirect($url); } public function check_auth($token){ $auth_success = false; if ($token) { if ($this->decrypt($token, $this->hash) == $this->hash) { $auth_success = true; } } return $auth_success; } public function decrypt($txt, $key = '_qscms') { // $txt 的结果为加密后的字串经过 base64 解码,然后与私有密匙一起, // 经过 passport_key() 函数处理后的返回值 $txt = $this->passport_key(base64_decode($txt), $key); // 变量初始化 $tmp = ''; // for 循环,$i 为从 0 开始,到小于 $txt 字串长度的整数 for ($i = 0; $i < strlen($txt); $i++) { // $tmp 字串在末尾增加一位,其内容为 $txt 的第 $i 位, // 与 $txt 的第 $i + 1 位取异或。然后 $i = $i + 1 $tmp .= $txt[$i] ^ $txt[++$i]; } // 返回 $tmp 的值作为结果 return $tmp; } /** * Passport 密匙处理函数 * * @param string 待加密或待解密的字串 * @param string 私有密匙(用于解密和加密) * * @return string 处理后的密匙 */ function passport_key($txt, $encrypt_key) { // 将 $encrypt_key 赋为 $encrypt_key 经 md5() 后的值 $encrypt_key = md5($encrypt_key); // 变量初始化 $ctr = 0; $tmp = ''; // for 循环,$i 为从 0 开始,到小于 $txt 字串长度的整数 for($i = 0; $i < strlen($txt); $i++) { // 如果 $ctr = $encrypt_key 的长度,则 $ctr 清零 $ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr; // $tmp 字串在末尾增加一位,其内容为 $txt 的第 $i 位, // 与 $encrypt_key 的第 $ctr + 1 位取异或。然后 $ctr = $ctr + 1 $tmp .= $txt[$i] ^ $encrypt_key[$ctr++]; } // 返回 $tmp 的值作为结果 return $tmp; } public function getApplys() { $data = ['status'=>'1','msg'=>['Aio','Analyze','Crm','Daping','Jobfair']]; return response()->json($data); } //获取企业职位信息 public function getjobs(Request $request) { $uid = $request->input('com_id'); $audit = $request->input('audit', 0); $jobtype = $request->input('jobtype', 0); $limit = $request->input('limit', ''); $offset = $request->input('offset'); $order_by = 'field(audit,2) desc, id desc'; $map = []; if($audit){ $map[] = ['audit','=',$audit]; } /*$map['valid'] = 1; $map['display'] = 1;*/ $where_in = []; if($uid){ $where_in = ['company_id'=>array($uid)]; } $rst = $this->jobsService->getJobs($map, $where_in, $order_by, '', $offset, $limit); if ($rst) { $list = []; if ($rst->isNotEmpty()) { $list = $this->jobsService->dealjobFilelds($rst); } return response()->json(['status'=>1,'msg'=>['list'=>$list]]); } else { return response()->json(['status'=>0,'msg'=>'查询失败']); } } //获取企业预约刷新的职位 public function getJobRefresh(Request $request) { $uid = $request->input('com_uid', 0); $type = $request->input('type', 1); $return_data = []; if($uid && $type){ $where = array('uid'=>$uid,'type'=>$type); $res = $this->jobsService->getAutoRefreshJobs($where, 'pid'); if ($res->isNotEmpty()) { $return_data = $res->toArray(); } } return response()->json(['status'=>1,'msg'=>$return_data]); } //获取招聘会参会企业 public function jobfairExhibitors(Request $request) { $com_ids = $request->input('com_id'); $rst = $this->jobfairService->getJobfairExhibitors($com_ids, $request->all()); return response()->json(['status'=>1,'msg'=>$rst]); } //审核招聘会展位预定 public function auditJobfairExhibitor(Request $request) { $rst = $request->all(); $rst = $this->jobfairService->auditExhibitors($request->all()); return response()->json($rst); } //获取招聘会职位信息 public function getJobfairJobs(Request $request) { $rst = $this->jobfairService->getJobs($request->all()); return response()->json(['status'=>1,'msg'=>['list'=>$rst]]); } //获取招聘会详细信息 public function getJobfairInfo(Request $request) { $id = $request->input('id', 0); if(!$id){ return response()->json(['status'=>0,'msg'=>'招聘会编号不正确!']); } $info = $this->jobfairService->getJobfairInfo([['id','=',$id]]); if (!$info) { return response()->json(['status'=>0,'msg'=>'招聘会编号不正确!']); } return response()->json(['status'=>1,'msg'=>$info]); } //企业认证 public function companyAudit(Request $request) { $ids = $request->id; if (!$ids) { return response()->json(['status'=>0,'msg'=>'请选择要审核的企业']); } $rst = $this->companyService->auditCompany($request->all()); return response()->json($rst); } //获取职位详细信息 public function getJobInfo(Request $request) { $id = $request->input('id', 0); if (!$id) { return response()->json(['status'=>0,'msg'=>'职位id不正确!']); } $jtype = $request->input('jtype', ''); if ($jtype == 'network') { //网络职位信息 $info = $this->jobsService->getJobInfo($id); return response()->json($info); } elseif ($jtype == 'jobFair') { //招聘会职位信息 $info = $this->jobfairService->getJobInfo($id); return response()->json($info); } else { return response()->json(['status'=>0,'msg'=>'参数错误']); } } //审核网络职位 public function auditJobs(Request $request) { //审核职位、刷新职位 $rst = $this->jobsService->auditJobs($request->all()); return response()->json($rst); } //审核招聘会职位 public function auditFairJobs(Request $request) { $rst =$this->jobfairService->auditJobs($request->all()); return response()->json($rst); } //获取网络职位数量 public function jobNums(Request $request){ $uid = $request->input('com_id', 0); $audit = $request->input('audit', 0); $jobtype = $request->input('jobtype', 0); $map = []; if($audit){ $map[] = ['audit','=',$audit]; } $whereIn = []; if ($uid) { $whereIn['company_id'] = explode(',', $uid); } $num = $this->jobsService->getJobNums($map, $whereIn); if ($num !== false) { return response()->json(['status'=>1,'msg'=>['total'=>$num]]); } else { return response()->json(['status'=>0,'msg'=>'查询失败']); } } //获取在招职位数量 public function validJobNums(Request $request) { $uid = $request->input('com_id', 0); $map = []; if (config('aix.companyset.comset.show_set.jobs_display')==1) { $map[] = array('audit','=',1); } else { $map[] = array('audit','<>',3); } $whereIn = []; if ($uid) { $whereIn['company_id'] = explode(',', $uid); } $num = $this->jobsService->getJobNums($map, $whereIn); if ($num !== false) { return response()->json(['status'=>1,'msg'=>['total'=>$num]]); } else { return response()->json(['status'=>0,'msg'=>'查询失败']); } } //获取招聘会职位数量 public function fairjobsNums(Request $request) { $uid = $request->input('com_id', 0); $audit = $request->input('audit', 0); $map = []; if($audit){ $map[] = ['audit','=',$audit]; } $whereIn = []; if ($uid) { $whereIn['company_id'] = $uid; } $num = $this->jobfairService->getJobNums($map, $whereIn); if ($num !== false) { return response()->json(['status'=>1,'msg'=>['total'=>$num]]); } else { return response()->json(['status'=>0,'msg'=>'查询失败']); } } //获取招聘会预定数量 public function jobfairExhibitorsNum(Request $request) { $rst = $this->jobfairService->getJobfairExhibitorNums($request->all()); return response()->json($rst); } //获取简历信息 public function getResume(Request $request) { $resume_id = $request->input('resume_id', 0); if (!$resume_id) { return response()->json(['status'=>0,'msg'=>'请选择简历!']); } $resume_info = $this->personService->getResume($resume_id); return response()->json($resume_info); } //审核简历 public function auditResume(Request $request) { $id = $request->input('id', 0); if (!$id) { return response()->json(['staus'=>0, 'msg'=>'请选择简历!']); } $id = explode(",", $id); $rst = $this->personService->auditResume($id, $request->all()); return response()->json($rst); } //获取付款方式 public function getPayments(){ } //添加企业会员 public function addCompany(Request $request) { $company=$this->registerService->registerCompany($request->all()); $this->membersSetmealService->addMemberSetmeal($company, config('aix.companyset.setmeal_com.setmeal_com_set.reg_service')); $company->uid = $company->id; $this->taskService->doUserTask($company, 17); $this->emailService->setAuthTag('company')->setCallback('App\Services\Company\CompanyService', 'sendAuthEmailHook', [$request->email, $company])->sendAuthMail($request->email, EmailService::TEMPLATE_VALIDATION); if ($company) { return response()->json(['status'=>1,'msg'=>$company]); } else { return response()->json(['status'=>0,'msg'=>'操作失败']); } } //处理订单 public function setOrder(Request $request) { //参数 $order_id = $request->input('id', 0); $notes = $request->input('notes', ''); if (!$order_id) { return response()->json(['status'=>0,'msg'=>'请选择订单!']); } //获取订单信息 $order = Order::where('id', $order_id)->first(); if ($order->is_pay != '1') { return response()->json(['status'=>0,'msg'=>'只有未付款订单可以确认收款!']); } $up_data['is_pay'] = 2; $up_data['out_trade_no'] = $order->oid; $up_data['notes'] = $notes; $up_data['admin_id'] = 0; $up_data['operate_time'] = date('Y-m-d H:i:s', time()); if (!$this->payService->offlineHook($up_data)) { return response()->json(['status'=>0,'msg'=>'订单操作失败!']); } return response()->json(['status'=>1,'msg'=>'订单操作成功!']); } //修改简历联系方式(手机和邮箱) //获取订单信息 public function getSetmealInfo($order_type,$setmeal_id=0) { switch($order_type){ case 1: $setmeal = $this->setmealService->getSetmealOne($setmeal_id); if ($setmeal) { return $setmeal->setmeal_name; } else { return '会员套餐'; } break; case 2: return '充值积分'; break; case 6: case 7: case 8: case 9: case 12: case 15: case 16: $rst = $this->setmealIncrementsService->getIncrement($setmeal_id); if ($rst) { return $rst->name; } else { return ''; } break; case 11: return '诚聘通'; break; case 10: return '企业模板'; break; default: return "CRM自定义类型订单"; break; } } public function getCat($order_type) { $cat = 'jobs'; switch($order_type){ case 5: $cat = 'tpl'; break; case 6: $cat = 'download_resume'; break; case 7: $cat = 'sms'; break; case 8: $cat = 'stick'; break; case 9: $cat = 'emergency'; break; case 12: $cat = 'auto_refresh_jobs'; break; case 15: $cat = "jobs"; break; case 16: $cat = "jobfair_num"; break; default: $cat = ""; break; } return $cat; } //添加企业订单 public function addCompanyOrder(Request $request) { $member_uid = $request->input('uid', 0); if(!$member_uid){ return response()->json(['status'=>0,'msg'=>'客户uid错误!']); } $order_type = $request->input('order_type', 0); if($order_type==1 || $order_type==6 || $order_type==7 || $order_type==8 || $order_type==9 || $order_type==12 || $order_type==15|| $order_type==16){ $setmeal_id = $request->input('setmeal_id', 0); if($setmeal_id==0){ return response()->json(['status'=>0,'msg'=>'请选择套餐!']); } $points = 0; }elseif($order_type==2){ $setmeal_id = 0; $points = $request->input('points', 0); if($points==0){ return response()->json(['status'=>0,'msg'=>'请填写充值积分数!']); } //判断是否开启积分充值功能 if (!config('aix.companyset.points.points_set.enable_com_buy_points')) { return response()->json(['status'=>0,'msg'=>'企业充值未开启,请联系网站管理员!']); } //判断充值数量是否大于最小值 if ($points < config('aix.companyset.points.points_set.com_buy_points_min')) { return response()->json(['status'=>0,'msg'=>'企业积分充值不能小于'.config('aix.companyset.points.points_set.com_buy_points_min').'!']); } } elseif ($order_type==10) { $setmeal_id = $request->input('setmeal_id', 0); if($setmeal_id==0){ return response()->json(['status'=>0,'msg'=>'请选择套餐!']); } $points = 0; //判断当前企业模板是否存在 $tpl_info = $this->companyService->getTpl($setmeal_id); if (!$tpl_info) { return response()->json(['status'=>0,'msg'=>'所选企业模板不存在!']); } //判断所选模板是否已购买 $company_tpl = $this->companyService->getCompanyTpl(['uid'=>$member_uid,'tplid'=>$setmeal_id]); if ($company_tpl) { return response()->json(['status'=>0,'msg'=>'所选企业模板已购买!']); } } else{ $setmeal_id = 0; $points = 0; } //职位置顶/职位紧急时判断是否选择了职位 if($order_type == 8 || $order_type == 9 || $order_type == 12){ $job_id = $request->input('job_id', 0); if(!$job_id){ return response()->json(['status'=>0,'msg'=>'请选择职位!']); } //判断职位是否已预约刷新 if($order_type == 12){ $promotion_field = $this->jobsService->getAutoRefresh(['pid'=>$job_id,'type'=>1]); if($promotion_field){ return response()->json(['status'=>0,'msg'=>'该职位已预约刷新!']); } } } $payment = $request->input('payment', ''); $payment_cn = $request->input('payment_cn', ''); if($payment=='' || $payment_cn==''){ return response()->json(['status'=>0,'msg'=>'请选择支付方式!']); } //获取服务名称 $setmeal_name = $this->getSetmealInfo($order_type,$setmeal_id); $amount = $request->input('amount', ''); if($amount==''){ return response()->json(['status'=>0,'msg'=>'请填写支付金额!']); } $ordtotal_fee = $request->input('ordtotal_fee', ''); if($ordtotal_fee==''){ return response()->json(['status'=>0,'msg'=>'请填写实付金额!']); } $uid = $request->input('uid', 0); if($uid==0){ return response()->json(['status'=>0,'msg'=>'请选择会员!']); } //订单类型是crm自定义 if(!array_key_exists($order_type, [1,2,3,4,5,6,7,8,9,10,12,13,14,15]) && $order_type!=15 && $order_type!=16){ $setmeal_name = $request->input('setmeal_name', ''); if(!$setmeal_name){ return response()->json(['status'=>0,'msg'=>'请选择订单类型!']); } } $description = '购买服务:'.$setmeal_name.';'.$payment_cn.$ordtotal_fee.'元'; $notes = $request->input('notes', ''); $cat = $this->getCat($order_type); //获取会员信息 $user = $this->companyService->getCompany($uid); $user->uid = $uid; $my_setmeal = $this->membersSetmealService->getUserSetmeal($user, '1'); //获取会员套餐信息 $my_point = $this->memberPointService->getPoints($user->id, 1); //获取会员积分信息 $increment_info = $this->setmealIncrementsService->getIncrement($setmeal_id); //获取所选简历增值包信息 //职位置顶、职位紧急、职位刷新、简历包、短信包 if ($order_type== 7 || $order_type== 8 || $order_type== 9 || $order_type== 12 || $order_type== 15 || $order_type== 16) { $my_discount = $this->setmealIncrementsService->getIncrementDiscountByArray($cat, $my_setmeal); //套餐折扣 $params = array(); if ($order_type != 15 && $order_type != 7 && $order_type != 16 ) { $params['jobs_id'] = $job_id; $params['days'] = $increment_info->value; $nowtime = time(); $params['starttime'] = $nowtime; for ($i=0; $i < $params['days']*4; $i++) { $timespace = 3600*6*$i; if($i+1==$params['days']*4){ $params['endtime'] = $nowtime+$timespace; } } } $callback = "App\Services\Common\OrderService.incrementSave"; $rst = $this->callCashPay($user, $my_setmeal, $my_point, $setmeal_name, $order_type, $payment, $ordtotal_fee, 0, 0, $description, $params, 0, $setmeal_id, '专享'.$my_discount.'折优惠', $notes, $callback); } elseif ($order_type == 2) { //积分充值 $params['points'] = $points; $params['cash'] = $ordtotal_fee; $params['rate'] = config('aix.companyset.points.points_set.payment_rate'); $callback = "App\Services\Common\OrderService.pointsSave"; $rst = $this->callCashPay($user, $my_setmeal, $my_point, $setmeal_name, $order_type, $payment, $ordtotal_fee, 0, 0, $description, $params, 0, $setmeal_id, '', $notes, $callback); } elseif ($order_type == 1) { //套餐 $params = [ 'setmeal_id'=>$setmeal_id, 'setmeal_name'=>$setmeal_name, 'company_id'=>$user->id, 'utype'=>$user->utype, 'companyname'=>$user->companyname, 'amount'=>$ordtotal_fee, 'points'=>$points, 'payment'=>$payment_cn, 'username'=>$user->username, 'subsite_id'=>$user->subsite_id, ]; $callback = "App\Services\Common\OrderService.updateCompany"; $rst = $this->callCashPay($user, $my_setmeal, $my_point, $setmeal_name, $order_type, $payment, $ordtotal_fee, 0, 0, $description, $params, 0, $setmeal_id, '', $notes, $callback); } elseif ($order_type == 10) { //企业模板 $callback = "App\Services\Common\OrderService.incrementTplUpdate"; $rst = $this->callCashPay($user, $my_setmeal, $my_point, $setmeal_name, $order_type, $payment, $ordtotal_fee, 0, 0, $description, '', 0, $setmeal_id, '', $notes, $callback); } else { //添加其他类型订单 - CRM自定义项目 $callback = "App\Services\Common\OrderService.crmOrderUpdate"; $rst = $this->callCashPay($user, $my_setmeal, $my_point, $setmeal_name, $order_type, $payment, $ordtotal_fee, 0, 0, $description, '', 0, $setmeal_id, '', $notes, $callback); } if ($rst['status'] == 0) { return response()->json(['status'=>1,'msg'=>$rst['msg']]); } return response()->json(['status'=>1,'msg'=>['order'=>$rst['order']]]); } //现金支付 public function callCashPay($user, $my_setmeal, $my_point, $setmeal_name, $order_pay_type, $payment_name = '', $amount = '0.0', $is_deductible, $deductible = 0, $description = '', $params = '', $points = 0, $stemeal = 0, $discount = '', $notes = '', $callback = "App\Services\Common\OrderService.orderPaid") { $paymenttpye = $this->paymentService->returnPayment($payment_name); //获取支付方式 if (!$paymenttpye) { return array( 'status'=>0, 'msg' => '支付方式错误!'); } if (!config("aix.system.pay.{$payment_name}.is_on")) { return array( 'status'=>0, 'msg' => "支付方式未开启!请联系客服电话:【".config('aix.system.pay.offline.service_tel')."】"); } $is_deductible=0; $type='pay'; $m_amount = $amount; $paysetarr['ordtotal_fee']=$m_amount; if ($description=='') { $description = '购买服务:'.$setmeal_name; } $description .= ';'.$paymenttpye->name.$paysetarr['ordtotal_fee'].'元'; $stime = time(); //生成订单 $order = $this->orderService->addOrder($user, $order_pay_type, $amount, $paysetarr['ordtotal_fee'], $deductible, $setmeal_name, $payment_name, $paymenttpye->name, $description, 1, $deductible, $stemeal, 0, serialize($params), $discount, $notes); $tradeNo = $this->payService->getTradeNo($order->id); if (!$this->serviceService->updateOid($order->id, $tradeNo)) { return array( 'status'=>0, 'msg' => '生成订单号失败!'); } $payOrder = new PayOrder(); $payOrder->trade_no = $tradeNo; $payOrder->subject = '购买'.$setmeal_name; $payOrder->detail = $description; $payOrder->price = round($m_amount, 2); $payOrder->callback = $callback; $payOrder->return_url = route('service.order.index'); $result = $this->payService->pay($payment_name, $type, $payOrder); return [ 'status'=>1, 'tradeNo'=>$tradeNo, 'url'=>route("service.order.detail",['id'=>$order->id]), 'order'=>$order ]; } //修改企业信息 public function updateCompany(Request $request) { $params = $request->except('_method', 'token'); $rst = $this->companyService->companySave($params); return response()->json($rst); } }