<?php
/**
* Created by PhpStorm.
* User: xiaaomi
* Date: 2019/3/12
* Time: 14:07
*/
namespace App\Http\Controllers\Mobile\Person;
use App\Exceptions\ResponseException;
use App\Http\Controllers\Mobile\MobileBaseController;
use App\Models\CategoryDistrict;
use App\Models\PersonalTalents;
use App\Models\RecruitAppointBasic;
use App\Models\RecruitAppointInfo;
use App\Models\Resume;
use App\Services\Common\CategoryService;
use App\Services\Person\MemberInfoService;
use App\Services\Person\MemberPointService;
use App\Services\Person\ResumeCredentService;
use App\Services\Person\ResumeEducationService;
use App\Services\Person\ResumeImageService;
use App\Services\Person\ResumeLanguageService;
use App\Services\Person\ResumeService;
use App\Services\Person\ResumeTrainService;
use App\Services\Person\ResumeWorkService;
use App\Services\Person\SubsiteResumeService;
use App\Services\SubsiteService;
use App\Validators\PersonValidatorRequest;
use App\Validators\RecruitValidatorRequest;
use Illuminate\Http\Request;
class ResumeController extends MobileBaseController
{
protected $resumeService;
protected $memberPointService;
protected $categoryService;
protected $subsiteService;
protected $resumeWorkService;
protected $educationService;
protected $subsiteResumeService;
protected $resumeEducationService;
protected $resumeTrainService;
protected $resumeCredentService;
protected $resumeLanguageService;
protected $memberInfoService;
protected $resumeImageService;
public function __construct(
ResumeService $resumeService,
MemberPointService $memberPointService,
CategoryService $categoryService,
SubsiteService $subsiteService,
ResumeWorkService $resumeWorkService,
ResumeEducationService $educationService,
SubsiteResumeService $subsiteResumeService,
ResumeEducationService $resumeEducationService,
ResumeTrainService $resumeTrainService,
ResumeCredentService $resumeCredentService,
ResumeLanguageService $resumeLanguageService,
MemberInfoService $memberInfoService,
ResumeImageService $resumeImageService
)
{
$this->resumeService = $resumeService;
$this->memberPointService = $memberPointService;
$this->categoryService = $categoryService;
$this->subsiteService = $subsiteService;
$this->resumeWorkService = $resumeWorkService;
$this->educationService = $educationService;
$this->subsiteResumeService = $subsiteResumeService;
$this->resumeEducationService = $resumeEducationService;
$this->resumeTrainService = $resumeTrainService;
$this->resumeCredentService = $resumeCredentService;
$this->resumeLanguageService = $resumeLanguageService;
$this->memberInfoService = $memberInfoService;
$this->resumeImageService = $resumeImageService;
}
public function index()
{
if (get_subsite_id() > 0) {
return view('mobile.app.jkq.person_index');
} else {
$personaltalents = PersonalTalents::where('uid', auth('web-member')->user()->id)->first();
return view('mobile.app.person.index', ['talents' => $personaltalents]);
}
}
public function signIn()
{
if (request()->method() == 'POST') {
$res = $this->resumeService->signIn(auth('web-member')->user());
if ($res['code'] == 1) {
return $this->sendSuccessResponse($res['info']);
} else {
return $this->sendErrorResponse($res['info']);
}
} else {
return view('mobile.app.person.service.index', ['wap_title' => '我的积分']);
}
}
public function task()
{
return view('mobile.app.person.service.gold_task', $this->memberPointService->getTask(auth('web-member')->user(), 1));
}
public function taskDetail(Request $request)
{
$res = $this->memberPointService->getPointsById(auth('web-member')->user());
$result = $res['memhanselGet'];
if ($request->has('operate') && !empty($request->operate)) {
$result = $res['memhanselPo'];
}
if ($request->ajax()) {
if ($result->lastPage() < $result->currentPage()) {
return response()->json(['status' => 0]);
}
return response()->json([
'status' => 1,
'data' => view('mobile.app.person.ajax_tpl.ajax_gold_log',
['result' => $result])->render(), 'wap_title' => '积分收支明细']);
}
return view('mobile.app.person.service.gold_log')->with([
'result' => $result,
'pointGet' => $res['pointGet'],
'pointPo' => $res['pointPo'],
'wap_title' => '积分收支明细',
]);
}
public function incrementAdd()
{
$res = $this->memberPointService->increment_add(request()->type, auth('web-member')->user());
return view('mobile.app.person.service.' . $res['tpl'], ['resume' => $res['resume'],
'info' => $res['info'], 'points' => $res['points'], 'payment' => $res['payment'], 'wap_title' => $res['wap_title']]);
}
public function resumeAdd()
{
$res = $this->resumeService->loginValidate(auth('web-member')->user());
$district = $this->categoryService->getDefaultDistrict();
$subsite = $this->subsiteService->getSubsite(auth('web-member')->user());
$deSubsite = [];
foreach ($subsite as $key => $val) {
$deSubsite[] = $val['id'] . ',' . $val['sitename'];
}
return view('mobile.app.person.resume_add', [
'member' => $res['member'],
'resume' => $res['resume'],
'defaultCity' => $district->defaultCity,
'disCity' => $district->disCity,
'disHan' => $district->disHan,
'resumeTitle' => $res['resumeTitle'],
'subsite' => $deSubsite,
'wap_title' => '创建简历',
]
);
}
public function resumeCreate(PersonValidatorRequest $request)
{
$res = $this->resumeService->resumeCreate($request->except(['add_tag', '_token']), auth('web-member')->user());
if ($res['code'] == 1) {
return $this->sendSuccessResponse(['id' => $res['info'], 'tag' => $request->add_tag]);
} else {
return $this->sendErrorResponse('更新简历失败', '', 400);
}
}
public function resumeCheck()
{
return view('mobile.app.person.resume_guidance', ['wap_title' => '完善简历']);
}
public function resume_add_success()
{
return view('mobile.app.person.resume_add_success', ['wap_title' => '创建简历']);
}
public function resumeWorkAdd()
{
$res = $this->resumeWorkService->resumeWorkAdd(request()->all(), auth('web-member')->user());
if ($res['code'] == 1) {
$html = view('mobile.app.person.ajax_tpl.ajax_get_work_list', ['content' => $res['info']])->render();
return $this->sendSuccessResponse($html);
} else {
return $this->sendErrorResponse('更新失败', '', 400);
}
}
public function resumeEducationAdd()
{
$res = $this->educationService->resumeEducationAdd(request()->all(), auth('web-member')->user());
if ($res['code'] == 1) {
$html = view('mobile.app.person.ajax_tpl.ajax_get_education_list', ['content' => $res['info']])->render();
return $this->sendSuccessResponse($html);
} else {
return $this->sendErrorResponse('更新失败', '', 400);
}
}
public function resumeTrainAdd()
{
$res = $this->resumeTrainService->resumeTrainAdd(request()->all(), auth('web-member')->user());
if ($res['code'] == 1) {
$html = view('mobile.app.person.ajax_tpl.ajax_get_training_list', ['content' => $res['info']])->render();
return $this->sendSuccessResponse($html);
} else {
return $this->sendErrorResponse('更新失败', '', 400);
}
}
public function resumeCredentAdd()
{
$res = $this->resumeCredentService->resumeCredentAdd(request()->all(), auth('web-member')->user());
if ($res['code'] == 1) {
$html = view('mobile.app.person.ajax_tpl.ajax_get_credent_list', ['content' => $res['info']])->render();
return $this->sendSuccessResponse($html);
} else {
return $this->sendErrorResponse('更新失败', '', 400);
}
}
public function saveLanguage()
{
$res = $this->resumeLanguageService->mobileSaveLanguage(request()->all(), auth('web-member')->user());
if ($res['code'] == 1) {
$html = view('mobile.app.person.ajax_tpl.ajax_get_language_list', ['content' => $res['info']])->render();
return $this->sendSuccessResponse($html);
} else {
return $this->sendErrorResponse('添加失败', '', 400);
}
}
public function updateSpecialty()
{
$res = $this->resumeService->updateSpecialty(request()->except('_token'), auth('web-member')->user());
if ($res['code'] == 1) {
return $this->sendSuccessResponse('更新成功');
} else {
return $this->sendErrorResponse('更新失败', '', 400);
}
}
public function refreshResume()
{
$res = $this->resumeService->refreshResume(request()->id, auth('web-member')->user());
if ($res['code'] == 1) {
return $this->sendSuccessResponse($res['info']);
} else {
return $this->sendErrorResponse($res['info']);
}
}
public function resume()
{
$content = $this->resumeService->myResume(auth('web-member')->user());
return view('mobile.app.person.resume_list', ['content' => $content, 'wap_title' => '简历管理']);
}
public function set_entrust()
{
$res = $this->resumeService->setEntrust(request()->id, auth('web-member')->user());
if ($res['code'] == 1) {
return $this->sendSuccessResponse($res['info']);
} else {
return $this->sendErrorResponse($res['info'], '', 400);
}
}
public function set_entrust_del()
{
$res = $this->resumeService->setEntrustDel(request()->id, auth('web-member')->user());
if ($res['code'] == 1) {
return $this->sendSuccessResponse($res['info']);
} else {
return $this->sendErrorResponse($res['info'], '', 400);
}
}
public function setDelResume()
{
$res = $this->resumeService->setDelResume(request()->id, auth('web-member')->user());
if ($res) {
return $this->sendSuccessResponse('删除成功');
} else {
return $this->sendErrorResponse('删除失败', '', 400);
}
}
public function setDef()
{
$res = $this->resumeService->setDef(request()->id, auth('web-member')->user());
if ($res['code'] == 1) {
return $this->sendSuccessResponse($res['info']);
} else {
return $this->sendErrorResponse($res['info'], '', 400);
}
}
public function resumeUpdate()
{
$de_resume = Resume::find(request()->id);
$back_url = \Illuminate\Support\Facades\URL::previous();
if (!$de_resume) {
return $this->showMessage('对不起,您只能查看自己的简历!', $back_url, true, '上一页', '3');
}
if ($de_resume->uid != auth('web-member')->user()->id) {
return $this->showMessage('对不起,您只能查看自己的简历!', $back_url, true, '上一页', '3');
}
$res = $this->resumeService->getResumeById(request()->id, auth('web-member')->user());
$district = $this->categoryService->getDefaultDistrict();
$subsiteResume = $this->subsiteResumeService->getSubsiteResumeById(auth('web-member')->user(), request()->id);
$subsiteAll = $this->subsiteService->getSubsite(auth('web-member')->user());
return view('mobile.app.person.resume_edit', [
'resume' => $res['resume'],
'member' => $res['member'],
'imgs' => $res['imgs'],
'defaultCity' => $district->defaultCity,
'subsiteResume' => $subsiteResume['sub'],
'subsiteAll' => $subsiteAll,
'subId' => $subsiteResume['subId'],
'wap_title' => '编辑简历',
]);
}
public function updateTitle()
{
$res = $this->resumeService->updateTitle(request()->title, request()->id, auth('web-member')->user());
if ($res) {
return $this->sendSuccessResponse('更新成功');
} else {
return $this->sendErrorResponse('更新失败', '', 400);
}
}
public function resumeEducation()
{
$res = $this->resumeEducationService->getResumeEducationByResumeId(request()->resume_id, auth('web-member')->user());
return view('mobile.app.person.ajax_tpl.default_education', ['content' => $res]);
}
public function resumeWork()
{
$res = $this->resumeWorkService->getResumeWorkByResumeId(request()->resume_id, auth('web-member')->user());
return view('mobile.app.person.ajax_tpl.default_work', ['content' => $res]);
}
public function resumeTrain()
{
$res = $this->resumeTrainService->getResumeTrainByResumeId(request()->resume_id, auth('web-member')->user());
return view('mobile.app.person.ajax_tpl.default_train', ['content' => $res]);
}
public function resumeCredent()
{
$res = $this->resumeCredentService->getResumeCredentByResumeId(request()->resume_id, auth('web-member')->user());
return view('mobile.app.person.ajax_tpl.default_credent', ['content' => $res]);
}
public function getLanguageL()
{
$res = $this->resumeLanguageService->getLanguageL(request()->resume_id, auth('web-member')->user());
return view('mobile.app.person.ajax_tpl.default_language', ['content' => $res]);
}
public function memberInfo()
{
$resume_id = [];
$resume = $this->resumeService->myResumeAjax(auth('web-member')->user());
if (!$resume->isEmpty()) {
$resume_id = array_column($resume->toArray(), 'id');
}
$res = $this->resumeService->getUserInfo(auth('web-member')->user(), $resume_id);
$district = $this->categoryService->getDefaultDistrict();
return view('mobile.app.person.resume_edit_basis')->with([
'content' => $res->member,
'defaultCity' => $district->defaultCity,
'memberInfo' => $res,
'resume_id' => request()->resume_id,
'wap_title' => '个人资料',
]);
}
public function uploadHead()
{
$res = $this->memberInfoService->updateHead(request()->pic1, auth('web-member')->user());
return response()->json($res);
}
public function updateInfo(PersonValidatorRequest $request)
{
$res = $this->memberInfoService->updateInfo(request()->all(), auth('web-member')->user());
if ($res['code']) {
return $this->sendSuccessResponse($res['info']);
} else {
return $this->sendErrorResponse('更新失败', '', 400);
}
}
public function updateHunt()
{
$res = Resume::findOrFail(request()->resume_id);
$district = $this->categoryService->getDefaultDistrict();
$subsiteResume = $this->subsiteResumeService->getSubsiteResumeById(
auth('web-member')->user(), request()->resume_id);
$SubsitTitle = '';
foreach ($subsiteResume['sub'] as $key => $val) {
if ($val['subsites']) {
$SubsitTitle .= $val['subsites']['sitename'] . ',';
} else {
$SubsitTitle .= '总站' . ',';
}
}
$subsiteAll = $this->subsiteService->getSubsite(auth('web-member')->user());
$deSubsite = [];
foreach ($subsiteAll as $key => $val) {
$deSubsite[] = $val['id'] . ',' . $val['sitename'];
}
return view('mobile.app.person.resume_edit_intent', [
'resume' => $res,
'defaultCity' => $district->defaultCity,
'subsite' => $deSubsite,
'SubsitTitle' => trim($SubsitTitle, ','),
'subsiteId' => implode(',', $subsiteResume['subId']),
'wap_title' => '求职意向',
]);
}
public function updHunt()
{
$res = $this->resumeService->updateHunting(request()->except('_token'), auth('web-member')->user());
if ($res) {
return $this->sendSuccessResponse('更新成功');
} else {
return $this->sendErrorResponse('更新失败', '', 400);
}
}
public function updateDescription()
{
$res = Resume::findOrFail(request()->resume_id);
return view('mobile.app.person.resume_edit_description', [
'resume' => $res,
'wap_title' => '自我描述',
]);
}
public function educationEdit(Request $request)
{
$resumeEdu = $this->resumeEducationService->educationEdit($request->id);
return view('mobile.app.person.resume_edit_edu', [
'resume_id' => request()->resume_id,
'resumeEdu' => $resumeEdu,
'wap_title' => '教育经历',
]);
}
public function workEdit(Request $request)
{
$workEdu = $this->resumeWorkService->workEdit($request->id);
return view('mobile.app.person.resume_edit_work', [
'resume_id' => request()->resume_id,
'workEdu' => $workEdu,
'wap_title' => '工作经历',
]);
}
public function trainEdit(Request $request)
{
$trainEdu = $this->resumeTrainService->trainEdit($request->id);
return view('mobile.app.person.resume_edit_train', [
'resume_id' => request()->resume_id,
'trainEdu' => $trainEdu,
'wap_title' => '培训经历',
]);
}
public function certificate(Request $request)
{
$certificateEdu = $this->resumeCredentService->certificate($request->id);
return view('mobile.app.person.resume_edit_certificate', [
'resume_id' => request()->resume_id,
'certificateEdu' => $certificateEdu,
'wap_title' => '获得证书',
]);
}
public function language(Request $request)
{
$languageEdu = $this->resumeLanguageService->language($request->id);
return view('mobile.app.person.resume_edit_lang', [
'resume_id' => request()->resume_id,
'languageEdu' => $languageEdu,
'wap_title' => '语言能力',
]);
}
public function speciality()
{
$resume = Resume::findOrFail(request()->resume_id);
return view('mobile.app.person.resume_edit_speciality', [
'resume' => $resume,
'wap_title' => '特长标签',
]);
}
public function tagSave()
{
$resume_id = request()->resume_id;
$this->resumeService->isOwn($resume_id, auth('web-member')->user());
$res = $this->resumeService->tagSave(request()->all());
if ($res['code'] == 1) {
return $this->sendSuccessResponse('更新成功');
} else {
return $this->sendErrorResponse('更新失败', '', 400);
}
}
public function tagDelete(Request $request)
{
$res = $this->resumeService->tagDelete($request->input('resume_id', ''), $request->input('tag_cn', ''), auth('web-member')->user());
if ($res['code'] == 1) {
return $this->sendSuccessResponse('删除成功');
} else {
return $this->sendErrorResponse('删除失败', '', 400);
}
}
public function images(Request $request)
{
$imagesEdu = $this->resumeImageService->images($request->id);
return view('mobile.app.person.resume_edit_img', [
'resume_id' => $request->resume_id,
'imagesEdu' => $imagesEdu,
'wap_title' => '照片作品',
]);
}
public function resumeImages(Request $request)
{
$res = $this->resumeImageService->resumeImages
(
$request->input('images', ''),
$request->input('title', ''),
$request->input('id', ''),
$request->input('resume_id', ''),
auth('web-member')->user()
);
return response()->json($res);
}
public function recruit(Request $request)
{
$user = auth('web-member')->user();
$list = RecruitAppointInfo::where('uid', $user->id)
->join('recruit', 'recruit.id', '=', 'recruit_appoint_info.recruit_id', 'left')
->join('recruit_post', 'recruit_post.id', '=', 'recruit_appoint_info.post_id', 'left')
->select('recruit.name as recruit_name', 'recruit_appoint_info.*', 'recruit_post.code', 'recruit_post.name')
->get();
return view('mobile.app.person.recruit')->with(['list' => $list, 'total' => count($list)]);
}
public function recruit_info(Request $request)
{
$info = $this->_getRecruitInfo();
$recruit_id = $request->input('recruit_id', 0);
return view('mobile.app.person.recruit_info', [
'info' => $info,
'recruit_id' => $recruit_id,
'political_affiliation' => RecruitAppointBasic::$political_affiliation,
]);
}
public function recruit_family(Request $request)
{
$key = $request->input('key', '');
$recruit_id = $request->input('recruit_id', 0);
if ($key !== '') {
$user = auth('web-member')->user();
$basic = RecruitAppointBasic::where('uid', $user->id)->first();
$family = json_decode($basic->family, true);
$info = $family[$key];
} else {
$info = [
'work' => '',
'birthday' => '',
'realname' => '',
'relation' => '',
'political_affiliation' => '13',
];
}
return view('mobile.app.person.recruit_family', [
'info' => $info,
'key' => $key,
'recruit_id' => $recruit_id,
'political_affiliation' => RecruitAppointBasic::$political_affiliation,
]);
}
public function delRecruitFamily(Request $request)
{
$key = $request->input('key');
$user = auth('web-member')->user();
$info = RecruitAppointBasic::where('uid', $user->id)->first();
$family = json_decode($info->family, true);
unset($family[$key]);
RecruitAppointBasic::where('uid', $user->id)->update(['family' => json_encode($family)]);
return response()->json(['status' => 1]);
}
public function postRecruitFamily(Request $request)
{
$data = $request->post();
$user = auth('web-member')->user();
$info = RecruitAppointBasic::where('uid', $user->id)->first();
$family = json_decode($info->family, true);
if (isset($data['key'])) {
$key = $data['key'];
unset($data['key']);
$family[$key] = $data;
} else {
$family[] = $data;
}
RecruitAppointBasic::where('uid', $user->id)->update(['family' => json_encode($family)]);
return response()->json(['status' => 1]);
}
public function recruit_basic(Request $request)
{
$info = $this->_getRecruitInfo();
$recruit_id = $request->input('recruit_id', 0);
return view('mobile.app.person.recruit_basic', [
'info' => $info,
'recruit_id' => $recruit_id,
'political_affiliation' => RecruitAppointBasic::$political_affiliation,
'edu_type' => RecruitAppointBasic::$edu_type,
'education' => RecruitAppointBasic::$education,
]);
}
public function saveRecruitBasic(RecruitValidatorRequest $request)
{
$user = auth('web-member')->user();
$basic = RecruitAppointBasic::where('uid', $user->id)->first();
$data = $request->only('realname', 'sex', 'birthday', 'avatar', 'nation', 'native_place', 'political_affiliation', 'titles', 'work', 'house_register', 'join_time', 'edu_type', 'education', 'school', 'degree', 'pro', 'address', 'card', 'mobile', 'email', 'concat_name', 'concat_mobile', 'resume', 'is_push');
$data['avatar'] = $data['avatar'] ?: '';
if ($basic) {
//更新基础信息
$res = RecruitAppointBasic::where('uid', $user->id)->update($data);
if (!$res) {
return response()->json(['status' => 0, 'msg' => '保存失败,请联系客服']);
} else {
return response()->json(['status' => 1]);
}
} else {
//新增基础信息
$data['uid'] = $user->id;
$res = RecruitAppointBasic::create($data);
if (!$res) {
return response()->json(['status' => 0, 'msg' => '保存失败,请联系客服']);
} else {
return response()->json(['status' => 1]);
}
}
}
private function _getRecruitInfo()
{
$user = auth('web-member')->user();
$info = RecruitAppointBasic::where('uid', $user->id)->first();
if (!$info) {
$info = [
'uid' => $user->id,
'realname' => '',
'sex' => 0,
'birthday' => '',
'avatar' => '',
'nation' => '',
'native_place' => '',
'political_affiliation' => '13',
'titles' => '',
'work' => '',
'house_register' => '',
'join_time' => '',
'edu_type' => 1,
'education' => '本科',
'school' => '',
'degree' => '',
'pro' => '',
'address' => '',
'card' => '',
'mobile' => '',
'email' => '',
'concat_name' => '',
'concat_mobile' => '',
'resume' => '',
'family' => [],
'is_push' => 1,
];
RecruitAppointBasic::create($info);
} else {
$info->sex = (string)$info->sex;
$info->edu_type = (string)$info->edu_type;
$info->is_push = (string)$info->is_push;
$info->family = empty($info->family) ? [] : json_decode($info->family,true);
}
return $info;
}
}