ResumeController.php 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074
  1. <?php
  2. namespace App\Http\Controllers\Jkq\Person;
  3. use App\Http\Controllers\Jkq\JkqBaseController;
  4. use App\Models\Member;
  5. use App\Models\Resume;
  6. use App\Services\Common\CategoryService;
  7. use App\Services\Common\QueueAutoRefreshService;
  8. use App\Services\HomeService;
  9. use App\Services\Person\ResumeCredentService;
  10. use App\Services\Person\ResumeEducationService;
  11. use App\Services\Person\ResumeEntrustService;
  12. use App\Services\Person\ResumeLanguageService;
  13. use App\Services\Person\ResumeImageService;
  14. use App\Services\Person\ResumeService;
  15. use App\Services\Person\ResumeTrainService;
  16. use App\Services\Person\ResumeWorkService;
  17. use App\Services\Company\JobsService;
  18. use App\Services\Common\SearchService;
  19. use App\Services\Person\SubsiteResumeService;
  20. use App\Services\SubsiteService;
  21. use App\Validators\PersonValidatorRequest;
  22. use Illuminate\Http\Request;
  23. use Illuminate\Support\Facades\Cache;
  24. use Illuminate\Support\Facades\Storage;
  25. class ResumeController extends JkqBaseController
  26. {
  27. /**
  28. * @var ResumeService
  29. */
  30. protected $resumeService;
  31. protected $ResumeEducationService;
  32. protected $ResumeWorkService;
  33. protected $ResumeTrainService;
  34. protected $ResumeCredentService;
  35. protected $ResumeLanguageService;
  36. protected $homeService;
  37. protected $categoryService;
  38. protected $jobsService;
  39. protected $searchService;
  40. protected $subsiteService;
  41. protected $subsiteResumeService;
  42. protected $resumeEntrustService;
  43. protected $resumeImageService;
  44. protected $queueAutoRefreshService;
  45. /**
  46. * ResumeController constructor.
  47. * @param ResumeService $resumeService
  48. * @param ResumeEducationService $ResumeEducationService
  49. * @param ResumeWorkService $ResumeWorkService
  50. * @param ResumeTrainService $ResumeTrainService
  51. * @param ResumeCredentService $ResumeCredentService
  52. * @param ResumeLanguageService $ResumeLanguageService
  53. * @param HomeService $homeService
  54. * @param CategoryService $categoryService
  55. * @param JobsService $jobsService
  56. * @param SearchService $searchService
  57. * @param subsiteService $subsiteService
  58. * @param subsiteResumeService $subsiteResumeService
  59. */
  60. public function __construct(ResumeService $resumeService, ResumeEducationService $ResumeEducationService, ResumeWorkService $ResumeWorkService, ResumeTrainService $ResumeTrainService, ResumeCredentService $ResumeCredentService, ResumeLanguageService $ResumeLanguageService, HomeService $homeService, CategoryService $categoryService, JobsService $jobsService, SearchService $searchService, SubsiteService $subsiteService, SubsiteResumeService $subsiteResumeService, ResumeEntrustService $resumeEntrustService, QueueAutoRefreshService $queueAutoRefreshService,ResumeImageService $resumeImageService)
  61. {
  62. $this->resumeService = $resumeService;
  63. $this->ResumeEducationService = $ResumeEducationService;
  64. $this->ResumeWorkService = $ResumeWorkService;
  65. $this->ResumeTrainService = $ResumeTrainService;
  66. $this->ResumeCredentService = $ResumeCredentService;
  67. $this->ResumeLanguageService = $ResumeLanguageService;
  68. $this->homeService = $homeService;
  69. $this->categoryService = $categoryService;
  70. $this->jobsService = $jobsService;
  71. $this->searchService = $searchService;
  72. $this->recommend_limit = 12;
  73. $this->recommend_need_limit = 100;
  74. $this->subsiteService = $subsiteService;
  75. $this->subsiteResumeService = $subsiteResumeService;
  76. $this->resumeEntrustService = $resumeEntrustService;
  77. $this->queueAutoRefreshService = $queueAutoRefreshService;
  78. $this->resumeImageService = $resumeImageService;
  79. }
  80. /**
  81. * @des 个人中心
  82. */
  83. public function index()
  84. {
  85. $res = $this->resumeService->loginValidate(auth('web-member')->user());
  86. $member = Member::find($res['member']['uid']);
  87. $member_status=$member['member_status'];
  88. switch ($member_status){
  89. case 1:
  90. $tpl="index1";
  91. break;
  92. case 2:
  93. $tpl="index2";
  94. break;
  95. default :
  96. $tpl="index1";
  97. break;
  98. }
  99. if (Cache::has('recommend_click_jobs_'.get_subsite_id())) {
  100. Cache::forget('recommend_click_jobs_'.get_subsite_id());
  101. }
  102. //推荐职位
  103. $recommend_jobs = $this->getRecommendJobs($this->recommend_limit);
  104. $message = $this->resumeService->popPms(auth('web-member')->user());
  105. return view('jkq.person.index')->with(
  106. [
  107. 'resume'=>$res['resume'],
  108. 'stick'=>$res['stick'],
  109. 'recommend_jobs'=>$recommend_jobs['jobs'],
  110. 'match_resume' => $recommend_jobs['match_resume'],
  111. 'has_resume' => $recommend_jobs['has_resume'],
  112. 'message'=>$message,
  113. 'member'=>$res['member']
  114. ]
  115. );
  116. }
  117. //切换会员工作状态
  118. public function changeneed(Request $request){
  119. $uid= $request->uid;
  120. $change = $request->change;
  121. if ($change == 2) {
  122. Member::where('id', $uid)->update(['member_status' => 2]);
  123. session('visitor.member_status', 2);
  124. } else {
  125. Member::where('id', $uid)->update(['member_status' => 1]);
  126. session('visitor.member_status', 1);
  127. }
  128. return redirect(route('jkq.person.index'));
  129. }
  130. //获取置顶、点击量高、刷新靠前的职位
  131. public function getClickJobs($limit)
  132. {
  133. $jobs = Cache::get('recommend_click_jobs_'.get_subsite_id());
  134. if ($jobs === null) {
  135. $where[] = array('valid','=',1);
  136. $where[] = array('display','=',1);
  137. if (config('aix.companyset.comset.show_set.jobs_display')==1) {
  138. $where[] = array('audit','=',1);
  139. } else {
  140. $where[] = array('audit','<>',3);
  141. }
  142. $where[] = array('subsite_ids','=',get_subsite_id());
  143. $order = array('click'=>'desc','stime'=>'desc','refresh_time'=> 'desc');
  144. $click_jobs = $this->searchService->search('Job', $where, $order, '', $limit);
  145. $jobs = $click_jobs->items();
  146. Cache::put('recommend_click_jobs_'.get_subsite_id(), $jobs, 600);
  147. }
  148. return $jobs;
  149. }
  150. //获取推荐职位
  151. public function getRecommendJobs($limit = 10)
  152. {
  153. $user = $this->getUser();
  154. $need_limit = $this->recommend_need_limit;
  155. $click_jobs = $this->getClickJobs($need_limit); //获取置顶、点击量高、刷新靠前的职位
  156. $recommend_order = $this->jobsService->getRecommendOrder($user); //排序条件
  157. $resume = array();
  158. $has_resume = 1;
  159. if ($user && $user->utype == 2) {
  160. $recommend_where = $this->jobsService->getRecommendWhere($user);
  161. if ($recommend_where) {
  162. //添加30天的时间限制
  163. $recommend_where['and'][] = ['refresh_time','>=', strtotime(date("Y-m-d", strtotime("-30 day")))];
  164. $has_resume = 1;
  165. $recommend_job_lists = $this->searchService->getRecommends($user, 'Job', $recommend_where, $recommend_order, '', $limit);
  166. $jids = array();
  167. if ($recommend_job_lists) {
  168. $jids = $recommend_job_lists->pluck('id')->toArray();
  169. }
  170. if ($recommend_job_lists && $recommend_job_lists->total()>=$limit) {
  171. $list = array_slice($recommend_job_lists->items(), 0, $limit);
  172. } else {
  173. if ($click_jobs && $jids) {
  174. foreach ($click_jobs as $k => $v) {
  175. if (in_array($v->id, $jids)) {
  176. unset($click_jobs[$k]);
  177. }
  178. }
  179. }
  180. $recommend_jobs = $recommend_job_lists?$recommend_job_lists->items():array();
  181. $recommend_total = $recommend_job_lists?$recommend_job_lists->total():0;
  182. $need_jobs = array_slice($click_jobs, 0, $limit - $recommend_total);
  183. $all_jobs = array_merge($recommend_jobs, $need_jobs);
  184. $list = array_slice($all_jobs, 0, $limit);
  185. }
  186. } else {
  187. //没有可匹配的简历
  188. $list = null;
  189. $has_resume = 0;
  190. }
  191. } else {
  192. $list = array_slice($click_jobs, 0, $limit);
  193. }
  194. if ($list) {
  195. $list = $this->jobsService->dealjobFilelds($list);
  196. }
  197. return array(
  198. 'jobs' => $list,
  199. 'match_resume' => $resume,
  200. 'has_resume' => $has_resume
  201. );
  202. }
  203. public function popPms()
  204. {
  205. $content = $this->resumeService->popPms(auth('web-member')->user());
  206. if ($content) {
  207. $html = view('app.person.ajax.pop_pms', ['content'=>$content])->render();
  208. return $this->sendSuccessResponse(['html'=>$html,'code'=>1]);
  209. } else {
  210. return $this->sendSuccessResponse(['html'=>'','code'=>0]);
  211. }
  212. }
  213. public function getUser()
  214. {
  215. $user = array();
  216. if (auth('web-member')->check()) {
  217. $user = auth('web-member')->user();
  218. } elseif (auth('web-company')->check()) {
  219. $user = auth('web-company')->user();
  220. }
  221. return $user;
  222. }
  223. public function ajaxGetInterestJobs()
  224. {
  225. $params = request()->all();
  226. $limit = $this->recommend_limit;
  227. $need_limit = $this->recommend_need_limit;
  228. $list = array();
  229. $page = array_has($params, 'p')?$params['p']:1;
  230. $has_resume = 1;
  231. //推荐职位
  232. if ($params['type'] == 'recommend_jobs') {
  233. $user = $this->getUser();
  234. $recommend_order = $this->jobsService->getRecommendOrder($user);
  235. $recommend_where = $this->jobsService->getRecommendWhere($user);
  236. if ($recommend_where) {
  237. $has_resume = 1;
  238. //添加30天的时间限制
  239. $recommend_where['and'][] = ['refresh_time','>=', strtotime(date("Y-m-d", strtotime("-30 day")))];
  240. $recommend_job_lists = $this->searchService->getRecommends($user, 'Job', $recommend_where, $recommend_order, '', $need_limit);
  241. $jids = $recommend_job_lists->pluck('id')->toArray();
  242. $next_page = (int)$page + 1;
  243. if (count($recommend_job_lists->items()) >= $next_page*$limit) {
  244. $list = array_slice($recommend_job_lists->items(), $page*$limit, $limit);
  245. } else {
  246. $click_jobs = $this->getClickJobs($need_limit);
  247. if ($click_jobs && $jids) {
  248. foreach ($click_jobs as $k => $v) {
  249. if (in_array($v->id, $jids)) {
  250. unset($click_jobs[$k]);
  251. }
  252. }
  253. }
  254. $recommend_jobs = $recommend_job_lists->items();
  255. $recommend_total = count($recommend_job_lists->items());
  256. $need_jobs = array_slice($click_jobs, 0, $need_limit - $recommend_total);
  257. $all_jobs = array_merge($recommend_jobs, $need_jobs);
  258. $list = array_slice($all_jobs, $page*$limit, $limit);
  259. if (!$list) {
  260. $list = array_slice($all_jobs, 0, $limit);
  261. $next_page = 1;
  262. }
  263. }
  264. } else {
  265. $list = [];
  266. $has_resume = 0;
  267. $next_page = 1;
  268. }
  269. $list = $this->jobsService->dealjobFilelds($list);
  270. $html = view('jkq.person.ajax.jobs_list', ['content'=>$list, 'has_resume'=>$has_resume])->render();
  271. return $this->sendSuccessResponse(['html'=>$html,'page'=>$next_page]);
  272. } else {
  273. $next_page = 1;
  274. if ($params['type'] == 'new_jobs') {
  275. $jobs = $this->getNewJobs($limit, $page);
  276. } else {
  277. $jobs = $this->getNearByJobs($params, $limit, $page);
  278. }
  279. if ($jobs->isNotEmpty()) {
  280. $list = $this->jobsService->dealjobFilelds($jobs->items());
  281. $next_page = (int)$page + 1;
  282. } else {
  283. if ($params['type'] == 'new_jobs') {
  284. $first_jobs = $this->getNewJobs($limit, $next_page);
  285. } else {
  286. $first_jobs = $this->getNearByJobs($params, $limit, $next_page);
  287. }
  288. if ($first_jobs->isNotEmpty()) {
  289. $list = $this->jobsService->dealjobFilelds($first_jobs->items());
  290. $next_page = 2;
  291. }
  292. }
  293. $html = view('jkq.person.ajax.jobs_list', ['content'=>$list, 'has_resume'=>$has_resume])->render();
  294. return $this->sendSuccessResponse(['html'=>$html,'page'=>$next_page]);
  295. }
  296. }
  297. public function getNearByJobs($params, $limit, $page)
  298. {
  299. $where[] = array('valid','=',1);
  300. $where[] = array('display','=',1);
  301. if (config('aix.companyset.comset.show_set.jobs_display')==1) {
  302. $where[] = array('audit','=',1);
  303. } else {
  304. $where[] = array('audit','<>',3);
  305. }
  306. $where[] = array('subsite_ids','=',get_subsite_id());
  307. //获取坐标
  308. $lng = array_has($params, 'lng') ? $params['lng']: '';
  309. $lat = array_has($params, 'lat') ? $params['lat']: '';
  310. if ($lng && $lat) {
  311. $where[] = array('lng', '=', $lng);
  312. $where[] = array('lat', '=', $lat);
  313. $where[] = array('range', '=',round(config('aix.system.map.map.map_range'), 2));
  314. }
  315. $order = array('click'=>'desc','stime'=>'desc','refresh_time'=> 'desc');
  316. return $recommend_job_lists = $this->searchService->search('Job', $where, $order, '', $limit, $page);
  317. }
  318. public function getNewJobs($limit, $page)
  319. {
  320. $where[] = array('valid','=',1);
  321. $where[] = array('display','=',1);
  322. if (config('aix.companyset.comset.show_set.jobs_display')==1) {
  323. $where[] = array('audit','=',1);
  324. } else {
  325. $where[] = array('audit','<>',3);
  326. }
  327. $where[] = array('subsite_ids','=',get_subsite_id());
  328. $order = array('refresh_time'=>'desc');
  329. return $recommend_job_lists = $this->searchService->search('Job', $where, $order, '', $limit, $page);
  330. }
  331. public function popPmsRead()
  332. {
  333. return $this->resumeService->popPmsRead(request()->id);
  334. }
  335. /**
  336. * @des 签到
  337. */
  338. public function signIn()
  339. {
  340. $res = $this->resumeService->signIn(auth('web-member')->user());
  341. if ($res['code']==1) {
  342. return $this->sendSuccessResponse($res['info']);
  343. } else {
  344. return $this->sendErrorResponse($res['info']);
  345. }
  346. }
  347. public function resume()
  348. {
  349. $content = $this->resumeService->myResume(auth('web-member')->user());
  350. return view('jkq.person.resume', ['content'=>$content]);
  351. }
  352. public function resumeAjax()
  353. {
  354. $content = $this->resumeService->myResumeAjax(auth('web-member')->user());
  355. return view('jkq.person.ajax.addResume', ['content'=>$content]);
  356. }
  357. public function resumeAdd()
  358. {
  359. $res = $this->resumeService->loginValidate(auth('web-member')->user());
  360. $district = $this->categoryService->getDefaultDistrict();
  361. $subsite = $this->subsiteService->getSubsite(auth('web-member')->user());
  362. return view('jkq.person.resume_add',
  363. [
  364. 'member'=>$res['member'],
  365. 'resume'=>$res['resume'],
  366. 'defaultCity'=>$district->defaultCity,
  367. 'disCity'=>$district->disCity,
  368. 'disHan'=>$district->disHan,
  369. 'resumeTitle'=>$res['resumeTitle'],
  370. 'subsite'=>$subsite,
  371. ]
  372. );
  373. }
  374. public function resumeCreate(PersonValidatorRequest $request)
  375. {
  376. $res = $this->resumeService->resumeCreate($request->except(['add_tag','_token']), auth('web-member')->user());
  377. if ($res['code']==1) {
  378. return $this->sendSuccessResponse(['id'=>$res['info'],'tag'=>$request->add_tag]);
  379. } else {
  380. return $this->sendErrorResponse('更新简历失败', '', 400);
  381. }
  382. }
  383. public function resumeCheck()
  384. {
  385. return view('jkq.person.resume_check');
  386. }
  387. public function resumeUpdate()
  388. {
  389. $de_resume = Resume::find(request()->id);
  390. $back_url = \Illuminate\Support\Facades\URL::previous();
  391. if(!$de_resume){
  392. return $this->showMessage('对不起,您只能查看自己的简历!', $back_url, true, '上一页', '3');
  393. }
  394. if($de_resume->uid!=auth('web-member')->user()->id){
  395. return $this->showMessage('对不起,您只能查看自己的简历!', $back_url, true, '上一页', '3');
  396. }
  397. $res = $this->resumeService->getResumeById(request()->id, auth('web-member')->user());
  398. $district = $this->categoryService->getDefaultDistrict();
  399. $subsiteResume = $this->subsiteResumeService->getSubsiteResumeById(auth('web-member')->user(), request()->id);
  400. $subsiteAll = $this->subsiteService->getSubsite(auth('web-member')->user());
  401. $refresh = $this->queueAutoRefreshService->getQueuAutoRefresh(request()->id, auth('web-member')->user()->utype);
  402. $entrust = $this->resumeEntrustService->getEntrustByResumeId(request()->id);
  403. return view('jkq.person.resume_update', [
  404. 'resume'=>$res['resume'],
  405. 'member'=>$res['member'],
  406. 'imgs'=>$res['imgs'],
  407. 'defaultCity'=>$district->defaultCity,
  408. 'subsiteResume'=>$subsiteResume['sub'],
  409. 'subsiteAll'=>$subsiteAll,
  410. 'subId'=>$subsiteResume['subId'],
  411. 'refresh'=>$refresh,
  412. 'entrust'=>$entrust
  413. ]);
  414. }
  415. public function updateSubditeResume()
  416. {
  417. $resume_id = request()->get('id');
  418. $user = $this->getUser();
  419. $this->resumeService->isOwn($resume_id,$user);
  420. $res = $this->subsiteResumeService->updateSubditeResume($user, request()->all());
  421. if ($res['code']) {
  422. return $this->sendSuccessResponse($res['info']);
  423. } else {
  424. return $this->sendErrorResponse('更新失败', '', 400);
  425. }
  426. }
  427. public function updateTitle()
  428. {
  429. $res = $this->resumeService->updateTitle(request()->title, request()->id,auth('web-member')->user());
  430. if ($res) {
  431. return $this->sendSuccessResponse('更新成功');
  432. } else {
  433. return $this->sendErrorResponse('更新失败', '', 400);
  434. }
  435. }
  436. public function updateHunting()
  437. {
  438. $resume_id = request()->get('id');
  439. $user = $this->getUser();
  440. $this->resumeService->isOwn($resume_id,$user);
  441. $res = $this->resumeService->updateHunting(request()->except('_token'), auth('web-member')->user());
  442. if ($res) {
  443. return $this->sendSuccessResponse('更新成功');
  444. } else {
  445. return $this->sendErrorResponse('更新失败', '', 400);
  446. }
  447. }
  448. public function updateSpecialty()
  449. {
  450. $resume_id = request()->get('id');
  451. $user = $this->getUser();
  452. $this->resumeService->isOwn($resume_id,$user);
  453. $res = $this->resumeService->updateSpecialty(request()->except('_token'),auth('web-member')->user());
  454. if ($res['code']==1) {
  455. return $this->sendSuccessResponse('更新成功');
  456. } else {
  457. return $this->sendErrorResponse('更新失败', '', 400);
  458. }
  459. }
  460. public function resumeEducationAdd()
  461. {
  462. $res = $this->ResumeEducationService->resumeEducationAdd(request()->all(), auth('web-member')->user());
  463. if ($res['code']==1) {
  464. $html = view('jkq.person.ajax.resume_education', ['content'=>$res['info']])->render();
  465. return $this->sendSuccessResponse($html);
  466. } else {
  467. return $this->sendErrorResponse('更新失败', '', 400);
  468. }
  469. }
  470. public function resumeEducation()
  471. {
  472. $res = $this->ResumeEducationService->getResumeEducationByResumeId(request()->resume_id,auth('web-member')->user());
  473. return view('jkq.person.ajax.resume_education', ['content'=>$res]);
  474. }
  475. public function resumeEducationUpdate()
  476. {
  477. $res = $this->ResumeEducationService->resumeUpdate(request()->id,auth('web-member')->user());
  478. return $this->sendSuccessResponse($res);
  479. }
  480. public function resumeEduDelete()
  481. {
  482. if (request()->method()=='POST') {
  483. $res = $this->ResumeEducationService->resumeEduDelete(request()->id,auth('web-member')->user());
  484. if ($res['code']==1) {
  485. return $this->sendSuccessResponse('删除成功');
  486. } else {
  487. return $this->sendErrorResponse('删除失败', '', 400);
  488. }
  489. } else {
  490. return view('jkq.person.ajax.resume_delete', ['tpis'=>'删除后将无法恢复,您确定要删除该教育经历吗?']);
  491. }
  492. }
  493. public function resumeWork()
  494. {
  495. $res = $this->ResumeWorkService->getResumeWorkByResumeId(request()->resume_id,auth('web-member')->user());
  496. return view('jkq.person.ajax.resume_work', ['content'=>$res]);
  497. }
  498. public function resumeWorkAdd()
  499. {
  500. $resume_id = request()->get('resume_id');
  501. $user = $this->getUser();
  502. $this->resumeService->isOwn($resume_id,$user);
  503. $res = $this->ResumeWorkService->resumeWorkAdd(request()->all(), auth('web-member')->user());
  504. if ($res['code']==1) {
  505. $html = view('jkq.person.ajax.resume_work', ['content'=>$res['info']])->render();
  506. return $this->sendSuccessResponse($html);
  507. } else {
  508. return $this->sendErrorResponse('更新失败', '', 400);
  509. }
  510. }
  511. public function resumeWorkUpdate()
  512. {
  513. $work_id = request()->get('id');
  514. $user = $this->getUser();
  515. $this->ResumeWorkService->isOwn($work_id,$user);
  516. $res = $this->ResumeWorkService->resumeUpdate(request()->id);
  517. return $this->sendSuccessResponse($res);
  518. }
  519. public function resumeWorkDelete()
  520. {
  521. if (request()->method()=='POST') {
  522. $work_id = request()->get('id');
  523. $resume_id = request()->get('resume_id');
  524. $user = $this->getUser();
  525. $this->ResumeWorkService->isOwn($work_id,$user,$resume_id);
  526. $res = $this->ResumeWorkService->resumeWorkDelete(request()->id);
  527. if ($res['code']==1) {
  528. return $this->sendSuccessResponse('删除成功');
  529. } else {
  530. return $this->sendErrorResponse('删除失败', '', 400);
  531. }
  532. } else {
  533. return view('jkq.person.ajax.resume_delete', ['tpis'=>'删除后将无法恢复,您确定要删除该工作经历吗?']);
  534. }
  535. }
  536. public function resumeTrain()
  537. {
  538. $res = $this->ResumeTrainService->getResumeTrainByResumeId(request()->resume_id,auth('web-member')->user());
  539. return view('jkq.person.ajax.resume_train', ['content'=>$res]);
  540. }
  541. public function resumeTrainAdd()
  542. {
  543. $resume_id = request()->get('resume_id');
  544. $user = $this->getUser();
  545. $this->resumeService->isOwn($resume_id,$user);
  546. $res = $this->ResumeTrainService->resumeTrainAdd(request()->all(), auth('web-member')->user());
  547. if ($res['code']==1) {
  548. $html = view('jkq.person.ajax.resume_train', ['content'=>$res['info']])->render();
  549. return $this->sendSuccessResponse($html);
  550. } else {
  551. return $this->sendErrorResponse('更新失败', '', 400);
  552. }
  553. }
  554. public function resumeTrainUpdate()
  555. {
  556. $train_id = request()->get('id');
  557. $user = $this->getUser();
  558. $this->ResumeTrainService->isOwn($train_id,$user);
  559. $res = $this->ResumeTrainService->resumeUpdate(request()->id);
  560. return $this->sendSuccessResponse($res);
  561. }
  562. public function resumeTrainDelete()
  563. {
  564. if (request()->method()=='POST') {
  565. $train_id = request()->get('id');
  566. $resume_id = request()->get('resume_id');
  567. $user = $this->getUser();
  568. $this->ResumeTrainService->isOwn($train_id,$user,$resume_id);
  569. $res = $this->ResumeTrainService->resumeTrainDelete(request()->id);
  570. if ($res['code']==1) {
  571. return $this->sendSuccessResponse('删除成功');
  572. } else {
  573. return $this->sendErrorResponse('删除失败', '', 400);
  574. }
  575. } else {
  576. return view('jkq.person.ajax.resume_delete', ['tpis'=>'删除后将无法恢复,您确定要删除该培训经历吗?']);
  577. }
  578. }
  579. public function resumeCredent()
  580. {
  581. $res = $this->ResumeCredentService->getResumeCredentByResumeId(request()->resume_id,auth('web-member')->user());
  582. return view('jkq.person.ajax.resume_credent', ['content'=>$res]);
  583. }
  584. public function resumeCredentAdd()
  585. {
  586. $resume_id = request()->get('resume_id');
  587. $user = $this->getUser();
  588. $this->resumeService->isOwn($resume_id,$user);
  589. $res = $this->ResumeCredentService->resumeCredentAdd(request()->all(), auth('web-member')->user());
  590. if ($res['code']==1) {
  591. $html = view('jkq.person.ajax.resume_credent', ['content'=>$res['info']])->render();
  592. return $this->sendSuccessResponse($html);
  593. } else {
  594. return $this->sendErrorResponse('更新失败', '', 400);
  595. }
  596. }
  597. public function resumeCredentUpdate()
  598. {
  599. $train_id = request()->get('id');
  600. $user = $this->getUser();
  601. $this->ResumeCredentService->isOwn($train_id,$user);
  602. $res = $this->ResumeCredentService->resumeUpdate(request()->id);
  603. return $this->sendSuccessResponse($res);
  604. }
  605. public function resumeCredentDelete()
  606. {
  607. if (request()->method()=='POST') {
  608. $train_id = request()->get('id');
  609. $resume_id = request()->get('resume_id');
  610. $user = $this->getUser();
  611. $this->ResumeCredentService->isOwn($train_id,$user,$resume_id);
  612. $res = $this->ResumeCredentService->resumeCredentDelete(request()->id);
  613. if ($res['code']==1) {
  614. return $this->sendSuccessResponse('删除成功');
  615. } else {
  616. return $this->sendErrorResponse('删除失败', '', 400);
  617. }
  618. } else {
  619. return view('jkq.person.ajax.resume_delete', ['tpis'=>'删除后将无法恢复,您确定要删除该证书吗?']);
  620. }
  621. }
  622. public function resumeLanAdd()
  623. {
  624. $resume_id = request()->get('resume_id');
  625. $user = $this->getUser();
  626. $this->resumeService->isOwn($resume_id,$user);
  627. $res = $this->ResumeLanguageService->resumeLanAdd(request()->resume_id);
  628. return view('jkq.person.ajax.resume_edit_language', ['content'=>$res]);
  629. }
  630. public function getLanguageL()
  631. {
  632. $res = $this->ResumeLanguageService->getLanguageL(request()->resume_id,auth('web-member')->user());
  633. return view('jkq.person.ajax.get_language_list', ['content'=>$res]);
  634. }
  635. public function saveLanguage()
  636. {
  637. $resume_id = request()->get('resume_id');
  638. $user = $this->getUser();
  639. $this->resumeService->isOwn($resume_id,$user);
  640. $res = $this->ResumeLanguageService->saveLanguage(request()->all(), auth('web-member')->user());
  641. if ($res['code']==1) {
  642. $html = view('jkq.person.ajax.get_language_list', ['content'=>$res['info']])->render();
  643. return $this->sendSuccessResponse($html);
  644. } else {
  645. return $this->sendErrorResponse('添加失败', '', 400);
  646. }
  647. }
  648. public function delLanguage()
  649. {
  650. $language_id = request()->get('id');
  651. $resume_id = request()->get('resume_id');
  652. $user = $this->getUser();
  653. $this->ResumeLanguageService->isOwn($language_id,$user,$resume_id);
  654. $res = $this->ResumeLanguageService->delLanguage(request()->all());
  655. if ($res['code']==1) {
  656. return $this->sendSuccessResponse('删除成功');
  657. } else {
  658. return $this->sendErrorResponse('删除失败', '', 400);
  659. }
  660. }
  661. public function tagSave()
  662. {
  663. $resume_id = request()->get('resume_id');
  664. $user = $this->getUser();
  665. $this->resumeService->isOwn($resume_id,$user);
  666. $res = $this->resumeService->tagSave(request()->all());
  667. if ($res['code']==1) {
  668. return $this->sendSuccessResponse('更新成功');
  669. } else {
  670. return $this->sendErrorResponse('更新失败', '', 400);
  671. }
  672. }
  673. public function resumeCopy()
  674. {
  675. $res = $this->resumeService->resumeCopy(request()->id, auth('web-member')->user());
  676. if ($res['code']==1) {
  677. return $this->sendSuccessResponse($res['info']);
  678. } else {
  679. return $this->sendErrorResponse('创建简历失败', '', 400);
  680. }
  681. }
  682. public function saveBasicInfo()
  683. {
  684. $res = $this->resumeService->saveBasicInfo(request()->except('_token'),auth('web-member')->user());
  685. if ($res) {
  686. return $this->sendSuccessResponse('更新成功');
  687. } else {
  688. return $this->sendErrorResponse('更新失败', '', 400);
  689. }
  690. }
  691. public function refreshResume()
  692. {
  693. $res = $this->resumeService->refreshResume(request()->id, auth('web-member')->user());
  694. if ($res['code']==1) {
  695. return $this->sendSuccessResponse($res['info']);
  696. } else {
  697. return $this->sendErrorResponse($res['info']);
  698. }
  699. }
  700. public function resumeShow()
  701. {
  702. $user = $this->getUser();
  703. $res = $this->resumeService->resumeShow(request()->id,'',$user);
  704. return view('jkq.person.resume_show', ['content'=>$res,'resume'=>$res['resume'], 'redirect_url'=>url(\Illuminate\Support\Facades\Request::getRequestUri())]);
  705. }
  706. public function resumeDoc()
  707. {
  708. $res = $this->resumeService->resumeDoc(request()->id);
  709. if ($res) {
  710. $html = view('jkq.tpl.word_resume', ['content'=>$res])->render();
  711. return $this->resumeService->descript($res, $html);
  712. } else {
  713. return $this->sendErrorResponse('请选择简历!', '', 400);
  714. }
  715. }
  716. public function delResume()
  717. {
  718. $res = $this->resumeService->delResume(request()->id);
  719. $html = view('jkq.person.ajax.del_resume', ['content'=>$res['data']])->render();
  720. return json_encode(['code'=>$res['code'],'data'=>$html]);
  721. }
  722. public function setDelResume()
  723. {
  724. $res = $this->resumeService->setDelResume(request()->id, auth('web-member')->user());
  725. if ($res) {
  726. return $this->sendSuccessResponse('删除成功');
  727. } else {
  728. return $this->sendErrorResponse('删除失败', '', 400);
  729. }
  730. }
  731. public function setDef()
  732. {
  733. $res = $this->resumeService->setDef(request()->id, auth('web-member')->user());
  734. if ($res['code']==1) {
  735. return $this->sendSuccessResponse($res['info']);
  736. } else {
  737. return $this->sendErrorResponse($res['info'], '', 400);
  738. }
  739. }
  740. public function entrust()
  741. {
  742. $res = $this->resumeService->entrust(request()->id, auth('web-member')->user());
  743. if ($res['code']==0) {
  744. $html = view('jkq.person.ajax.entrust', ['content'=>$res['data']])->render();
  745. return json_encode(['code'=>0,'html'=>$html,'data'=>$res['data']['entrust']-time()]);
  746. } else {
  747. $html = view('jkq.person.ajax.entruct_cancle', ['content'=>$res['data']])->render();
  748. return json_encode(['code'=>0,'html'=>$html,'data'=>$res['data']['entrust_end']-time()]);
  749. }
  750. }
  751. public function setEntrust()
  752. {
  753. $res = $this->resumeService->setEntrust(request()->id, auth('web-member')->user());
  754. if ($res['code']==1) {
  755. return $this->sendSuccessResponse($res['info']);
  756. } else {
  757. return $this->sendErrorResponse($res['info'], '', 400);
  758. }
  759. }
  760. public function setEntrustDel()
  761. {
  762. $res = $this->resumeService->setEntrustDel(request()->id,auth('web-member')->user());
  763. if ($res['code']==1) {
  764. return $this->sendSuccessResponse($res['info']);
  765. } else {
  766. return $this->sendErrorResponse($res['info'], '', 400);
  767. }
  768. }
  769. public function tagCn()
  770. {
  771. if (request()->method()=='POST') {
  772. dd(11);
  773. } else {
  774. $result = $this->resumeService->tagCn(auth('web-member')->user());
  775. if ($result['code']==0) {
  776. return $result;
  777. } else {
  778. return view('jkq.person.ajax.resume_tag', $result);
  779. }
  780. }
  781. }
  782. public function resumeStick()
  783. {
  784. if (request()->method()=='POST') {
  785. dd(22);
  786. } else {
  787. $result = $this->resumeService->resumeStick(auth('web-member')->user());
  788. if ($result['code']==0) {
  789. return $result;
  790. } else {
  791. return view('jkq.person.ajax.resume_stick', $result);
  792. }
  793. }
  794. }
  795. public function incrementAddSave()
  796. {
  797. $result = $this->resumeService->incrementAddSave(request()->all(), auth('web-member')->user());
  798. if ($result['code']==1) {
  799. return $this->sendSuccessResponse($result['info']);
  800. } else {
  801. return $this->sendErrorResponse($result['info'], '', 400);
  802. }
  803. }
  804. public function incrementStickSave()
  805. {
  806. $result = $this->resumeService->incrementStickSave(request()->all(), auth('web-member')->user());
  807. if ($result['code']==1) {
  808. return $this->sendSuccessResponse($result['info']);
  809. } else {
  810. return $this->sendErrorResponse($result['info'], '', 400);
  811. }
  812. }
  813. public function uploadImages()
  814. {
  815. $resume_id = request()->get('resume_id');
  816. $user = $this->getUser();
  817. $this->resumeService->isOwn($resume_id,$user);
  818. $result = $this->resumeService->uploadImages(request()->all(), auth('web-member')->user());
  819. if ($result['code']==1) {
  820. return $this->sendSuccessResponse($result['info']);
  821. } else {
  822. return $this->sendErrorResponse($result['info']);
  823. }
  824. }
  825. public function uploadFiles()
  826. {
  827. $resume_id = request()->get('resume_id');
  828. $user = $this->getUser();
  829. $this->resumeService->isOwn($resume_id,$user);
  830. $result = $this->resumeService->uploadFiles(request()->all());
  831. if ($result) {
  832. return $this->sendSuccessResponse('上传成功!');
  833. } else {
  834. return $this->sendErrorResponse('上传失败,请重试!');
  835. }
  836. }
  837. public function delFile()
  838. {
  839. if (request()->method()=='POST') {
  840. $resume_id = request()->get('resume_id');
  841. $user = $this->getUser();
  842. $this->resumeService->isOwn($resume_id,$user);
  843. $result = $this->resumeService->delFile(request()->all());
  844. if ($result) {
  845. return $this->sendSuccessResponse('删除成功!');
  846. } else {
  847. return $this->sendErrorResponse('删除失败,请重试!');
  848. }
  849. } else {
  850. return view('jkq.person.ajax.resume_delete', ['tpis'=>'删除后将无法恢复,您确定要删除该附件简历吗?']);
  851. }
  852. }
  853. public function autoRefresh()
  854. {
  855. $resume_id = request()->get('resume_id');
  856. $user = $this->getUser();
  857. $this->resumeService->isOwn($resume_id,$user);
  858. $result = $this->resumeService->autoRefresh(request()->all(),auth('web-member')->user());
  859. if ($result['code']==1) {
  860. return $this->sendSuccessResponse($result['info']);
  861. } else {
  862. return $this->sendErrorResponse($result['info']);
  863. }
  864. }
  865. public function del_images()
  866. {
  867. if (request()->method()=='POST') {
  868. $img_id = request()->get('id');
  869. $resume_id = request()->get('resume_id');
  870. $user = $this->getUser();
  871. $this->resumeImageService->isOwn($img_id,$user,$resume_id);
  872. $result = $this->resumeService->del_images(request()->all());
  873. if ($result['code']==1) {
  874. return $this->sendSuccessResponse('ok');
  875. } else {
  876. return $this->sendErrorResponse('删除失败!');
  877. }
  878. } else {
  879. return view('jkq.person.ajax.resume_delete', ['tpis'=>'删除后将无法恢复,您确定要删除该条数据吗?']);
  880. }
  881. }
  882. //职位匹配
  883. public function matchJobs($id)
  884. {
  885. $resume = $this->resumeService->getResumeInfo($id);
  886. if(!$resume){
  887. return $this->showMessage('您的简历审核未通过/审核中,无法匹配职位', \Illuminate\Support\Facades\URL::previous(), true, '上一页', '3');
  888. }
  889. //匹配职位
  890. $jobs = $this->searchService->searchRecommendJobs(5, $this->getUser(), 'show_page');
  891. /*
  892. $where = $this->jobsService->setRecommendJobWhere($resume);
  893. $order = array('refresh_time'=>'desc');
  894. $jobs = $this->searchService->search('Job', $where, $order, '', 10);
  895. */
  896. $list_items = array();
  897. if($jobs){
  898. if ($jobs->total()>0) {
  899. $list_items = $this->jobsService->dealjobFilelds($jobs->items());
  900. }
  901. }
  902. $return_data = array(
  903. 'list'=>$jobs,
  904. 'jobs'=>$list_items
  905. );
  906. return view('jkq.person.jobs_match', $return_data);
  907. }
  908. public function resumeTpl(Request $request)
  909. {
  910. $res = $this->resumeService->resumeTpl(auth('web-member')->user(), $request->pid);
  911. $html = view('jkq.person.ajax.resume_tpl', ['tpl'=>$res['tpl'],'resume_tpl'=>$res['resume_tpl'],'resume_id'=>$request->pid])->render();
  912. return json_encode(['html'=>$html]);
  913. }
  914. public function resumeTplUpdate(Request $request)
  915. {
  916. $res = $this->resumeService->resumeTplUpdate($request->pid, $request->tpl,auth('web-member')->user());
  917. if ($res) {
  918. return $this->sendSuccessResponse('更新成功!');
  919. } else {
  920. return $this->sendErrorResponse('更新失败!');
  921. }
  922. }
  923. public function incrementTplPoints(Request $request)
  924. {
  925. $res = $this->resumeService->incrementTplPoints(auth('web-member')->user(), $request->all());
  926. if ($res['code']==1) {
  927. return $this->sendSuccessResponse($res['info']);
  928. } else {
  929. return $this->sendErrorResponse($res['info']);
  930. }
  931. }
  932. public function incrementTplPay(Request $request)
  933. {
  934. $res = $this->resumeService->incrementTplPay(auth('web-member')->user(), $request->all(), $request->route());
  935. if ($res['code']=='wechat') {
  936. if ($res['type']=='wap') {
  937. return $res['tradeCode'];
  938. } else {
  939. return json_encode(['tradeCode'=>$res['tradeCode'],'tradeNo'=>$res['tradeNo']]);
  940. }
  941. } else {
  942. return $res['tradeCode'];
  943. }
  944. }
  945. public function downFile(Request $request)
  946. {
  947. $id = $request->id;
  948. $user = $this->getUser();
  949. $this->resumeService->isOwn($id,$user);
  950. $back_url = \Illuminate\Support\Facades\URL::previous();
  951. if(!$id){
  952. return $this->showMessage('简历不存在!', $back_url, true, '上一页', '3');
  953. }
  954. $resume = Resume::find($id);
  955. if(Storage::disk('public')->exists($resume->word_resume)){
  956. return response()->download(Storage::disk('public')->path($resume->word_resume), $resume->word_resume_title);
  957. }else{
  958. return $this->showMessage('文件不存在!', $back_url, true, '上一页', '3');
  959. }
  960. }
  961. public function resumeDisplay(Request $request)
  962. {
  963. $user = $this->getUser();
  964. $res = $this->resumeService->resumeDisplay($request->display, $request->id,$user);
  965. if ($res) {
  966. return $this->sendSuccessResponse('更新成功!');
  967. } else {
  968. return $this->sendErrorResponse('更新失败!');
  969. }
  970. }
  971. public function delRefreshResume(Request $request)
  972. {
  973. $user = $this->getUser();
  974. $res = $this->queueAutoRefreshService->delRefreshResume($request->pid,$user);
  975. if ($res) {
  976. return $this->sendSuccessResponse('取消成功!');
  977. } else {
  978. return $this->sendErrorResponse('取消失败!');
  979. }
  980. }
  981. public function delEntrustResume(Request $request)
  982. {
  983. $res = $this->resumeEntrustService->delEntrustResume($request->pid, $request->resume_id,auth('web-member')->user());
  984. if ($res['code']==1) {
  985. return $this->sendSuccessResponse($res['info']);
  986. } else {
  987. return $this->sendErrorResponse('取消失败!');
  988. }
  989. }
  990. }