JobfairoutController.php 44 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: zhanghao
  5. * Date: 2019/6/17
  6. * Time: 11:05
  7. */
  8. namespace App\Http\Controllers\Jkq\Jobfairout;
  9. use App\Exceptions\ResponseException;
  10. use App\Http\Controllers\Jkq\JkqBaseController;
  11. use App\Models\Subsite;
  12. use App\Repositories\Jobfairout\JobfairoutCompanyRepository;
  13. use App\Repositories\Jobfairout\JobfairoutPersonalJobsApplyRepository;
  14. use App\Repositories\Jobfairout\JobfairoutPutJobRepository;
  15. use App\Repositories\Jobfairout\JobfairoutInfoRepository;
  16. use App\Repositories\Jobfairout\JobfairoutRepository;
  17. use App\Repositories\Jobfair\JobfairJobRepository;
  18. use App\Repositories\ResumeRepository;
  19. use App\Services\Jobfairout\JobfairoutCompanyService;
  20. use App\Services\Jobfairout\JobfairoutJobsService;
  21. use App\Services\Jobfairout\JobfairoutPersonalJopApplyService;
  22. use App\Services\Jobfairout\JobfairoutPutJobService;
  23. use App\Services\Jobfairout\JobfairoutService;
  24. use App\Services\Person\ResumeService;
  25. use App\Services\Jobfairout\JobfairoutReserveService;
  26. use Illuminate\Http\Request;
  27. use App\Repositories\CompanyRepository;
  28. use App\Repositories\Jobfairout\jobfairoutReserveRepository;
  29. use App\Repositories\Jobfairout\jobfairoutReserveListRepository;
  30. use App\Repositories\Jobfairout\jobfairoutFeedbackRepository;
  31. use Illuminate\Support\Facades\DB;
  32. use App\Services\Company\CompanyService;
  33. use App\Services\Company\CompanyDownResumeService;
  34. class JobfairoutController extends JkqBaseController
  35. {
  36. protected $jobfairoutJobsService;
  37. protected $jobfairoutCompanyRepository;
  38. protected $jobfairoutCompanyService;
  39. protected $jobfairoutService;
  40. protected $jobfairoutRepository;
  41. protected $jobfairoutPersonalJobsApplyRepository;
  42. protected $jobfairoutPersonalJopApplyService;
  43. protected $resumeService;
  44. protected $jobfairoutPutJobRepository;
  45. protected $resumeRepository;
  46. protected $jobfairoutPutJobService;
  47. protected $companyRepository;
  48. protected $jobfairoutInfoRepository;
  49. protected $jobfairJobRepository;
  50. protected $jobfairoutReserveRepository;
  51. protected $jobfairoutReserveListRepository;
  52. protected $jobfairoutFeedbackRepository;
  53. protected $companyService;
  54. protected $companyDownResumeService;
  55. protected $jobfairoutReserveService;
  56. /**
  57. * JobfairController constructor.
  58. * @param $jobfairoutJobsService
  59. * @param $jobfairoutCompanyRepository
  60. * @param $jobfairCompanyService
  61. * @param $jobfairoutService
  62. * @param $jobfairoutRepository
  63. * @param $jobfairoutPersonalJobsApplyRepository
  64. * @param $jobfairoutPersonalJopApplyService
  65. * @param $resumeService
  66. * @param $jobfairoutPutJobRepository
  67. * @param $resumeRepository
  68. * @param $jobfairoutPutJobService
  69. * @param $companyRepository
  70. * @param $jobfairoutInfoRepository
  71. * @param $jobfairJobRepository
  72. * @param $jobfairoutReserveRepository
  73. * @param jobfairoutReserveListRepository
  74. * @param $jobfairoutFeedbackRepository
  75. * @param $companyService
  76. * @param $companyDownResumeService
  77. * @param $jobfairoutReserveService
  78. */
  79. public function __construct(
  80. ResumeService $resumeService,
  81. JobfairoutPutJobService $jobfairoutPutJobService,
  82. ResumeRepository $resumeRepository,
  83. JobfairoutPutJobRepository $jobfairoutPutJobRepository,
  84. JobfairoutJobsService $jobfairoutJobsService,
  85. JobfairoutPersonalJopApplyService $jobfairoutPersonalJopApplyService,
  86. JobfairoutPersonalJobsApplyRepository $jobfairoutPersonalJobsApplyRepository,
  87. JobfairoutRepository $jobfairoutRepository,
  88. JobfairoutService $jobfairoutService,
  89. JobfairoutCompanyService $jobfairoutCompanyService,
  90. JobfairoutCompanyRepository $jobfairoutCompanyRepository,
  91. JobfairoutInfoRepository $jobfairoutInfoRepository,
  92. CompanyRepository $companyRepository,
  93. JobfairJobRepository $jobfairJobRepository,
  94. jobfairoutReserveRepository $jobfairoutReserveRepository,
  95. jobfairoutReserveListRepository $jobfairoutReserveListRepository,
  96. jobfairoutFeedbackRepository $jobfairoutFeedbackRepository,
  97. CompanyService $companyService,
  98. CompanyDownResumeService $companyDownResumeService,
  99. JobfairoutReserveService $jobfairoutReserveService
  100. )
  101. {
  102. $this->jobfairoutJobsService = $jobfairoutJobsService;
  103. $this->jobfairoutCompanyRepository = $jobfairoutCompanyRepository;
  104. $this->jobfairoutCompanyService = $jobfairoutCompanyService;
  105. $this->jobfairoutService = $jobfairoutService;
  106. $this->jobfairoutRepository = $jobfairoutRepository;
  107. $this->jobfairoutPersonalJobsApplyRepository = $jobfairoutPersonalJobsApplyRepository;
  108. $this->jobfairoutPersonalJopApplyService = $jobfairoutPersonalJopApplyService;
  109. $this->resumeService = $resumeService;
  110. $this->jobfairoutPutJobRepository = $jobfairoutPutJobRepository;
  111. $this->resumeRepository = $resumeRepository;
  112. $this->jobfairoutPutJobService = $jobfairoutPutJobService;
  113. $this->companyRepository = $companyRepository;
  114. $this->jobfairoutInfoRepository = $jobfairoutInfoRepository;
  115. $this->jobfairJobRepository = $jobfairJobRepository;
  116. $this->jobfairoutReserveRepository = $jobfairoutReserveRepository;
  117. $this->jobfairoutReserveListRepository = $jobfairoutReserveListRepository;
  118. $this->jobfairoutFeedbackRepository = $jobfairoutFeedbackRepository;
  119. $this->companyService = $companyService;
  120. $this->companyDownResumeService = $companyDownResumeService;
  121. $this->jobfairoutReserveService = $jobfairoutReserveService;
  122. }
  123. /**近期招聘会
  124. * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  125. */
  126. public function jobfairoutIndex()
  127. {
  128. $user = auth('web-company')->user();
  129. $res = $this->jobfairoutService->jobfairIndex($user);
  130. return view('jkq.jobfairout.company.index', $res);
  131. }
  132. /**定展记录
  133. * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  134. */
  135. public function jobfairEnact()
  136. {
  137. $user = auth('web-company')->user();
  138. $res = $this->jobfairoutCompanyService->jobfairEnact($user);
  139. return view('jkq.jobfairout.company.jobfair_enact', $res);
  140. }
  141. /**招聘会职位库管理
  142. * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  143. */
  144. public function jobfairoutJobsList()
  145. {
  146. $res = $this->jobfairoutJobsService->jobfairoutJobsList();
  147. return view('jkq.jobfairout.company.jobfair_joblist', $res);
  148. }
  149. /**招聘会职位添加
  150. * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  151. */
  152. public function jobfairoutJobsAdd()
  153. {
  154. $res = $this->jobfairoutJobsService->jobfairoutJobsAdd();
  155. return view('jkq.jobfairout.company.jobfair_job_add', $res);
  156. }
  157. /**招聘会职位修改
  158. * @param int $id
  159. * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  160. */
  161. public function jobfairoutJobsEdit($id)
  162. {
  163. $user = auth('web-company')->user();
  164. $res = $this->jobfairoutJobsService->jobfairoutJobsEdit($id, $user);
  165. if (!$res) {
  166. return $this->showMessage('参数错误', route('jkq.jobfairout.quarterslist'), true, '上一页');
  167. }
  168. return view('jkq.jobfairout.company.jobfair_job_add', $res);
  169. }
  170. /**招聘会职位删除
  171. * @param Request $request
  172. * @return \Illuminate\Http\JsonResponse
  173. * @throws \Throwable
  174. */
  175. public function jobfairoutJobsDel(Request $request)
  176. {
  177. if ($request->method() == 'POST') {
  178. return $this->jobfairoutJobsService->jobfairoutJobsDel($request);
  179. }
  180. $tip = "被删除后将无法恢复,您确定要删除选中的职位吗?";
  181. return response()->json(['status'=>1,'data'=>['html'=>view('jkq.company.ajax.ajax_warning', ['tip'=>$tip])->render()]]);
  182. }
  183. /**招聘会职位修改和添加
  184. * @param Request $request
  185. * @return \Illuminate\Http\JsonResponse
  186. */
  187. public function jobfairoutJobsSave(Request $request)
  188. {
  189. $user = auth('web-company')->user();
  190. $data = $request->except(['_method', '_token']);
  191. return $this->jobfairoutJobsService->jobsSave($data, $user);
  192. }
  193. /**职位添加到招聘会中
  194. * @param Request $request
  195. * @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\JsonResponse|\Illuminate\View\View
  196. * @throws \Throwable
  197. */
  198. public function jobfairoutJobsToJobfair(Request $request)
  199. {
  200. $user = auth('web-company')->user();
  201. if ($request->method() == 'POST') {
  202. $jids = $request->y_id;
  203. if (!$jids || !$request->exid_list) {
  204. return $this->showMessage('请选择职位或加入的招聘会', route('jkq.jobfair.quarterslist'), true, '上一页');
  205. }
  206. $this->jobfairoutJobsService->isOwn($jids,$user);
  207. $exidArr = explode(',', $request->exid_list);
  208. $this->jobfairoutCompanyService->isOwnArr($exidArr,$user);
  209. $res = $this->jobfairoutJobsService->jobfairoutJobsToJobfair($request);
  210. if ($res['state']) {
  211. return $this->showMessage('添加成功!'.$res['error'], route('jkq.jobfairout.quarterslist'), false, '上一页');
  212. }
  213. return $this->showMessage($res['msg'], route('jkq.jobfairout.quarterslist'), true, '上一页');
  214. }
  215. //公司参加的招聘会
  216. $jobfairInfo = $this->jobfairoutCompanyRepository->getJobfair($user->id);
  217. if ($jobfairInfo->isEmpty()) {
  218. return response()->json(['status'=>0, 'msg'=>"您还没有参加招聘会或申请未通过审核,请点击右侧链接参加招聘会<a href='" .route('jkq.jobfairout.lists'). "' style='color: #FF0000'>【点击参加】</a>"]);
  219. }
  220. return response()->json(['status'=>1,'data'=>['html'=>view('jkq.jobfairout.ajax.ajax_jobfair_mod', ['jobfairInfo'=>$jobfairInfo])->render()]]);
  221. }
  222. /**参展职位
  223. * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  224. */
  225. public function jobfairoutjob(Request $request)
  226. {
  227. $user = auth('web-company')->user();
  228. $jobfairid = $request->jobfairid?$request->jobfairid:'';
  229. $audit = $request->audit?$request->audit:'';
  230. $map = [];
  231. $map1['company_id'] = $user->id;
  232. if ($audit) {
  233. $map1['audit'] = $audit;
  234. }
  235. if ($jobfairid) {
  236. $map['jobfair_id'] = $jobfairid;
  237. }
  238. $param_array = array('jobfairid','audit');
  239. $params= array();
  240. if ($request->all()) {
  241. foreach ($request->all() as $k => $v) {
  242. if (in_array($k, $param_array)) {
  243. $params[$k] = $v;
  244. }
  245. }
  246. }
  247. $res = $this->jobfairoutPutJobService->jobfairoutPutJobsList($map,$map1);
  248. $jobfairArr = $this->jobfairoutCompanyRepository->findWhere(['company_id'=>$user->id], ['jobfair_id']);
  249. $jobfairList = [];
  250. if ($jobfairArr) {
  251. $list = $jobfairArr->toArray();
  252. $jobfairList = $this->jobfairoutRepository->findWhereIn('id', $list, ['id','title'])->toArray();
  253. }
  254. $res['jobfairid'] = $jobfairid;
  255. $res['audit'] = $audit;
  256. $res['params'] = $params;
  257. $res['jobfairList'] = array_column($jobfairList, 'title', 'id');
  258. $res['audtiArr'] = [1=>'审核通过',2=>'待审核',3=>'审核未通过'];
  259. return view('jkq.jobfairout.company.jobfair_job', $res);
  260. }
  261. public function jobfairPutJobsSave(Request $request)
  262. {
  263. $data = $request->except(['_token', 'method']);
  264. $user = auth('web-company')->user();
  265. return $this->jobfairoutPutJobService->jobfairoutPutJobsSave($data, $user);
  266. }
  267. public function jobfairjobdel(Request $request)
  268. {
  269. $id = $request->y_id?$request->y_id:0;
  270. $ids = is_array($id)?$id:explode(',', $id);
  271. if ($request->method() == 'POST') {
  272. if (!$ids) {
  273. return response()->json(['status'=>0,'html'=>'参数错误']);
  274. }
  275. return $this->jobfairoutPutJobService->jobfairPutJobsDel($ids);
  276. }
  277. $tip = "被删除后将无法恢复,您确定要删除选中的职位吗?";
  278. return response()->json(['status'=>1,'data'=>['html'=>view('jkq.company.ajax.ajax_warning', ['tip'=>$tip])->render()]]);
  279. }
  280. /**收到的招聘会简历
  281. * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  282. */
  283. public function downResume(Request $request)
  284. {
  285. $user = auth('web-company')->user();
  286. $jobs_id = $request->input('jobs_id','');
  287. $jobfair_id = $request->input('jobfair_id','');
  288. $where = [];
  289. $where1 = [];
  290. $result['jobfairList'] = $this->jobfairoutCompanyService->jobfairList($user);
  291. $result['jobs_name'] = '全部职位';
  292. if($jobs_id)
  293. {
  294. $where1['job_id'] = $jobs_id;
  295. $result['jobs_name'] = $this->jobfairJobRepository->find($jobs_id,['jobs_name'])->jobs_name;
  296. }
  297. $result['jobfair_name'] = '全部招聘会';
  298. if($jobfair_id)
  299. {
  300. $where['jobfair_id'] = $jobfair_id;
  301. $result['jobfair_name'] = $this->jobfairoutRepository->find($jobfair_id,['title'])->title;
  302. }
  303. $result['apply'] = $this->jobfairoutPersonalJobsApplyRepository->getResumeJobs($user->id,$where,$where1);
  304. $whereJob = [
  305. 'company_id' => $user->id,
  306. 'audit' => 1,
  307. 'type' => 2,
  308. ];
  309. $result['jobs'] = $this->jobfairJobRepository->getJobs($whereJob);
  310. $params= array();
  311. $param_array = array('jobs_id','jobfair_id');
  312. if ($request->all()) {
  313. foreach ($request->all() as $k => $v) {
  314. if (in_array($k, $param_array)) {
  315. $params[$k] = $v;
  316. }
  317. }
  318. }
  319. $result['params'] = $params;
  320. return view('jkq.jobfairout.company.down_resume', $result);
  321. }
  322. public function downResumeDel(Request $request)
  323. {
  324. if ($request->method() == 'POST') {
  325. $user = $this->getLoginUser();
  326. return $this->jobfairoutPersonalJopApplyService->downResumeDel($request,$user);
  327. }
  328. $tip = "被删除后将无法恢复,您确定要删除选中的简历吗?";
  329. return response()->json(['status'=>1,'data'=>['html'=>view('jkq.company.ajax.ajax_warning', ['tip'=>$tip])->render()]]);
  330. }
  331. /**招聘会详情
  332. * @param int $id
  333. * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  334. */
  335. public function jobfairoutShow($id = 0)
  336. {
  337. $back_url = \Illuminate\Support\Facades\URL::previous();
  338. if (!$id) {
  339. return $this->showMessage('参数错误!', $back_url, true, '上一页');
  340. }
  341. $user = auth('web-company')->user();
  342. $res = $this->jobfairoutService->jobfairShow($id,$user);
  343. if (!$res['status']) {
  344. return $this->showMessage($res['msg'], $back_url, true, '上一页');
  345. } else {
  346. $res['jobfair']->sitename = Subsite::where('id',$res['jobfair']->subsite_id)->value('sitename');
  347. if (array_has($res, 'jobfair')) {
  348. $this->putSeoData('jobfair', $res['jobfair']);
  349. }
  350. return view('jkq.jobfairout.jobfair_show', $res);
  351. }
  352. }
  353. /**招聘会企业
  354. * @param Request $request
  355. * @param int $id
  356. * @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\JsonResponse|\Illuminate\View\View
  357. * @throws \Throwable
  358. */
  359. public function jobfairoutShowCom(Request $request, $id = 0)
  360. {
  361. $back_url = \Illuminate\Support\Facades\URL::previous();
  362. if (!$id) {
  363. return $this->showMessage('参数错误!', $back_url, true, '上一页');
  364. }
  365. $user = auth('web-company')->user();
  366. $res = $this->jobfairoutService->jobfairShowCom($request, $id,$user);
  367. if ($request->ajax()) {
  368. if ($res->isNotEmpty()) {
  369. return response()->json(['status'=>1,'data'=>view('jkq.jobfairout.ajax.ajax_jobfair_com', ['jobfairCompany'=>$res])->render()]);
  370. }
  371. return response()->json(['status'=>0]);
  372. }
  373. if (!$res['status']) {
  374. return $this->showMessage($res['msg'], $back_url, true, '上一页');
  375. } else {
  376. $res['jobfair']->sitename = Subsite::where('id',$res['jobfair']->subsite_id)->value('sitename');
  377. $this->putSeoData('jobfair', $res['jobfair']);
  378. return view('jkq.jobfairout.jobfair_com', $res);
  379. }
  380. }
  381. /**招聘会职位详情
  382. * @param $jobfair_id
  383. * @param $job_id
  384. * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  385. */
  386. public function jobfairoutShowJob($id)
  387. {
  388. $job = $this->jobfairoutService->jobfairShowJob($id);
  389. if (!$job['status']) {
  390. return $this->showMessage($job['msg'], route('jkq.jobfair'), true, '上一页');
  391. } else {
  392. $this->putSeoData('jobfair_job', $job['jobInfo']);
  393. return view('jkq.jobfairout.jobfair_job', $job);
  394. }
  395. }
  396. /**异步查询职位(废弃)
  397. * @param Request $request
  398. * @return \Illuminate\Http\JsonResponse
  399. * @throws \Throwable
  400. */
  401. // public function jobfairoutAjaxJobs(Request $request)
  402. // {
  403. // $keyinput = $request->keyinput?$request->keyinput:'';
  404. // if (!$keyinput) {
  405. // return response()->json(['status'=>0,'msg'=>"请输入要搜索的职位名称"]);
  406. // }
  407. // $jobfair_id = $request->jobfair_id?$request->jobfair_id:0;
  408. // if (!$jobfair_id) {
  409. // return response()->json(['status'=>0,'msg'=>"招聘会ID不正确"]);
  410. // }
  411. // $where = [
  412. // 'jobfair_id'=>$jobfair_id,
  413. // 'audit'=>1
  414. // ];
  415. // $res = $this->jobfairoutCompanyRepository->findJob($where);
  416. //
  417. // foreach ($res as $key => $val) {
  418. // $jobfairPutJob = $this->jobfairoutPutJobRepository->searchJob($jobfair_id, $keyinput, $val->company_id, $val->id);
  419. // if ($jobfairPutJob->isNotEmpty()) {
  420. // $val->jobfairPutJob = $jobfairPutJob;
  421. // } else {
  422. // unset($res[$key]);
  423. // }
  424. // }
  425. //
  426. // if ($res->isEmpty()) {
  427. // return response()->json(['status'=>0,'msg'=>"未查找到与【{$keyinput}】相似的职位或企业"]);
  428. // }
  429. // return response()->json(['status'=>1,'data'=>view('app.jobfairout.ajax.ajax_jobfair_com_jobs', ['jobfairCompany'=>$res])->render()]);
  430. // }
  431. public function jobfairoutAppointmentJobs(Request $request)
  432. {
  433. $user = $this->getLoginUser();
  434. $jid = $request->jobsfair_job_id;
  435. $jobfair_id = $request->jobfairid;
  436. $company_id = $request->company_id;
  437. $resume_id = $request->resume_id?$request->resume_id:0;
  438. $jobfair = $this->jobfairoutRepository->find($jobfair_id);
  439. if ($jobfair->isEmpty || $jobfair->holddate_end < time()) {
  440. return response()->json(['status'=>0, 'html'=>"招聘会已停止"]);
  441. }
  442. if ($resume_id) {
  443. $this->resumeService->isOwn($resume_id,$user);
  444. $this->jobfairoutPutJobService->isOwn($jid,$company_id);
  445. $data['resume_id'] = $resume_id;
  446. $data['personal_uid'] = $user->id;
  447. $data['jobs_id'] = $jid;
  448. $data['company_id'] = $company_id;
  449. $data['jobfair_id'] = $jobfair_id;
  450. if (!$jid || !$company_id || !$jobfair_id ) {
  451. return response()->json(['status'=>2,'type'=>3,'msg'=>'参数错误!']);
  452. }
  453. //简历完整度
  454. $res_complete = $this->resumeRepository->find($resume_id, ['complete_percent']);
  455. if ($res_complete->complete_percent < config('aix.personal_set.per_set.per_set.apply_job_min_percent')) {
  456. return response()->json(['status'=>0,'html'=>'请完善简历后再预约职位','resume_id'=>$resume_id]);
  457. }
  458. if ($this->jobfairoutPersonalJobsApplyRepository->findWhere(['personal_uid'=>$user->id, 'jobs_id'=>$jid, 'company_id'=>$company_id, 'jobfair_id'=>$jobfair_id])->isNotEmpty()) {
  459. return response()->json(['status'=>0, 'html'=>"您已预约该职位,请勿重复预约!"]);
  460. }
  461. DB::beginTransaction();
  462. try {
  463. $this->jobfairoutPersonalJopApplyService->applyJob($data);
  464. $this->companyDownResumeService->addDownResumes($company_id,$resume_id);
  465. DB::commit();
  466. return response()->json(['status'=>1, 'html'=>"职位预约成功!"]);
  467. } catch (\Exception $e) {
  468. DB::rollback();
  469. return response()->json(['status'=>0,'type'=>0 , 'html'=>"职位预约失败!"]);
  470. }
  471. } else {
  472. if (!$jid || !$company_id || !$jobfair_id) {
  473. return response()->json(['status'=>2,'type'=>3,'msg'=>'参数错误!']);
  474. }
  475. $result = $this->jobfairoutPersonalJopApplyService->ifJobApply($user);
  476. if ($result['status'] == 2) { //返回结果,让用户选择简历投递
  477. $page_data = array('status'=>array_get($result, 'status'),'resumes'=>array_get($result, 'resumes'),'def_resume'=>array_get($result, 'def_resume'),'jobs_id'=>$jid);
  478. $page_data['company_id'] = $company_id;
  479. $page_data['jobfair_id'] = $jobfair_id;
  480. $page_data['jobs_id'] = $jid;
  481. $html = view('jkq.jobfairout.ajax.ajax_apply', $page_data)->render();
  482. return response()->json(['status'=>2,'html'=>$html]);
  483. } elseif ($result['status'] == 3) { //直接投递
  484. $this->jobfairoutPutJobService->isOwn($jid,$company_id);
  485. $resume = $result['resumes'][0];
  486. $data['resume_id'] = $resume->id;
  487. $data['personal_uid'] = $user->id;
  488. $data['jobs_id'] = $jid;
  489. $data['company_id'] = $company_id;
  490. $data['jobfair_id'] = $jobfair_id;
  491. $res_complete = $this->resumeRepository->find($resume->id, ['complete_percent']);
  492. if ($res_complete->complete_percent < config('aix.personal_set.per_set.per_set.apply_job_min_percent')) {
  493. return response()->json(['status'=>0,'html'=>'请完善简历后再预约职位','resume_id'=>$resume->id]);
  494. }
  495. if ($this->jobfairoutPersonalJobsApplyRepository->findWhere(['resume_id'=>$resume->id, 'jobs_id'=>$jid, 'company_id'=>$company_id, 'jobfair_id'=>$jobfair_id])->isNotEmpty()) {
  496. return response()->json(['status'=>0, 'html'=>"您已预约该职位,请勿重复预约!"]);
  497. }
  498. DB::beginTransaction();
  499. try {
  500. $this->jobfairoutPersonalJopApplyService->applyJob($data);
  501. $this->companyDownResumeService->addDownResumes($company_id,$resume->id);
  502. DB::commit();
  503. return response()->json(['status'=>1, 'html'=>"职位预约成功!"]);
  504. } catch (\Exception $e) {
  505. DB::rollback();
  506. return response()->json(['status'=>0,'type'=>0 , 'html'=>"职位预约失败!"]);
  507. }
  508. }
  509. }
  510. }
  511. public function personJobfairout()
  512. {
  513. $resume = $this->resumeService->myResumeAjax(auth('web-member')->user());
  514. $jobApply = $this->jobfairoutPersonalJopApplyService->personJobfair();
  515. return view('jkq.jobfairout.person.job_apply', ['resume' => $resume, 'interview' => $jobApply['interview']]);
  516. }
  517. public function personDelectout()
  518. {
  519. if (request()->method()=='GET') {
  520. $html = view('jkq.person.ajax.resume_delete', ['tpis'=>'删除后将无法恢复,您确定要删除选择的预约职位吗?'])->render();
  521. return $this->sendSuccessResponse($html);
  522. } else {
  523. $user = auth('web-member')->user();
  524. $this->jobfairoutPersonalJopApplyService->isOwn(request()->id,$user);
  525. $res = $this->jobfairoutPersonalJopApplyService->personDelect(request()->id, auth('web-member')->user());
  526. if ($res) {
  527. return $this->sendSuccessResponse('删除成功!');
  528. } else {
  529. return $this->sendErrorResponse('删除失败!');
  530. }
  531. }
  532. }
  533. public function jobfairoutAppointmentSave(Request $request)
  534. {
  535. $user = $this->getLoginUser();
  536. if (!$user) {
  537. $jobfair_id = $request->jobfair_id?$request->jobfair_id:0;
  538. return response()->json(['status'=>0, 'type'=>1, 'html'=>view('jkq.common.ajax.com_login', ['redirect_url'=>route('jkq.jobfairout.show.com', ['id'=>$jobfair_id])])->render(),'msg'=>'您还没有登录,请先登录再预约招聘会']);
  539. }
  540. if ($user->utype == 2) {
  541. return response()->json(['status'=>0,'type'=>0,'msg'=>'个人会员不允许预定招聘会!']);
  542. }
  543. //企业是否通过认证
  544. if ($user->audit!=1) {
  545. return response()->json(['status'=>0,'type'=>0,'msg'=>'企业或营业执照未通过审核!']);
  546. }
  547. $jobfair_id = $request->jobfair_id?$request->jobfair_id:0;
  548. if (!$jobfair_id || !$jobfairInfo = $this->jobfairoutRepository->findOne(['id'=>$jobfair_id])) {
  549. return response()->json(['status'=>0,'msg'=>'查无此招聘会!']);
  550. }
  551. if ($this->jobfairoutCompanyRepository->findCom(['jobfair_id'=>$jobfair_id, 'company_id'=>$user->id,['audit','<>', 3]])) {
  552. return response()->json(['status'=>0,'msg'=>'很抱歉,本次招聘会已经预定了,快去发布职位吧!']);
  553. }
  554. if($this->jobfairoutCompanyRepository->getComCount(['jobfair_id'=>$jobfair_id,['audit','<>', 3]]) >= $jobfairInfo->number){
  555. return response()->json(['status'=>0,'msg'=>'很抱歉,已经没有本次招聘会空余展位了!']);
  556. }
  557. if ($request->method()=='POST') {
  558. return $this->jobfairoutService->jobfairAppointmentSave($jobfairInfo, $user);
  559. }
  560. $msg ="<br><span>在线预定审核成功后将无法退订,是否继续.</span><br>";
  561. return response()->json(['status'=>1,'msg'=>$msg]);
  562. }
  563. /**填写单位信息
  564. * return \Illuminate\Http\JsonResponse
  565. */
  566. public function ajaxCompanyinfo(Request $request)
  567. {
  568. if ($request->method() == 'POST') {
  569. $user = $this->getLoginUser();
  570. $exid = $request->input('exid', '');
  571. $jobfair_id = $request->input('jobfair_id', '');
  572. $this->jobfairoutCompanyService->isOwn($exid,$user);
  573. $this->jobfairoutCompanyService->isOwnJobfair($exid,$jobfair_id);
  574. $contact = $request->input('contact', '');
  575. $phone = $request->input('phone', '');
  576. $tel_first = $request->input('tel_first', '-');
  577. $tel_next = $request->input('tel_next', '-');
  578. $tel_last = $request->input('tel_last', '-');
  579. $email = $request->input('email', '');
  580. $qq = $request->input('qq', '');
  581. $address = $request->input('address', '');
  582. $intro = $request->input('intro', '');
  583. $url = $request->input('url', '');
  584. $fax = $request->input('fax', '');
  585. $id = $request->input('id', '');
  586. $is_speech = $request->input('is_speech', '');
  587. if (!$contact) {
  588. $return_data = array( 'status'=>0, 'msg' => '请输入联系人信息');
  589. return response()->json($return_data);
  590. }
  591. if (!$email) {
  592. $return_data = array( 'status'=>0, 'msg' => '请输入联系邮箱');
  593. return response()->json($return_data);
  594. }
  595. if (!$address) {
  596. $return_data = array( 'status'=>0, 'msg' => '请输入联系地址');
  597. return response()->json($return_data);
  598. }
  599. $landline_tel = implode('-', [$tel_first?$tel_first:'',$tel_next?$tel_next:'',$tel_last?$tel_last:'']);
  600. $set_data = array(
  601. 'jobfair_id' => $jobfair_id,
  602. 'exid' => $exid,
  603. 'company_id' => (int)auth('web-company')->user()->id,
  604. 'contact' => $contact,
  605. 'phone' => $phone,
  606. 'landline_tel' => $landline_tel,
  607. 'email' => $email,
  608. 'qq' => $qq,
  609. 'address' => $address,
  610. 'intro' => $intro,
  611. 'url' => $url,
  612. 'fax' => $fax,
  613. 'is_speech' => $is_speech,
  614. );
  615. if($id){
  616. $rst = $this->jobfairoutInfoRepository->update($set_data,$id);
  617. }else{
  618. $rst = $this->jobfairoutInfoRepository->create($set_data);
  619. }
  620. if ($rst) {
  621. $return_data = array('status'=>1, 'msg'=>'编辑成功');
  622. } else {
  623. $return_data = array('status'=>0, 'msg'=>'编辑失败');
  624. }
  625. return response()->json($return_data);
  626. } else {
  627. $jobfair_id = $request->input('jobfairout_id', '');
  628. $exid = $request->input('exid', '');
  629. if(!$jobfair_id || !$exid){
  630. return response()->json([ 'status'=>0, 'msg' => '缺少参数!']);
  631. }
  632. $user = auth('web-company')->user();
  633. $where = [
  634. 'jobfair_id'=>(int)$jobfair_id,
  635. 'company_id'=>$user->id
  636. ];
  637. $companyInfo = $this->jobfairoutInfoRepository->getOneInfo($where);
  638. if(!$companyInfo){
  639. $companyInfo = $this->companyRepository->getCompanyInfoByID($user->id);
  640. }else{
  641. $companyInfo->edit = true;
  642. }
  643. $companyInfo->exid = $exid;
  644. $companyInfo->jobfair_id = $jobfair_id;
  645. $html = view('jkq.jobfairout.ajax.add_info', ['companyInfo'=>$companyInfo])->render();
  646. $return_data = array( 'status'=>1, 'data' => $html);
  647. return response()->json($return_data);
  648. }
  649. }
  650. /**发布职位
  651. * return \Illuminate\Http\JsonResponse
  652. */
  653. public function ajaxComJobs(Request $request)
  654. {
  655. if ($request->method() == 'POST') {
  656. $user = $this->getLoginUser();
  657. $jobs_arr= $request->input('check_jobs_id', '');
  658. $jobfair_id = $request->input('jobfair_id', '');
  659. $exid = $request->input('exid', '');
  660. $jobs = $this->jobfairJobRepository->getPluck(['company_id'=>$user->id,'type'=>2,'audit'=>1],'id')->toArray();
  661. if(array_diff($jobs_arr,$jobs)) {
  662. throw new ResponseException('参数错误!');
  663. }
  664. $this->jobfairoutCompanyService->isOwn($exid,$user);
  665. //获取列表
  666. $where = ['exid'=>$exid];
  667. $ids = $this->jobfairoutPutJobRepository->getJobIds($where);
  668. DB::beginTransaction();
  669. try {
  670. if($ids){
  671. if($jobs_arr){
  672. $add_array = array_diff($jobs_arr,$ids);
  673. if($add_array)
  674. {
  675. $this->jobfairoutPutJobService->addData($add_array,$exid,$jobfair_id);
  676. }
  677. $del_array = array_diff($ids,$jobs_arr);
  678. $this->jobfairoutPutJobRepository->destroyArr($del_array);
  679. }else{
  680. $where = [
  681. 'exid'=>$exid
  682. ];
  683. $this->jobfairoutPutJobRepository->delList($where,$ids);
  684. }
  685. }else{
  686. if($jobs_arr)
  687. {
  688. $this->jobfairoutPutJobService->addData($jobs_arr,$exid,$jobfair_id);
  689. }else{
  690. throw new \Exception('请选择职位添加');
  691. }
  692. }
  693. DB::commit();
  694. $return_data = array('status'=>1, 'msg'=>'编辑成功');
  695. return response()->json($return_data);
  696. } catch (\Exception $e) {
  697. DB::rollback();
  698. $return_data = array('status'=>0, 'msg'=>$e->getMessage());
  699. return response()->json($return_data);
  700. }
  701. } else {
  702. $user = auth('web-company')->user();
  703. $jobfair_id = $request->input('jobfairout_id', '');
  704. $exid = $request->input('exid', '');
  705. $jobs = $this->jobfairJobRepository->getJobs(['company_id'=>$user->id,'type'=>2,'audit'=>1]);
  706. if($jobs->isEmpty())
  707. {
  708. $return_data = array( 'status'=>2, 'msg' => '没有赴外招聘会职位,请先添加职位');
  709. return response()->json($return_data);
  710. }else{
  711. $join_jobs = $this->jobfairoutPutJobRepository->getJobfairJob(['exid'=>$exid]);
  712. $html = view('jkq.jobfairout.ajax.add_jobs', ['jobs'=>$jobs,'jobfair_id'=>$jobfair_id,'exid'=>$exid,'join_jobs'=>$join_jobs])->render();
  713. $return_data = array( 'status'=>1, 'data' => $html);
  714. return response()->json($return_data);
  715. }
  716. }
  717. }
  718. /**参加人员
  719. * return \Illuminate\Http\JsonResponse
  720. */
  721. public function ajaxPerson(Request $request)
  722. {
  723. if ($request->method() == 'POST') {
  724. $user = auth('web-company')->user();
  725. $jobfair_id = $request->input('jobfair_id', '');
  726. $exid = $request->input('exid', '');
  727. $this->jobfairoutCompanyService->isOwn($exid,$user);
  728. $this->jobfairoutCompanyService->isOwnJobfair($exid,$jobfair_id);
  729. $name= $request->input('name');
  730. $sex= $request->input('sex');
  731. $telephone = $request->input('telephone');
  732. $post = $request->input('post');
  733. $idcard = $request->input('idcard');
  734. $gentuan = $request->input('gentuan');
  735. $star = $request->input('star');
  736. $intro = $request->input('intro');
  737. if(!$name)
  738. {
  739. $return_data = array('status'=>0, 'msg'=>'请填写姓名');
  740. return response()->json($return_data);
  741. }
  742. if(!$sex)
  743. {
  744. $return_data = array('status'=>0, 'msg'=>'请选择性别');
  745. return response()->json($return_data);
  746. }
  747. if(!$telephone)
  748. {
  749. $return_data = array('status'=>0, 'msg'=>'请填写手机号码');
  750. return response()->json($return_data);
  751. }
  752. if(!preg_match("/^1[3456789]\d{9}$/", $telephone)){
  753. $return_data = array('status'=>0, 'msg'=>'请填写正确的手机号码');
  754. return response()->json($return_data);
  755. }
  756. if(!$post)
  757. {
  758. $return_data = array('status'=>0, 'msg'=>'请填写职务');
  759. return response()->json($return_data);
  760. }
  761. if(!$idcard)
  762. {
  763. $return_data = array('status'=>0, 'msg'=>'请填写身份证号码');
  764. return response()->json($return_data);
  765. }
  766. if(!isCreditNo($idcard)){
  767. $return_data = array('status'=>0, 'msg'=>'请填写正确的身份证号码');
  768. return response()->json($return_data);
  769. }
  770. $reserve_list_data = [
  771. 'name'=>$name,
  772. 'telephone'=>$telephone,
  773. 'post'=>$post,
  774. 'idcard'=>$idcard,
  775. 'sex'=>$sex,
  776. 'company_id'=>$user->id
  777. ];
  778. $reserve_data = [
  779. 'jobfair_id'=>$jobfair_id,
  780. 'company_id'=>$user->id,
  781. 'exid'=>$exid,
  782. 'name1'=>$name,
  783. 'id1'=>$idcard,
  784. 'phone1'=>$telephone,
  785. 'sex1'=>$sex,
  786. 'departmental_position1'=>$post,
  787. 'gentuan'=>$gentuan,
  788. 'star'=>$star,
  789. 'intro'=>$intro,
  790. ];
  791. DB::beginTransaction();
  792. try {
  793. if(!$this->jobfairoutReserveListRepository->getOne(['idcard'=>$idcard,'company_id'=>$user->id])){
  794. $this->jobfairoutReserveListRepository->create($reserve_list_data);
  795. }
  796. $this->jobfairoutReserveRepository->create($reserve_data);
  797. DB::commit();
  798. $return_data = array('status'=>1, 'msg'=>'编辑成功');
  799. return response()->json($return_data);
  800. } catch (\Exception $e) {
  801. DB::rollback();
  802. $return_data = array('status'=>0, 'msg'=>$e->getMessage());
  803. return response()->json($return_data);
  804. }
  805. } else {
  806. $user = auth('web-company')->user();
  807. $jobfair_id = $request->input('jobfairout_id', '');
  808. $exid = $request->input('exid', '');
  809. $reserve_list = $this->jobfairoutReserveListRepository->getReserveList(['company_id'=>$user->id]);
  810. $reserve = $this->jobfairoutReserveRepository->getReserve(['exid'=>$exid]);
  811. $html = view('jkq.jobfairout.ajax.add_person', ['reserve'=>$reserve,'reserve_list'=>$reserve_list,'jobfair_id'=>$jobfair_id,'exid'=>$exid])->render();
  812. $return_data = array( 'status'=>1, 'data' => $html);
  813. return response()->json($return_data);
  814. }
  815. }
  816. public function ajaxPersonDel(Request $request)
  817. {
  818. $id = $request->id;
  819. $user = $this->getLoginUser();
  820. $this->jobfairoutReserveService->isOwn($id,$user);
  821. if($this->jobfairoutReserveRepository->delete($id)){
  822. $return_data = array( 'status'=>1, 'data' => '删除成功');
  823. return response()->json($return_data);
  824. }
  825. $return_data = array( 'status'=>0, 'data' => '删除失败');
  826. return response()->json($return_data);
  827. }
  828. public function ajaxPersonInfo(Request $request)
  829. {
  830. $id = $request->id;
  831. if($data = $this->jobfairoutReserveListRepository->find($id)){
  832. $return_data = array( 'status'=>1, 'data' => $data);
  833. return response()->json($return_data);
  834. }
  835. $return_data = array( 'status'=>0, 'data' => '获取信息失败');
  836. return response()->json($return_data);
  837. }
  838. /**反馈表
  839. * return \Illuminate\Http\JsonResponse
  840. */
  841. public function ajaxFeedback(Request $request)
  842. {
  843. if ($request->method() == 'POST') {
  844. $user = auth('web-company')->user();
  845. $jobfair_id = $request->input('jobfair_id', '');
  846. $exid = $request->input('exid', '');
  847. $this->jobfairoutCompanyService->isOwn($exid,$user);
  848. $companyname = $request->input('companyname');
  849. $phone = $request->input('phone');
  850. $schoolname = $request->input('schoolname');
  851. $resumeNum = $request->input('resumeNum');
  852. $agreeNum = $request->input('agreeNum');
  853. $signNum = $request->input('signNum');
  854. $advice = $request->input('advice');
  855. $id = $request->input('id');
  856. if(!$companyname)
  857. {
  858. $return_data = array('status'=>0, 'msg'=>'请填写公司名称');
  859. return response()->json($return_data);
  860. }
  861. if(!$phone)
  862. {
  863. $return_data = array('status'=>0, 'msg'=>'请填写联系电话');
  864. return response()->json($return_data);
  865. }
  866. if(!preg_match("/^1[3456789]\d{9}$/", $phone)){
  867. $return_data = array('status'=>0, 'msg'=>'请填写正确的联系电话');
  868. return response()->json($return_data);
  869. }
  870. if(!$schoolname)
  871. {
  872. $return_data = array('status'=>0, 'msg'=>'请填写学校姓名');
  873. return response()->json($return_data);
  874. }
  875. $feedback_data = [
  876. 'jobfair_id'=>$jobfair_id,
  877. 'exid'=>$exid,
  878. 'companyname'=>$companyname,
  879. 'phone'=>$phone,
  880. 'schoolname'=>$schoolname,
  881. 'advice'=>$advice,
  882. 'resumeNum'=>implode(',',$resumeNum),
  883. 'agreeNum'=>implode(',',$agreeNum),
  884. 'signNum'=>implode(',',$signNum),
  885. 'company_id'=>$user->id
  886. ];
  887. DB::beginTransaction();
  888. try {
  889. if($id){
  890. $this->jobfairoutFeedbackRepository->update($feedback_data,$id);
  891. }else{
  892. $this->jobfairoutFeedbackRepository->create($feedback_data);
  893. }
  894. DB::commit();
  895. $return_data = array('status'=>1, 'msg'=>'保存成功');
  896. return response()->json($return_data);
  897. } catch (\Exception $e) {
  898. DB::rollback();
  899. $return_data = array('status'=>0, 'msg'=>$e->getMessage());
  900. return response()->json($return_data);
  901. }
  902. } else {
  903. $user = auth('web-company')->user();
  904. $jobfair_id = $request->input('jobfairout_id', '');
  905. $exid = $request->input('exid', '');
  906. $feedback = $this->jobfairoutFeedbackRepository->getOne(['exid'=>$exid]);
  907. $html = view('jkq.jobfairout.ajax.feedback', ['companyname'=>$user->companyname,'jobfair_id'=>$jobfair_id,'exid'=>$exid,'feedback'=>$feedback])->render();
  908. $return_data = array( 'status'=>1, 'data' => $html);
  909. return response()->json($return_data);
  910. }
  911. }
  912. public function companyShow(Request $request)
  913. {
  914. //获取企业信息
  915. $jobfair_id = $request->input('jobfair_id');
  916. $company_id = $request->input('company_id');
  917. $is_job = $request->input('is_job','');
  918. $company_info = $this->companyService->getCompanyInfo(['id'=>$company_id]);
  919. $this->putSeoData('company', $company_info);
  920. //在招职位
  921. $put_jobs_where = array(
  922. array('company_id','=',$company_id),
  923. array('jobfair_id','=',$jobfair_id),
  924. );
  925. $jobs_where = array(
  926. array('audit','=',1),
  927. array('display','=',1)
  928. );
  929. $jobs = $this->jobfairoutPutJobRepository->getWhere($jobs_where,$put_jobs_where);
  930. $jobfair = $this->jobfairoutRepository->findOne(['id'=>$jobfair_id]);
  931. //看过该公司的人还看过(获取相同行业的企业)
  932. $company_where = array(
  933. 'trade' => $company_info->trade,
  934. 'except_id' =>$company_info->id
  935. );
  936. $other_companys = $this->companyService->getOtherCompanies($company_where, 5);
  937. $user = getUser();
  938. if ($user && $user->utype==2) {
  939. //获取当前时间段内申请过的职位
  940. $space_time = (integer)config('aix.personal_set.per_set.per_set.apply_job_space');
  941. if ($space_time>0) {
  942. $stime = date('Y-m-d H:i:s', strtotime(date("Y-m-d", strtotime("-".$space_time." day"))));
  943. $apply_where = array(array('personal_uid','=',auth('web-member')->user()->id),array('created_at','>=',$stime));
  944. } else {
  945. $apply_where = array(array('personal_uid','=',auth('web-member')->user()->id));
  946. }
  947. $applys = $this->jobfairoutPersonalJopApplyService->getApplyJobs($apply_where);
  948. } else {
  949. $applys = array();
  950. }
  951. $return_data = array(
  952. 'info'=>$company_info,
  953. 'jobs'=>$jobs,
  954. 'jobfair' => $jobfair,
  955. 'applys' => $applys,
  956. 'other_companys'=>$other_companys,
  957. 'company_img' => $company_info->img,
  958. );
  959. if($is_job){
  960. return view('jkq.jobfairout.company.company_jobs', $return_data);
  961. }else{
  962. return view('jkq.jobfairout.company.company_show', $return_data);
  963. }
  964. }
  965. }