InterviewController.php 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2019/7/31
  6. * Time: 15:10
  7. */
  8. namespace App\Http\Controllers\Web\Hardware\Pad;
  9. use App\Exceptions\ResponseException;
  10. use App\Http\Controllers\Web\WebBaseController;
  11. use Illuminate\Http\Request;
  12. use App\Repositories\Jobfair\JobfairPersonSignedRepository;
  13. use App\Services\Jobfair\JobfairPersonalJopApplyService;
  14. use App\Repositories\Jobfair\JobfairPersonalJobsApplyRepository;
  15. use App\Repositories\Jobfair\JobfairPutJobRepository;
  16. use App\Repositories\ResumeRepository;
  17. use App\Services\Person\MemberInfoService;
  18. use App\Services\Common\CategoryService;
  19. use App\Repositories\MemberInfoRepository;
  20. use App\Repositories\CompanyRepository;
  21. use App\Services\Person\ResumeService;
  22. use App\Services\Common\SearchService;
  23. use App\Repositories\CompanyDownResumeRepository;
  24. use App\Services\Common\MembersSetmealService;
  25. use App\Services\Company\CompanyDownResumeService;
  26. use App\Services\Content\FeedbackService;
  27. use App\Services\Company\JobsService;
  28. use App\Services\Company\CompanyService;
  29. use App\Services\Common\SetmealIncrementsService;
  30. use App\Services\Jobfair\JobfairPutJobService;
  31. use App\Repositories\Jobfair\ViewDownApplyRepository;
  32. use App\Repositories\PersonalJobsApplyRepository;
  33. class InterviewController extends WebBaseController
  34. {
  35. protected $jobfairPersonSignedRepository;
  36. protected $jobfairPersonalJopApplyService;
  37. protected $jobfairPersonalJobsApplyRepository;
  38. protected $jobfairPutJobRepository;
  39. protected $resumeRepository;
  40. protected $memberInfoService;
  41. protected $CategoryService;
  42. protected $memberInfoRepository;
  43. protected $companyRepository;
  44. protected $resumeService;
  45. protected $searchService;
  46. protected $companyDownResumeRepository;
  47. protected $membersSetmealService;
  48. protected $companyDownResumeService;
  49. protected $feedbackService;
  50. protected $jobsService;
  51. protected $companyService;
  52. protected $setmealIncrementsService;
  53. protected $viewDownApplyRepository;
  54. protected $personalJobsApplyRepository;
  55. protected $jobfairPutJobService;
  56. /**
  57. * PadInterviewController constructor.
  58. * @param $jobfairPersonSignedRepository
  59. * @param $jobfairPersonalJobsApplyRepository
  60. * @param $jobfairPersonalJopApplyService
  61. * @param $jobfairPutJobRepository
  62. * @param $resumeRepository
  63. * @param $memberInfoService
  64. * @param $CategoryService
  65. * @param $memberInfoRepository
  66. * @param $companyRepository
  67. * @param $resumeService
  68. * @param $searchService
  69. * @param $companyDownResumeRepository
  70. * @param $membersSetmealService;
  71. * @param $companyDownResumeService;
  72. * @param $feedbackService;
  73. * @param $jobsService;
  74. * @param $companyService;
  75. * @param $setmealIncrementsService;
  76. * @param $viewDownApplyRepository;
  77. * @param $personalJobsApplyRepository;
  78. * @param $jobfairPutJobService;
  79. */
  80. public function __construct(
  81. JobfairPersonSignedRepository $jobfairPersonSignedRepository,
  82. JobfairPersonalJobsApplyRepository $jobfairPersonalJobsApplyRepository,
  83. JobfairPersonalJopApplyService $jobfairPersonalJopApplyService,
  84. JobfairPutJobRepository $jobfairPutJobRepository,
  85. ResumeRepository $resumeRepository,
  86. MemberInfoService $memberInfoService,
  87. CategoryService $CategoryService,
  88. MemberInfoRepository $memberInfoRepository,
  89. CompanyRepository $companyRepository,
  90. ResumeService $resumeService,
  91. SearchService $searchService,
  92. CompanyDownResumeRepository $companyDownResumeRepository,
  93. MembersSetmealService $membersSetmealService,
  94. CompanyDownResumeService $companyDownResumeService,
  95. FeedbackService $feedbackService,
  96. JobsService $jobsService,
  97. CompanyService $companyService,
  98. SetmealIncrementsService $setmealIncrementsService,
  99. ViewDownApplyRepository $viewDownApplyRepository,
  100. PersonalJobsApplyRepository $personalJobsApplyRepository,
  101. JobfairPutJobService $jobfairPutJobService
  102. )
  103. {
  104. $this->jobfairPersonSignedRepository = $jobfairPersonSignedRepository;
  105. $this->jobfairPersonalJobsApplyRepository = $jobfairPersonalJobsApplyRepository;
  106. $this->jobfairPersonalJopApplyService = $jobfairPersonalJopApplyService;
  107. $this->jobfairPutJobRepository = $jobfairPutJobRepository;
  108. $this->resumeRepository = $resumeRepository;
  109. $this->memberInfoService = $memberInfoService;
  110. $this->CategoryService = $CategoryService;
  111. $this->memberInfoRepository = $memberInfoRepository;
  112. $this->companyRepository = $companyRepository;
  113. $this->resumeService = $resumeService;
  114. $this->searchService = $searchService;
  115. $this->companyDownResumeRepository = $companyDownResumeRepository;
  116. $this->membersSetmealService = $membersSetmealService;
  117. $this->companyDownResumeService = $companyDownResumeService;
  118. $this->feedbackService = $feedbackService;
  119. $this->jobsService = $jobsService;
  120. $this->companyService = $companyService;
  121. $this->setmealIncrementsService = $setmealIncrementsService;
  122. $this->viewDownApplyRepository = $viewDownApplyRepository;
  123. $this->personalJobsApplyRepository = $personalJobsApplyRepository;
  124. $this->jobfairPutJobService = $jobfairPutJobService;
  125. }
  126. public function index()
  127. {
  128. return view('app.hardware.pad.interview.index',['title'=>'面试管理']);
  129. }
  130. //面试邀请列表(签到的人)
  131. public function resume(Request $request)
  132. {
  133. $jobfair_id = session('floorplan_stands.jobfair_id');
  134. $user = auth('web-company')->user();
  135. $whereResumes = array_filter($request->all());
  136. foreach ($whereResumes as $key=>$value) {
  137. if($value == 'null')
  138. {
  139. unset($whereResumes[$key]);
  140. }
  141. }
  142. $whereApply= [];
  143. if(isset($whereResumes['page'])){
  144. unset($whereResumes['page']);
  145. }
  146. $is_interview = '';
  147. if(isset($whereResumes['is_interview'])){
  148. $is_interview = $whereResumes['is_interview'];
  149. unset($whereResumes['is_interview']);
  150. $whereApply = [
  151. 'company_id'=>$user->id,
  152. 'jobfair_id'=>$jobfair_id,
  153. ];
  154. }
  155. $result = $this->jobfairPersonSignedRepository->getSignedInterview(['jobfairid'=>$jobfair_id,'utype'=>2],$whereResumes,$whereApply,$is_interview);
  156. $where = [
  157. 'jobfair_id'=>$jobfair_id,
  158. 'company_id'=>$user->id,
  159. ];
  160. foreach ($result as $key=>&$value){
  161. $where['personal_uid'] = $value->uid;
  162. $value['flag'] = $this->jobfairPersonalJobsApplyRepository->interviewFind($where);
  163. //1.照片为空
  164. //2.照片主动不显示
  165. //3.照片审核不通过
  166. //4.先审核后显示:照片不是审核通过的(不等于1)
  167. $avatar_default = public_data_path('/data/upload/resource/no_photo_female.png');
  168. if ($value->resumes->memberInfos->sex == 1) {
  169. $avatar_default = public_data_path('/data/upload/resource/no_photo_male.png');
  170. }
  171. 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)) {
  172. $value->resumes->photosrc = $avatar_default; //不显示
  173. } else {
  174. $value->resumes->photosrc = upload_asset($value->resumes->memberInfos->images); //显示
  175. }
  176. }
  177. $param_array = array('education'=>'','experience'=>'','sex'=>'','nature'=>'','is_interview'=>'');
  178. $params = array_merge($param_array,$request->all());
  179. if($request->ajax())
  180. {
  181. if ($result->isNotEmpty()) {
  182. return response()->json(['status'=>1,'data'=>view('app.hardware.pad.interview.ajax_resume_list', ['result'=>$result])->render()]);
  183. }
  184. return response()->json(['status'=>0]);
  185. }
  186. return view('app.hardware.pad.interview.resume',['title'=>'邀约面试','result' => $result,'params'=>$params]);
  187. }
  188. //投递或邀请操作
  189. public function invitation(Request $request)
  190. {
  191. $user = auth('web-company')->user();
  192. if ($request->method() == 'POST') {
  193. $data['jobs_id'] = $request->input('job_id');
  194. $this->jobfairPutJobService->isOwn( $data['jobs_id'],$user->id);
  195. $data['personal_uid'] = $request->input('personal_uid');
  196. $data['company_id'] = $user->id;
  197. $data['position_id'] = session('floorplan_stands.id');
  198. $data['jobfair_id'] = session('floorplan_stands.jobfair_id');
  199. $data['is_apply'] = $request->input('is_apply',2);
  200. if($res = $this->jobfairPersonalJobsApplyRepository->applyFind($data)) {
  201. return response()->json(['status' => 0, 'msg' => '该用户已邀请或投递过该岗位']);
  202. }
  203. //获取他的默认简历id
  204. if($request->input('resume_id')) {
  205. $data['resume_id'] = $request->input('resume_id');
  206. $data['is_apply'] = 1;
  207. }else{
  208. $reusme = $this->resumeRepository->getResumeInfo(['uid'=>$data['personal_uid']]);
  209. $data['resume_id'] = $reusme->id;
  210. $data['is_apply'] = 2;
  211. }
  212. $data['type'] = 2;
  213. if($this->jobfairPersonalJobsApplyRepository->interviewAdd($data)) {
  214. return response()->json(['status' => 1, 'msg' => '邀请成功']);
  215. }
  216. return response()->json(['status' => 0, 'msg' => '邀请失败']);
  217. }
  218. //获取在招职位
  219. $exid = session('floorplan_stands.exid');
  220. $jobfair_id = session('floorplan_stands.jobfair_id');
  221. $jobs = $this->jobfairPutJobRepository->getJobfairJob($exid,$jobfair_id);
  222. return response()->json(['status'=>1,'data'=>['html'=>view('app.hardware.pad.interview.ajax_resume', ['jobs'=>$jobs])->render()]]);
  223. }
  224. //刷二维码或身份证
  225. public function delivery()
  226. {
  227. return view('app.hardware.pad.interview.delivery',['title'=>'接收简历']);
  228. }
  229. /**
  230. * 简历详情
  231. * @param $id
  232. * @param Request $request
  233. * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  234. * @throws \App\Exceptions\ResponseException
  235. */
  236. public function resumeShow($id,Request $request){
  237. /**
  238. * type:
  239. * 1:正常流程,判断是否可以下载、邀请面试
  240. * 2:直接邀请,不判断是否下载(已收到简历跳转)
  241. * 3:直接邀请,不判断是否下载(面试邀请跳转)
  242. * 4:只显示详情,不给任何操作
  243. * 5:直接邀请,不判断是否下载(已收到简历跳转)
  244. */
  245. $type = $request->input('type');
  246. $res = $this->resumeService->padResumeShow($id,$type, '', getUser());
  247. $this->putSeoData('resume', $res['resume']);
  248. //获取在招职位
  249. $exid = session('floorplan_stands.exid');
  250. $jobfair_id = session('floorplan_stands.jobfair_id');
  251. $jobs = $this->jobfairPutJobRepository->getJobfairJob($exid,$jobfair_id);
  252. $html = '';
  253. if(count($jobs) == 1) {
  254. $job_id = current($jobs->toArray())['id'];
  255. } elseif(count($jobs)>1){
  256. $job_id = 0;
  257. foreach ($jobs as $val){
  258. $html .= "<label><input class='job' type='radio' name='job' value='".$val->id."' />&nbsp;".$val->jobs->jobs_name."</label>";
  259. }
  260. }else{
  261. $job_id = -1;
  262. }
  263. $is_down = false;
  264. if($type == 1)
  265. {
  266. $user = auth('web-company')->user();
  267. if($this->companyDownResumeRepository->getDownResume(['resume_id'=>$id,'company_uid'=>$user->id]))
  268. {
  269. $is_down = true;
  270. }else {
  271. $is_down = false;
  272. $member_setmeal = $this->membersSetmealService->getUserSetmeal($user, '1');
  273. if($member_setmeal->show_apply_contact == 1)
  274. {
  275. $has = $this->personalJobsApplyRepository->checkJobsApply($id, $user->id);
  276. if ($has) {
  277. $is_down = true;
  278. }
  279. }
  280. }
  281. }
  282. 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]);
  283. }
  284. public function deliveryQrcode(Request $request){
  285. $res = hashid_decode($request->hashid);
  286. if(!$res){
  287. return response()->json(['status'=>-1, 'msg'=>'二维码出错,请刷新重试...']);
  288. }
  289. $info = $this->memberInfoService->getInfo(['uid' => $res['id']]);
  290. if(!$info){
  291. return response()->json(['status'=>-1, 'msg'=>'二维码出错,请刷新重试...']);
  292. }
  293. $resumes = $this->resumeRepository->getSuccessResume($info['uid'],getResumeStatus());
  294. if($resumes->isEmpty()){
  295. $wxcode = '<div style="margin: 0 auto;text-align: center;width:400px; "><h3 style="margin: 20px 0;">暂无您的简历信息,请扫码创建简历!</h3><img src="'.upload_asset(config('aix.system.oauth.wechat_official.wechat_qrcode')).'"></div>';
  296. return response()->json(['status'=>0, 'msg'=>'暂无您的简历信息,请扫码创建简历!','wxcode'=>$wxcode]);
  297. }
  298. $html = '';
  299. $html .= '<ul id="jobsList">';
  300. foreach ($resumes as $value) {
  301. $html .= '<li class="circle_info">
  302. <p class="resume_name">' . $value['title'] . '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' . $value['intention_jobs'] .'</p>
  303. <p class="resume_info">经验:' . $value['experience_cn'] . '&nbsp;&nbsp;&nbsp;&nbsp;学历:' . $value['education_cn'] . '&nbsp;&nbsp;&nbsp;&nbsp;所在地区:' . $value['district_cn'] . '&nbsp;&nbsp;&nbsp;&nbsp;更新时间:' . substr($value['updated_at'],0,10) . '</p>
  304. <div class="right_box">
  305. <a href="'.route('hardware.pad.interview.delivery.resume.show',['id'=>$value['id'],'type'=>5]).'" class="show-resume btn">查看简历</a>
  306. </div>
  307. </li>';
  308. }
  309. $html .= '</ul>';
  310. return response()->json(['status'=>1, 'msg'=>'成功','data'=>$resumes,'html'=>$html]);
  311. }
  312. public function deliveryCard(Request $request){
  313. $id_card = $request->cardId;
  314. $info = $this->memberInfoService->getInfo( ['id_card' => $id_card]);
  315. $wxcode = '<div style="margin: 0 auto;text-align: center;width:400px; "><h3 style="margin: 20px 0;">暂无您的简历信息,请扫码创建简历!</h3><img src="'.upload_asset(config('aix.system.oauth.wechat_official.wechat_qrcode')).'"></div>';
  316. if(!$info){
  317. return response()->json(['status'=>0, 'msg'=>'暂无您的简历信息,请扫码创建简历!','wxcode'=>$wxcode]);
  318. }
  319. $resumes = $this->resumeRepository->getSuccessResume($info['uid'],getResumeStatus());
  320. if($resumes->isEmpty()){
  321. return response()->json(['status'=>0, 'msg'=>'暂无您的简历信息,请扫码创建简历!','wxcode'=>$wxcode]);
  322. }
  323. $html = '';
  324. $html .= '<ul id="jobsList">';
  325. foreach ($resumes as $value) {
  326. $html .= '<li class="circle_info">
  327. <p class="resume_name">' . $value['title'] . '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' . $value['intention_jobs'] .'</p>
  328. <p class="resume_info">性别:' . $value['sex_cn'] . '&nbsp;&nbsp;&nbsp;&nbsp;经验:' . $value['experience_cn'] . '&nbsp;&nbsp;&nbsp;&nbsp;学历:' . $value['education_cn'] . '&nbsp;&nbsp;&nbsp;&nbsp;期望地区:' . $value['district_cn'] . '&nbsp;&nbsp;&nbsp;&nbsp;更新时间:' . $value['updated_at'] . '</p>
  329. <div class="right_box">
  330. <a href="'.route('hardware.pad.interview.delivery.resume.show',['id'=>$value['id'],'type'=>5]).'" class="show-resume btn">查看简历</a>
  331. </div>
  332. </li>';
  333. }
  334. $html .= '</ul>';
  335. return response()->json(['status'=>1, 'msg'=>'成功','data'=>$resumes,'html'=>$html]);
  336. }
  337. public function search(Request $request)
  338. {
  339. $data = array_filter($request->all());
  340. if(isset($data['page'])){
  341. $page = $data['page'];
  342. unset($data['page']);
  343. }
  344. foreach ($data as $key=>$value)
  345. {
  346. if($value == 'null')
  347. {
  348. unset($data[$key]);
  349. }else{
  350. $where[] = array($key,'=',$value);
  351. }
  352. }
  353. $order_by = array('stime'=>'desc', 'updated_at'=>'desc');
  354. if (config('aix.personal_set.per_set.show_set.resume_display')=='1') {
  355. $where[] = array('audit','=','2');
  356. } else {
  357. $where[] = array('audit','<>','0');
  358. }
  359. $where[] = array('display','=',1);
  360. $where[] = array('subsite_ids','=',get_subsite_id());
  361. $list = $this->searchService->search('Resume',$where,$order_by,'',10,$page ?? 1);
  362. $user = auth('web-company')->user();
  363. $member_setmeal = $this->membersSetmealService->getUserSetmeal($user, '1');
  364. foreach ($list as &$value) {
  365. if($this->companyDownResumeRepository->getDownResume(['resume_id'=>$value->id,'company_uid'=>$user->id]))
  366. {
  367. $value->is_down = true;
  368. }else {
  369. $value->is_down = false;
  370. if($member_setmeal->show_apply_contact == 1)
  371. {
  372. $has = $this->personalJobsApplyRepository->checkJobsApply($value->id, $user->id);
  373. if ($has) {
  374. $value->is_down = true;
  375. }
  376. }
  377. }
  378. //1.照片为空
  379. //2.照片主动不显示
  380. //3.照片审核不通过
  381. //4.先审核后显示:照片不是审核通过的(不等于1)
  382. $avatar_default = public_data_path('/data/upload/resource/no_photo_female.png');
  383. if ($value->memberInfos->sex == 1) {
  384. $avatar_default = public_data_path('/data/upload/resource/no_photo_male.png');
  385. }
  386. 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)) {
  387. $value->photosrc = $avatar_default; //不显示
  388. } else {
  389. $value->photosrc = upload_asset($value->memberInfos->images); //显示
  390. }
  391. }
  392. $param_array = array('education'=>'','experience'=>'','sex'=>'','nature'=>'');
  393. $params = array_merge($param_array,$request->all());
  394. if($request->ajax())
  395. {
  396. if ($list->isNotEmpty()) {
  397. return response()->json(['status'=>1,'data'=>view('app.hardware.pad.interview.ajax_search_list', ['list'=>$list])->render()]);
  398. }
  399. return response()->json(['status'=>0]);
  400. }
  401. return view('app.hardware.pad.interview.search',['title'=>'人才搜索','params'=>$params,'list'=>$list]);
  402. }
  403. public function searchDown(Request $request)
  404. {
  405. $resume_id = $request->input('rid');
  406. if (!$resume_id) {
  407. return response()->json(['status'=>0, 'msg'=>'请选择简历!']);
  408. }
  409. $rid = is_array($resume_id)?$resume_id:explode(",", $resume_id);
  410. $resume_num =count($rid);
  411. $user = auth('web-company')->user();
  412. $member_setmeal = $this->membersSetmealService->getUserSetmeal($user, '1');
  413. if ($request->method() == 'POST') {
  414. $addarr['rid'] = $rid;
  415. $rst = $this->companyDownResumeService->addDownResume($addarr, $user, $member_setmeal);
  416. if (array_get($rst, 'status')==1) {
  417. if ($resume_num == 1) {
  418. if ($member_setmeal->download_resume > 0) {
  419. $this->membersSetmealService->actionUserSetmeal($user->id, 'download_resume', 2); //修改会员套餐信息中的下载简历数量
  420. $log_value = '下载简历【'.array_get($rst, 'msg')->resume_name.'】(简历id:'.$addarr['rid'][0].'),消耗简历下载数:1,套餐剩余:'.($member_setmeal->download_resume-1);
  421. //添加会员日志
  422. $member_log = array(
  423. 'uid' =>$user->id,
  424. 'utype' =>1,
  425. 'username' => $user->username,
  426. 'ip' => ip2long($request->getClientIp()),
  427. 'log_address'=>'本机地址'
  428. );
  429. $this->feedbackService->addMembersLog($member_log, '1012', $log_value);
  430. }
  431. }
  432. }
  433. return response()->json($rst);
  434. } else {
  435. //判断是否开通会员服务
  436. if (!$member_setmeal) {
  437. return response()->json(['status'=>0, 'msg'=>'您还没有开通服务,请<a target="_blank" href="'.route('mobile.firm.service.setmeal.add').'">开通</a>!']);
  438. }
  439. //判断服务是否到期
  440. if ($member_setmeal->expire == 1) {
  441. return response()->json(['status'=>0, 'msg'=>'您的服务已经到期,请<a target="_blank" href="'.route('mobile.firm.service.setmeal.add').'">重新开通</a>!']);
  442. }
  443. //后台简历下载设置判断
  444. if (config('aix.personal_set.per_set.resume_download_set.down_resume_limit') == 1) {
  445. //判断企业是否有通过审核的职位(已登录且有发布职位的企业)
  446. $jobs_num = $this->jobsService->getAuditJobsNum($user->id);
  447. if ($jobs_num==0) {
  448. return response()->json(['status'=>0, 'msg'=>'你没有发布职位或职位审核未通过导致无法下载简历!']);
  449. }
  450. } elseif (config('aix.personal_set.per_set.resume_download_set.down_resume_limit') == 3) {
  451. //判断是否是认证企业(已认证企业)
  452. $company_info = $this->companyService->getInfoById($user);
  453. if ($company_info && $company_info->audit != 1) {
  454. return response()->json(['status'=>0, 'msg'=>'你的营业执照未通过认证导致无法下载简历!']);
  455. }
  456. }
  457. if ($member_setmeal->download_resume_max > 0) { //判断当天简历下载数量是否已达上限
  458. $downwhere = array(
  459. array('down_addtime','>=',strtotime('today')),
  460. array('down_addtime','<',strtotime('tomorrow')),
  461. array('company_uid','=',$user->id)
  462. );
  463. $downnum = $this->companyDownResumeService->getCompanyDownResumeNum($downwhere); //获取当天企业已下载简历数
  464. if ($resume_num>1 && $resume_num+$downnum > $member_setmeal->download_resume_max && $downnum < $member_setmeal->download_resume_max) {
  465. return response()->json(['status'=>0, 'msg'=>'您今天剩余的下载简历数量不足,请选择单个简历下载!']);
  466. } elseif ($downnum>= $member_setmeal->download_resume_max) {
  467. return response()->json(['status'=>0, 'msg'=>'您今天已下载 <span class="txt_highlight">'.$downnum.'</span> 份简历,已达到每天下载上限,请先收藏该简历,明天继续下载。']);
  468. }
  469. }
  470. $mode = 'setmeal';
  471. if ($member_setmeal->download_resume == 0) { //套餐中简历下载数已用完
  472. return response()->json(['status'=>0, 'msg'=>'您套餐中剩余的下载简历数量不足,请升级套餐后继续下载!']);
  473. }
  474. $view_data = array();
  475. $free_time = $member_setmeal->download_resume;
  476. $view_data['free_time'] = $free_time;
  477. $view_data['resume_num'] = $resume_num;
  478. $view_data['resume_id'] = implode(",", $rid);
  479. $view_data['uid'] = $user->id;
  480. $view_data['is_free'] = $member_setmeal->is_free;
  481. $view_data['my_setmeal'] = $member_setmeal;
  482. $view_data['to_detail'] = $request->input('to_detail', '');
  483. $max_discount = $this->setmealIncrementsService->getMaxDiscount('download_resume');
  484. $view_data['max_discount'] = $max_discount?$max_discount:0;
  485. $view_data['mode'] = $mode;
  486. $html = view('mobile.app.content.resume.ajax_resume_download', $view_data)->render();
  487. $return_data = array( 'status'=>1, 'html' => $html,'params'=>$view_data);
  488. return response()->json($return_data);
  489. }
  490. }
  491. public function manage(Request $request)
  492. {
  493. $user = auth('web-company')->user();
  494. $status = $request->input('status','');
  495. if($status == 1){
  496. $where = [
  497. 'jobfair_id'=>session('floorplan_stands.jobfair_id'),
  498. 'type'=>2,
  499. 'company_id'=>$user->id
  500. ];
  501. }elseif($status == 2){
  502. $where = [
  503. 'type'=>0,
  504. 'company_id'=>$user->id
  505. ];
  506. }else{
  507. $where = [
  508. 'company_id'=>$user->id
  509. ];
  510. }
  511. $list = $this->viewDownApplyRepository->getResult($where);
  512. foreach($list as &$value)
  513. {
  514. //1.照片为空
  515. //2.照片主动不显示
  516. //3.照片审核不通过
  517. //4.先审核后显示:照片不是审核通过的(不等于1)
  518. $avatar_default = public_data_path('/data/upload/resource/no_photo_female.png');
  519. if ($value->resumes->memberInfos->sex == 1) {
  520. $avatar_default = public_data_path('/data/upload/resource/no_photo_male.png');
  521. }
  522. 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)) {
  523. $value->resumes->photosrc = $avatar_default; //不显示
  524. $value->resumes->photosrc_show = false;
  525. } else {
  526. $value->resumes->photosrc = upload_asset($value->resumes->memberInfos->images); //显示
  527. $value->resumes->photosrc_show = true;
  528. }
  529. }
  530. $params = array('status'=>$status);
  531. if($request->ajax())
  532. {
  533. if ($list->isNotEmpty()) {
  534. return response()->json(['status'=>1,'data'=>view('app.hardware.pad.interview.ajax_manage_list', ['list'=>$list])->render()]);
  535. }
  536. return response()->json(['status'=>0]);
  537. }
  538. return view('app.hardware.pad.interview.manage',['title'=>'简历管理','list'=>$list,'params'=>$params]);
  539. }
  540. public function manageDelete(Request $request)
  541. {
  542. $id = $request->id;
  543. $type = $request->type;
  544. $user = $this->getLoginUser();
  545. if($type == 0)
  546. {
  547. $downResume = $this->companyDownResumeRepository->getDownResume(['id'=>$id]);
  548. if(!$downResume)
  549. {
  550. throw new ResponseException('参数错误!');
  551. }
  552. if($downResume->company_uid != $user->id)
  553. {
  554. throw new ResponseException('抱歉,您只能操作自己的招聘会职位!');
  555. }
  556. if($this->companyDownResumeRepository->delete($id))
  557. {
  558. return response()->json(['status'=>1, 'msg'=>'删除成功']);
  559. }
  560. return response()->json(['status'=>0, 'msg'=>'删除失败']);
  561. }else {
  562. $this->jobfairPersonalJopApplyService->isComOwn($id,$user);
  563. if($this->jobfairPersonalJobsApplyRepository->delete(['id'=>$id]))
  564. {
  565. return response()->json(['status'=>1, 'msg'=>'删除成功']);
  566. }
  567. return response()->json(['status'=>0, 'msg'=>'删除失败']);
  568. }
  569. }
  570. }