jobfairPersonSignedRepository = $jobfairPersonSignedRepository;
$this->jobfairPersonalJobsApplyRepository = $jobfairPersonalJobsApplyRepository;
$this->jobfairPersonalJopApplyService = $jobfairPersonalJopApplyService;
$this->jobfairPutJobRepository = $jobfairPutJobRepository;
$this->resumeRepository = $resumeRepository;
$this->memberInfoService = $memberInfoService;
$this->CategoryService = $CategoryService;
$this->memberInfoRepository = $memberInfoRepository;
$this->companyRepository = $companyRepository;
$this->resumeService = $resumeService;
$this->searchService = $searchService;
$this->companyDownResumeRepository = $companyDownResumeRepository;
$this->membersSetmealService = $membersSetmealService;
$this->companyDownResumeService = $companyDownResumeService;
$this->feedbackService = $feedbackService;
$this->jobsService = $jobsService;
$this->companyService = $companyService;
$this->setmealIncrementsService = $setmealIncrementsService;
$this->viewDownApplyRepository = $viewDownApplyRepository;
$this->personalJobsApplyRepository = $personalJobsApplyRepository;
$this->jobfairPutJobService = $jobfairPutJobService;
}
public function index()
{
return view('app.hardware.pad.interview.index',['title'=>'面试管理']);
}
//面试邀请列表(签到的人)
public function resume(Request $request)
{
$jobfair_id = session('floorplan_stands.jobfair_id');
$user = auth('web-company')->user();
$whereResumes = array_filter($request->all());
foreach ($whereResumes as $key=>$value) {
if($value == 'null')
{
unset($whereResumes[$key]);
}
}
$whereApply= [];
if(isset($whereResumes['page'])){
unset($whereResumes['page']);
}
$is_interview = '';
if(isset($whereResumes['is_interview'])){
$is_interview = $whereResumes['is_interview'];
unset($whereResumes['is_interview']);
$whereApply = [
'company_id'=>$user->id,
'jobfair_id'=>$jobfair_id,
];
}
$result = $this->jobfairPersonSignedRepository->getSignedInterview(['jobfairid'=>$jobfair_id,'utype'=>2],$whereResumes,$whereApply,$is_interview);
$where = [
'jobfair_id'=>$jobfair_id,
'company_id'=>$user->id,
];
foreach ($result as $key=>&$value){
$where['personal_uid'] = $value->uid;
$value['flag'] = $this->jobfairPersonalJobsApplyRepository->interviewFind($where);
//1.照片为空
//2.照片主动不显示
//3.照片审核不通过
//4.先审核后显示:照片不是审核通过的(不等于1)
$avatar_default = public_data_path('/data/upload/resource/no_photo_female.png');
if ($value->resumes->memberInfos->sex == 1) {
$avatar_default = public_data_path('/data/upload/resource/no_photo_male.png');
}
if ($value->resumes->memberInfos->images == '' || $value->resumes->memberInfos->display_images == 2 || $value->resumes->memberInfos->photo_audit == 0 || (config('aix.personal_set.per_set.show_set.resume_img_display') == 1 && $value->resumes->memberInfos->photo_audit != 2)) {
$value->resumes->photosrc = $avatar_default; //不显示
} else {
$value->resumes->photosrc = upload_asset($value->resumes->memberInfos->images); //显示
}
}
$param_array = array('education'=>'','experience'=>'','sex'=>'','nature'=>'','is_interview'=>'');
$params = array_merge($param_array,$request->all());
if($request->ajax())
{
if ($result->isNotEmpty()) {
return response()->json(['status'=>1,'data'=>view('app.hardware.pad.interview.ajax_resume_list', ['result'=>$result])->render()]);
}
return response()->json(['status'=>0]);
}
return view('app.hardware.pad.interview.resume',['title'=>'邀约面试','result' => $result,'params'=>$params]);
}
//投递或邀请操作
public function invitation(Request $request)
{
$user = auth('web-company')->user();
if ($request->method() == 'POST') {
$data['jobs_id'] = $request->input('job_id');
$this->jobfairPutJobService->isOwn( $data['jobs_id'],$user->id);
$data['personal_uid'] = $request->input('personal_uid');
$data['company_id'] = $user->id;
$data['position_id'] = session('floorplan_stands.id');
$data['jobfair_id'] = session('floorplan_stands.jobfair_id');
$data['is_apply'] = $request->input('is_apply',2);
if($res = $this->jobfairPersonalJobsApplyRepository->applyFind($data)) {
return response()->json(['status' => 0, 'msg' => '该用户已邀请或投递过该岗位']);
}
//获取他的默认简历id
if($request->input('resume_id')) {
$data['resume_id'] = $request->input('resume_id');
$data['is_apply'] = 1;
}else{
$reusme = $this->resumeRepository->getResumeInfo(['uid'=>$data['personal_uid']]);
$data['resume_id'] = $reusme->id;
$data['is_apply'] = 2;
}
$data['type'] = 2;
if($this->jobfairPersonalJobsApplyRepository->interviewAdd($data)) {
return response()->json(['status' => 1, 'msg' => '邀请成功']);
}
return response()->json(['status' => 0, 'msg' => '邀请失败']);
}
//获取在招职位
$exid = session('floorplan_stands.exid');
$jobfair_id = session('floorplan_stands.jobfair_id');
$jobs = $this->jobfairPutJobRepository->getJobfairJob($exid,$jobfair_id);
return response()->json(['status'=>1,'data'=>['html'=>view('app.hardware.pad.interview.ajax_resume', ['jobs'=>$jobs])->render()]]);
}
//刷二维码或身份证
public function delivery()
{
return view('app.hardware.pad.interview.delivery',['title'=>'接收简历']);
}
/**
* 简历详情
* @param $id
* @param Request $request
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
* @throws \App\Exceptions\ResponseException
*/
public function resumeShow($id,Request $request){
/**
* type:
* 1:正常流程,判断是否可以下载、邀请面试
* 2:直接邀请,不判断是否下载(已收到简历跳转)
* 3:直接邀请,不判断是否下载(面试邀请跳转)
* 4:只显示详情,不给任何操作
* 5:直接邀请,不判断是否下载(已收到简历跳转)
*/
$type = $request->input('type');
$res = $this->resumeService->padResumeShow($id,$type, '', getUser());
$this->putSeoData('resume', $res['resume']);
//获取在招职位
$exid = session('floorplan_stands.exid');
$jobfair_id = session('floorplan_stands.jobfair_id');
$jobs = $this->jobfairPutJobRepository->getJobfairJob($exid,$jobfair_id);
$html = '';
if(count($jobs) == 1) {
$job_id = current($jobs->toArray())['id'];
} elseif(count($jobs)>1){
$job_id = 0;
foreach ($jobs as $val){
$html .= "";
}
}else{
$job_id = -1;
}
$is_down = false;
if($type == 1)
{
$user = auth('web-company')->user();
if($this->companyDownResumeRepository->getDownResume(['resume_id'=>$id,'company_uid'=>$user->id]))
{
$is_down = true;
}else {
$is_down = false;
$member_setmeal = $this->membersSetmealService->getUserSetmeal($user, '1');
if($member_setmeal->show_apply_contact == 1)
{
$has = $this->personalJobsApplyRepository->checkJobsApply($id, $user->id);
if ($has) {
$is_down = true;
}
}
}
}
return view('app.hardware.pad.interview.resume_show', ['content'=>$res,'resume'=>$res['resume'],'html'=>$html,'job_id'=>$job_id,'type'=>$type,'is_down'=>$is_down]);
}
public function deliveryQrcode(Request $request){
$res = hashid_decode($request->hashid);
if(!$res){
return response()->json(['status'=>-1, 'msg'=>'二维码出错,请刷新重试...']);
}
$info = $this->memberInfoService->getInfo(['uid' => $res['id']]);
if(!$info){
return response()->json(['status'=>-1, 'msg'=>'二维码出错,请刷新重试...']);
}
$resumes = $this->resumeRepository->getSuccessResume($info['uid'],getResumeStatus());
if($resumes->isEmpty()){
$wxcode = '
暂无您的简历信息,请扫码创建简历!
).')
';
return response()->json(['status'=>0, 'msg'=>'暂无您的简历信息,请扫码创建简历!','wxcode'=>$wxcode]);
}
$html = '';
$html .= '';
foreach ($resumes as $value) {
$html .= '-
' . $value['title'] . ' ' . $value['intention_jobs'] .'
经验:' . $value['experience_cn'] . ' 学历:' . $value['education_cn'] . ' 所在地区:' . $value['district_cn'] . ' 更新时间:' . substr($value['updated_at'],0,10) . '
';
}
$html .= '
';
return response()->json(['status'=>1, 'msg'=>'成功','data'=>$resumes,'html'=>$html]);
}
public function deliveryCard(Request $request){
$id_card = $request->cardId;
$info = $this->memberInfoService->getInfo( ['id_card' => $id_card]);
$wxcode = '暂无您的简历信息,请扫码创建简历!
).')
';
if(!$info){
return response()->json(['status'=>0, 'msg'=>'暂无您的简历信息,请扫码创建简历!','wxcode'=>$wxcode]);
}
$resumes = $this->resumeRepository->getSuccessResume($info['uid'],getResumeStatus());
if($resumes->isEmpty()){
return response()->json(['status'=>0, 'msg'=>'暂无您的简历信息,请扫码创建简历!','wxcode'=>$wxcode]);
}
$html = '';
$html .= '';
foreach ($resumes as $value) {
$html .= '-
' . $value['title'] . ' ' . $value['intention_jobs'] .'
性别:' . $value['sex_cn'] . ' 经验:' . $value['experience_cn'] . ' 学历:' . $value['education_cn'] . ' 期望地区:' . $value['district_cn'] . ' 更新时间:' . $value['updated_at'] . '
';
}
$html .= '
';
return response()->json(['status'=>1, 'msg'=>'成功','data'=>$resumes,'html'=>$html]);
}
public function search(Request $request)
{
$data = array_filter($request->all());
if(isset($data['page'])){
$page = $data['page'];
unset($data['page']);
}
foreach ($data as $key=>$value)
{
if($value == 'null')
{
unset($data[$key]);
}else{
$where[] = array($key,'=',$value);
}
}
$order_by = array('stime'=>'desc', 'updated_at'=>'desc');
if (config('aix.personal_set.per_set.show_set.resume_display')=='1') {
$where[] = array('audit','=','2');
} else {
$where[] = array('audit','<>','0');
}
$where[] = array('display','=',1);
$where[] = array('subsite_ids','=',get_subsite_id());
$list = $this->searchService->search('Resume',$where,$order_by,'',10,$page ?? 1);
$user = auth('web-company')->user();
$member_setmeal = $this->membersSetmealService->getUserSetmeal($user, '1');
foreach ($list as &$value) {
if($this->companyDownResumeRepository->getDownResume(['resume_id'=>$value->id,'company_uid'=>$user->id]))
{
$value->is_down = true;
}else {
$value->is_down = false;
if($member_setmeal->show_apply_contact == 1)
{
$has = $this->personalJobsApplyRepository->checkJobsApply($value->id, $user->id);
if ($has) {
$value->is_down = true;
}
}
}
//1.照片为空
//2.照片主动不显示
//3.照片审核不通过
//4.先审核后显示:照片不是审核通过的(不等于1)
$avatar_default = public_data_path('/data/upload/resource/no_photo_female.png');
if ($value->memberInfos->sex == 1) {
$avatar_default = public_data_path('/data/upload/resource/no_photo_male.png');
}
if ($value->memberInfos->images == '' || $value->memberInfos->display_images == 2 || $value->memberInfos->photo_audit == 0 || (config('aix.personal_set.per_set.show_set.resume_img_display') == 1 && $value->memberInfos->photo_audit != 2)) {
$value->photosrc = $avatar_default; //不显示
} else {
$value->photosrc = upload_asset($value->memberInfos->images); //显示
}
}
$param_array = array('education'=>'','experience'=>'','sex'=>'','nature'=>'');
$params = array_merge($param_array,$request->all());
if($request->ajax())
{
if ($list->isNotEmpty()) {
return response()->json(['status'=>1,'data'=>view('app.hardware.pad.interview.ajax_search_list', ['list'=>$list])->render()]);
}
return response()->json(['status'=>0]);
}
return view('app.hardware.pad.interview.search',['title'=>'人才搜索','params'=>$params,'list'=>$list]);
}
public function searchDown(Request $request)
{
$resume_id = $request->input('rid');
if (!$resume_id) {
return response()->json(['status'=>0, 'msg'=>'请选择简历!']);
}
$rid = is_array($resume_id)?$resume_id:explode(",", $resume_id);
$resume_num =count($rid);
$user = auth('web-company')->user();
$member_setmeal = $this->membersSetmealService->getUserSetmeal($user, '1');
if ($request->method() == 'POST') {
$addarr['rid'] = $rid;
$rst = $this->companyDownResumeService->addDownResume($addarr, $user, $member_setmeal);
if (array_get($rst, 'status')==1) {
if ($resume_num == 1) {
if ($member_setmeal->download_resume > 0) {
$this->membersSetmealService->actionUserSetmeal($user->id, 'download_resume', 2); //修改会员套餐信息中的下载简历数量
$log_value = '下载简历【'.array_get($rst, 'msg')->resume_name.'】(简历id:'.$addarr['rid'][0].'),消耗简历下载数:1,套餐剩余:'.($member_setmeal->download_resume-1);
//添加会员日志
$member_log = array(
'uid' =>$user->id,
'utype' =>1,
'username' => $user->username,
'ip' => ip2long($request->getClientIp()),
'log_address'=>'本机地址'
);
$this->feedbackService->addMembersLog($member_log, '1012', $log_value);
}
}
}
return response()->json($rst);
} else {
//判断是否开通会员服务
if (!$member_setmeal) {
return response()->json(['status'=>0, 'msg'=>'您还没有开通服务,请开通!']);
}
//判断服务是否到期
if ($member_setmeal->expire == 1) {
return response()->json(['status'=>0, 'msg'=>'您的服务已经到期,请重新开通!']);
}
//后台简历下载设置判断
if (config('aix.personal_set.per_set.resume_download_set.down_resume_limit') == 1) {
//判断企业是否有通过审核的职位(已登录且有发布职位的企业)
$jobs_num = $this->jobsService->getAuditJobsNum($user->id);
if ($jobs_num==0) {
return response()->json(['status'=>0, 'msg'=>'你没有发布职位或职位审核未通过导致无法下载简历!']);
}
} elseif (config('aix.personal_set.per_set.resume_download_set.down_resume_limit') == 3) {
//判断是否是认证企业(已认证企业)
$company_info = $this->companyService->getInfoById($user);
if ($company_info && $company_info->audit != 1) {
return response()->json(['status'=>0, 'msg'=>'你的营业执照未通过认证导致无法下载简历!']);
}
}
if ($member_setmeal->download_resume_max > 0) { //判断当天简历下载数量是否已达上限
$downwhere = array(
array('down_addtime','>=',strtotime('today')),
array('down_addtime','<',strtotime('tomorrow')),
array('company_uid','=',$user->id)
);
$downnum = $this->companyDownResumeService->getCompanyDownResumeNum($downwhere); //获取当天企业已下载简历数
if ($resume_num>1 && $resume_num+$downnum > $member_setmeal->download_resume_max && $downnum < $member_setmeal->download_resume_max) {
return response()->json(['status'=>0, 'msg'=>'您今天剩余的下载简历数量不足,请选择单个简历下载!']);
} elseif ($downnum>= $member_setmeal->download_resume_max) {
return response()->json(['status'=>0, 'msg'=>'您今天已下载 '.$downnum.' 份简历,已达到每天下载上限,请先收藏该简历,明天继续下载。']);
}
}
$mode = 'setmeal';
if ($member_setmeal->download_resume == 0) { //套餐中简历下载数已用完
return response()->json(['status'=>0, 'msg'=>'您套餐中剩余的下载简历数量不足,请升级套餐后继续下载!']);
}
$view_data = array();
$free_time = $member_setmeal->download_resume;
$view_data['free_time'] = $free_time;
$view_data['resume_num'] = $resume_num;
$view_data['resume_id'] = implode(",", $rid);
$view_data['uid'] = $user->id;
$view_data['is_free'] = $member_setmeal->is_free;
$view_data['my_setmeal'] = $member_setmeal;
$view_data['to_detail'] = $request->input('to_detail', '');
$max_discount = $this->setmealIncrementsService->getMaxDiscount('download_resume');
$view_data['max_discount'] = $max_discount?$max_discount:0;
$view_data['mode'] = $mode;
$html = view('mobile.app.content.resume.ajax_resume_download', $view_data)->render();
$return_data = array( 'status'=>1, 'html' => $html,'params'=>$view_data);
return response()->json($return_data);
}
}
public function manage(Request $request)
{
$user = auth('web-company')->user();
$status = $request->input('status','');
if($status == 1){
$where = [
'jobfair_id'=>session('floorplan_stands.jobfair_id'),
'type'=>2,
'company_id'=>$user->id
];
}elseif($status == 2){
$where = [
'type'=>0,
'company_id'=>$user->id
];
}else{
$where = [
'company_id'=>$user->id
];
}
$list = $this->viewDownApplyRepository->getResult($where);
foreach($list as &$value)
{
//1.照片为空
//2.照片主动不显示
//3.照片审核不通过
//4.先审核后显示:照片不是审核通过的(不等于1)
$avatar_default = public_data_path('/data/upload/resource/no_photo_female.png');
if ($value->resumes->memberInfos->sex == 1) {
$avatar_default = public_data_path('/data/upload/resource/no_photo_male.png');
}
if ($value->resumes->memberInfos->images == '' || $value->resumes->memberInfos->display_images == 2 || $value->resumes->memberInfos->photo_audit == 0 || (config('aix.personal_set.per_set.show_set.resume_img_display') == 1 && $value->resumes->memberInfos->photo_audit != 2)) {
$value->resumes->photosrc = $avatar_default; //不显示
$value->resumes->photosrc_show = false;
} else {
$value->resumes->photosrc = upload_asset($value->resumes->memberInfos->images); //显示
$value->resumes->photosrc_show = true;
}
}
$params = array('status'=>$status);
if($request->ajax())
{
if ($list->isNotEmpty()) {
return response()->json(['status'=>1,'data'=>view('app.hardware.pad.interview.ajax_manage_list', ['list'=>$list])->render()]);
}
return response()->json(['status'=>0]);
}
return view('app.hardware.pad.interview.manage',['title'=>'简历管理','list'=>$list,'params'=>$params]);
}
public function manageDelete(Request $request)
{
$id = $request->id;
$type = $request->type;
$user = $this->getLoginUser();
if($type == 0)
{
$downResume = $this->companyDownResumeRepository->getDownResume(['id'=>$id]);
if(!$downResume)
{
throw new ResponseException('参数错误!');
}
if($downResume->company_uid != $user->id)
{
throw new ResponseException('抱歉,您只能操作自己的招聘会职位!');
}
if($this->companyDownResumeRepository->delete($id))
{
return response()->json(['status'=>1, 'msg'=>'删除成功']);
}
return response()->json(['status'=>0, 'msg'=>'删除失败']);
}else {
$this->jobfairPersonalJopApplyService->isComOwn($id,$user);
if($this->jobfairPersonalJobsApplyRepository->delete(['id'=>$id]))
{
return response()->json(['status'=>1, 'msg'=>'删除成功']);
}
return response()->json(['status'=>0, 'msg'=>'删除失败']);
}
}
}