SubsiteResumeService.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. <?php
  2. namespace App\Services\Person;
  3. use App\Exceptions\ResponseException;
  4. use App\Models\Resume;
  5. use App\Models\Subsite;
  6. use App\Models\SubsiteResume;
  7. use App\Repositories\ResumeRepository;
  8. use App\Repositories\SubsiteResumeRepository;
  9. use Illuminate\Support\Facades\DB;
  10. class SubsiteResumeService
  11. {
  12. /**
  13. * @var subsiteResumeRepository
  14. */
  15. protected $subsiteResumeRepository;
  16. protected $resumeRepository;
  17. /**
  18. * SubsiteResumeService constructor.
  19. * @param SubsiteResumeRepository $subsiteResumeRepository
  20. */
  21. public function __construct(SubsiteResumeRepository $subsiteResumeRepository, ResumeRepository $resumeRepository)
  22. {
  23. $this->subsiteResumeRepository = $subsiteResumeRepository;
  24. $this->resumeRepository = $resumeRepository;
  25. }
  26. public function getSubsiteResumeById($user, $resume_id)
  27. {
  28. $data['resume_id'] = $resume_id;
  29. $res = $this->subsiteResumeRepository->getSubsiteResumeArray($data);
  30. $result = $this->newSubsite($user->subsite_id, $res);
  31. $resultArr = $this->getSubsiteArray($result);
  32. return ['sub'=>$result,'subId'=>$resultArr];
  33. }
  34. protected function newSubsite($subsite_id, $res)
  35. {
  36. foreach ($res as $key => $val) {
  37. if ($val['subsite_id']!=0) {
  38. if (!$val['subsites']) {
  39. unset($res[$key]);
  40. }
  41. }
  42. if ($val['subsite_id']==$subsite_id) {
  43. unset($res[$key]);
  44. }
  45. }
  46. return $res;
  47. }
  48. protected function getSubsiteArray($res)
  49. {
  50. return array_column($res, 'subsite_id');
  51. }
  52. public function updateSubditeResume($user, $input)
  53. {
  54. $resume_id = $input['id'];
  55. if (!$resume_id) {
  56. throw new ResponseException('简历不存在!');
  57. }
  58. $subsiteArr = SubsiteResume::where('resume_id', $resume_id)->get();
  59. DB::beginTransaction();
  60. try {
  61. $das['audit'] =1;
  62. $expires = config('aix.personal_set.per_set.per_set.resume_expires');
  63. if($expires){
  64. $das['expires'] = strtotime("+{$expires} days");
  65. }
  66. $this->resumeRepository->updateById($das, $resume_id);
  67. if (!$subsiteArr->isEmpty()) {
  68. SubsiteResume::where('resume_id', $resume_id)->delete();
  69. }
  70. $subsiteDefault = [
  71. [
  72. 'subsite_id'=>$user->subsite_id,
  73. 'resume_id'=>$resume_id,
  74. 'created_at'=>date('Y-m-d H:i:s'),
  75. 'updated_at'=>date('Y-m-d H:i:s'),
  76. ]
  77. ];
  78. $subsiteArr = [];
  79. if ($input['subsite_id']!==null) {
  80. $subsite = explode(',', $input['subsite_id']);
  81. foreach ($subsite as $key => $val) {
  82. $subsiteArr[$key]['subsite_id'] = $val;
  83. $subsiteArr[$key]['resume_id'] = $resume_id;
  84. $subsiteArr[$key]['created_at'] = date('Y-m-d H:i:s');
  85. $subsiteArr[$key]['updated_at'] = date('Y-m-d H:i:s');
  86. }
  87. if (in_array($user->subsite_id, $subsite)) {
  88. $subsiteDefault = $subsiteArr;
  89. } else {
  90. $subsiteDefault = array_merge($subsiteDefault, $subsiteArr);
  91. }
  92. }
  93. SubsiteResume::insert($subsiteDefault);
  94. event_search_update(Resume::class, (string)$resume_id, 'update');
  95. $subsite_new_id = array_column($subsiteArr, 'subsite_id');
  96. foreach ($subsite_new_id as $key => $val) {
  97. if ($val==$user->subsite_id) {
  98. unset($subsite_new_id[$key]);
  99. }
  100. }
  101. $newArr = [];
  102. if (!empty($subsite_new_id)) {
  103. $newArr = Subsite::whereIn('id', $subsite_new_id)->select('sitename')->get()->toArray();
  104. if (in_array(0, $subsite_new_id)) {
  105. array_unshift($newArr, ['sitename'=>'总站']);
  106. }
  107. }
  108. DB::commit();
  109. return ['code'=>1,'info'=>$newArr];
  110. } catch (\Exception $e) {
  111. DB::rollback();
  112. return ['code'=>0,'info'=>$e->getMessage()];
  113. }
  114. }
  115. }