RecruitmentController.php 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2019/7/31
  6. * Time: 14:58
  7. */
  8. namespace App\Http\Controllers\Web\Hardware\Pad;
  9. use App\Http\Controllers\Web\WebBaseController;
  10. use App\Repositories\MemberPointRepository;
  11. use App\Repositories\MemberSetmealRepository;
  12. use App\Repositories\RefreshLogRepository;
  13. use App\Repositories\SetmealRepository;
  14. use App\Repositories\CompanyContactsRepository;
  15. use App\Services\Common\CategoryService;
  16. use App\Services\Jobfair\JobfairPutJobService;
  17. use App\Services\Common\SetmealIncrementsService;
  18. use App\Services\Company\CompanyService;
  19. use App\Services\Company\ServiceService;
  20. use App\Services\Company\JobsService;
  21. use App\Services\Jobfair\JobfairCompanyService;
  22. use Carbon\Carbon;
  23. use Illuminate\Http\Request;
  24. use App\Services\Jobfair\JobfairJobsService;
  25. use App\Services\Jobfair\JobfairPersonalJopApplyService;
  26. use App\Validators\JobsSaveValidatorRequest;
  27. use App\Repositories\Jobfair\JobfairPutJobRepository;
  28. use App\Repositories\Jobfair\JobfairRepository;
  29. use App\Repositories\Jobfair\JobfairPersonalJobsApplyRepository;
  30. use App\Repositories\JobsRepository;
  31. use Illuminate\Support\Facades\Cache;
  32. class RecruitmentController extends WebBaseController
  33. {
  34. protected $jobsfairPutJobService;
  35. protected $categoryService;
  36. protected $companyService;
  37. protected $memberSetmealRepository;
  38. protected $setmealIncrementsService;
  39. protected $refreshLogRepository;
  40. protected $memberPointRepository;
  41. protected $setmealRepository;
  42. protected $companyContactsRepository;
  43. protected $serviceService;
  44. protected $subsiteService;
  45. protected $jobfairJobsService;
  46. protected $jobfairRepository;
  47. protected $jobfairPutJobRepository;
  48. protected $jobfairPersonalJobsApplyRepository;
  49. protected $jobsRepository;
  50. protected $jobsService;
  51. protected $jobfairCompanyService;
  52. protected $jobfairPersonalJopApplyService;
  53. /**
  54. * JobsController constructor.
  55. * @param JobfairPutJobService $jobsfairPutJob
  56. * @param CategoryService $categoryService
  57. * @param CompanyService $companyService
  58. * @param $memberSetmealRepository
  59. * @param $setmealIncrementsService
  60. * @param $refreshLogRepository
  61. * @param $memberPointRepository
  62. * @param $setmealRepository
  63. * @param $companyContactsRepository
  64. * @param $queueAutoRefreshRepository
  65. * @param $serviceService
  66. * @param $jobfairRepository
  67. * @param $jobfairPutJobRepository
  68. * @param $jobfairPersonalJobsApplyRepository
  69. * @param $jobsRepository
  70. * @param $jobsService
  71. * @param $jobfairPersonalJopApplyService
  72. */
  73. public function __construct(JobfairPutJobService $jobsfairPutJobService, ServiceService $serviceService, SetmealRepository $setmealRepository,CompanyContactsRepository $companyContactsRepository, MemberPointRepository $memberPointRepository, RefreshLogRepository $refreshLogRepository, CategoryService $categoryService, CompanyService $companyService, MemberSetmealRepository $memberSetmealRepository, SetmealIncrementsService $setmealIncrementsService,JobfairJobsService $jobfairJobsService,JobfairRepository $jobfairRepository,JobfairPutJobRepository $jobfairPutJobRepository,JobfairPersonalJobsApplyRepository $jobfairPersonalJobsApplyRepository,JobsRepository $jobsRepository,JobsService $jobsService,JobfairCompanyService $jobfairCompanyService,JobfairPersonalJopApplyService $jobfairPersonalJopApplyService)
  74. {
  75. $this->jobsfairPutJobService = $jobsfairPutJobService;
  76. $this->categoryService = $categoryService;
  77. $this->companyService = $companyService;
  78. $this->memberSetmealRepository = $memberSetmealRepository;
  79. $this->setmealIncrementsService = $setmealIncrementsService;
  80. $this->refreshLogRepository = $refreshLogRepository;
  81. $this->memberPointRepository = $memberPointRepository;
  82. $this->setmealRepository = $setmealRepository;
  83. $this->setmealRepository = $setmealRepository;
  84. $this->companyContactsRepository = $companyContactsRepository;
  85. $this->serviceService = $serviceService;
  86. $this->jobfairJobsService = $jobfairJobsService;
  87. $this->jobfairRepository = $jobfairRepository;
  88. $this->jobfairPutJobRepository = $jobfairPutJobRepository;
  89. $this->jobfairPersonalJobsApplyRepository = $jobfairPersonalJobsApplyRepository;
  90. $this->jobsRepository = $jobsRepository;
  91. $this->jobsService = $jobsService;
  92. $this->jobfairCompanyService = $jobfairCompanyService;
  93. $this->jobfairPersonalJopApplyService = $jobfairPersonalJopApplyService;
  94. }
  95. public function index()
  96. {
  97. return view('app.hardware.pad.recruitment.index',['title'=>'现场招聘']);
  98. }
  99. public function jobs()
  100. {
  101. return view('app.hardware.pad.recruitment.jobs.index',['title'=>'招聘会职位管理']);
  102. }
  103. public function jobsAdd()
  104. {
  105. $district = config('aix.system.site_other.site_other.district');
  106. if($district && substr_count($district,'.') == 1){
  107. $district .= '.0';
  108. }elseif ($district && substr_count($district,'.') == 0){
  109. $district .= '.0.0';
  110. }
  111. $user = auth('web-company')->user();
  112. $contacts = $this->companyContactsRepository->getContacts(['company_id'=>$user->id]);
  113. return view('app.hardware.pad.recruitment.jobs.add',['title'=>'新增职位','contacts'=>$contacts,'district'=>$district]);
  114. }
  115. public function jobsSave(JobsSaveValidatorRequest $request)
  116. {
  117. $user = auth('web-company')->user()->toArray();
  118. return $this->jobsfairPutJobService->jobfairJobsSave($request->all(),$user);
  119. }
  120. public function jobsList()
  121. {
  122. $jobfair_id = session('floorplan_stands.jobfair_id');
  123. //在招职位
  124. $where['jobfair_id'] = [$jobfair_id];
  125. $user = auth('web-company')->user();
  126. $where1 = ['position_id'=>session('floorplan_stands.id')];
  127. $jobs = $this->jobsfairPutJobService->jobfairCompany($where,$user,$where1,10);
  128. if(request()->ajax())
  129. {
  130. if ($jobs->isNotEmpty()) {
  131. return response()->json(['status'=>1,'data'=>view('app.hardware.pad.recruitment.jobs.ajax_list', ['jobs'=>$jobs])->render()]);
  132. }
  133. return response()->json(['status'=>0]);
  134. }
  135. return view('app.hardware.pad.recruitment.jobs.list', ['title'=>'已发布职位','jobs' => $jobs]);
  136. }
  137. public function jobsEdit(Request $request)
  138. {
  139. $job_info = $this->jobsfairPutJobService->jobfairJobsEdit($request->id);
  140. $page = $request->page ?? 1;
  141. if(!$job_info){
  142. return $this->notFount('参数错误');
  143. }
  144. $user = auth('web-company')->user();
  145. $contacts = $this->companyContactsRepository->getContacts(['company_id'=>$user->id]);
  146. return view('app.hardware.pad.recruitment.jobs.edit', ['title'=>'编辑职位','job_info' => $job_info,'page'=>$page,'contacts'=>$contacts]);
  147. }
  148. public function jobsUpdate(JobsSaveValidatorRequest $request)
  149. {
  150. $user = auth('web-company')->user();
  151. $id = $request->id;
  152. $this->jobfairJobsService->isOwn($id,$user);
  153. return $this->jobsfairPutJobService->jobfairPutJobsEdit($request,$user->toArray());
  154. }
  155. public function jobsDelete(Request $request)
  156. {
  157. $ids = $request->ids;
  158. if(!$ids) {
  159. return response()->json(['status' => 0, 'msg' => '请选择职位']);
  160. }
  161. $ids = explode(',',$ids);
  162. $user = $this->getLoginUser();
  163. $this->jobsfairPutJobService->isOwn($ids,$user->id);
  164. if($this->jobfairPutJobRepository->delJobs($ids))
  165. {
  166. return response()->json(['status' => 1, 'msg' => '删除成功']);
  167. }
  168. return response()->json(['status' => 0, 'msg' => '删除失败']);
  169. }
  170. public function jobsDisplay(Request $request)
  171. {
  172. $user = $this->getLoginUser();
  173. $this->jobsfairPutJobService->isOwn($request->id,$user->id);
  174. return $this->jobsfairPutJobService->displayswitch($request->id,$request->display);
  175. }
  176. public function jobsDisplayAll(Request $request)
  177. {
  178. $ids = $request->ids;
  179. if(!$ids) {
  180. return response()->json(['status' => 0, 'msg' => '请选择职位']);
  181. }
  182. $ids = explode(',',$ids);
  183. $user = $this->getLoginUser();
  184. $this->jobsfairPutJobService->isOwn($ids,$user->id);
  185. return $this->jobsfairPutJobService->displayAllSwitch($ids,$request->display);
  186. }
  187. //sync 是网络职位
  188. public function jobsSyncList()
  189. {
  190. $job_where = [
  191. ['company_id', '=', auth('web-company')->user()->id],
  192. ['valid', '=', 1]
  193. ];
  194. if (config('aix.companyset.comset.show_set.jobs_display') == 1) {
  195. $job_where[] = array('audit', '=', 1);
  196. } else {
  197. $job_where[] = array('audit', '<>', 3);
  198. }
  199. $list = $this->jobsRepository->getJobsList($job_where);
  200. $exid = session('floorplan_stands.exid');
  201. foreach ($list as &$val) {
  202. $val->education_cn = get_category($val->education) ? get_category($val->education) : '不限';
  203. $val->experience_cn = get_category($val->experience) ? get_category($val->experience) : '不限';
  204. if($val->wage == -1)
  205. {
  206. $val->wage_cn = '面议';
  207. }else{
  208. if($val->wage_max) {
  209. $val->wage_cn = $val->wage_min .'-'.$val->wage_max.'/月';
  210. }else{
  211. $val->wage_cn = $val->wage_min . '/月以上';
  212. }
  213. }
  214. if($val->ygxs == 363) {
  215. $val->wage_cn = $val->wage_min .'/小时';
  216. }
  217. $val->nature_cn = get_category($val->nature);
  218. $val['is_sync'] = false;
  219. if($this->jobfairPutJobRepository->isSync(['jobs_name'=>$val['jobs_name']],['exid'=>$exid])) {
  220. $val['is_sync'] = true;
  221. }
  222. }
  223. if(request()->ajax())
  224. {
  225. if ($list->isNotEmpty()) {
  226. return response()->json(['status'=>1,'data'=>view('app.hardware.pad.recruitment.jobs.ajax_sync_list',['list'=>$list])->render()]);
  227. }
  228. return response()->json(['status'=>0]);
  229. }
  230. $res['title']= '网络职位';
  231. $res['list']= $list;
  232. return view('app.hardware.pad.recruitment.jobs.sync',$res);
  233. }
  234. public function jobsSync(Request $request)
  235. {
  236. if(!is_array($request->jobs_id)) {
  237. $request->jobs_id = explode(',',$request->jobs_id);
  238. }
  239. $user = auth('web-company')->user();
  240. $this->jobsService->isOwn( $request->jobs_id,$user);
  241. $this->jobfairCompanyService->isOwn($request->exid, $user);
  242. return $this->jobfairJobsService->jobsToJobfairPad($request,$user->toArray());
  243. }
  244. // public function jobsSyncEdit(Request $request)
  245. // {
  246. // $user = auth('web-company')->user();
  247. // $job_info = $this->jobfairJobsService->jobfairJobsEdit($request->id,$user);
  248. // if(!$job_info){
  249. // return $this->notFount('参数错误');
  250. // }
  251. // $job_info['page'] = $request->page ?? 1;
  252. // $job_info['title'] = '编辑职位库职位';
  253. // return view('app.hardware.pad.recruitment.jobs.sync_edit',$job_info);
  254. // }
  255. //
  256. //
  257. //
  258. // public function jobsSyncDelete(Request $request)
  259. // {
  260. // return $this->jobfairJobsService->jobfairJobsDel($request);
  261. // }
  262. public function appointment(Request $request)
  263. {
  264. $user = auth('web-company')->user();
  265. $status = $request->input('status','');
  266. $where = [
  267. 'company_id'=>$user->id,
  268. 'jobfair_id'=>session('floorplan_stands.jobfair_id'),
  269. 'type'=>1,
  270. 'is_apply'=>1,
  271. ];
  272. $jobfair = $this->jobfairRepository->find(session('floorplan_stands.jobfair_id'));
  273. $holddate_start = date('Y-m-d H:i:s',$jobfair->holddate_start);
  274. if($status == 1){
  275. $where[] = ['created_at','<',$holddate_start];
  276. }elseif($status == 2){
  277. $where[] = ['created_at','>=',$holddate_start];
  278. }
  279. $result = $this->jobfairPersonalJobsApplyRepository->padApplyJobs($where,10);
  280. foreach($result as &$value)
  281. {
  282. //1.照片为空
  283. //2.照片主动不显示
  284. //3.照片审核不通过
  285. //4.先审核后显示:照片不是审核通过的(不等于1)
  286. $avatar_default = public_data_path('/data/upload/resource/no_photo_female.png');
  287. if ($value->resumes->memberInfos->sex == 1) {
  288. $avatar_default = public_data_path('/data/upload/resource/no_photo_male.png');
  289. }
  290. if ($value->resumes->memberInfos->images == '' || $value->resumes->memberInfos->display_images == 2 || $value->resumes->memberInfos->photo_audit == 0 || (config('aix.personal_set.per_set.show_set.resume_img_display') == 1 && $value->resumes->memberInfos->photo_audit != 2)) {
  291. $value->resumes->photosrc = $avatar_default; //不显示
  292. $value->resumes->photosrc_show = false;
  293. } else {
  294. $value->resumes->photosrc = upload_asset($value->resumes->memberInfos->images); //显示
  295. $value->resumes->photosrc_show = true;
  296. }
  297. if($value->created_at < $holddate_start)
  298. {
  299. $value->is_network =true;
  300. }else {
  301. $value->is_network =false;
  302. }
  303. }
  304. $params = array('status'=>$status);
  305. if($request->ajax())
  306. {
  307. if ($result->isNotEmpty()) {
  308. return response()->json(['status'=>1,'data'=>view('app.hardware.pad.recruitment.ajax_appointment_list', ['result'=>$result])->render()]);
  309. }
  310. return response()->json(['status'=>0]);
  311. }
  312. return view('app.hardware.pad.recruitment.appointment',['title'=>'预约管理','result' => $result,'params'=>$params]);
  313. }
  314. public function appointmentDelete(Request $request)
  315. {
  316. if(!$request->id)
  317. {
  318. return response()->json(['status' => 0, 'msg' => '请选择预约']);
  319. }
  320. $user = $this->getLoginUser();
  321. $this->jobfairPersonalJopApplyService->isComOwn($request->id,$user);
  322. if($this->jobfairPersonalJobsApplyRepository->delete(['id'=>$request->id]))
  323. {
  324. return response()->json(['status' => 1, 'msg' => '删除成功']);
  325. }
  326. return response()->json(['status' => 0, 'msg' => '删除失败']);
  327. }
  328. public function manage()
  329. {
  330. $user = auth('web-company')->user();
  331. $view = Cache::get('jobfair-'.$user->id);
  332. return view('app.hardware.pad.recruitment.manage',['title'=>'展示模板','view'=>$view]);
  333. }
  334. public function manageSetCache(Request $request)
  335. {
  336. $id = $request->input('id','');
  337. if(!$id)
  338. {
  339. return response()->json(['status' => 0, 'msg' => '请选择模板']);
  340. }
  341. $user = auth('web-company')->user();
  342. $jobfair = $this->jobfairRepository->find(session('floorplan_stands.jobfair_id'));
  343. $holddate_end = date('Y-m-d H:i:s',$jobfair->holddate_end);
  344. $time = Carbon::parse($holddate_end);
  345. Cache::put('jobfair-'.$user['id'], $id,$time);
  346. if(Cache::get('jobfair-'.$user['id'])){
  347. Cache::put(session('floorplan_stands.jobfair_id').'-'.$user['id'], time(),120);
  348. return response()->json(['status' => 1, 'msg' => '设置成功,请刷新']);
  349. }
  350. return response()->json(['status' => 0, 'msg' => '设置失败,请重新设置']);
  351. }
  352. public function refresh()
  353. {
  354. $user = auth('web-company')->user();
  355. Cache::put(session('floorplan_stands.jobfair_id').'-'.$user['id'], time(),120);
  356. if(Cache::get(session('floorplan_stands.jobfair_id').'-'.$user['id'])){
  357. return response()->json(['status' => 1, 'msg' => '刷新成功']);
  358. }
  359. return response()->json(['status' => 0, 'msg' => '刷新失败']);
  360. }
  361. }