Jobs.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312
  1. <?php
  2. namespace App\Models;
  3. use App\Search\Traits\JobSearchable;
  4. use Illuminate\Database\Eloquent\Model;
  5. use Illuminate\Database\Eloquent\SoftDeletes;
  6. /**
  7. * App\Models\Jobs
  8. *
  9. * @property int $id
  10. * @property int $valid 职位状态:0无效1有效
  11. * @property string $jobs_name 职位名称
  12. * @property int $company_id 企业ID
  13. * @property string $company_name 企业名称
  14. * @property int $company_addtime 企业添加时间
  15. * @property int $company_audit 公司审核状态:0未审核 ;1审核通过;2审核中;3审核未通过
  16. * @property int $emergency 紧急招聘:0否;1是
  17. * @property int $stick 职位置顶:0否;1是
  18. * @property int $nature 工作性质
  19. * @property int $sex 性别:1男;2女
  20. * @property int $age 年龄
  21. * @property int $amount 招聘人数
  22. * @property int $topclass 职位一级分类
  23. * @property int $category 职位二级分类
  24. * @property int $subclass 职位三级分类
  25. * @property string $category_cn 职位分类
  26. * @property int $trade 行业ID
  27. * @property string $scale 企业规模
  28. * @property string $district 地区分类
  29. * @property string $tag 标签分类
  30. * @property int $education 学历ID
  31. * @property int $experience 工作经验ID
  32. * @property int $minwage 最低工资
  33. * @property int $maxwage 最高工资
  34. * @property int $negotiable 面议:0否;1是
  35. * @property string|null $jobs_content 职位描述
  36. * @property int $deadline 到期时间
  37. * @property int $refresh_time 刷新时间
  38. * @property int $stime 置顶时间
  39. * @property int $setmeal_deadline 套餐到期时间
  40. * @property int $setmeal_id 套餐ID
  41. * @property string $setmeal_name 套餐名称
  42. * @property int $audit 审核状态:0未审核;1审核通过;2审核中;3审核未通过
  43. * @property int $display 是否显示:1是0否
  44. * @property int $robot 是否为采集信息:0人工;1采集
  45. * @property float $map_x 地图X坐标
  46. * @property float $map_y 地图Y坐标
  47. * @property int $map_zoom 地图缩放级别
  48. * @property int $add_mode 添加方式
  49. * @property string $department 部门
  50. * @property string|null $key_precise 精确搜索关键字
  51. * @property string|null $key_full 全文搜索关键字
  52. * @property int $subsite_id 分站ID:0总站
  53. * @property \Illuminate\Support\Carbon|null $created_at
  54. * @property \Illuminate\Support\Carbon|null $updated_at
  55. * @property string|null $deleted_at
  56. * @property-read \App\Models\Company $company
  57. * @method static bool|null forceDelete()
  58. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs newModelQuery()
  59. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs newQuery()
  60. * @method static \Illuminate\Database\Query\Builder|\App\Models\Jobs onlyTrashed()
  61. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs query()
  62. * @method static bool|null restore()
  63. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereAddMode($value)
  64. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereAge($value)
  65. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereAmount($value)
  66. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereAudit($value)
  67. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereCategory($value)
  68. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereCategoryCn($value)
  69. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereCompanyAddtime($value)
  70. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereCompanyAudit($value)
  71. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereCompanyId($value)
  72. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereCompanyName($value)
  73. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereCreatedAt($value)
  74. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereDeadline($value)
  75. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereDeletedAt($value)
  76. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereDepartment($value)
  77. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereDisplay($value)
  78. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereDistrict($value)
  79. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereEducation($value)
  80. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereEmergency($value)
  81. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereExperience($value)
  82. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereId($value)
  83. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereJobsContent($value)
  84. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereJobsName($value)
  85. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereKeyFull($value)
  86. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereKeyPrecise($value)
  87. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereMapX($value)
  88. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereMapY($value)
  89. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereMapZoom($value)
  90. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereMaxwage($value)
  91. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereMinwage($value)
  92. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereNature($value)
  93. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereNegotiable($value)
  94. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereRefreshTime($value)
  95. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereRobot($value)
  96. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereScale($value)
  97. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereSetmealDeadline($value)
  98. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereSetmealId($value)
  99. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereSetmealName($value)
  100. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereSex($value)
  101. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereStick($value)
  102. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereStime($value)
  103. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereSubclass($value)
  104. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereSubsiteId($value)
  105. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereTag($value)
  106. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereTopclass($value)
  107. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereTrade($value)
  108. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereUpdatedAt($value)
  109. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Jobs whereValid($value)
  110. * @method static \Illuminate\Database\Query\Builder|\App\Models\Jobs withTrashed()
  111. * @method static \Illuminate\Database\Query\Builder|\App\Models\Jobs withoutTrashed()
  112. * @mixin \Eloquent
  113. */
  114. class Jobs extends Model
  115. {
  116. use SoftDeletes,JobSearchable;
  117. protected $guarded = [];
  118. static function getTableName()
  119. {
  120. $job = new Jobs();
  121. return $job->getTable();
  122. }
  123. public function company()
  124. {
  125. return $this->belongsTo(Company::class, 'company_id');
  126. }
  127. public function subsites()
  128. {
  129. return $this->hasMany(SubsiteJob::class, 'jobs_id');
  130. }
  131. public function promotion()
  132. {
  133. return $this->hasMany(Promotion::class, 'jobid');
  134. }
  135. public function jobsContact()
  136. {
  137. return $this->hasOne(JobsContact::class, 'job_id');
  138. }
  139. public function contact()
  140. {
  141. return $this->hasOne(JobsContact::class, 'job_id');
  142. }
  143. public static function jobsUpdate($ids, $data)
  144. {
  145. return Jobs::whereIn('id', $ids)->update($data);
  146. }
  147. public function getTagAttribute($value)
  148. {
  149. return explode(',', $value);
  150. }
  151. public function setTagAttribute($value)
  152. {
  153. if ($value) {
  154. $this->attributes['tag'] = implode(',', $value);
  155. } else {
  156. return '';
  157. }
  158. }
  159. public function getAgeAttribute($value)
  160. {
  161. return explode('-', $value);
  162. }
  163. public function setAgeAttribute($value)
  164. {
  165. if ($value) {
  166. $this->attributes['age'] = implode('-', $value);
  167. }
  168. }
  169. public function viewJobs()
  170. {
  171. return $this->hasMany(ViewJob::class, 'job_id', 'id');
  172. }
  173. public function personFavorite()
  174. {
  175. return $this->hasMany(PersonFavorite::class, 'job_id', 'id');
  176. }
  177. public function categoryTrade()
  178. {
  179. return $this->belongsTo(Category::class, 'trade');
  180. }
  181. public function categoryScale()
  182. {
  183. return $this->belongsTo(Category::class, 'scale');
  184. }
  185. public function categoryEducation()
  186. {
  187. return $this->belongsTo(Category::class, 'education');
  188. }
  189. public function categoryWage()
  190. {
  191. return $this->belongsTo(Category::class, 'wage');
  192. }
  193. public function queueAutoRefreshs()
  194. {
  195. return $this->hasMany(QueueAutoRefresh::class, 'pid')->where('utype', 1);
  196. }
  197. public function companyInterviews()
  198. {
  199. return $this->hasMany(CompanyInterView::class, 'jobs_id');
  200. }
  201. public function personalJobsApply()
  202. {
  203. return $this->hasMany(PersonalJobsApply::class, 'jobs_id', 'id');
  204. }
  205. public function categoryJobsTopClass()
  206. {
  207. return $this->hasOne(CategoryJobs::class, 'id', 'topclass');
  208. }
  209. public function categoryJobsCategory()
  210. {
  211. return $this->hasOne(CategoryJobs::class, 'id', 'category');
  212. }
  213. public function categoryJobsSubClass()
  214. {
  215. return $this->hasOne(CategoryJobs::class, 'id', 'subclass');
  216. }
  217. public function subsiteJobs()
  218. {
  219. return $this->hasMany(SubsiteJob::class, 'jobs_id', 'id');
  220. }
  221. public function companyConsultant()
  222. {
  223. return $this->belongsTo(CompanyConsultant::class,'company_id', 'company_id');
  224. }
  225. public function toSearchableArray()
  226. {
  227. $arr = $this ->load(['company','subsiteJobs'])->toArray();
  228. $arr['age_min']=empty($arr['age'][0])?16:intval($arr['age'][0]);
  229. $arr['age_max']=empty($arr['age'][1])?99:intval($arr['age'][1]);
  230. $arr['sex_cn'] = $arr['sex'] == 1?"男":"女";
  231. $arr['district'] = string_to_array('.', $arr['district']);
  232. foreach ($arr['district'] as $key => $val) {
  233. $arr['district_cn'][$key] = get_district_cn($val);
  234. }
  235. $arr['trade'] = $arr['company']['trade'];
  236. $arr['wage_cn'] =get_category($arr['wage']);
  237. $arr['wage_min'] =$arr['wage_min'];
  238. $arr['wage_max'] =$arr['wage_max'];
  239. $arr['trade_cn'] = get_category($arr['trade']);
  240. foreach ($arr['tag'] as $key => $val) {
  241. $arr['tag'][$key] = (int)$val;
  242. }
  243. foreach ($arr['tag'] as $key => $val) {
  244. $arr['tag_cn'][$key] =get_category($val);
  245. }
  246. $arr['scale_cn'] = get_category($arr['scale']);
  247. $arr['nature_cn'] = get_category($arr['nature']);
  248. $arr['education_cn'] = get_category($arr['education']);
  249. $arr['experience_cn'] = get_category($arr['experience']);
  250. $arr['intention_jobs_id'] = [$arr['topclass'],$arr['category'],$arr['subclass']];
  251. $arr['intention_jobs'] = [get_job_category($arr['topclass']),get_job_category($arr['category']),get_job_category($arr['subclass'])];
  252. $arr['location'] = [
  253. 'lat'=>is_numeric($arr['map_y'])?$arr['map_y']:0,
  254. 'lon'=>is_numeric($arr['map_x'])?$arr['map_x']:0
  255. ];
  256. $arr['company']['nature_cn'] = get_category($arr['company']['nature']);
  257. $arr['company']['trade_cn'] = get_category($arr['company']['trade']);
  258. $arr['company']['scale_cn'] = get_category($arr['company']['scale']);
  259. $arr['company']['district'] = string_to_array('.', $arr['company']['district']);
  260. $arr['company']['district_cn'] = string_to_array('/', $arr['company']['district_cn']);
  261. foreach ($arr['company']['tag'] as $key => $val) {
  262. $arr['company']['tag'][$key] = (int)$val;
  263. }
  264. foreach ($arr['company']['tag'] as $key => $val) {
  265. $arr['company']['tag_cn'][$key] =get_category($val);
  266. }
  267. $arr['company']['location'] = [
  268. 'lat'=>is_numeric($arr['company']['map_y'])?$arr['company']['map_y']:0,
  269. 'lon'=>is_numeric($arr['company']['map_x'])?$arr['company']['map_x']:0
  270. ];
  271. $arr['company']['subsite_ids'] = [$arr['subsite_id']];
  272. $arr['subsite_ids'] = array_column($arr['subsite_jobs'], 'subsite_id');
  273. unset($arr['map_x']);
  274. unset($arr['map_y']);
  275. unset($arr['company']['password']);
  276. unset($arr['company']['remember_token']);
  277. unset($arr['company']['map_x']);
  278. unset($arr['company']['map_y']);
  279. unset($arr['company']['map_zoom']);
  280. unset($arr['company']['map_open']);
  281. return $arr;
  282. }
  283. }