CompanyController.php 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: michaelwu
  5. * Date: 2018/10/31
  6. * Time: 10:02
  7. */
  8. namespace App\Http\Controllers\Mobile\Company;
  9. use Aix\Sms\Contracts\Smser;
  10. use App\Http\Controllers\Mobile\MobileBaseController;
  11. use App\Repositories\AuditReasonsRepository;
  12. use App\Repositories\CompanyRepository;
  13. use App\Repositories\MemberSetmealRepository;
  14. use App\Repositories\MsgRepository;
  15. use App\Repositories\PmsRepository;
  16. use App\Repositories\ResumeRepository;
  17. use App\Services\Common\EmailService;
  18. use App\Services\Common\SmsService;
  19. use App\Services\Common\TaskService;
  20. use App\Services\Company\CompanyImgService;
  21. use App\Services\Company\CompanyService;
  22. use App\Services\Company\JobsService;
  23. use App\Services\Common\SearchService;
  24. use App\Services\Content\FeedbackService;
  25. use App\Services\Person\MemberInfoService;
  26. use App\Validators\CompanyValidatorRequest;
  27. use App\Validators\Content\FeedbackValidatorRequest;
  28. use Illuminate\Http\Request;
  29. use Illuminate\Support\Facades\Cache;
  30. use SimpleSoftwareIO\QrCode\Facades\QrCode;
  31. class CompanyController extends MobileBaseController
  32. {
  33. protected $companyService;
  34. protected $companyImgService;
  35. protected $auditReasonsRepository;
  36. protected $emailService;
  37. protected $smsService;
  38. protected $jobsService;
  39. protected $taskService;
  40. protected $searchService;
  41. protected $recommend_limit;
  42. protected $recommend_need_limit;
  43. protected $msgRepository;
  44. protected $resumeRepository;
  45. protected $pmsRepository;
  46. protected $memberInfoService;
  47. protected $memberSetmealRepository;
  48. protected $feedbackService;
  49. protected $companyRepository;
  50. /**
  51. * CompanyController constructor.
  52. * @param $companyService
  53. * @param $companyImgService
  54. * @param $auditReasonsRepository
  55. * @param $emailService
  56. * @param $smsService
  57. * @param $jobsService
  58. * @param $taskService
  59. * @param $searchService
  60. * @param $msgRepository
  61. * @param $resumeRepository
  62. * @param $pmsRepository
  63. * @param $memberInfoService
  64. * @param $memberSetmealRepository
  65. * @param $feedbackService
  66. * @param $companyRepository
  67. */
  68. public function __construct(CompanyService $companyService, CompanyRepository $companyRepository, FeedbackService $feedbackService, MemberSetmealRepository $memberSetmealRepository, MemberInfoService $memberInfoService, PmsRepository $pmsRepository, ResumeRepository $resumeRepository, MsgRepository $msgRepository, TaskService $taskService, JobsService $jobsService, SmsService $smsService, EmailService $emailService, CompanyImgService $companyImgService, AuditReasonsRepository $auditReasonsRepository, SearchService $searchService)
  69. {
  70. $this->companyService = $companyService;
  71. $this->companyImgService= $companyImgService;
  72. $this->auditReasonsRepository = $auditReasonsRepository;
  73. $this->emailService = $emailService;
  74. $this->smsService = $smsService;
  75. $this->jobsService = $jobsService;
  76. $this->taskService = $taskService;
  77. $this->searchService = $searchService;
  78. $this->msgRepository = $msgRepository;
  79. $this->resumeRepository = $resumeRepository;
  80. $this->pmsRepository = $pmsRepository;
  81. $this->memberInfoService = $memberInfoService;
  82. $this->memberSetmealRepository = $memberSetmealRepository;
  83. $this->feedbackService = $feedbackService;
  84. $this->companyRepository = $companyRepository;
  85. $this->recommend_limit = 10;
  86. $this->recommend_need_limit = 50;
  87. }
  88. //会员中心
  89. public function index()
  90. {
  91. $user = auth('web-company')->user();
  92. $mysetmeal = $this->memberSetmealRepository->getSetmealByUid($user->id, 1);
  93. $res = $this->companyService->index($user);
  94. //用于匹配简历的职位
  95. session([ 'match_jobs_'.auth('web-company')->user()->id=>null]);
  96. $recommend_rst = $this->getRecommendResumes($this->recommend_limit); //获取推荐简历
  97. $res['recommend_resumes'] = $recommend_rst['resumes'];
  98. $res['match_job'] = $recommend_rst['match_job'];
  99. $res['mysetmeal'] = $mysetmeal;
  100. return view('mobile.app.company.index', $res);
  101. }
  102. public function getRecommendResumes($limit = 10)
  103. {
  104. $need_limit = $this->recommend_need_limit;
  105. $order_by = array('stime'=>'desc','click'=>'desc', 'updated_at'=>'desc');
  106. $list = array();
  107. //企业用户 - 匹配置顶、刷新靠前的职位
  108. $job = array();
  109. if (auth('web-company')->check()) {
  110. $job = $this->companyService->getMatchJob(auth('web-company')->user());
  111. }
  112. $click_where = $this->companyService->getRecommendResumeWhere(array());
  113. $click_resumes = $this->searchService->search('Resume', $click_where, $order_by, '', $need_limit);
  114. $click_resumes = $click_resumes->items();
  115. Cache::forever('recommend_click_resumes', $click_resumes);
  116. if ($job) {
  117. //获取匹配简历
  118. $where = $this->companyService->getRecommendResumeWhere($job);
  119. $recommend_resume_lists = $this->searchService->search('Resume', $where, $order_by, '', $need_limit);
  120. $rids = $recommend_resume_lists->pluck('id')->toArray();
  121. if ($recommend_resume_lists->total() >= $limit) {
  122. $list = array_slice($recommend_resume_lists->items(), 0, $limit);
  123. } else {
  124. //去除已有简历
  125. if ($click_resumes && $rids) {
  126. foreach ($click_resumes as $k => $v) {
  127. if (in_array($v->id, $rids)) {
  128. unset($click_resumes[$k]);
  129. }
  130. }
  131. }
  132. $recommend_resumes = $recommend_resume_lists->items();
  133. $recommend_total = $recommend_resume_lists->total();
  134. $need_resumes = array_slice($click_resumes, 0, $need_limit - $recommend_total);
  135. $all_resumes = array_merge($recommend_resumes, $need_resumes);
  136. $list = array_slice($all_resumes, 0, $limit);
  137. }
  138. } else {
  139. $list = array_slice($click_resumes, 0, $limit);
  140. }
  141. return array(
  142. 'resumes' => $list,
  143. 'match_job' => $job
  144. );
  145. }
  146. public function ajaxGetRecommendResumes(Request $request)
  147. {
  148. $limit = $this->recommend_limit;
  149. $need_limit = $this->recommend_need_limit;
  150. $jobnum = $request->input('jobnum');
  151. $page = $request->input('page');
  152. $job_id = $request->input('job_id');
  153. $click_resumes = Cache::get('recommend_click_resumes');
  154. $order_by = array('stime'=>'desc','click'=>'desc', 'updated_at'=>'desc');
  155. if ($click_resumes === null) {
  156. $click_where = $this->companyService->getRecommendResumeWhere(array());
  157. $click_resumes = $this->searchService->search('Resume', $click_where, $order_by, '', $need_limit);
  158. $click_resumes = $click_resumes->items();
  159. Cache::forever('recommend_click_resumes', $click_resumes);
  160. }
  161. /*
  162. * 判断是否有在招职位
  163. * - 无在招职位 ,获取下一页数据
  164. * - 一个在招职位 ,获取下一页数据
  165. * - 多个在招职位 ,获取下一个职位匹配数据
  166. * 匹配简历数量不足时用点击量高的简历补齐,之多显示50个,超过以后重新循环
  167. */
  168. if ($jobnum == 0) {
  169. $next_page = (int)$page + 1;
  170. $list = array_slice($click_resumes, $page*$limit, $limit);
  171. if (!$list) {
  172. $list = array_slice($click_resumes, 0, $limit);
  173. $next_page = 1;
  174. }
  175. $match_job =0;
  176. } else {
  177. $this->companyService->setMatchJob($request->all(), auth('web-company')->user());
  178. $next_page = 1;
  179. if ($jobnum == 1) {
  180. $next_page = (int)$page + 1;
  181. }
  182. $job = array();
  183. if (auth('web-company')->check()) {
  184. $job = $this->companyService->getMatchJob(auth('web-company')->user());
  185. }
  186. $where = $this->companyService->getRecommendResumeWhere($job);
  187. $recommend_resume_lists = $this->searchService->search('Resume', $where, $order_by, '', $need_limit);
  188. $rids = $recommend_resume_lists->pluck('id')->toArray();
  189. if ($recommend_resume_lists->total() >= $next_page*$limit) {
  190. if ($jobnum == 1) {
  191. $list = array_slice($recommend_resume_lists->items(), 0, $limit);
  192. } else {
  193. $list = array_slice($recommend_resume_lists->items(), $page*$limit, $limit);
  194. }
  195. } else {
  196. if ($click_resumes && $rids) {
  197. foreach ($click_resumes as $k => $v) {
  198. if (in_array($v->id, $rids)) {
  199. unset($click_resumes[$k]);
  200. }
  201. }
  202. }
  203. $recommend_resumes = $recommend_resume_lists->items();
  204. $recommend_total = $recommend_resume_lists->total();
  205. $need_resumes = array_slice($click_resumes, 0, $need_limit - $recommend_total);
  206. $all_resumes = array_merge($recommend_resumes, $need_resumes);
  207. if ($jobnum == 1) {
  208. $list = array_slice($all_resumes, $page*$limit, $limit);
  209. if (!$list) {
  210. $list = array_slice($click_resumes, 0, $limit);
  211. $next_page = 1;
  212. }
  213. } else {
  214. $list = array_slice($all_resumes, 0, $limit);
  215. }
  216. }
  217. $match_job = $job->id;
  218. }
  219. $recommend_rst['resumes'] = $list;
  220. $html = view('app.company.ajax.ajax_resume_list', $recommend_rst)->render();
  221. $return_data = array( 'status'=>1, 'html' => $html,'match_job'=>$match_job,'page'=>$next_page);
  222. return response()->json($return_data);
  223. }
  224. public function ajaxGetStatistics(Request $request)
  225. {
  226. $user = auth('web-company')->user();
  227. return $this->companyService->ajaxGetStatistics($request->all(), $user);
  228. }
  229. /**
  230. *企业会员中心首页一键刷新职位
  231. */
  232. public function jobsRefreshAll()
  233. {
  234. $user = auth('web-company')->user();
  235. return $this->jobsService->jobsRefreshAll($user);
  236. }
  237. public function com()
  238. {
  239. $user = auth('web-company')->user();
  240. return view('mobile.app.company.com', ['user'=>$user,'wap_title'=>'企业信息']);
  241. }
  242. /**企业信息
  243. * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  244. * @throws \App\Exceptions\ResponseException
  245. */
  246. public function companyInfo()
  247. {
  248. $user = auth('web-company')->user();
  249. $companyInfo = $this->companyService->companyInfo($user);
  250. $companyInfo['wap_title'] = "企业详情";
  251. return view('mobile.app.company.info', $companyInfo);
  252. }
  253. /**
  254. * @param CompanyValidatorRequest $request
  255. * @return \Illuminate\Http\JsonResponse
  256. * @throws \Throwable
  257. */
  258. public function companySave(CompanyValidatorRequest $request)
  259. {
  260. $data = $request->except('_method', '_token');
  261. $user = auth('web-company')->user();
  262. $res = $this->companyService->mobileCompanySave($data,$user);
  263. return response()->json($res);
  264. }
  265. /**修改企业手机==企业中心
  266. * @param Request $request
  267. * @return \Illuminate\Http\JsonResponse
  268. * @throws \Throwable
  269. */
  270. public function modifyMobile(Request $request)
  271. {
  272. $user = auth('web-company')->user();
  273. if ($request->method() == 'GET') {
  274. $mobile = $this->companyService->authMobile($user);
  275. return response()->json(['status'=>1,'data'=>view('app.company.ajax.ajax_auth_mobile', $mobile)->render()]);
  276. }
  277. return $this->companyService->verifyCode($request->mobile, $user);
  278. }
  279. /**
  280. * @保存企业logo
  281. * @param Request $request
  282. * @return \Illuminate\Http\JsonResponse
  283. * @throws \Prettus\Validator\Exceptions\ValidatorException
  284. */
  285. public function attach(Request $request)
  286. {
  287. $user = auth('web-company')->user();
  288. $aveName = md5(time().uniqid()).'.jpg';
  289. $data = base64_decode($request->logo);
  290. $stroge = storage_path('app/public/company/logo/');
  291. $res = file_put_contents($stroge.$aveName, $data);
  292. $logo['logo'] = 'company/logo/'.$aveName;
  293. if ($res) {
  294. return $this->companyService->saveLogo($logo, $user);
  295. }
  296. response()->json(['status'=>0,'msg'=>'保存失败!']);
  297. }
  298. /**删除企业Logo
  299. * @return \Illuminate\Http\JsonResponse
  300. * @throws \Prettus\Validator\Exceptions\ValidatorException
  301. */
  302. public function logoDel()
  303. {
  304. $user = auth('web-company')->user();
  305. return $this->companyService->logoDel($user);
  306. }
  307. /**企业风采
  308. * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  309. */
  310. public function companyImg()
  311. {
  312. $user = auth('web-company')->user();
  313. $res = $this->companyImgService->list($user->id);
  314. return view('mobile.app.company.com_img', ['imgList'=>$res,'wap_title'=>'企业风采']);
  315. }
  316. /**保存企业风采
  317. * @param Request $request
  318. * @return \Illuminate\Http\JsonResponse
  319. * @throws \ErrorException
  320. * @throws \Prettus\Validator\Exceptions\ValidatorException
  321. */
  322. public function saveImg(Request $request)
  323. {
  324. $user = auth('web-company')->user();
  325. $aveName = md5(time().uniqid()).'.jpg';
  326. $data = base64_decode($request->images);
  327. $stroge = storage_path('app/public/company/img/');
  328. $res = file_put_contents($stroge.$aveName, $data);
  329. if ($res) {
  330. return $this->companyImgService->saveImg("company/img/".$aveName, $user);
  331. }
  332. response()->json(['status'=>0,'msg'=>'保存失败!']);
  333. }
  334. /**
  335. * 修改备注模态框
  336. * @param Request $request
  337. * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  338. * @throws \Throwable
  339. */
  340. public function remark(Request $request)
  341. {
  342. $res = $this->companyImgService->companyImg($request->id);
  343. return $res;
  344. }
  345. /**
  346. * 保存备注
  347. * @param CompanyValidatorRequest $request
  348. * @return \Illuminate\Http\JsonResponse
  349. */
  350. public function saveRemark(CompanyValidatorRequest $request)
  351. {
  352. $user = auth('web-company')->user();
  353. return $this->companyImgService->saveRemark($request,$user);
  354. }
  355. /**
  356. * 删除企业风采
  357. * @param $id
  358. * @param Request $request
  359. * @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\JsonResponse|\Illuminate\View\View
  360. */
  361. public function delImg(Request $request)
  362. {
  363. $id= $request->id;
  364. if (!$id) {
  365. return response()->json(['status'=>0, 'msg'=>'参数错误!']);
  366. }
  367. $user = auth('web-company')->user();
  368. return $this->companyImgService->delImg($id,$user);
  369. }
  370. /**
  371. * 企业认证
  372. * @param $anew
  373. * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  374. * @throws \App\Exceptions\ResponseException
  375. */
  376. public function companyAuth($anew = '')
  377. {
  378. $user = auth('web-company')->user();
  379. $companyInfo = $this->companyService->getInfoById($user);
  380. $companyInfo->reason = $this->auditReasonsRepository->getAuditReasons($user->id, 8);
  381. if ($anew == 'anew') {
  382. $companyInfo->audit = 0;
  383. }
  384. return view('mobile.app.company.com_auth', ['companyInfo'=>$companyInfo, 'anew'=>$anew,'wap_title'=>'企业认证']);
  385. }
  386. public function certificateSave(Request $request)
  387. {
  388. $aveName = md5(time().uniqid()).'.jpg';
  389. $data= base64_decode($request->certificate_img_up);
  390. $stroge = storage_path('app/public/company/certificate/');
  391. $res = file_put_contents($stroge.$aveName, $data);
  392. if ($res) {
  393. return response()->json(['status'=>1, 'msg'=>'营业执照保存成功', 'data'=>['img'=>"company/certificate/".$aveName,'path'=>upload_asset("company/certificate/".$aveName)]]);
  394. } else {
  395. return response()->json(['status'=>0, 'msg'=>'营业执照保存失败']);
  396. }
  397. }
  398. public function certificate(Request $request)
  399. {
  400. $user = auth('web-company')->user();
  401. return $this->companyService->certificate($request->certificate_img_up, $user);
  402. }
  403. /**
  404. * 账户安全
  405. * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  406. * @throws \App\Exceptions\ResponseException
  407. */
  408. public function companySecurity()
  409. {
  410. $user = auth('web-company')->user();
  411. $companyInfo = $this->companyService->companySecurity($user);
  412. $companyInfo['wap_title']="帐户安全";
  413. return view('mobile.app.company.com_security', $companyInfo);
  414. }
  415. public function companyBind()
  416. {
  417. $user = auth('web-company')->user();
  418. $companyInfo = $this->companyService->companySecurity($user);
  419. $companyInfo['wap_title']="帐户绑定";
  420. return view('mobile.app.company.com_binding', $companyInfo);
  421. }
  422. public function unBindThird(Request $request)
  423. {
  424. $alias = $request->alias;
  425. $user = auth('web-company')->user();
  426. return $this->companyService->unBindThird($alias, $user);
  427. }
  428. public function myCode(Request $requset)
  429. {
  430. $sub_site = '';
  431. if (get_subsite_id() > 0) {
  432. $sub_site = 'jkq.';
  433. }
  434. $id = $requset->id?$requset->id:0;
  435. $user = $this->getLoginUser();
  436. if ($user->id!=$id) {
  437. return $this->showMessage('参数错误', route($sub_site.'mobile.firm.index'), true);
  438. }
  439. return view('mobile.app.company.code', ['hashid'=>hashid_encode($user->id, 1),'img'=>QrCode::size(250)->generate(route($sub_site.'mobile.qrcode', ['hashid'=>hashid_encode($user->id, 1)]))]);
  440. }
  441. /**企业登录日志
  442. * @param Request $request
  443. * @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\JsonResponse|\Illuminate\View\View
  444. * @throws \Throwable
  445. */
  446. public function loginLog(Request $request)
  447. {
  448. $user = auth('web-company')->user();
  449. $loginLog = $this->companyService->companyLoginLog($user);
  450. if ($loginLog->total()) {
  451. $loginLog=$loginLog->toArray();
  452. $list = [];
  453. foreach ($loginLog['data'] as $key => $val) {
  454. $t = strtotime(date('Y-m-d', strtotime($val['created_at'])));
  455. $list[$t][] = $val;
  456. }
  457. $loginLog['data'] = $list;
  458. }
  459. $res['user'] = $user;
  460. $res['loginLog'] = $loginLog;
  461. if ($request->ajax()) {
  462. if ($loginLog['current_page'] >$loginLog['last_page']) {
  463. return response()->json(['status'=>0]);
  464. }
  465. return response()->json(['status'=>1,'data'=>view('mobile.app.company.ajax_tpl.ajax_com_log', ['loginLog'=>$loginLog])->render()]);
  466. }
  467. $res['wap_title']='会员日志';
  468. return view('mobile.app.company.com_login_log', $res);
  469. }
  470. /**我的消息
  471. * @param Request $request
  472. * @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\JsonResponse|\Illuminate\View\View
  473. * @throws \Throwable
  474. */
  475. public function companyPms(Request $request)
  476. {
  477. $user = auth('web-company')->user();
  478. $data = $request->all();
  479. $res = $this->companyService->comPms($data, $user);
  480. if ($request->ajax()) {
  481. if ($res['pms']->currentPage() >$res['pms']->lastPage()) {
  482. return response()->json(['status'=>0]);
  483. }
  484. return response()->json(['status'=>1,'data'=>view('mobile.app.company.ajax_tpl.ajax_com_pms', ['pms'=>$res['pms']])->render()]);
  485. }
  486. $res['wap_title'] = "系统消息";
  487. return view('mobile.app.company.com_pms', $res);
  488. }
  489. public function pmsRead(Request $request)
  490. {
  491. $id = $request->id;
  492. return $this->companyService->pmsRead($id);
  493. }
  494. public function msgSend()
  495. {
  496. $res = $this->companyService->msgSend(auth('web-company')->user(), request()->all());
  497. if ($res) {
  498. $this->taskService->doTask(32);
  499. return response()->json(['status'=>1,'msg'=>'回复成功','data'=>['message'=>$res->message]]);
  500. } else {
  501. return response()->json(['status'=>0,'msg'=>'回复失败']);
  502. }
  503. }
  504. public function msgDelete()
  505. {
  506. if (request()->method()=='POST') {
  507. $res = $this->companyService->msgDelete(request()->all());
  508. if ($res) {
  509. return $this->sendSuccessResponse('删除成功!');
  510. } else {
  511. return $this->sendErrorResponse('删除失败!');
  512. }
  513. } else {
  514. return view('app.person.ajax.resume_delete', ['tpis'=>'删除后将无法恢复,您确定要删除选择的咨询消息吗?']);
  515. }
  516. }
  517. public function companyPmsDel(Request $request)
  518. {
  519. if ($request->method()== 'POST') {
  520. $user = auth('web-company')->user();
  521. return $this->companyService->companyPmsDel($request,$user);
  522. }
  523. $tip = "被删除后将无法恢复,您确定要删除选中的系统消息吗?";
  524. return response()->json(['status'=>1,'data'=>['html'=>view('app.company.ajax.ajax_warning', ['tip'=>$tip])->render()]]);
  525. }
  526. public function companyPmsCheck(Request $request)
  527. {
  528. return $this->companyService->companyPmsCheck($request);
  529. }
  530. /**
  531. *
  532. */
  533. public function companyPmsConsult(Request $request)
  534. {
  535. $user = auth('web-company')->user();
  536. $res = $this->msgRepository->mobileMsg($user->utype, $user->id);
  537. if ($request->ajax()) {
  538. if ($res->currentPage() > $res->lastPage()) {
  539. return response()->json(['status'=>0]);
  540. }
  541. return response()->json(['status'=>1,'data'=>view('mobile.app.company.ajax_tpl.ajax_com_pms_consult', ['pms'=>$res])->render()]);
  542. }
  543. return view('mobile.app.company.com_pms_consult', ['pms'=>$res,'wap_title'=>"求职者咨询"]);
  544. }
  545. public function comPmsConsultShow(Request $request)
  546. {
  547. $user = auth('web-company')->user();
  548. $parent_id = $request->id;
  549. if (!$parent_id) {
  550. return $this->showMessage('无此消息', route('mobile.firm.com.psm.consult'), true);
  551. }
  552. $pmsshow = $this->memberInfoService->mobileMsgShow($user, $parent_id);
  553. $pmsshow['user'] = $user;
  554. $pmsshow['wap_title'] = "求职者咨询";
  555. // dd($pmsshow);
  556. return view('mobile.app.company.pms_consult_show', $pmsshow);
  557. }
  558. /**
  559. * 修改用户名
  560. * */
  561. public function modifyUsername()
  562. {
  563. $user = auth('web-company')->user();
  564. $res = $this->companyService->modifyUserName($user);
  565. $res['wap_title'] = '修改用户名';
  566. return view('mobile.app.company.com_username', $res);
  567. }
  568. /** 修改用户名
  569. * @param CompanyValidatorRequest $request
  570. * @return CompanyController|\Illuminate\Http\JsonResponse
  571. * @throws \Prettus\Validator\Exceptions\ValidatorException
  572. */
  573. public function saveUsername(CompanyValidatorRequest $request)
  574. {
  575. $user = auth('web-company')->user();
  576. if (!$this->companyService->saveUsername($request->username, $user)) {
  577. return response()->json(['status'=>0,'msg'=>"用户名修改失败"]);
  578. }
  579. return response()->json(['status'=>1,'msg'=>"用户名修改成功"]);
  580. }
  581. /**修改密码
  582. * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  583. */
  584. public function modifyPwd()
  585. {
  586. return view('mobile.app.company.com_modify_pwd', ['wap_title'=>'修改密码']);
  587. }
  588. /**修改密码======保存密码
  589. * @param CompanyValidatorRequest $request
  590. * @return CompanyController|\Illuminate\Http\JsonResponse
  591. * @throws \App\Exceptions\ResponseException
  592. * @throws \Prettus\Validator\Exceptions\ValidatorException
  593. */
  594. public function savePwd(CompanyValidatorRequest $request)
  595. {
  596. $user = auth('web-company')->user();
  597. if (!$this->companyService->savePwd($user, $request->oldpassword, $request->password, $request->password1)) {
  598. return response()->json(['status'=>0,'msg'=>"密码修改失败"]);
  599. }
  600. if ($user->mobile) {
  601. $this->smsService->sendSms($user->mobile, Smser::TEMPLATE_SMS_EDITPWD, ['sitename'=>subsite_config('aix.system.site.site.site_name'),'newpassword'=>$request->password]);
  602. }
  603. return response()->json(['status'=>1,'msg'=>"密码修改成功"]);
  604. }
  605. /**
  606. * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  607. * @手机认证弹窗
  608. */
  609. public function authMobile()
  610. {
  611. $user = auth('web-company')->user();
  612. $mobile = $this->companyService->authMobile($user);
  613. $mobile['user']=$user;
  614. $mobile['wap_title']='手机认证';
  615. return view('mobile.app.company.com_auth_mobile', $mobile);
  616. }
  617. /**
  618. * @param CompanyValidatorRequest $request
  619. * @return \Illuminate\Http\JsonResponse
  620. * @throws \App\Exceptions\ResponseException
  621. */
  622. public function verifyCode(CompanyValidatorRequest $request)
  623. {
  624. $mobile = $request->mobile;
  625. $id = $request->id;
  626. if (!$this->companyService->checkMobileAudit($id, $mobile)->isEmpty()) {
  627. return response()->json(['status'=>0, 'msg'=>'手机已验证']);
  628. }
  629. $this->smsService->sendAuthSms($mobile, smser::TEMPLATE_AUTH_CHECK);
  630. return response()->json(['status'=>1,'msg'=>'短信验证码已发送']);
  631. }
  632. public function mobileAudit(CompanyValidatorRequest $request)
  633. {
  634. $user = auth('web-company')->user();
  635. $mobile = $request->mobile;
  636. $verifyCode = $request->verifycode;
  637. $res = $this->smsService->checkAuthSms($mobile, smser::TEMPLATE_AUTH_CHECK, $verifyCode);
  638. if (!$res) {
  639. return response()->json(['status'=>0,'msg'=>'验证码错误']);
  640. }
  641. $res = $this->companyService->verifyCode($mobile, $user);
  642. if ($res['status']==1) {
  643. if (isset($res['data'])) {
  644. return response()->json(['status'=>1,'msg'=>'手机认证成功','data'=>['mobile'=>$mobile, 'points'=>$res['data']['points']]]);
  645. } else {
  646. return response()->json(['status'=>1,'msg'=>'手机认证成功','data'=>['mobile'=>$mobile]]);
  647. }
  648. } else {
  649. return response()->json(['status'=>0,'msg'=>'手机认证失败']);
  650. }
  651. }
  652. /**邮箱认证
  653. * @return \Illuminate\Http\JsonResponse
  654. * @throws \Throwable
  655. */
  656. public function authEmail()
  657. {
  658. $user = auth('web-company')->user();
  659. if (!$email = $this->companyService->authEmail($user)) {
  660. return response()->json(['status'=>0,'msg'=>'参数错误!']);
  661. }
  662. $email['wap_title'] = '邮箱认证';
  663. $email['user'] = $user;
  664. return view('mobile.app.company.com_auth_email', $email);
  665. // if (!$email = $this->companyService->authEmail()) {
  666. // return response()->json(['status'=>0,'msg'=>'参数错误!']);
  667. // }
  668. // return response()->json(['status'=>1,'msg'=>'查询成功!','data'=>view('app.company.ajax.ajax_auth_email', $email)->render()]);
  669. }
  670. /**认证Email 及修改状态
  671. * @param CompanyValidatorRequest $request
  672. * @return \Illuminate\Http\JsonResponse
  673. */
  674. public function emailSend(CompanyValidatorRequest $request)
  675. {
  676. $email = $request->email;
  677. $id = $request->id;
  678. if (!$this->companyService->checkEmailAudit($id, $email)->isEmpty()) {
  679. return response()->json(['status'=>0, 'msg'=>'email已验证!']);
  680. }
  681. $this->emailService->setAuthTag('company')
  682. ->setCallback('App\Services\Company\CompanyService', 'sendAuthEmailHook', [$email, auth('web-company')->user()])
  683. ->sendAuthMail($email, EmailService::TEMPLATE_VALIDATION);
  684. return response()->json(['status'=>1,'msg'=>'email已发送!']);
  685. }
  686. /**签到
  687. * @return \Illuminate\Http\JsonResponse
  688. */
  689. public function sign()
  690. {
  691. $user = auth('web-company')->user();
  692. $res = $this->companyService->signIn($user);
  693. return response()->json(['status'=>$res['code'],'msg'=>$res['msg'],'data'=>$res['info']]);
  694. }
  695. public function ajaxResumeSearch(Request $request)
  696. {
  697. $key = $request->input('key', '');
  698. $search_type = $request->input('search_type', 'precise');
  699. return response()->json(['status'=>1,'data'=>route(url_rewrite('AIX_resumelist'), ['key'=>$key, 'search_type'=>$search_type])]);
  700. }
  701. public function feedback()
  702. {
  703. $user = auth('web-company')->user();
  704. $varify_suggest = 0;
  705. if (config('aix.system.site_safety.site_vo_code.captcha_open')==1) {
  706. $varify_suggest = 1;
  707. }
  708. $res = [
  709. 'user'=>$user,
  710. 'varify_suggest'=>$varify_suggest,
  711. 'wap_title'=>'意见反馈',
  712. ];
  713. return view('mobile.app.company.com_feedback', $res);
  714. }
  715. public function feedbackSave(FeedbackValidatorRequest $request)
  716. {
  717. $form_data = array(
  718. 'subsite_id' => get_subsite_id(),
  719. 'type' => $request->input('infotype'),
  720. 'content' => $request->input('feedback'),
  721. 'contact' => $request->input('tel'),
  722. 'audit' => 0
  723. );
  724. $rst = $this->feedbackService->addFeedback($form_data);
  725. $data = array('status'=>0);
  726. if ($rst) {
  727. $data = array('status'=>1,'msg'=>'反馈成功,感谢您对本站的关注!','insert_id'=>$rst->id);
  728. } else {
  729. $data = array('msg'=>'数据保存失败!');
  730. }
  731. return response()->json($data);
  732. }
  733. //以下为微信H5招聘
  734. public function wechatCom($id = 0)
  735. {
  736. $loginUser = $this->getLoginUser();
  737. if (!$id) {
  738. return $this->showMessage('查无此企业', route('mobile.firm.com.wzp.index'), true);
  739. }
  740. $audit = config('aix.companyset.comset.show_set.jobs_display');
  741. $company = $this->companyRepository->with(['imgs','job'=>function ($query) {
  742. $query->whereIn('audit', getJobsStatus())->where('display', 1)->where('valid', 1);
  743. }])->find($id);
  744. // dd($company);
  745. $show_menu = 0;
  746. if ($loginUser) {
  747. if ($company->id == $loginUser->id && $company->utype == $loginUser->utype) {
  748. $show_menu = 1;
  749. }
  750. }
  751. $phone_error = '';
  752. $phone_error_tit = '';
  753. $phone_url = '';
  754. $phone_code = 0;
  755. $resume_error = '对不起,请登录后再投递简历';
  756. $resume_error_tit = '登录';
  757. $resume_url = route('mobile.login');
  758. $resume_code = 0;
  759. if ($loginUser && $loginUser->utype == 2) {
  760. $resume_error = '对不起,请登录后再投递简历';
  761. $resume_error_tit = '登录';
  762. $resume_url = route('mobile.jobs.apply');
  763. $resume_code = 1;
  764. }
  765. $resume = [];
  766. $res['show_menu'] = $show_menu;
  767. $res['praise'] = 0;
  768. if ($company->telephone_show ==1) {
  769. if (config('aix.companyset.comset.contact_set.showjobcontact') == 0) {
  770. $phone_error='企业未填写联系方式';
  771. $phone_error_tit='确定';
  772. $phone_url= '';
  773. $phone_code = 1;
  774. } else {
  775. if (!$loginUser) {
  776. $phone_error='对不起,请登录后继续查看企业联系方式';
  777. $phone_error_tit='登录';
  778. $phone_url= route('mobile.login');
  779. $phone_code = 0;
  780. } else {
  781. $phone_code = 1;
  782. }
  783. }
  784. } else {
  785. $phone_error='该企业不接受电话咨询,请直接投递简历';
  786. $phone_error_tit='投递';
  787. $phone_url = route('mobile.firm.com.wzp.send.resume', ['id'=>$company->id]);
  788. $phone_code = 0;
  789. }
  790. if ($loginUser && $loginUser->utype == 2) {
  791. $resume = $this->resumeRepository->findWhere(['uid'=>$loginUser->id]);
  792. }
  793. $res['phone_error'] = $phone_error;
  794. $res['phone_error_tit'] = $phone_error_tit;
  795. $res['phone_url'] = $phone_url;
  796. $res['phone_code'] = $phone_code;
  797. $res['resume_error'] = $resume_error;
  798. $res['resume_error_tit'] = $resume_error_tit;
  799. $res['resume_url'] = $resume_url;
  800. $res['resume_code'] = $resume_code;
  801. $res['resume'] = $resume;
  802. $res['user'] = $company;
  803. $res['loginUser'] = $loginUser;
  804. // $tpl =$company->wzp_tpl?"comred":'com';
  805. $tpl = 'com';
  806. return view("mobile.app.company.wzp.{$tpl}", $res);
  807. }
  808. }