CompanyInterviewController.php 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608
  1. <?php
  2. namespace App\Http\Controllers\Mobile\Person;
  3. use App\Http\Controllers\Mobile\MobileBaseController;
  4. use App\Models\LotteryWin;
  5. use App\Models\Pms;
  6. use App\Models\RecuperateApply;
  7. use App\Models\RecuperateLog;
  8. use App\Models\RecuperateTime;
  9. use App\Models\Resume;
  10. use App\Services\Common\EmailService;
  11. use App\Services\Common\PayService;
  12. use App\Services\Common\SmsService;
  13. use App\Services\Company\CompanyInterviewService;
  14. use App\Services\Jobfair\JobfairPersonalJopApplyService;
  15. use App\Services\Person\MemberInfoService;
  16. use App\Services\Person\MemberPointService;
  17. use App\Services\Person\MemberService;
  18. use App\Services\Person\PersonFavoriteService;
  19. use App\Services\Person\PersonJobsApplyService;
  20. use App\Services\Person\ResumePrivacyService;
  21. use App\Services\Person\ResumeService;
  22. use App\Services\Recuperate\RecuperateApplyService;
  23. use App\Validators\PersonValidatorRequest;
  24. use Illuminate\Http\Request;
  25. class CompanyInterviewController extends MobileBaseController
  26. {
  27. /**
  28. * @var ResumeService
  29. */
  30. protected $ResumeService;
  31. protected $ResumePrivacyService;
  32. protected $companyInterviewService;
  33. protected $personalJobsApplyService;
  34. protected $memberPointService;
  35. protected $personFavoriteService;
  36. protected $memberInfoService;
  37. protected $memberService;
  38. protected $smsService;
  39. protected $emailService;
  40. protected $payService;
  41. protected $jobfairPersonalJopApplyService;
  42. protected $recuperateApplyService;
  43. public function __construct(
  44. ResumeService $ResumeService,
  45. ResumePrivacyService $ResumePrivacyService,
  46. CompanyInterviewService $companyInterviewService,
  47. PersonJobsApplyService $personalJobsApplyService,
  48. MemberPointService $memberPointService,
  49. PersonFavoriteService $personFavoriteService,
  50. MemberInfoService $memberInfoService,
  51. MemberService $memberService,
  52. SmsService $smsService,
  53. EmailService $emailService,
  54. PayService $payService,
  55. JobfairPersonalJopApplyService $jobfairPersonalJopApplyService,
  56. RecuperateApplyService $recuperateApplyService
  57. )
  58. {
  59. $this->ResumeService = $ResumeService;
  60. $this->ResumePrivacyService = $ResumePrivacyService;
  61. $this->companyInterviewService = $companyInterviewService;
  62. $this->personalJobsApplyService = $personalJobsApplyService;
  63. $this->memberPointService = $memberPointService;
  64. $this->personFavoriteService = $personFavoriteService;
  65. $this->memberInfoService = $memberInfoService;
  66. $this->memberService = $memberService;
  67. $this->smsService = $smsService;
  68. $this->emailService = $emailService;
  69. $this->payService = $payService;
  70. $this->jobfairPersonalJopApplyService = $jobfairPersonalJopApplyService;
  71. $this->recuperateApplyService = $recuperateApplyService;
  72. }
  73. public function jobsInterview(Request $request)
  74. {
  75. $resume = $this->ResumeService->myResumeAjax(auth('web-member')->user());
  76. $interview = $this->companyInterviewService->getInterviewByUid(auth('web-member')->user(), $request->all());
  77. if ($request->ajax()) {
  78. if ($interview['interview']->lastPage() < $interview['interview']->currentPage()) {
  79. return response()->json(['status' => 0]);
  80. }
  81. return response()->json([
  82. 'status' => 1,
  83. 'data' => view('mobile.app.person.ajax_tpl.ajax_jobs_interview',
  84. [
  85. 'resume' => $resume,
  86. 'interview' => $interview['interview'],
  87. ])->render(),
  88. 'params' => $interview['params'],
  89. ]);
  90. }
  91. return view('mobile.app.person.jobs_interview', [
  92. 'resume' => $resume,
  93. 'interview' => $interview['interview'], 'count' => $interview['count'], 'params' => $interview['params'],
  94. 'wap_title' => '面试邀请']);
  95. }
  96. public function delInterview(Request $request)
  97. {
  98. $res = $this->companyInterviewService->delInterview($request->id, auth('web-member')->user());
  99. if ($res) {
  100. return $this->sendSuccessResponse('删除成功');
  101. } else {
  102. return $this->sendErrorResponse('删除失败');
  103. }
  104. }
  105. public function setInterview(Request $request)
  106. {
  107. $res = $this->companyInterviewService->setInterview($request->id, auth('web-member')->user());
  108. if ($res) {
  109. return $this->sendSuccessResponse('设置成功');
  110. } else {
  111. return $this->sendErrorResponse('设置失败');
  112. }
  113. }
  114. public function attentionMe(Request $request)
  115. {
  116. $resume = $this->ResumeService->myResumeAjax(auth('web-member')->user());
  117. $res = $this->ResumeService->attentionMe(auth('web-member')->user(), $request->all());
  118. if ($request->ajax()) {
  119. if ($res['content']->lastPage() < $res['content']->currentPage()) {
  120. return response()->json(['status' => 0]);
  121. }
  122. return response()->json([
  123. 'status' => 1,
  124. 'data' => view('mobile.app.person.ajax_tpl.ajax_attention_me',
  125. [
  126. 'resume' => $resume,
  127. 'content' => $res['content'],
  128. ])->render(),
  129. 'params' => $res['params']]);
  130. }
  131. return view('mobile.app.person.attention_me', [
  132. 'content' => $res['content'],
  133. 'resume' => $resume,
  134. 'params' => $res['params'],
  135. 'wap_title' => '谁看过我',
  136. ]);
  137. }
  138. public function delAttention()
  139. {
  140. $res = $this->ResumeService->delAttention(request()->id, auth('web-member')->user());
  141. if ($res) {
  142. return $this->sendSuccessResponse('删除成功');
  143. } else {
  144. return $this->sendErrorResponse('删除失败');
  145. }
  146. }
  147. public function jobsApply(Request $request)
  148. {
  149. $resume = $this->ResumeService->myResumeAjax(auth('web-member')->user());
  150. $applyJobs = $this->personalJobsApplyService->getJobsApply(auth('web-member')->user(), $request->all());
  151. if ($request->ajax()) {
  152. if ($applyJobs['applyJobs']->lastPage() < $applyJobs['applyJobs']->currentPage()) {
  153. return response()->json(['status' => 0]);
  154. }
  155. return response()->json([
  156. 'status' => 1,
  157. 'data' => view('mobile.app.person.ajax_tpl.ajax_jobs_apply',
  158. [
  159. 'resume' => $resume,
  160. 'applyJobs' => $applyJobs['applyJobs'],
  161. ])->render(),
  162. 'params' => $applyJobs['params']]);
  163. }
  164. return view('mobile.app.person.jobs_apply', [
  165. 'resume' => $resume,
  166. 'applyJobs' => $applyJobs['applyJobs'],
  167. 'count' => $applyJobs['count'],
  168. 'params' => $applyJobs['params'],
  169. 'wap_title' => '求职反馈',
  170. ]);
  171. }
  172. public function order_list(Request $request)
  173. {
  174. $res = $this->memberPointService->order_list(auth('web-member')->user(), $request->all());
  175. if ($request->ajax()) {
  176. if ($res['order']->lastPage() < $res['order']->currentPage()) {
  177. return response()->json(['status' => 0]);
  178. }
  179. return response()->json([
  180. 'status' => 1,
  181. 'data' => view('mobile.app.person.ajax_tpl.ajax_order_list',
  182. [
  183. 'order' => $res['order'],
  184. ])->render(),
  185. 'params' => $res['params']]);
  186. }
  187. return view('mobile.app.person.service.order_list', [
  188. 'order' => $res['order'],
  189. 'params' => $res['params'],
  190. 'wap_title' => '我的订单',
  191. ]);
  192. }
  193. public function order_detail(Request $request)
  194. {
  195. $res = $this->memberPointService->order_detail($request->id, auth('web-member')->user());
  196. return view('mobile.app.person.service.order_detail', ['order' => $res, 'wap_title' => '订单详情']);
  197. }
  198. public function order_cancel(Request $request)
  199. {
  200. $res = $this->memberPointService->order_cancel($request->id, auth('web-member')->user());
  201. if ($res) {
  202. return $this->sendSuccessResponse('取消成功!');
  203. } else {
  204. return $this->sendErrorResponse('取消失败!');
  205. }
  206. }
  207. public function jobsF(Request $request)
  208. {
  209. $res = $this->personFavoriteService->jobsF(auth('web-member')->user());
  210. $resumes = $this->ResumeService->myResumeAjax(auth('web-member')->user());
  211. if ($request->ajax()) {
  212. if ($res->lastPage() < $res->currentPage()) {
  213. return response()->json(['status' => 0]);
  214. }
  215. return response()->json([
  216. 'status' => 1,
  217. 'data' => view('mobile.app.person.ajax_tpl.ajax_jobsF', ['content' => $res])->render()]);
  218. }
  219. return view('mobile.app.person.jobs_favorites', ['content' => $res, 'resumes' => $resumes, 'wap_title' => '职位收藏夹']);
  220. }
  221. public function resumeApply()
  222. {
  223. $res = $this->personFavoriteService->resumeApply(request()->all(), auth('web-member')->user());
  224. if ($res['code'] == 1) {
  225. return $this->sendSuccessResponse($res['info']);
  226. } else {
  227. return $this->sendErrorResponse($res['info']);
  228. }
  229. }
  230. public function resumeApplyAjax()
  231. {
  232. $res = $this->ResumeService->myResumeAjax(auth('web-member')->user());
  233. $def_resume = Resume::where(['uid' => auth('web-member')->user()->id, 'def' => 1])->first();
  234. $html = view('mobile.app.person.ajax_tpl.ajax_apply_job', ['resumes' => $res, 'def_resume' => $def_resume])
  235. ->render();
  236. return $this->sendSuccessResponse($html);
  237. }
  238. public function attentionCom(Request $request)
  239. {
  240. $res = $this->personFavoriteService->attentionCom(auth('web-member')->user());
  241. if ($request->ajax()) {
  242. if ($res->lastPage() < $res->currentPage()) {
  243. return response()->json(['status' => 0]);
  244. }
  245. return response()->json([
  246. 'status' => 1,
  247. 'data' => view('mobile.app.person.ajax_tpl.ajax_attention_com', ['content' => $res])->render()]);
  248. }
  249. return view('mobile.app.person.attention_com', ['content' => $res, 'wap_title' => '关注的企业']);
  250. }
  251. public function shieldCompany()
  252. {
  253. $shieldCompany = $this->ResumePrivacyService->getShieldCompany(auth('web-member')->user());
  254. return view('mobile.app.person.shield_company', ['shieldCompany' => $shieldCompany, 'wap_title' => '屏蔽企业']);
  255. }
  256. public function saveShieldCompany()
  257. {
  258. $res = $this->ResumePrivacyService->saveShieldCompany(request()->company_id, auth('web-member')->user());
  259. if ($res) {
  260. return $this->sendSuccessResponse($res);
  261. } else {
  262. return $this->sendErrorResponse('企业关键字添加失败', '', 400);
  263. }
  264. }
  265. public function memberSafe()
  266. {
  267. return view('mobile.app.person.per_security', [
  268. 'member' => $this->memberInfoService->memberSafe(auth('web-member')->user()),
  269. 'wap_title' => '账号安全',
  270. ]);
  271. }
  272. public function bind()
  273. {
  274. $qq = $this->memberInfoService->qq(auth('web-member')->user(), [1]);
  275. $weixin = $this->memberInfoService->weixin(auth('web-member')->user(), [2, 3, 4]);
  276. return view('mobile.app.person.per_binding', ['wap_title' => '账号绑定', 'qq' => $qq, 'weixin' => $weixin]);
  277. }
  278. public function perSecTel()
  279. {
  280. return view('mobile.app.person.per_security_tel', ['wap_title' => '手机认证']);
  281. }
  282. public function mobileAudit(PersonValidatorRequest $request)
  283. {
  284. $mobile = trim(request()->mobile);
  285. $id = trim(request()->id);
  286. if (!$this->memberService->findByField($id, $mobile)->isEmpty()) {
  287. return $this->sendErrorResponse('该手机已经认证!', '', 400);
  288. }
  289. $this->smsService->sendAuthSms($mobile, 'sms_auth_check');
  290. return response()->json(['code' => 1]);
  291. }
  292. public function mobileAuditCode(PersonValidatorRequest $request)
  293. {
  294. $mobile = trim(request()->mobile);
  295. $verifycode = trim(request()->verifycode);
  296. $res = $this->smsService->checkAuthSms($mobile, 'sms_auth_check', $verifycode);
  297. if (!$res) {
  298. return $this->sendErrorResponse('验证码错误!', '', 400);
  299. }
  300. $res = $this->memberInfoService->mobileAuditCode($mobile);
  301. if ($res['code'] == 1) {
  302. return $this->sendSuccessResponse($res['points']);
  303. } else {
  304. return $this->sendErrorResponse('手机认证失败!', '', 400);
  305. }
  306. }
  307. public function perSecEmail()
  308. {
  309. return view('mobile.app.person.per_security_email', ['wap_title' => '邮箱认证']);
  310. }
  311. public function emailAudit()
  312. {
  313. $email = trim(request()->email);
  314. $id = trim(request()->id);
  315. if (!$this->memberService->findByEmail($id, $email)->isEmpty()) {
  316. return $this->sendErrorResponse('该邮箱已经认证!', '', 400);
  317. }
  318. $this->emailService->setAuthTag('personal')
  319. ->setCallback('App\Services\Person\MemberInfoService', 'sendAuthEmailHook', [$email, auth('web-member')->user()])
  320. ->sendAuthMail($email, EmailService::TEMPLATE_VALIDATION);
  321. return response()->json(['status' => 1]);
  322. }
  323. public function perSecPwd()
  324. {
  325. return view('mobile.app.person.per_security_pwd', ['wap_title' => '修改密码']);
  326. }
  327. public function passwordInfo(PersonValidatorRequest $request)
  328. {
  329. $res = $this->memberInfoService->updatePassword($request->oldpassword,
  330. $request->password, $request->password1, auth('web-member')->user());
  331. return response()->json($res);
  332. }
  333. public function memberLog(Request $request)
  334. {
  335. $content = $this->memberInfoService->getMemberLog(auth('web-member')->user(), $request->route());
  336. if ($request->ajax()) {
  337. if ($content['last_page'] < $content['current_page']) {
  338. return response()->json(['status' => 0]);
  339. }
  340. return response()->json([
  341. 'status' => 1,
  342. 'data' => view('mobile.app.person.ajax_tpl.ajax_member_log', ['content' => $content])->render()]);
  343. }
  344. return view('mobile.app.person.per_security_log')->with(['content' => $content, 'wap_title' => '会员登录日志']);
  345. }
  346. public function pms(Request $request)
  347. {
  348. if ($request->type == 1) {
  349. $res = $this->memberInfoService->mobileMsg(auth('web-member')->user());
  350. if ($request->ajax()) {
  351. if ($res->lastPage() < $res->currentPage()) {
  352. return response()->json(['status' => 0]);
  353. }
  354. return response()->json([
  355. 'status' => 1,
  356. 'data' => view('mobile.app.person.ajax_tpl.ajax_pms_type', ['pms' => $res])->render()]);
  357. }
  358. } else {
  359. $res = $this->memberInfoService->pms(auth('web-member')->user());
  360. if ($request->ajax()) {
  361. if ($res->lastPage() < $res->currentPage()) {
  362. return response()->json(['status' => 0]);
  363. }
  364. return response()->json([
  365. 'status' => 1,
  366. 'data' => view('mobile.app.person.ajax_tpl.ajax_pms', ['pms' => $res])->render()]);
  367. }
  368. }
  369. return view('mobile.app.person.pms_list', ['pms' => $res, 'wap_title' => '消息提醒']);
  370. }
  371. public function pmsShow(Request $request)
  372. {
  373. $res = Pms::find($request->id);
  374. return view('mobile.app.person.pms_show', ['pms' => $res, 'wap_title' => '系统消息']);
  375. }
  376. public function feedback()
  377. {
  378. return view('mobile.app.person.feedback', ['wap_title' => '意见反馈']);
  379. }
  380. public function feedbackCreate(Request $request)
  381. {
  382. $res = $this->memberInfoService->feedbackCreate($request->all());
  383. if ($res) {
  384. return $this->sendSuccessResponse('提交成功!');
  385. } else {
  386. return $this->sendErrorResponse('提交失败!', '', 400);
  387. }
  388. }
  389. public function msg(Request $request)
  390. {
  391. $res = $this->memberInfoService->mobileMsgShow(
  392. auth('web-member')->user(), $request->parent_id);
  393. if ($request->ajax()) {
  394. if ($res['res']->lastPage() < $res['res']->currentPage()) {
  395. return response()->json(['status' => 0]);
  396. }
  397. return response()->json([
  398. 'status' => 1,
  399. 'data' => view('mobile.app.person.ajax_tpl.ajax_msg_show', ['msg' => $res['res']])->render()]);
  400. }
  401. return view('mobile.app.person.msg', ['msg' => $res['res'], 'company' => $res['company'], 'wap_title' => '留言咨询']);
  402. }
  403. public function personJobfair(Request $request)
  404. {
  405. $jobApply = $this->jobfairPersonalJopApplyService->personJobfair();
  406. if ($request->ajax()) {
  407. if ($jobApply['interview']->lastPage() < $jobApply['interview']->currentPage()) {
  408. return response()->json(['status' => 0]);
  409. }
  410. return response()->json([
  411. 'status' => 1,
  412. 'data' => view('mobile.app.person.ajax_tpl.jobfair',
  413. ['content' => $jobApply['interview']])->render()]);
  414. }
  415. return view('mobile.app.person.service.jobfair', ['content' => $jobApply['interview'], 'wap_title' => '招聘会']);
  416. }
  417. public function msgSend(Request $request)
  418. {
  419. $res = $this->memberInfoService->msgSend(auth('web-member')->user(), request()->all());
  420. if ($res) {
  421. return $this->sendSuccessResponse('留言成功!');
  422. } else {
  423. return $this->sendErrorResponse('留言失败!', '', 400);
  424. }
  425. }
  426. public function incrementStickSave()
  427. {
  428. $result = $this->ResumeService->incrementStickSave(request()->all(), auth('web-member')->user());
  429. if ($result['code'] == 1) {
  430. return $this->sendSuccessResponse($result['info']);
  431. } else {
  432. return $this->sendErrorResponse($result['info'], '', 400);
  433. }
  434. }
  435. public function incrementAddSave()
  436. {
  437. $result = $this->ResumeService->incrementAddSave(request()->all(), auth('web-member')->user());
  438. if ($result['code'] == 1) {
  439. return $this->sendSuccessResponse($result['info']);
  440. } else {
  441. return $this->sendErrorResponse($result['info'], '', 400);
  442. }
  443. }
  444. public function pay(Request $request)
  445. {
  446. $order = $this->memberPointService->pay($request->all(), auth('web-member')->user());
  447. $tradeNo = $this->payService->getTradeNo($order['order']->id);
  448. $res = $this->memberPointService->updateOrder($tradeNo, $order['input'], $order['order'], $request->route());
  449. if ($res['code'] == 'wechat') {
  450. if ($res['type'] == 'wap') {
  451. return $res['tradeCode'];
  452. } elseif ($res['type'] == 'official') {
  453. return json_encode(['tradeCode' => $res['tradeCode']]);
  454. } else {
  455. return json_encode(['tradeCode' => $res['tradeCode'], 'tradeNo' => $res['tradeNo']]);
  456. }
  457. } else {
  458. return $res['tradeCode'];
  459. }
  460. }
  461. public function payStatus(Request $request)
  462. {
  463. $res = $this->memberPointService->payStatus($request->tradeNo);
  464. if ($res) {
  465. return json_encode(['code' => 1]);
  466. } else {
  467. return json_encode(['code' => 0]);
  468. }
  469. }
  470. public function payAgain(Request $request)
  471. {
  472. $res = $this->memberPointService->payAgain(request()->id, $request->route());
  473. if ($res['code'] == 'wechat') {
  474. if ($res['type'] == 'wap') {
  475. return $res['tradeCode'];
  476. } else {
  477. return json_encode(['tradeCode' => $res['tradeCode'], 'tradeNo' => $res['tradeNo']]);
  478. }
  479. } else {
  480. return $res['tradeCode'];
  481. }
  482. }
  483. /**
  484. * 疗养套餐报名列表
  485. */
  486. public function recuperate(Request $request)
  487. {
  488. $res = $this->recuperateApplyService->list($request->input('status',null),$request->input('year',null), 8, ['recuperate']);
  489. // $year_arr=RecuperateTime::where('uid',auth('web-member')->id())->orderBy('year', 'DESC')->select('id','year','price')->get();
  490. if ($request->ajax()) {
  491. if ($res->count() == 0) {
  492. return response()->json(['status' => 0]);
  493. }
  494. return response()->json([
  495. 'status' => 1,
  496. 'data' => view('mobile.app.person.ajax_tpl.ajax_recuperate', ['order' => $res['order']])->render(),
  497. ]);
  498. }
  499. $return_data = [
  500. 'back_url'=>route('mobile.person.index'),
  501. 'list' => $res,
  502. 'params' => $request->all(),
  503. ];
  504. return view('mobile.app.person.recuperate', $return_data);
  505. }
  506. public function audit_qx(Request $request)
  507. {
  508. $id = $request->id;
  509. if (empty($id)) {
  510. return response()->json(['status'=>0,'msg'=>'数据异常']);
  511. }
  512. $uid = auth('web-member')->id();
  513. $result = RecuperateApply::where('id', '=', $id)->update(['status' => 3]);
  514. $auditData = array(
  515. 'type' => 1,
  516. 'admin_id' => $uid,
  517. 'sid' => $uid,
  518. 'content' => "取消活动"
  519. );
  520. RecuperateLog::create($auditData);
  521. if ($result) {
  522. return response()->json(['status'=>1,'msg'=>'活动已取消']);
  523. } else {
  524. return response()->json(['status'=>0,'msg'=>'该信息不存在或已审核']);
  525. }
  526. }
  527. /**
  528. * 中奖列表
  529. */
  530. public function lottery(Request $request)
  531. {
  532. $size = 8;
  533. $user_id = auth('web-member')->user()->id;
  534. $rst = LotteryWin::where('member_id',$user_id)->orderBy('status','asc')->orderBy('created_at','desc')->paginate($size);
  535. if ($request->ajax()) {
  536. if ($rst->lastPage() < $rst->currentPage()) {
  537. return response()->json(['status' => 0]);
  538. }
  539. return response()->json(['status' => 1, 'data' => view('mobile.app.person.ajax_tpl.ajax_lottery', ['list' => $rst])->render()]);
  540. }
  541. $mobile_dropload = false;
  542. if ($rst->total() > $size) {
  543. $mobile_dropload = true;
  544. }
  545. $return_data = [
  546. 'list' => $rst,
  547. 'current_url' => \Illuminate\Support\Facades\Request::getRequestUri(),
  548. 'wap_title' => '中奖列表',
  549. 'mobile_dropload' => $mobile_dropload,
  550. ];
  551. return view('mobile.app.person.lottery', $return_data);
  552. }
  553. }