Resume.php 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  1. <?php
  2. namespace App\Models;
  3. use App\Search\Traits\ResumeSearchable;
  4. use Illuminate\Database\Eloquent\SoftDeletes;
  5. use Illuminate\Database\Eloquent\Model;
  6. /**
  7. * App\Models\Resume
  8. *
  9. * @property int $id
  10. * @property int $uid 会员uid
  11. * @property int|null $display 是否显示(1:显示 0:不显示)
  12. * @property int $display_name 简历名称(1:显示 0:不显示)
  13. * @property int|null $audit 简历审核(0:审核不通过 1:待审核 2:审核通过)
  14. * @property string|null $remark 审核备注
  15. * @property int|null $stick 是否置顶(0:否 1:是)
  16. * @property int|null $strong_tag 醒目标签
  17. * @property string $title 简历标题
  18. * @property string $fullname 真实姓名
  19. * @property int $sex 性别(1:男 2:女)
  20. * @property string $sex_cn 性别
  21. * @property int|null $nature 工作性质id
  22. * @property string|null $nature_cn 工作性质
  23. * @property string|null $trade 行业id
  24. * @property string|null $trade_cn 行业
  25. * @property int $birthdate 生日
  26. * @property string|null $residence 现居住地
  27. * @property int|null $height 身高(cm)
  28. * @property int|null $marriage 婚否(1:已婚 2:未婚)
  29. * @property string|null $marriage_cn 婚否
  30. * @property int $experience 工作经验id
  31. * @property string $experience_cn 工作经验
  32. * @property string $district 地区ID
  33. * @property string $district_cn 地区
  34. * @property int $wage 期望薪资id
  35. * @property string $wage_cn 期望薪资
  36. * @property string|null $householdaddress 户口所在地
  37. * @property int $education 学历id
  38. * @property string $education_cn 学历
  39. * @property int|null $major 专业id
  40. * @property string|null $major_cn 专业
  41. * @property int|null $tag 简历标签编号
  42. * @property string|null $tag_cn 简历标签
  43. * @property int $telephone 手机号码
  44. * @property string $email 邮箱
  45. * @property int|null $email_notify 邮件接收通知(1:接收 0:不接受)
  46. * @property string $intention_jobs_id 期望职位id
  47. * @property string $intention_jobs 期望职位
  48. * @property string|null $specialty 自我描述
  49. * @property int|null $photo 是否为照片简历(0:否 1:是)
  50. * @property string|null $photo_img 照片
  51. * @property int|null $photo_audit 照片审核(0:审核失败,1:待审核 2:审核成功)
  52. * @property int|null $photo_display 是否显示照片(1:显示 0:不显示)
  53. * @property string|null $qq QQ
  54. * @property string|null $weixin 微信
  55. * @property int|null $subsite_id 站点
  56. * @property int|null $stime 置顶时间
  57. * @property int|null $entrust 简历委托(天)
  58. * @property string|null $talent 高级人才(0:否 1:是)
  59. * @property int $level 简历等级(1:优,2:良 0:差)
  60. * @property int $complete_percent 简历完整度
  61. * @property int|null $current 求职状态编号
  62. * @property string|null $current_cn 求职状态
  63. * @property string|null $word_resume word简历
  64. * @property string|null $word_resume_title word简历标题
  65. * @property int|null $word_resume_addtime word简历添加时间
  66. * @property string|null $key_full 全文搜索关键字
  67. * @property string|null $key_precise 精确搜索关键字
  68. * @property int|null $click 查看次数
  69. * @property string|null $tpl 简历模板
  70. * @property int|null $resume_from_pc 简历来自PC(1->是 0->否)
  71. * @property int|null $def 是否为默认简历(1:是 0:否)
  72. * @property int|null $mobile_audit 手机是否认证(1:是 0:否)
  73. * @property string|null $comment_content 简历评论内容
  74. * @property int|null $is_quick 快速创建简历(0:否 1:是)
  75. * @property string|null $idcard 身份证
  76. * @property \Illuminate\Support\Carbon|null $created_at
  77. * @property \Illuminate\Support\Carbon|null $updated_at
  78. * @property-read \App\Models\Member $members
  79. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume newModelQuery()
  80. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume newQuery()
  81. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume query()
  82. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereAudit($value)
  83. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereBirthdate($value)
  84. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereClick($value)
  85. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereCommentContent($value)
  86. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereCompletePercent($value)
  87. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereCreatedAt($value)
  88. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereCurrent($value)
  89. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereCurrentCn($value)
  90. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereDef($value)
  91. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereDisplay($value)
  92. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereDisplayName($value)
  93. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereDistrict($value)
  94. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereDistrictCn($value)
  95. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereEducation($value)
  96. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereEducationCn($value)
  97. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereEmail($value)
  98. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereEmailNotify($value)
  99. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereEntrust($value)
  100. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereExperience($value)
  101. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereExperienceCn($value)
  102. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereFullname($value)
  103. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereHeight($value)
  104. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereHouseholdaddress($value)
  105. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereId($value)
  106. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereIdcard($value)
  107. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereIntentionJobs($value)
  108. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereIntentionJobsId($value)
  109. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereIsQuick($value)
  110. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereKeyFull($value)
  111. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereKeyPrecise($value)
  112. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereLevel($value)
  113. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereMajor($value)
  114. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereMajorCn($value)
  115. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereMarriage($value)
  116. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereMarriageCn($value)
  117. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereMobileAudit($value)
  118. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereNature($value)
  119. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereNatureCn($value)
  120. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume wherePhoto($value)
  121. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume wherePhotoAudit($value)
  122. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume wherePhotoDisplay($value)
  123. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume wherePhotoImg($value)
  124. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereQq($value)
  125. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereRemark($value)
  126. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereResidence($value)
  127. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereResumeFromPc($value)
  128. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereSex($value)
  129. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereSexCn($value)
  130. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereSpecialty($value)
  131. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereStick($value)
  132. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereStime($value)
  133. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereStrongTag($value)
  134. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereSubsiteId($value)
  135. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereTag($value)
  136. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereTagCn($value)
  137. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereTalent($value)
  138. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereTelephone($value)
  139. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereTitle($value)
  140. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereTpl($value)
  141. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereTrade($value)
  142. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereTradeCn($value)
  143. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereUid($value)
  144. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereUpdatedAt($value)
  145. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereWage($value)
  146. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereWageCn($value)
  147. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereWeixin($value)
  148. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereWordResume($value)
  149. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereWordResumeAddtime($value)
  150. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Resume whereWordResumeTitle($value)
  151. * @mixin \Eloquent
  152. */
  153. class Resume extends Model
  154. {
  155. use SoftDeletes, ResumeSearchable;
  156. protected $guarded = [];
  157. public function members()
  158. {
  159. return $this->belongsTo(Member::class, 'uid');
  160. }
  161. public function memberInfos()
  162. {
  163. return $this->belongsTo(MemberInfo::class, 'uid', 'uid');
  164. }
  165. public function resumeEntrusts()
  166. {
  167. return $this->hasOne(ResumeEntrust::class, 'resume_id', 'id');
  168. }
  169. public function companys()
  170. {
  171. return $this->belongsToMany(Company::class, 'company_favorites', 'resume_id', 'company_id')->withTimestamps();
  172. }
  173. public function resumeEducation()
  174. {
  175. return $this->hasMany(ResumeEducation::class, 'resume_id');
  176. }
  177. public function resumeWork()
  178. {
  179. return $this->hasMany(ResumeWork::class, 'resume_id');
  180. }
  181. public function resumeTrain()
  182. {
  183. return $this->hasMany(ResumeTrain::class, 'resume_id');
  184. }
  185. public function resumeCredent()
  186. {
  187. return $this->hasMany(ResumeCredent::class, 'resume_id');
  188. }
  189. public function resumeLanguage()
  190. {
  191. return $this->hasMany(ResumeLanguage::class, 'resume_id');
  192. }
  193. public function resumeImgs()
  194. {
  195. return $this->hasMany(ResumeImg::class, 'resume_id','id');
  196. }
  197. public function personTag()
  198. {
  199. return $this->hasOne(PersonalServiceTagLog::class, 'resume_id')->where('endtime', '>', time());
  200. }
  201. public function subsites()
  202. {
  203. return $this->belongsToMany(Subsite::class, 'subsite_resumes', 'resume_id', 'subsite_id');
  204. }
  205. public function subsiteResume()
  206. {
  207. return $this->hasMany(SubsiteResume::class, 'resume_id', 'id');
  208. }
  209. public function subsite()
  210. {
  211. return $this->belongsTo(Subsite::class,'subsite_id','id');
  212. }
  213. public function toSearchableArray()
  214. {
  215. $resume=$this->load([
  216. 'memberInfos',
  217. 'resumeEducation',
  218. 'resumeWork',
  219. 'resumeTrain',
  220. 'resumeCredent',
  221. 'resumeLanguage',
  222. 'subsiteResume',
  223. ])->toArray();
  224. $resume['stick']=$resume['stick']?$resume['stick']:0;
  225. $resume['stime']=$resume['stime']?$resume['stime']:0;
  226. $resume['mobile_audit']=$this->members->mobile_audit;
  227. $resume['photo']=$this->memberInfos->photo;
  228. $resume['photo_audit']=$this->memberInfos->photo_audit;
  229. $resume['trade']=string_to_array(',', $resume['trade']);
  230. $resume['trade_cn']=string_to_array('+', $resume['trade_cn']);
  231. $resume['district']=string_to_array(['.',','], $resume['district']);
  232. $new_dis = [];
  233. foreach ($resume['district'] as $key => $val) {
  234. if ($val==0 && $key != 1&&$key != 4 &&$key != 7) {
  235. $new = CategoryDistrict::where('parent_id', $resume['district'][$key-2])->pluck('id')->toArray();
  236. foreach ($new as $key2) {
  237. $new_dis[] = $key2;
  238. }
  239. unset($resume['district'][$key]);
  240. }
  241. }
  242. $resume['district'] = array_merge($resume['district'], $new_dis);
  243. $resume['district_cn']=string_to_array('+', $resume['district_cn']);
  244. $resume['tag']=string_to_array(',', $resume['tag']);
  245. $resume['tag_cn']=string_to_array(',', $resume['tag_cn']);
  246. $resume['intention_jobs_id']=string_to_array(['.',','], $resume['intention_jobs_id']);
  247. $new_jobs = [];
  248. foreach ($resume['intention_jobs_id'] as $key => $val) {
  249. if ($val==0) {
  250. $new = CategoryJobs::where('parent_id', $resume['intention_jobs_id'][$key-1])->pluck('id')->toArray();
  251. foreach ($new as $key2) {
  252. $new_jobs[] = $key2;
  253. }
  254. unset($resume['intention_jobs_id'][$key]);
  255. }
  256. }
  257. $resume['intention_jobs_id'] = array_merge($resume['intention_jobs_id'], $new_jobs);
  258. $resume['intention_jobs']=string_to_array('+', $resume['intention_jobs']);
  259. $resume['member_infos']['residence']=string_to_array('.', $resume['member_infos']['residence']);
  260. $resume['member_infos']['residence_cn']=string_to_array('-', $resume['member_infos']['residence_cn']);
  261. $resume['member_infos']['householdaddress']=string_to_array('.', $resume['member_infos']['householdaddress']);
  262. $resume['member_infos']['householdaddress_cn']=string_to_array('-', $resume['member_infos']['householdaddress_cn']);
  263. $resume['person_shield_companys']=PersonShieldCompany::where('uid', $resume['uid'])->pluck('company_id')->toArray();
  264. $resume['subsite_ids'] = array_column($resume['subsite_resume'], 'subsite_id');
  265. return $resume;
  266. }
  267. public function getResumeAllInfo()
  268. {
  269. return $this->load([
  270. 'memberInfos',
  271. 'resumeEducation',
  272. 'resumeWork',
  273. 'resumeTrain',
  274. 'resumeCredent',
  275. 'resumeLanguage',
  276. 'subsiteResume',
  277. ]);
  278. }
  279. static function getTableName()
  280. {
  281. $obj = new Resume();
  282. return $obj->getTable();
  283. }
  284. }