ResumeController.php 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: wuzhenke
  5. * Date: 2018/11/20
  6. * Time: 9:53
  7. */
  8. namespace App\Http\Controllers\Jkq\Company;
  9. use App\Exceptions\ResponseException;
  10. use App\Http\Controllers\Jkq\JkqBaseController;
  11. use App\Services\Common\EmailService;
  12. use App\Services\Company\CompanyDownResumeService;
  13. use App\Services\Company\PersonalJobsApplyService;
  14. use App\Services\Person\ResumeService;
  15. use Illuminate\Http\Request;
  16. class ResumeController extends JkqBaseController
  17. {
  18. protected $personalJobsApplyService;
  19. protected $resumeService;
  20. protected $companyDownResumeService;
  21. protected $emailService;
  22. /**
  23. * ResumeController constructor.
  24. * @param $personalJobsApplyService
  25. * @param $resumeService
  26. * @param $companyDownResumeService
  27. * @param $emailService
  28. */
  29. public function __construct(PersonalJobsApplyService $personalJobsApplyService, EmailService $emailService, ResumeService $resumeService, CompanyDownResumeService $companyDownResumeService)
  30. {
  31. $this->personalJobsApplyService = $personalJobsApplyService;
  32. $this->resumeService = $resumeService;
  33. $this->companyDownResumeService = $companyDownResumeService;
  34. $this->emailService = $emailService;
  35. }
  36. /**
  37. * 收到的简历
  38. * @param Request $request
  39. * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  40. */
  41. public function resumeApply(Request $request)
  42. {
  43. $user = auth('web-company')->user();
  44. $result = $this->personalJobsApplyService->resumeApply($request->all(), $user);
  45. return view('jkq.company.resume.resume_apply', $result);
  46. }
  47. /**
  48. * 标记简历
  49. * @param $id
  50. * @param $state
  51. * @return \Illuminate\Http\JsonResponse
  52. */
  53. public function resumeLabelApply($id, $state)
  54. {
  55. $user = auth('web-company')->user();
  56. return $this->personalJobsApplyService->labelApply($id, $state, $user);
  57. }
  58. /**
  59. * 删除申请的简历(单个和批量)
  60. * @param Request $request
  61. * @return \Illuminate\Http\JsonResponse
  62. * @throws \Throwable
  63. */
  64. public function delJobsApply(Request $request)
  65. {
  66. if ($request->method()=='GET') {
  67. $tip='被删除后将无法恢复,您确定要删除选中的简历吗?';
  68. return response()->json(['status'=>1,'msg'=>'获取数据成功', 'data'=>['html'=>view('jkq.company.ajax.ajax_warning', ['tip'=>$tip])->render()]]);
  69. } else {
  70. $user = auth('web-company')->user();
  71. return $this->personalJobsApplyService->delJobsApply($request,$user);
  72. }
  73. }
  74. /**
  75. * 邀请面试
  76. * @param Request $request
  77. * @return \Illuminate\Http\JsonResponse
  78. * @throws \Throwable
  79. */
  80. public function jobsInterview(Request $request)
  81. {
  82. $user = auth('web-company')->user();
  83. if ($request->method() == 'GET') {
  84. if (!$request->resume_id) {
  85. return response()->json(['status'=>0, 'msg'=>'请选择简历!']);
  86. }
  87. return $this->personalJobsApplyService->getApply($request->all(), $user);
  88. } else {
  89. return $this->personalJobsApplyService->saveApply($request,$user);
  90. }
  91. }
  92. /**
  93. * 保存到电脑 ====收到简历
  94. * @param Request $request
  95. * @return \Illuminate\Http\JsonResponse|\Symfony\Component\HttpFoundation\BinaryFileResponse
  96. * @throws ResponseException
  97. */
  98. public function resumeSaveToComputer(Request $request)
  99. {
  100. $yid = $request->y_id;
  101. $model = $request->model;
  102. if (!$yid) {
  103. throw new ResponseException('请选择简历');
  104. }
  105. $user = auth('web-company')->user();
  106. if($model == 'personaljobsapply') {
  107. $this->personalJobsApplyService->isOwn($yid, $user,'id');
  108. }
  109. if($model == 'downresume') {
  110. $this->companyDownResumeService->isOwn($yid, $user,'id');
  111. }
  112. $model_arr = ['personaljobsapply','downresume'];
  113. if (!in_array($model, $model_arr)) {
  114. throw new ResponseException('参数错误');
  115. }
  116. if (false === $res = $this->personalJobsApplyService->saveAsDoc($yid, $model)) {
  117. throw new ResponseException('查找不到相关简历!');
  118. } else {
  119. return response()->download($res['path'], "简历压缩包".date("Ymd").".zip");
  120. }
  121. return response()->json(['status'=>0, 'msg'=>"保存失败"]);
  122. }
  123. /**发送到Email
  124. * @param Request $request
  125. * @return \Illuminate\Http\JsonResponse
  126. * @throws \Throwable
  127. */
  128. public function sendToEmail(Request $request)
  129. {
  130. $resume_id = $request->resume_id;
  131. if (!$resume_id) {
  132. return response()->json(['status'=>0,'msg'=>'请选择简历!']);
  133. }
  134. if ($request->method()=='POST') {
  135. $user = auth('web-company')->user();
  136. $model = $request->model;
  137. if($model == 'personaljobsapply') {
  138. $this->personalJobsApplyService->isOwn($resume_id, $user,'resume_id');
  139. }
  140. if($model == 'downresume') {
  141. $this->companyDownResumeService->isOwn($resume_id, $user,'resume_id');
  142. }
  143. $email = $request->email;
  144. $pattern = "/^[_\.0-9a-zA-Z-]+[_0-9a-zA-Z-]@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,3}$/";
  145. if (!$email || !preg_match($pattern, $email)) {
  146. return response()->json(['status'=>0,'msg'=>'email不正确']);
  147. }
  148. return $this->sendEmail($email, $resume_id);
  149. }
  150. return response()->json(['status'=>1,'msg'=>'返回成功','html'=>view('jkq.company.ajax.ajax_send_to_email')->render()]);
  151. }
  152. /**发送到Email
  153. * @param $email
  154. * @param $resume_id
  155. * @return \Illuminate\Http\JsonResponse
  156. * @throws \Throwable
  157. */
  158. public function sendEmail($email, $resume_id)
  159. {
  160. if (!is_array($resume_id)) {
  161. $resume_id = explode(',', $resume_id);
  162. }
  163. foreach ($resume_id as $key => $val) {
  164. $this->sendEmailDone($email, $val);
  165. }
  166. return response()->json(['status'=>1,'msg'=>"发送成功!" ]);
  167. }
  168. /**发送到Email
  169. * @param $email
  170. * @param $resume_id
  171. * @return ResumeController
  172. * @throws \Throwable
  173. */
  174. public function sendEmailDone($email, $resume_id)
  175. {
  176. $res = $this->resumeService->resumeDoc($resume_id);
  177. if (!$res) {
  178. return $this->sendErrorResponse('参数错误!', 404);
  179. }
  180. $resume = view('jkq.tpl.word_resume', ['content'=>$res])->render();
  181. $this->emailService->sendMail($email, EmailService::TEMPLATE_SEND_RESUME, ['personalfullname'=>$res['resume']['fullname']], ['resume'=>$resume]);
  182. }
  183. /**
  184. * @param Request $request
  185. * @param 企业的邀请面试记录
  186. * @return 集合
  187. */
  188. public function interviewJobs(Request $request)
  189. {
  190. $user = auth('web-company')->user();
  191. $res = $this->resumeService->interviewJobs($request->all(), $user);
  192. return view('jkq.company.resume.jobs_interview', $res);
  193. }
  194. /**
  195. * 面试邀请详情
  196. * @param Request $request
  197. * @return \Illuminate\Http\JsonResponse
  198. * @throws \Throwable
  199. */
  200. public function interviewDetail(Request $request)
  201. {
  202. return $this->resumeService->interviewDetail($request);
  203. }
  204. /**
  205. * 删除下载面试邀请
  206. * @param Request $request
  207. * @return \Illuminate\Http\JsonResponse
  208. * @throws \Throwable
  209. */
  210. public function interviewDel(Request $request)
  211. {
  212. if ($request->method()=='GET') {
  213. $tip='被删除后将无法恢复,您确定要删除选中的面试邀请记录吗?';
  214. return response()->json(['status'=>1,'msg'=>'获取数据成功', 'data'=>['html'=>view('jkq.company.ajax.ajax_warning', ['tip'=>$tip])->render()]]);
  215. } else {
  216. $user = auth('web-company')->user();
  217. $res = $this->resumeService->interviewDel($request->all(),$user);
  218. return response()->json(['status'=>$res['status'], 'msg'=>$res['msg']]);
  219. }
  220. }
  221. /**
  222. * 已下载简历
  223. * @param Request $request
  224. * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  225. */
  226. public function resumeDown(Request $request)
  227. {
  228. $user = auth('web-company')->user();
  229. $result = $this->resumeService->resumeDown($request->all(), $user);
  230. return view('jkq.company.resume.resume_down', $result);
  231. }
  232. public function resumeDownDel(Request $request)
  233. {
  234. if ($request->method() =='POST') {
  235. return $this->resumeService->resumeDownDel($request);
  236. }
  237. $tip='被删除后将无法恢复,您确定要删除选中的下载的简历吗?';
  238. return response()->json(['status'=>1,'msg'=>'获取数据成功', 'data'=>view('jkq.company.ajax.ajax_warning', ['tip'=>$tip])->render()]);
  239. }
  240. /**
  241. * 标注下载简历
  242. * @param $id
  243. * @param $state
  244. * @return \Illuminate\Http\JsonResponse
  245. */
  246. public function labelResume($id, $state)
  247. {
  248. return $this->companyDownResumeService->labelApply($id, $state);
  249. }
  250. /**企业收藏的简历
  251. * @param Request $request
  252. * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  253. */
  254. public function favoritesResume(Request $request)
  255. {
  256. $user = auth('web-company')->user();
  257. $res = $this->resumeService->favoritesResume($request, $user, 0);
  258. return view('jkq.company.resume.favorites_resume', $res);
  259. }
  260. /**收藏简历
  261. * @param Request $request
  262. * @return \Illuminate\Http\JsonResponse
  263. * @throws \Prettus\Validator\Exceptions\ValidatorException
  264. * @throws \Throwable
  265. */
  266. public function favoritesResumeSave(Request $request)
  267. {
  268. if ($request->method() == 'GET') {
  269. $tip = "您确定要收藏选中的简历吗?";
  270. return response()->json(['status'=>1, 'data'=>view('jkq.company.ajax.ajax_warning', ['tip'=>$tip])->render()]);
  271. }
  272. return $this->resumeService->favoritesResumeSave($request);
  273. }
  274. /**删除收藏的简历
  275. * @param Request $request
  276. * @return \Illuminate\Http\JsonResponse
  277. * @throws \Throwable
  278. */
  279. public function favoritesResumeDel(Request $request)
  280. {
  281. if ($request->method() == 'GET') {
  282. $tip = "被删除后将无法恢复,您确定要删除选中的简历吗?";
  283. return response()->json(['status'=>1, 'data'=>view('jkq.company.ajax.ajax_warning', ['tip'=>$tip])->render()]);
  284. }
  285. $user = auth('web-company')->user();
  286. return $this->resumeService->favoritesResumeDel($request->y_id,$user);
  287. }
  288. /**
  289. * 浏览过的简历
  290. * @param Request $request
  291. * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  292. */
  293. public function browseResume(Request $request)
  294. {
  295. $res = $this->resumeService->browseResume($request);
  296. return view('jkq.company.resume.browse_resume', $res);
  297. }
  298. /**删除浏览过的简历
  299. * @param Request $request
  300. * @return \Illuminate\Http\JsonResponse
  301. * @throws \Throwable
  302. */
  303. public function browseResumeDel(Request $request)
  304. {
  305. if ($request->method() == 'GET') {
  306. $tip = "被删除后将无法恢复,您确定要删除选中的简历吗?";
  307. return response()->json(['status'=>1, 'data'=>view('jkq.company.ajax.ajax_warning', ['tip'=>$tip])->render()]);
  308. }
  309. $user = auth('web-company')->user();
  310. return $this->resumeService->browseResumeDel($request,$user);
  311. }
  312. /**谁看过我
  313. * @param Request $request
  314. * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  315. */
  316. public function browseJobs(Request $request)
  317. {
  318. $res = $this->resumeService->browseJobs($request);
  319. return view('jkq.company.resume.browse_jobs', $res);
  320. }
  321. /**删除谁看过我
  322. * @param Request $request
  323. * @return \Illuminate\Http\JsonResponse
  324. * @throws \Throwable
  325. */
  326. public function browseJobsDel(Request $request)
  327. {
  328. if ($request->method() == 'GET') {
  329. $tip = "被删除后将无法恢复,您确定要删除选中的简历吗?";
  330. return response()->json(['status'=>1, 'data'=>view('jkq.company.ajax.ajax_warning', ['tip'=>$tip])->render()]);
  331. }
  332. $user = auth('web-company')->user();
  333. return $this->resumeService->browseJobsDel($request,$user);
  334. }
  335. /**面试邀请
  336. * @param Request $request
  337. * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  338. */
  339. public function feedback(Request $request)
  340. {
  341. $res = $this->resumeService->feedback($request);
  342. return view('jkq.company.resume.feedback', $res);
  343. }
  344. /**面试邀请反馈操作
  345. * @param Request $request
  346. * @return ResumeController|\Illuminate\Http\JsonResponse
  347. * @throws \Throwable
  348. */
  349. public function feedbackModify(Request $request)
  350. {
  351. $id = $request->id?$request->id:0;
  352. if (!$id) {
  353. return response()->json(['status'=>0,'msg'=>'参数错误!']);
  354. }
  355. if ($request->method() == "POST") {
  356. $explan = $request->notes?$request->notes:'';
  357. $status = $request->status?$request->status:0;
  358. if (!$status) {
  359. return $this->sendErrorResponse('请选择反馈结果!');
  360. }
  361. $user = auth('web-company')->user();
  362. return $this->resumeService->feedbackModify($id, $explan, $status,$user->id);
  363. }
  364. return response()->json(['status'=>1,'html'=>view('jkq.company.ajax.ajax_feedback', ['id'=>$id])->render()]);
  365. }
  366. /**回收站
  367. * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  368. */
  369. public function recycle()
  370. {
  371. $res = $this->resumeService->recycle();
  372. return view('jkq.company.resume.resume_recycle', $res);
  373. }
  374. /**回收站删除
  375. * @param Request $request
  376. * @return \Illuminate\Http\JsonResponse
  377. * @throws \Throwable
  378. */
  379. public function destroyJobsApply(Request $request)
  380. {
  381. $ids = $request->id;
  382. if ($request->method()=='POST') {
  383. return $this->resumeService->destroyJobsApply($ids);
  384. }
  385. $tip = "此处删除为物理删除,您确定要删除选中的简历吗?";
  386. return response()->json(['status'=>1,'data'=>view('jkq.company.ajax.ajax_warning', ['tip'=>$tip])->render()]);
  387. }
  388. /**清空回收站
  389. * @param Request $request
  390. * @return \Illuminate\Http\JsonResponse
  391. * @throws \Throwable
  392. */
  393. public function clearRecycle(Request $request)
  394. {
  395. if ($request->method()=='POST') {
  396. return $this->resumeService->clearRecycle();
  397. }
  398. $tip = "清空回收站将物理删除所有简历,您确定要清空回收站吗?";
  399. return response()->json(['status'=>1,'data'=>view('jkq.company.ajax.ajax_warning', ['tip'=>$tip])->render()]);
  400. }
  401. public function concern(Request $request)
  402. {
  403. $res = $this->resumeService->concern($request);
  404. return view('jkq.company.resume.concern', $res);
  405. }
  406. public function concernDel(Request $request)
  407. {
  408. if ($request->method()=='POST') {
  409. $user = auth('web-company')->user();
  410. return $this->resumeService->concernDel($request,$user);
  411. }
  412. $tip = "被删除后将无法恢复,您确定要删除选中的记录吗?";
  413. return response()->json(['status'=>1,'data'=>view('jkq.company.ajax.ajax_warning', ['tip'=>$tip])->render()]);
  414. }
  415. }