| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453 | <?php/** * Created by PhpStorm. * User: wuzhenke * Date: 2018/11/20 * Time: 9:53 */namespace App\Http\Controllers\Jkq\Company;use App\Exceptions\ResponseException;use App\Http\Controllers\Jkq\JkqBaseController;use App\Services\Common\EmailService;use App\Services\Company\CompanyDownResumeService;use App\Services\Company\PersonalJobsApplyService;use App\Services\Person\ResumeService;use Illuminate\Http\Request;class ResumeController extends JkqBaseController{    protected $personalJobsApplyService;    protected $resumeService;    protected $companyDownResumeService;    protected $emailService;    /**     * ResumeController constructor.     * @param $personalJobsApplyService     * @param $resumeService     * @param $companyDownResumeService     * @param $emailService     */    public function __construct(PersonalJobsApplyService $personalJobsApplyService, EmailService $emailService, ResumeService $resumeService, CompanyDownResumeService $companyDownResumeService)    {        $this->personalJobsApplyService = $personalJobsApplyService;        $this->resumeService = $resumeService;        $this->companyDownResumeService = $companyDownResumeService;        $this->emailService = $emailService;    }    /**     * 收到的简历     * @param Request $request     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View     */    public function resumeApply(Request $request)    {        $user = auth('web-company')->user();        $result = $this->personalJobsApplyService->resumeApply($request->all(), $user);        return view('jkq.company.resume.resume_apply', $result);    }    /**     * 标记简历     * @param $id     * @param $state     * @return \Illuminate\Http\JsonResponse     */    public function resumeLabelApply($id, $state)    {        $user = auth('web-company')->user();        return $this->personalJobsApplyService->labelApply($id, $state, $user);    }    /**     * 删除申请的简历(单个和批量)     * @param Request $request     * @return \Illuminate\Http\JsonResponse     * @throws \Throwable     */    public function delJobsApply(Request $request)    {        if ($request->method()=='GET') {            $tip='被删除后将无法恢复,您确定要删除选中的简历吗?';            return response()->json(['status'=>1,'msg'=>'获取数据成功', 'data'=>['html'=>view('jkq.company.ajax.ajax_warning', ['tip'=>$tip])->render()]]);        } else {            $user = auth('web-company')->user();            return $this->personalJobsApplyService->delJobsApply($request,$user);        }    }    /**     * 邀请面试     * @param Request $request     * @return \Illuminate\Http\JsonResponse     * @throws \Throwable     */    public function jobsInterview(Request $request)    {        $user = auth('web-company')->user();        if ($request->method() == 'GET') {            if (!$request->resume_id) {                return response()->json(['status'=>0, 'msg'=>'请选择简历!']);            }            return $this->personalJobsApplyService->getApply($request->all(), $user);        } else {            return $this->personalJobsApplyService->saveApply($request,$user);        }    }    /**     * 保存到电脑  ====收到简历     * @param Request $request     * @return \Illuminate\Http\JsonResponse|\Symfony\Component\HttpFoundation\BinaryFileResponse     * @throws ResponseException     */    public function resumeSaveToComputer(Request $request)    {        $yid = $request->y_id;        $model = $request->model;        if (!$yid) {            throw new ResponseException('请选择简历');        }        $user = auth('web-company')->user();        if($model == 'personaljobsapply') {            $this->personalJobsApplyService->isOwn($yid, $user,'id');        }        if($model == 'downresume') {            $this->companyDownResumeService->isOwn($yid, $user,'id');        }        $model_arr = ['personaljobsapply','downresume'];        if (!in_array($model, $model_arr)) {            throw new ResponseException('参数错误');        }        if (false === $res = $this->personalJobsApplyService->saveAsDoc($yid, $model)) {            throw new ResponseException('查找不到相关简历!');        } else {            return response()->download($res['path'], "简历压缩包".date("Ymd").".zip");        }        return response()->json(['status'=>0, 'msg'=>"保存失败"]);    }    /**发送到Email     * @param Request $request     * @return \Illuminate\Http\JsonResponse     * @throws \Throwable     */    public function sendToEmail(Request $request)    {        $resume_id = $request->resume_id;        if (!$resume_id) {            return response()->json(['status'=>0,'msg'=>'请选择简历!']);        }        if ($request->method()=='POST') {            $user = auth('web-company')->user();            $model = $request->model;            if($model == 'personaljobsapply') {                $this->personalJobsApplyService->isOwn($resume_id, $user,'resume_id');            }            if($model == 'downresume') {                $this->companyDownResumeService->isOwn($resume_id, $user,'resume_id');            }            $email = $request->email;            $pattern = "/^[_\.0-9a-zA-Z-]+[_0-9a-zA-Z-]@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,3}$/";            if (!$email || !preg_match($pattern, $email)) {                return response()->json(['status'=>0,'msg'=>'email不正确']);            }            return $this->sendEmail($email, $resume_id);        }        return response()->json(['status'=>1,'msg'=>'返回成功','html'=>view('jkq.company.ajax.ajax_send_to_email')->render()]);    }    /**发送到Email     * @param $email     * @param $resume_id     * @return \Illuminate\Http\JsonResponse     * @throws \Throwable     */    public function sendEmail($email, $resume_id)    {        if (!is_array($resume_id)) {            $resume_id = explode(',', $resume_id);        }        foreach ($resume_id as $key => $val) {             $this->sendEmailDone($email, $val);        }        return response()->json(['status'=>1,'msg'=>"发送成功!" ]);    }    /**发送到Email     * @param $email     * @param $resume_id     * @return ResumeController     * @throws \Throwable     */    public function sendEmailDone($email, $resume_id)    {        $res = $this->resumeService->resumeDoc($resume_id);        if (!$res) {            return $this->sendErrorResponse('参数错误!', 404);        }        $resume = view('jkq.tpl.word_resume', ['content'=>$res])->render();        $this->emailService->sendMail($email, EmailService::TEMPLATE_SEND_RESUME, ['personalfullname'=>$res['resume']['fullname']], ['resume'=>$resume]);    }    /**     * @param Request $request     * @param 企业的邀请面试记录     * @return 集合     */    public function interviewJobs(Request $request)    {        $user = auth('web-company')->user();        $res = $this->resumeService->interviewJobs($request->all(), $user);        return view('jkq.company.resume.jobs_interview', $res);    }    /**     * 面试邀请详情     * @param Request $request     * @return \Illuminate\Http\JsonResponse     * @throws \Throwable     */    public function interviewDetail(Request $request)    {        return $this->resumeService->interviewDetail($request);    }    /**     * 删除下载面试邀请     * @param Request $request     * @return \Illuminate\Http\JsonResponse     * @throws \Throwable     */    public function interviewDel(Request $request)    {        if ($request->method()=='GET') {            $tip='被删除后将无法恢复,您确定要删除选中的面试邀请记录吗?';            return response()->json(['status'=>1,'msg'=>'获取数据成功', 'data'=>['html'=>view('jkq.company.ajax.ajax_warning', ['tip'=>$tip])->render()]]);        } else {            $user = auth('web-company')->user();            $res =  $this->resumeService->interviewDel($request->all(),$user);            return response()->json(['status'=>$res['status'], 'msg'=>$res['msg']]);        }    }    /**     * 已下载简历     * @param Request $request     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View     */    public function resumeDown(Request $request)    {        $user = auth('web-company')->user();        $result = $this->resumeService->resumeDown($request->all(), $user);        return view('jkq.company.resume.resume_down', $result);    }    public function resumeDownDel(Request $request)    {        if ($request->method() =='POST') {            return $this->resumeService->resumeDownDel($request);        }        $tip='被删除后将无法恢复,您确定要删除选中的下载的简历吗?';        return response()->json(['status'=>1,'msg'=>'获取数据成功', 'data'=>view('jkq.company.ajax.ajax_warning', ['tip'=>$tip])->render()]);    }    /**     * 标注下载简历     * @param $id     * @param $state     * @return \Illuminate\Http\JsonResponse     */    public function labelResume($id, $state)    {        return $this->companyDownResumeService->labelApply($id, $state);    }    /**企业收藏的简历     * @param Request $request     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View     */    public function favoritesResume(Request $request)    {        $user = auth('web-company')->user();        $res = $this->resumeService->favoritesResume($request, $user, 0);        return view('jkq.company.resume.favorites_resume', $res);    }    /**收藏简历     * @param Request $request     * @return \Illuminate\Http\JsonResponse     * @throws \Prettus\Validator\Exceptions\ValidatorException     * @throws \Throwable     */    public function favoritesResumeSave(Request $request)    {        if ($request->method() == 'GET') {            $tip = "您确定要收藏选中的简历吗?";            return response()->json(['status'=>1, 'data'=>view('jkq.company.ajax.ajax_warning', ['tip'=>$tip])->render()]);        }        return $this->resumeService->favoritesResumeSave($request);    }    /**删除收藏的简历     * @param Request $request     * @return \Illuminate\Http\JsonResponse     * @throws \Throwable     */    public function favoritesResumeDel(Request $request)    {        if ($request->method() == 'GET') {            $tip = "被删除后将无法恢复,您确定要删除选中的简历吗?";            return response()->json(['status'=>1, 'data'=>view('jkq.company.ajax.ajax_warning', ['tip'=>$tip])->render()]);        }        $user = auth('web-company')->user();        return $this->resumeService->favoritesResumeDel($request->y_id,$user);    }    /**     * 浏览过的简历     * @param Request $request     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View     */    public function browseResume(Request $request)    {        $res = $this->resumeService->browseResume($request);        return view('jkq.company.resume.browse_resume', $res);    }    /**删除浏览过的简历     * @param Request $request     * @return \Illuminate\Http\JsonResponse     * @throws \Throwable     */    public function browseResumeDel(Request $request)    {        if ($request->method() == 'GET') {            $tip = "被删除后将无法恢复,您确定要删除选中的简历吗?";            return response()->json(['status'=>1, 'data'=>view('jkq.company.ajax.ajax_warning', ['tip'=>$tip])->render()]);        }        $user = auth('web-company')->user();        return $this->resumeService->browseResumeDel($request,$user);    }    /**谁看过我     * @param Request $request     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View     */    public function browseJobs(Request $request)    {        $res = $this->resumeService->browseJobs($request);        return view('jkq.company.resume.browse_jobs', $res);    }    /**删除谁看过我     * @param Request $request     * @return \Illuminate\Http\JsonResponse     * @throws \Throwable     */    public function browseJobsDel(Request $request)    {        if ($request->method() == 'GET') {            $tip = "被删除后将无法恢复,您确定要删除选中的简历吗?";            return response()->json(['status'=>1, 'data'=>view('jkq.company.ajax.ajax_warning', ['tip'=>$tip])->render()]);        }        $user = auth('web-company')->user();        return $this->resumeService->browseJobsDel($request,$user);    }    /**面试邀请     * @param Request $request     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View     */    public function feedback(Request $request)    {        $res = $this->resumeService->feedback($request);        return view('jkq.company.resume.feedback', $res);    }    /**面试邀请反馈操作     * @param Request $request     * @return ResumeController|\Illuminate\Http\JsonResponse     * @throws \Throwable     */    public function feedbackModify(Request $request)    {        $id = $request->id?$request->id:0;        if (!$id) {            return response()->json(['status'=>0,'msg'=>'参数错误!']);        }        if ($request->method() == "POST") {            $explan = $request->notes?$request->notes:'';            $status = $request->status?$request->status:0;            if (!$status) {                return $this->sendErrorResponse('请选择反馈结果!');            }            $user = auth('web-company')->user();            return $this->resumeService->feedbackModify($id, $explan, $status,$user->id);        }        return response()->json(['status'=>1,'html'=>view('jkq.company.ajax.ajax_feedback', ['id'=>$id])->render()]);    }    /**回收站     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View     */    public function recycle()    {        $res = $this->resumeService->recycle();        return view('jkq.company.resume.resume_recycle', $res);    }    /**回收站删除     * @param Request $request     * @return \Illuminate\Http\JsonResponse     * @throws \Throwable     */    public function destroyJobsApply(Request $request)    {        $ids = $request->id;        if ($request->method()=='POST') {            return $this->resumeService->destroyJobsApply($ids);        }        $tip = "此处删除为物理删除,您确定要删除选中的简历吗?";        return response()->json(['status'=>1,'data'=>view('jkq.company.ajax.ajax_warning', ['tip'=>$tip])->render()]);    }    /**清空回收站     * @param Request $request     * @return \Illuminate\Http\JsonResponse     * @throws \Throwable     */    public function clearRecycle(Request $request)    {        if ($request->method()=='POST') {            return $this->resumeService->clearRecycle();        }        $tip = "清空回收站将物理删除所有简历,您确定要清空回收站吗?";        return response()->json(['status'=>1,'data'=>view('jkq.company.ajax.ajax_warning', ['tip'=>$tip])->render()]);    }    public function concern(Request $request)    {        $res = $this->resumeService->concern($request);        return view('jkq.company.resume.concern', $res);    }    public function concernDel(Request $request)    {        if ($request->method()=='POST') {            $user = auth('web-company')->user();            return $this->resumeService->concernDel($request,$user);        }        $tip = "被删除后将无法恢复,您确定要删除选中的记录吗?";        return response()->json(['status'=>1,'data'=>view('jkq.company.ajax.ajax_warning', ['tip'=>$tip])->render()]);    }}
 |