|
@@ -14,6 +14,16 @@ use App\Model\ArticleSurvey;
|
|
|
use App\Model\District;
|
|
|
use App\Tools\buildMenuTree;
|
|
|
use App\Model\Book;
|
|
|
+use App\Model\JobHunting;
|
|
|
+use App\Model\JobRecruiting;
|
|
|
+use App\Model\JobPosition;
|
|
|
+use App\Model\JobIndustry;
|
|
|
+use App\Model\JobEnum;
|
|
|
+use App\Model\JobCompany;
|
|
|
+use App\Model\JobNature;
|
|
|
+use App\Model\User;
|
|
|
+use App\Model\JobApply;
|
|
|
+use App\Model\JobRemuse;
|
|
|
#[RpcService(name: "NewsService", protocol: "jsonrpc-http", server: "jsonrpc-http")]
|
|
|
class NewsService implements NewsServiceInterface
|
|
|
{
|
|
@@ -1664,6 +1674,121 @@ class NewsService implements NewsServiceInterface
|
|
|
return $article;
|
|
|
});
|
|
|
}
|
|
|
+ // 封装处理由问题
|
|
|
+ function processJob($job, $data) {
|
|
|
+ return $job->map(function ($job) use ($data) {
|
|
|
+
|
|
|
+ $category = $job->cat_arr_id?? '';
|
|
|
+ $cityid = $job->city_arr_id?? '';
|
|
|
+ $city = json_decode($cityid, true);
|
|
|
+ $pinyin = '';
|
|
|
+ $level = json_decode($category, true);
|
|
|
+ // 路由
|
|
|
+ if(!empty($level)){
|
|
|
+ $pinyin = WebsiteCategory::whereIn('category_id', $level)
|
|
|
+ ->where('website_id', $data['website_id']) // 添加网站ID条件 her
|
|
|
+ ->orderByRaw('FIELD(category_id, '. implode(',', $level). ')')
|
|
|
+ ->get(['aLIas_pinyin'])
|
|
|
+ ->pluck('aLIas_pinyin')
|
|
|
+ ->implode('/');
|
|
|
+ if(empty($pinyin)){
|
|
|
+ $pinyin = $category->aLIas_pinyin?? '';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 取城市-市??省
|
|
|
+ if(!empty($city) && is_array($city)){
|
|
|
+ if(isset($city[1] ) && !empty($city[1])){
|
|
|
+ $city = District::where('id', $city[1])->first(['name']);
|
|
|
+ $job->city_name = $city->name?? '';
|
|
|
+ }else if(isset($city[0] ) && !empty($city[0])){
|
|
|
+ $city = District::where('id', $city[0])->first(['name']);
|
|
|
+ $job->city_name = $city->name?? '';
|
|
|
+ }else{
|
|
|
+ $job->city_name = '全国';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 取公司地址
|
|
|
+ if(isset($job->address_arr_id) && !empty($job->address_arr_id)){
|
|
|
+ $address_id = json_decode($job->address_arr_id, true) ?? [];
|
|
|
+ if(is_array($address_id) && !empty($address_id)){
|
|
|
+ $address = District::whereIn('id', $address_id)
|
|
|
+ ->orderBy('level', 'asc')
|
|
|
+ ->get(['name'])
|
|
|
+ ->pluck('name')
|
|
|
+ ->implode('');
|
|
|
+ // $job->address_name = $address ?? '';
|
|
|
+ $job->address_name = ($address ?? '') . ($job->address ?? '');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 取行业
|
|
|
+ if(!empty($job->hy_id) || !empty($job->industry) || !empty($job->company_hy_id)){
|
|
|
+ $hy_name = JobIndustry::when($job, function ($query) use ($job) {
|
|
|
+ if(!empty($job->industry)){
|
|
|
+ $query->where('hyid', $job->industry);
|
|
|
+ }else if(!empty($job->hy_id)){
|
|
|
+ $query->where('hyid', $job->hy_id);
|
|
|
+ }else{
|
|
|
+ $query->where('hyid', $job->company_hy_id);
|
|
|
+ }
|
|
|
+ })->first(['hyname']);
|
|
|
+ $job->hy_name = $hy_name->hyname?? '';
|
|
|
+ }
|
|
|
+ // 取职位
|
|
|
+ if((isset($job->zw_id) && !empty($job->zw_id)) || (isset($job->job) && !empty($job->job))){
|
|
|
+ $zwid = $job->job?? $job->zw_id;
|
|
|
+ $zw_name = JobPosition::where('zwid', $zwid)->first(['zwname']);
|
|
|
+ $job->zw_name = $zw_name->zwname?? '';
|
|
|
+ }
|
|
|
+ // 取具体职位
|
|
|
+ if((isset($job->jtzw_id) &&!empty($job->jtzw_id)) || (isset($job->job_name_get) && !empty($job->job_name_get))){
|
|
|
+ $jtzwid = $job->job_name_get ?? $job->jtzw_id;
|
|
|
+ $jtzw_name = JobPosition::where('zwid', $jtzwid)->first(['zwname']);
|
|
|
+ $job->jtzw_name = $jtzw_name->zwname?? '';
|
|
|
+ }
|
|
|
+ // 取工作经验
|
|
|
+ if(isset($job->experience) &&!empty($job->experience)){
|
|
|
+ $experience = JobEnum::where('egroup','years')->where('evalue',$job->experience)->first(['ename']);
|
|
|
+ $job->experience_name = $experience->ename?? '';
|
|
|
+ }
|
|
|
+ // 取学历
|
|
|
+ if(isset($job->educational) &&!empty($job->educational)){
|
|
|
+ $education = JobEnum::where('egroup','education')->where('evalue',$job->educational)->first(['ename']);
|
|
|
+ $job->education_name = $education->ename?? '';
|
|
|
+ }
|
|
|
+ // 语言
|
|
|
+ if(isset($job->language) &&!empty($job->language)){
|
|
|
+ $language = JobEnum::where('egroup','language')->where('evalue',$job->language)->first(['ename']);
|
|
|
+ $job->language_name = $language->ename?? '';
|
|
|
+ }
|
|
|
+ // 薪资
|
|
|
+ if(isset($job->salary) &&!empty($job->salary)){
|
|
|
+ if(isset($job->type) &&!empty($job->type) && $job->type == 1){
|
|
|
+ $where['evalue'] = $job->salary;
|
|
|
+ }else{
|
|
|
+ $where['id'] = $job->salary;
|
|
|
+ }
|
|
|
+ $salary = JobEnum::where('egroup','income')->where($where)->first(['ename']);
|
|
|
+ $job->salary_name = $salary->ename?? '';
|
|
|
+ }
|
|
|
+ // 职位性质
|
|
|
+ if(isset($job->nature_id) &&!empty($job->nature_id)){
|
|
|
+ $job_nature = JobEnum::where('egroup','nature')->where('evalue',$job->nature_id)->first(['ename']);
|
|
|
+ $job->job_nature_name = $job_nature->ename?? '';
|
|
|
+ }
|
|
|
+ // 公司规模
|
|
|
+ if(isset($job->company_size) &&!empty($job->company_size)){
|
|
|
+ $company_size = JobEnum::where('egroup','cosize')->where('evalue',$job->company_size)->first(['ename']);
|
|
|
+ $job->company_size_name = $company_size->ename?? '';
|
|
|
+ }
|
|
|
+ // 公司性质
|
|
|
+ if(isset($job->company_nature) && !empty($job->company_nature)){
|
|
|
+ $company_nature = JobNature::where('id',$job->company_nature)->first(['nature_name']);
|
|
|
+ $job->company_nature_name = $company_nature->nature_name?? '';
|
|
|
+ }
|
|
|
+ $job->pinyin = $pinyin;
|
|
|
+ return $job;
|
|
|
+ });
|
|
|
+ }
|
|
|
/**
|
|
|
* 获取书籍模块
|
|
|
* @param array $data
|
|
@@ -1985,7 +2110,7 @@ class NewsService implements NewsServiceInterface
|
|
|
->whereIn('article.id', $$article[0])
|
|
|
->where(function ($query) use ($data) {
|
|
|
$query->where(function ($subQuery) use ($data) {
|
|
|
- $subQuery->whereRaw("JSON_CONTAINS(ignore_ids, '".intval($website['website_id'])."') = 0");
|
|
|
+ $subQuery->whereRaw("JSON_CONTAINS(ignore_ids, '".intval($data['website_id'])."') = 0");
|
|
|
})->orWhereNull("ignore_ids");
|
|
|
})
|
|
|
->select(
|
|
@@ -2013,34 +2138,329 @@ class NewsService implements NewsServiceInterface
|
|
|
});
|
|
|
}
|
|
|
/**
|
|
|
- * 封装处理栏目的路由问题
|
|
|
+ * c端-获取招工招聘
|
|
|
+ * @param array $data
|
|
|
+ * @return array
|
|
|
* */
|
|
|
- function processCategory($parent_id, $data) {
|
|
|
- if(empty($parent_id) || empty($data)){
|
|
|
- return [];
|
|
|
+ public function getWebsiteJob(array $data): array
|
|
|
+ {
|
|
|
+ $web = Website::where('id', $data['website_id'])->first();
|
|
|
+ if(empty($web)){
|
|
|
+ return Result::error("该网站不存在", 0);
|
|
|
}
|
|
|
- $child = [];
|
|
|
- $child = WebsiteCategory::where('pid', $parent_id)
|
|
|
- ->orderByRaw('FIELD(category_id, '. implode(',', $level). ')')
|
|
|
- ->get(['aLIas_pinyin'])
|
|
|
- ->pluck('aLIas_pinyin')
|
|
|
- ->implode('/');
|
|
|
- // return $parent_id->map(function ($article) use ($data) {
|
|
|
- // $catid = $article->cat_arr_id?? '';
|
|
|
- // $level = json_decode($catid, true);
|
|
|
- // $pinyin = '';
|
|
|
- // $category = WebsiteCategory::where('category_id', $catid)->where('website_id', $data['website_id'])->first();
|
|
|
- // if (!empty($category->pid) && $category->pid!= 0) {
|
|
|
- // $pinyin = WebsiteCategory::whereIn('category_id', $level)
|
|
|
- // ->orderByRaw('FIELD(category_id, '. implode(',', $level). ')')
|
|
|
- // ->get(['aLIas_pinyin'])
|
|
|
- // ->pluck('aLIas_pinyin')
|
|
|
- // ->implode('/');
|
|
|
- // } else {
|
|
|
- // $pinyin = $category->aLIas_pinyin ?? '';
|
|
|
- // }
|
|
|
- // $article->pinyin = $pinyin;
|
|
|
- // return $article;
|
|
|
- // });
|
|
|
+ $job_hunting = JobHunting::where('job_hunting.status', 2)
|
|
|
+ ->where('job_hunting.website_id', $data['website_id'])
|
|
|
+ ->when(isset($data['city_id']) &&!empty($data['city_id']), function ($query) use ($data) {
|
|
|
+ $query->where(function($q) use ($data) {
|
|
|
+ $q->WhereRaw("JSON_CONTAINS(job_hunting.city_arr_id, '". intval($data['city_id']). "') = 1");
|
|
|
+ });
|
|
|
+ })
|
|
|
+ ->select('job_hunting.id','job_hunting.cat_arr_id','job_hunting.name','job_hunting.job',
|
|
|
+ 'job_hunting.job_name','job_hunting.industry','job_hunting.city_arr_id','job_hunting.experience',
|
|
|
+ 'job_hunting.updated_at')
|
|
|
+ ->orderBy('updated_at', 'desc')
|
|
|
+ ->limit($data['job1_num'])
|
|
|
+ ->get();
|
|
|
+ $web['website_id'] = $data['website_id'];
|
|
|
+ if(empty($job_hunting)){
|
|
|
+ $job_huntings = "未查询到相关简历信息";
|
|
|
+ }else{
|
|
|
+ $job_huntings = $this->processJob($job_hunting, $web);
|
|
|
+ }
|
|
|
+ $job_recruiting = JobRecruiting::where('job_recruiting.status', 1)
|
|
|
+ ->where('job_recruiting.website_id', $data['website_id'])
|
|
|
+ ->when(isset($data['city_id']) &&!empty($data['city_id']), function ($query) use ($data) {
|
|
|
+ $query->where(function($q) use ($data) {
|
|
|
+ $q->WhereRaw("JSON_CONTAINS(job_recruiting.city_arr_id, '". intval($data['city_id']). "') = 1");
|
|
|
+ });
|
|
|
+ })
|
|
|
+ ->leftJoin('job_company', 'job_recruiting.id', '=', 'job_company.job_id')
|
|
|
+ ->select('job_recruiting.id','job_recruiting.cat_arr_id','job_recruiting.title',
|
|
|
+ 'job_recruiting.jtzw_id','job_recruiting.hy_id','job_recruiting.city_arr_id',
|
|
|
+ 'job_recruiting.due_data','job_recruiting.updated_at','job_recruiting.experience',
|
|
|
+ 'job_recruiting.educational','job_company.business_name',)
|
|
|
+ ->orderBy('updated_at', 'desc')
|
|
|
+ ->limit($data['job2_num'])
|
|
|
+ ->get();
|
|
|
+ if(empty($job_recruiting->toArray())){
|
|
|
+ $job_recruitings = "未查询到相关职位信息";
|
|
|
+ }else{
|
|
|
+ $job_recruitings = $this->processJob($job_recruiting, $web);
|
|
|
+ }
|
|
|
+ $hy = JobIndustry::get()->all();
|
|
|
+ $zw = JobPosition::where('zwpid',0)->get()->all();
|
|
|
+ $jtzw = JobPosition::where('zwpid','!=',0)->get()->all();
|
|
|
+ $result = [
|
|
|
+ 'job_hunting' => $job_huntings,
|
|
|
+ 'job_recuiting' => $job_recruitings,
|
|
|
+ 'hy' => $hy,
|
|
|
+ 'zw' => $zw,
|
|
|
+ 'jtzw' => $jtzw,
|
|
|
+ ];
|
|
|
+ return Result::success($result);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * c端-获取招工招聘列表
|
|
|
+ * @param array $data
|
|
|
+ * @return array
|
|
|
+ * */
|
|
|
+ public function getWebsiteJobList(array $data): array
|
|
|
+ {
|
|
|
+ $where = [];
|
|
|
+ $web = Website::where('id', $data['website_id'])->first(['id','website_name']);
|
|
|
+ if(empty($web)){
|
|
|
+ return Result::error("此网站不存在", 0);
|
|
|
+ }
|
|
|
+ $website_id['website_id'] = $data['website_id'];
|
|
|
+ if(isset($data['hy_id']) && !empty($data['hy_id'])){
|
|
|
+ array_push($where, ['hy_id',$data['hy_id']]);
|
|
|
+ }
|
|
|
+ if(isset($data['zw_id']) && !empty($data['zw_id'])){
|
|
|
+ array_push($where, ['zw_id',$data['zw_id']]);
|
|
|
+ }
|
|
|
+ if(isset($data['jtzw_id']) &&!empty($data['jtzw_id'])){
|
|
|
+ array_push($where, ['jtzw_id',$data['jtzw_id']]);
|
|
|
+ }
|
|
|
+ $query = JobRecruiting::where('job_recruiting.status', 1)
|
|
|
+ ->where('job_recruiting.website_id', $data['website_id'])
|
|
|
+ ->where($where)
|
|
|
+ ->when(isset($data['city_id']) &&!empty($data['city_id']), function ($query) use ($data) {
|
|
|
+ $query->where(function($q) use ($data) {
|
|
|
+ $q->WhereRaw("JSON_CONTAINS(job_recruiting.city_arr_id, '". intval($data['city_id']). "') = 1");
|
|
|
+ });
|
|
|
+ })
|
|
|
+ ->when(isset($data['catid_id']) &&!empty($data['catid_id']), function ($query) use ($data) {
|
|
|
+ $query->where(function($q) use ($data) {
|
|
|
+ $q->WhereRaw("JSON_CONTAINS(job_recruiting.cat_arr_id, '". intval($data['catid_id']). "') = 1");
|
|
|
+ });
|
|
|
+ })
|
|
|
+ ->leftJoin('job_company', 'job_recruiting.id', '=', 'job_company.job_id')
|
|
|
+ ->select('job_recruiting.id','job_recruiting.hy_id','job_recruiting.title','job_recruiting.zw_id',
|
|
|
+ 'job_recruiting.jtzw_id','job_recruiting.city_arr_id','job_recruiting.due_data',
|
|
|
+ 'job_recruiting.cat_arr_id','job_recruiting.updated_at')
|
|
|
+ ->orderBy('updated_at', 'desc');
|
|
|
+ $recruit_count = $query->count();
|
|
|
+ $query = clone $query;
|
|
|
+ $JobRecruiting = $query
|
|
|
+ ->limit($data['pageSize'])
|
|
|
+ ->offset(($data['page']-1)*$data['pageSize'])
|
|
|
+ ->get();
|
|
|
+ if(empty($JobRecruiting)){
|
|
|
+ $JobRecruiting = "暂无相关职位信息";
|
|
|
+ }else{
|
|
|
+ $JobRecruiting = $this->processJob($JobRecruiting, $website_id);
|
|
|
+ }
|
|
|
+ $query = JobHunting::where('status', 2)
|
|
|
+ ->where('job_hunting.website_id', $data['website_id'])
|
|
|
+ ->where($where)
|
|
|
+ ->when(isset($data['city_id']) &&!empty($data['city_id']), function ($query) use ($data) {
|
|
|
+ $query->where(function($q) use ($data) {
|
|
|
+ $q->WhereRaw("JSON_CONTAINS(job_hunting.city_arr_id, '". intval($data['city_id']). "') = 1");
|
|
|
+ });
|
|
|
+ })
|
|
|
+ ->when(isset($data['catid_id']) &&!empty($data['catid_id']), function ($query) use ($data) {
|
|
|
+ $query->where(function($q) use ($data) {
|
|
|
+ $q->WhereRaw("JSON_CONTAINS(job_hunting.cat_arr_id, '". intval($data['catid_id']). "') = 1");
|
|
|
+ });
|
|
|
+ })
|
|
|
+ ->select('id','sexy','experience','origin','industry','name','job','job_name_get','city_arr_id','cat_arr_id','created_at','updated_at')
|
|
|
+ ->orderBy('updated_at', 'desc');
|
|
|
+ $hunt_count = $query->count();
|
|
|
+ $query = clone $query;
|
|
|
+ $JobHunting = $query
|
|
|
+ ->offset(($data['page']-1)*$data['pageSize'])
|
|
|
+ ->limit($data['pageSize'])
|
|
|
+ ->get();
|
|
|
+ if(empty($JobHunting)){
|
|
|
+ $JobRecruiting = "暂无相关简历信息";
|
|
|
+ }else{
|
|
|
+ $JobHunting = $this->processJob($JobHunting, $website_id);
|
|
|
+ }
|
|
|
+ $result = [
|
|
|
+ 'JobRecruiting' => $JobRecruiting,
|
|
|
+ 'recruit_count' =>$recruit_count,
|
|
|
+ 'JobHunting' => $JobHunting,
|
|
|
+ 'hunt_count' =>$hunt_count,
|
|
|
+ ];
|
|
|
+ return Result::success($result);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * c端-获取招工招聘详情
|
|
|
+ * @param array $data
|
|
|
+ * @return array
|
|
|
+ * */
|
|
|
+ public function getWebsiteJobInfo(array $data): array
|
|
|
+ {
|
|
|
+ $web = Website::where('id', $data['website_id'])->first(['id','website_name']);
|
|
|
+ if(empty($web)){
|
|
|
+ return Result::error("该网站不存在", 0);
|
|
|
+ }
|
|
|
+ $webid = [
|
|
|
+ 'website_id' => $data['website_id'],
|
|
|
+ ];
|
|
|
+ // 职位相关信息
|
|
|
+ if($data['type']==1){
|
|
|
+ $query = JobRecruiting::where('status', 1)
|
|
|
+ ->where('website_id', $data['website_id'])
|
|
|
+ ->select('*');
|
|
|
+ $job = $query->where('job_recruiting.id', $data['id'])->get();
|
|
|
+ $company = JobCompany::where('job_id', $data['id'])->select('id','business_name','company_hy_id','company_size','company_nature','address_arr_id','address')->get();
|
|
|
+ if(!empty($company)){
|
|
|
+ $result['company'] = $this->processJob($company, $webid);
|
|
|
+ }
|
|
|
+ $other_job = $query->where('id','!=',$data['id'])->where('user_id', '=', $job[0]['user_id'])->get();
|
|
|
+ if(!empty($other_job)){
|
|
|
+ $result['other_job'] = $this->processJob($other_job, $webid);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ $job = JobHunting::where('job_hunting.status', 2)
|
|
|
+ ->where('job_hunting.website_id', $data['website_id'])
|
|
|
+ ->where('job_hunting.id', $data['id'])
|
|
|
+ ->leftJoin('user', 'user.id', '=', 'job_hunting.user_id')
|
|
|
+ ->select('job_hunting.*','user_name')
|
|
|
+ ->get();
|
|
|
+ }
|
|
|
+ if(empty($job)){
|
|
|
+ return Result::error("id参数错误", 0);
|
|
|
+ }
|
|
|
+
|
|
|
+ $job[0]['type'] = $data['type'];
|
|
|
+ $result['job'] = $this->processJob($job, $webid);
|
|
|
+ // 返现对应的栏目
|
|
|
+ $catid = json_decode($job[0]['cat_arr_id'],true) ?? '';
|
|
|
+ $category = WebsiteCategory::where('website_id', $data['website_id'])
|
|
|
+ ->whereIn('category_id', $catid)
|
|
|
+ ->select('category_id','alias','aLIas_pinyin','pid')
|
|
|
+ ->orderBy('pid')->get()->all();
|
|
|
+ if(!empty($category)){
|
|
|
+ $result['category'] = $category;
|
|
|
+ }
|
|
|
+ if(empty($result)){
|
|
|
+ return Result::error("id参数错误", 0);
|
|
|
+ }
|
|
|
+ return Result::success($result);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * c端-申请职位
|
|
|
+ * @param array $data
|
|
|
+ * @return array
|
|
|
+ * */
|
|
|
+ public function getWebsiteJobApply(array $data): array
|
|
|
+ {
|
|
|
+ // 首先验证网站是否存在
|
|
|
+ // return Result::success($data);
|
|
|
+ $web = Website::where('id', $data['website_id'])->first(['id','website_name']);
|
|
|
+ if(empty($web)){
|
|
|
+ return Result::error("该网站不存在", 0);
|
|
|
+ }
|
|
|
+ // 验证用户是否存在且为个人会员/管理员
|
|
|
+ $user = User::where('id', $data['user_id'])->first(['id','type_id']);
|
|
|
+ // 1:个人会员 2:政务会员 3:企业会员 4:调研员 10000:管理员 20000:游客(小程序)
|
|
|
+ if(empty($user) || ($user['type_id'] != 1 && $user['type_id'] != 10000)){
|
|
|
+ return Result::error("用户不存在", 0);
|
|
|
+ }
|
|
|
+ // 去除重复元素和空元素,并保持原始顺序
|
|
|
+ $data['recruit_id'] = array_values(array_filter(array_unique($data['recruit_id']), function($value) {
|
|
|
+ return !empty($value);
|
|
|
+ }));
|
|
|
+ // 验证职位是否存在 1:审核通过
|
|
|
+ $recruiting = JobRecruiting::where('status', 1)
|
|
|
+ ->where('website_id', $data['website_id'])
|
|
|
+ ->whereIn('id',$data['recruit_id'])
|
|
|
+ ->get(['id as recruit_id','user_id as receiver_id'])->all();
|
|
|
+ if(empty($recruiting)){
|
|
|
+ return Result::error("该职位不存在", 0);
|
|
|
+ }
|
|
|
+ // 简历是否存在
|
|
|
+ $hunt_id = JobHunting::where('user_id', $data['user_id'])->where('status',2)->first(['id as hunt_id']);
|
|
|
+ if(empty($hunt_id)){
|
|
|
+ return Result::error("该简历不存在", 0);
|
|
|
+ }
|
|
|
+ $data['hunt_id'] = $hunt_id['hunt_id'];
|
|
|
+ // // 验证是否已投递过该职位
|
|
|
+ $apply = JobApply::where('user_id', $data['user_id'])
|
|
|
+ ->where('hunt_id', $data['hunt_id'])
|
|
|
+ ->where('website_id',$data['website_id'])
|
|
|
+ ->whereIn('recruit_id',$data['recruit_id'])
|
|
|
+ ->get(['recruit_id']);
|
|
|
+ if(!empty($apply->toArray())){
|
|
|
+ return Result::error("您已投递过该职位!");
|
|
|
+ }
|
|
|
+ $insertData = array_map(function($recruiting) use ($data) {
|
|
|
+ return [
|
|
|
+ 'user_id' => $data['user_id'],
|
|
|
+ 'hunt_id' => $data['hunt_id'],
|
|
|
+ 'website_id' => $data['website_id'],
|
|
|
+ 'recruit_id' => $recruiting['recruit_id'],
|
|
|
+ 'receiver_id' => $recruiting['receiver_id'],
|
|
|
+ 'status' => 1,
|
|
|
+ ];
|
|
|
+ }, $recruiting);
|
|
|
+
|
|
|
+ // 批量插入数据
|
|
|
+ $result = JobApply::insert($insertData);
|
|
|
+ if(empty($result)){
|
|
|
+ return Result::error("投递失败", 0);
|
|
|
+ }
|
|
|
+ return Result::success($result);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 招工招聘-沟通简历
|
|
|
+ * @param array $data
|
|
|
+ * @return array
|
|
|
+ * */
|
|
|
+ public function getWebsiteJobResume(array $data): array
|
|
|
+ {
|
|
|
+ // 首先验证网站是否存在
|
|
|
+ $web = Website::where('id', $data['website_id'])->first(['id','website_name']);
|
|
|
+ if(empty($web)){
|
|
|
+ return Result::error("该网站不存在", 0);
|
|
|
+ }
|
|
|
+ // return Result::success($data);
|
|
|
+ // 验证用户是否存在且为企业会员/管理员
|
|
|
+ $user = User::where('id', $data['user_id'])->first(['id','type_id']);
|
|
|
+ // 1:个人会员 2:政务会员 3:企业会员 4:调研员 10000:管理员 20000:游客(小程序)
|
|
|
+ if(empty($user) || ($user['type_id']!= 3 && $user['type_id']!= 10000)){
|
|
|
+ return Result::error("用户不存在", 0);
|
|
|
+ }
|
|
|
+ // 去除重复元素和空元素,并保持原始顺序
|
|
|
+ $data['hunt_id'] = array_values(array_filter(array_unique($data['hunt_id']), function($value) {
|
|
|
+ return !empty($value);
|
|
|
+ }));
|
|
|
+ // 验证简历是否存在
|
|
|
+ $hunting = JobHunting::where('status', 2)
|
|
|
+ ->where('website_id', $data['website_id'])
|
|
|
+ ->whereIn('id',$data['hunt_id'])
|
|
|
+ ->get(['id as hunt_id','user_id as receiver_id'])->all();
|
|
|
+ if(empty($hunting)){
|
|
|
+ return Result::error("该简历不存在", 0);
|
|
|
+ }
|
|
|
+ // 验证是否已沟通过该简历
|
|
|
+ $remuse = JobRemuse::where('user_id', $data['user_id'])
|
|
|
+ ->where('recruit_id', $data['recruit_id'])
|
|
|
+ ->where('website_id',$data['website_id'])
|
|
|
+ ->whereIn('hunt_id',$data['hunt_id'])
|
|
|
+ ->get(['hunt_id']);
|
|
|
+ if(!empty($remuse->toArray())){
|
|
|
+ return Result::error("您已沟通过该简历!");
|
|
|
+ }
|
|
|
+ // 准备要插入的数据数组
|
|
|
+ $insertData = array_map(function($hunting) use ($data) {
|
|
|
+ return [
|
|
|
+ 'user_id' => $data['user_id'],
|
|
|
+ 'recruit_id' => $data['recruit_id'],
|
|
|
+ 'website_id' => $data['website_id'],
|
|
|
+ 'hunt_id' => $hunting['hunt_id'],
|
|
|
+ 'receiver_id' => $hunting['receiver_id'],
|
|
|
+ 'status' => 1,
|
|
|
+ ];
|
|
|
+ }, $hunting);
|
|
|
+
|
|
|
+ // 批量插入数据
|
|
|
+ $result = JobRemuse::insert($insertData);
|
|
|
+ if(empty($result)){
|
|
|
+ return Result::error("沟通失败", 0);
|
|
|
+ }
|
|
|
+ return Result::success($result);
|
|
|
}
|
|
|
}
|