123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312 |
- <?php
- namespace App\Models;
- use App\Search\Traits\JobSearchable;
- use Illuminate\Database\Eloquent\Model;
- use Illuminate\Database\Eloquent\SoftDeletes;
- /**
- * App\Models\Jobs
- *
- * @property int $id
- * @property int $valid 职位状态:0无效1有效
- * @property string $jobs_name 职位名称
- * @property int $company_id 企业ID
- * @property string $company_name 企业名称
- * @property int $company_addtime 企业添加时间
- * @property int $company_audit 公司审核状态:0未审核 ;1审核通过;2审核中;3审核未通过
- * @property int $emergency 紧急招聘:0否;1是
- * @property int $stick 职位置顶:0否;1是
- * @property int $nature 工作性质
- * @property int $sex 性别:1男;2女
- * @property int $age 年龄
- * @property int $amount 招聘人数
- * @property int $topclass 职位一级分类
- * @property int $category 职位二级分类
- * @property int $subclass 职位三级分类
- * @property string $category_cn 职位分类
- * @property int $trade 行业ID
- * @property string $scale 企业规模
- * @property string $district 地区分类
- * @property string $tag 标签分类
- * @property int $education 学历ID
- * @property int $experience 工作经验ID
- * @property int $minwage 最低工资
- * @property int $maxwage 最高工资
- * @property int $negotiable 面议:0否;1是
- * @property string|null $jobs_content 职位描述
- * @property int $deadline 到期时间
- * @property int $refresh_time 刷新时间
- * @property int $stime 置顶时间
- * @property int $setmeal_deadline 套餐到期时间
- * @property int $setmeal_id 套餐ID
- * @property string $setmeal_name 套餐名称
- * @property int $audit 审核状态:0未审核;1审核通过;2审核中;3审核未通过
- * @property int $display 是否显示:1是0否
- * @property int $robot 是否为采集信息:0人工;1采集
- * @property float $map_x 地图X坐标
- * @property float $map_y 地图Y坐标
- * @property int $map_zoom 地图缩放级别
- * @property int $add_mode 添加方式
- * @property string $department 部门
- * @property string|null $key_precise 精确搜索关键字
- * @property string|null $key_full 全文搜索关键字
- * @property int $subsite_id 分站ID:0总站
- * @property \Illuminate\Support\Carbon|null $created_at
- * @property \Illuminate\Support\Carbon|null $updated_at
- * @property string|null $deleted_at
- * @property-read \App\Models\Company $company
- * @method static bool|null forceDelete()
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs newModelQuery()
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs newQuery()
- * @method static \Illuminate\Database\Query\Builder|\App\Models\Jobs onlyTrashed()
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs query()
- * @method static bool|null restore()
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereAddMode($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereAge($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereAmount($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereAudit($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereCategory($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereCategoryCn($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereCompanyAddtime($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereCompanyAudit($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereCompanyId($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereCompanyName($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereCreatedAt($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereDeadline($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereDeletedAt($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereDepartment($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereDisplay($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereDistrict($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereEducation($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereEmergency($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereExperience($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereId($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereJobsContent($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereJobsName($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereKeyFull($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereKeyPrecise($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereMapX($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereMapY($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereMapZoom($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereMaxwage($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereMinwage($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereNature($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereNegotiable($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereRefreshTime($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereRobot($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereScale($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereSetmealDeadline($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereSetmealId($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereSetmealName($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereSex($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereStick($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereStime($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereSubclass($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereSubsiteId($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereTag($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereTopclass($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereTrade($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereUpdatedAt($value)
- * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereValid($value)
- * @method static \Illuminate\Database\Query\Builder|\App\Models\Jobs withTrashed()
- * @method static \Illuminate\Database\Query\Builder|\App\Models\Jobs withoutTrashed()
- * @mixin \Eloquent
- */
- class Jobs extends Model
- {
- use SoftDeletes,JobSearchable;
- protected $guarded = [];
- static function getTableName()
- {
- $job = new Jobs();
- return $job->getTable();
- }
- public function company()
- {
- return $this->belongsTo(Company::class, 'company_id');
- }
- public function subsites()
- {
- return $this->hasMany(SubsiteJob::class, 'jobs_id');
- }
- public function promotion()
- {
- return $this->hasMany(Promotion::class, 'jobid');
- }
- public function jobsContact()
- {
- return $this->hasOne(JobsContact::class, 'job_id');
- }
- public function contact()
- {
- return $this->hasOne(JobsContact::class, 'job_id');
- }
- public static function jobsUpdate($ids, $data)
- {
- return Jobs::whereIn('id', $ids)->update($data);
- }
- public function getTagAttribute($value)
- {
- return explode(',', $value);
- }
- public function setTagAttribute($value)
- {
- if ($value) {
- $this->attributes['tag'] = implode(',', $value);
- } else {
- return '';
- }
- }
- public function getAgeAttribute($value)
- {
- return explode('-', $value);
- }
- public function setAgeAttribute($value)
- {
- if ($value) {
- $this->attributes['age'] = implode('-', $value);
- }
- }
- public function viewJobs()
- {
- return $this->hasMany(ViewJob::class, 'job_id', 'id');
- }
- public function personFavorite()
- {
- return $this->hasMany(PersonFavorite::class, 'job_id', 'id');
- }
- public function categoryTrade()
- {
- return $this->belongsTo(Category::class, 'trade');
- }
- public function categoryScale()
- {
- return $this->belongsTo(Category::class, 'scale');
- }
- public function categoryEducation()
- {
- return $this->belongsTo(Category::class, 'education');
- }
- public function categoryWage()
- {
- return $this->belongsTo(Category::class, 'wage');
- }
- public function queueAutoRefreshs()
- {
- return $this->hasMany(QueueAutoRefresh::class, 'pid')->where('utype', 1);
- }
- public function companyInterviews()
- {
- return $this->hasMany(CompanyInterView::class, 'jobs_id');
- }
- public function personalJobsApply()
- {
- return $this->hasMany(PersonalJobsApply::class, 'jobs_id', 'id');
- }
- public function categoryJobsTopClass()
- {
- return $this->hasOne(CategoryJobs::class, 'id', 'topclass');
- }
- public function categoryJobsCategory()
- {
- return $this->hasOne(CategoryJobs::class, 'id', 'category');
- }
- public function categoryJobsSubClass()
- {
- return $this->hasOne(CategoryJobs::class, 'id', 'subclass');
- }
- public function subsiteJobs()
- {
- return $this->hasMany(SubsiteJob::class, 'jobs_id', 'id');
- }
-
- public function companyConsultant()
- {
- return $this->belongsTo(CompanyConsultant::class,'company_id', 'company_id');
- }
-
- public function toSearchableArray()
- {
- $arr = $this ->load(['company','subsiteJobs'])->toArray();
- $arr['age_min']=empty($arr['age'][0])?16:intval($arr['age'][0]);
- $arr['age_max']=empty($arr['age'][1])?99:intval($arr['age'][1]);
- $arr['sex_cn'] = $arr['sex'] == 1?"男":"女";
- $arr['district'] = string_to_array('.', $arr['district']);
- foreach ($arr['district'] as $key => $val) {
- $arr['district_cn'][$key] = get_district_cn($val);
- }
- $arr['trade'] = $arr['company']['trade'];
- $arr['wage_cn'] =get_category($arr['wage']);
- $arr['wage_min'] =$arr['wage_min'];
- $arr['wage_max'] =$arr['wage_max'];
- $arr['trade_cn'] = get_category($arr['trade']);
- foreach ($arr['tag'] as $key => $val) {
- $arr['tag'][$key] = (int)$val;
- }
- foreach ($arr['tag'] as $key => $val) {
- $arr['tag_cn'][$key] =get_category($val);
- }
- $arr['scale_cn'] = get_category($arr['scale']);
- $arr['nature_cn'] = get_category($arr['nature']);
- $arr['education_cn'] = get_category($arr['education']);
- $arr['experience_cn'] = get_category($arr['experience']);
- $arr['intention_jobs_id'] = [$arr['topclass'],$arr['category'],$arr['subclass']];
- $arr['intention_jobs'] = [get_job_category($arr['topclass']),get_job_category($arr['category']),get_job_category($arr['subclass'])];
- $arr['location'] = [
- 'lat'=>is_numeric($arr['map_y'])?$arr['map_y']:0,
- 'lon'=>is_numeric($arr['map_x'])?$arr['map_x']:0
- ];
- $arr['company']['nature_cn'] = get_category($arr['company']['nature']);
- $arr['company']['trade_cn'] = get_category($arr['company']['trade']);
- $arr['company']['scale_cn'] = get_category($arr['company']['scale']);
- $arr['company']['district'] = string_to_array('.', $arr['company']['district']);
- $arr['company']['district_cn'] = string_to_array('/', $arr['company']['district_cn']);
- foreach ($arr['company']['tag'] as $key => $val) {
- $arr['company']['tag'][$key] = (int)$val;
- }
- foreach ($arr['company']['tag'] as $key => $val) {
- $arr['company']['tag_cn'][$key] =get_category($val);
- }
- $arr['company']['location'] = [
- 'lat'=>is_numeric($arr['company']['map_y'])?$arr['company']['map_y']:0,
- 'lon'=>is_numeric($arr['company']['map_x'])?$arr['company']['map_x']:0
- ];
- $arr['company']['subsite_ids'] = [$arr['subsite_id']];
- $arr['subsite_ids'] = array_column($arr['subsite_jobs'], 'subsite_id');
- unset($arr['map_x']);
- unset($arr['map_y']);
- unset($arr['company']['password']);
- unset($arr['company']['remember_token']);
- unset($arr['company']['map_x']);
- unset($arr['company']['map_y']);
- unset($arr['company']['map_zoom']);
- unset($arr['company']['map_open']);
- return $arr;
- }
- }
|