JobList.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. <?php
  2. namespace App\Models;
  3. use Illuminate\Database\Eloquent\Factories\HasFactory;
  4. use Illuminate\Database\Eloquent\Model;
  5. use DateTimeInterface;
  6. use Illuminate\Database\Eloquent\SoftDeletes;
  7. use Illuminate\Support\Facades\Auth;
  8. class JobList extends Model
  9. {
  10. use HasFactory;
  11. protected $table='job_list';
  12. use SoftDeletes;
  13. protected function serializeDate(DateTimeInterface $date)
  14. {
  15. return $date->format('Y-m-d H:i:s');
  16. }
  17. /**首页工作列表**/
  18. protected function GetTopJob(){
  19. return JobList::whereIn('status',[0,1])
  20. ->select('created_at','status','title','province','city','description','username','mobile')
  21. ->with(['user:mobile,name,is_realname'])
  22. ->orderByDesc('created_at')->orderByDesc('id')->limit(20)->get();
  23. }
  24. /**首页工作列表**/
  25. protected function GetJobList($page_index,$page_size,$status,$classify_pid,$classify_id,$province,$city){
  26. $num=($page_index-1)*$page_size;
  27. $query=JobList::whereIn('status',[0,1]);
  28. if($classify_id){
  29. $where=function ($q)use($classify_id){
  30. $q->where('classify_one',$classify_id)->orwhere('classify_two',$classify_id)
  31. ->orwhere('classify_three',$classify_id);
  32. };
  33. $query->where($where);
  34. }
  35. if($classify_pid && !$classify_id){
  36. $id_Arr=Classify::where('pid',$classify_pid)->pluck('id');
  37. $wheres=function ($q)use($id_Arr){
  38. $q->whereIn('classify_one',$id_Arr)
  39. ->orwhereIn('classify_two',$id_Arr)
  40. ->orwhereIn('classify_three',$id_Arr);
  41. };
  42. $query->where($wheres);
  43. }
  44. if($province){
  45. $query->where('province',$province);
  46. if ($city){
  47. $query->where('city',$city);
  48. }
  49. }
  50. $count=$query->count();
  51. $list=$query->select('area','time','created_at','id','status','title','province','city','description','username','mobile','user_id')
  52. ->with(['user:mobile,name,is_realname,id'])
  53. ->orderByDesc('created_at')->orderByDesc('id')->take($page_size)->skip($num)->get();
  54. if (!$status){
  55. foreach ($list as $k=>$v){
  56. $list[$k]->mobile=mb_substr($list[$k]->mobile,0,7).'****';
  57. $list[$k]->user->mobile=mb_substr($list[$k]->user->mobile,0,7).'****';
  58. }
  59. }
  60. return ['list'=>$list,'total'=>$count];
  61. }
  62. /**首页工作列表**/
  63. protected function GetJobDetail($id,$status){
  64. $list=JobList::where('id',$id)
  65. ->select('area','time','classify_one','classify_two','id','title','classify_three','created_at','status','title','province','city','description','username','mobile','user_id')
  66. ->with(['user:mobile,name,is_realname,id'])->first();
  67. if (!$status){
  68. $list->mobile=mb_substr($list->mobile,0,3).'****'.mb_substr($list->mobile,8,4);
  69. $list->user->mobile=mb_substr($list->user->mobile,0,3).'****'.mb_substr($list->user->mobile,8,4);
  70. }
  71. $re=Classify::whereIn('id',[$list->classify_one,$list->classify_two,$list->classify_three])->select('classify_name')->pluck('classify_name');
  72. $list->classify_info=$re;
  73. unset($list->classify_one);
  74. unset($list->classify_two);
  75. unset($list->classify_three);
  76. return $list;
  77. }
  78. /**个人发布的招工信息**/
  79. protected function GetUserJobList($page_index,$page_size){
  80. $num=($page_index-1)*$page_size;
  81. $user_id=Auth::user()->id;
  82. $count=JobList::where('user_id',$user_id)->count();
  83. $list=JobList::where('user_id',$user_id) ->select('classify_one','classify_two','classify_three','area','time','created_at','status','title','province','city','description','username','mobile','user_id','id')
  84. ->with(['user:mobile,name,is_realname,id'])
  85. ->orderByDesc('created_at')->orderByDesc('id')->take($page_size)->skip($num)->get();
  86. foreach ($list as $k=>$v){
  87. $arr[]=$v->classify_one;
  88. if ($v->classify_two){
  89. $arr[]=$v->classify_two;
  90. }
  91. if ($v->classify_three){
  92. $arr[]=$v->classify_three;
  93. }
  94. $v->classify_id=$arr;
  95. unset($list[$k]->classify_one);
  96. unset($list[$k]->classify_two);
  97. unset($list[$k]->classify_three);
  98. $list[$k]->classify_info=Classify::whereIn('id',$arr)->pluck('classify_name');
  99. }
  100. return ['list'=>$list,'total'=>$count];
  101. }
  102. /*add**/
  103. protected function add($data){
  104. foreach ($data['classify_id'] as $k=>$v){
  105. if ($k==0){
  106. $data['classify_one']=$v;
  107. }elseif ($k==1){
  108. $data['classify_two']=$v;
  109. }elseif ($k==2){
  110. $data['classify_three']=$v;
  111. }
  112. }
  113. $pid=Classify::whereIn('id',$data['classify_id'])->value('pid');
  114. unset($data['classify_id']);
  115. $data['classify_pid']=$pid;
  116. JobList::insert($data);
  117. }
  118. /*add**/
  119. protected function updateStatus($id,$status){
  120. JobList::where('id',$id)->where('user_id',Auth::user()->id)->update(['status'=>$status]);
  121. }
  122. /**del**/
  123. protected function DelJobInfo($id){
  124. JobList::destroy($id);
  125. }
  126. public function user(){
  127. return $this->belongsTo(User::class,'user_id','id');
  128. }
  129. public function classify(){
  130. return $this->hasOne(Classify::class,'id','classify_id');
  131. }
  132. public function classifyOne(){
  133. return $this->hasOne(Classify::class,'id','classify_one');
  134. }
  135. public function classifyTwo(){
  136. return $this->hasOne(Classify::class,'id','classify_two');
  137. }
  138. public function classifyThree(){
  139. return $this->hasOne(Classify::class,'id','classify_three');
  140. }
  141. }