ResumeCredentService.php 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. <?php
  2. namespace App\Services\Person;
  3. use App\Exceptions\ResponseException;
  4. use App\Models\Resume;
  5. use App\Models\ResumeCredent;
  6. use App\Repositories\MemberLogRepository;
  7. use App\Repositories\ResumeRepository;
  8. use App\Repositories\ResumeCredentRepository;
  9. use App\Services\Common\TaskService;
  10. use Illuminate\Support\Facades\DB;
  11. class ResumeCredentService
  12. {
  13. /**
  14. * @var ResumeCredentRepository
  15. */
  16. protected $ResumeCredentRepository;
  17. protected $ResumeRepository;
  18. protected $TaskService;
  19. protected $memberLogRepository;
  20. /**
  21. * ResumeCredentService constructor.
  22. * @param ResumeCredentRepository $ResumeCredentRepository
  23. * @param ResumeRepository $ResumeRepository
  24. * @param TaskService $TaskService
  25. */
  26. public function __construct
  27. (ResumeCredentRepository $ResumeCredentRepository,
  28. ResumeRepository $ResumeRepository,
  29. TaskService $TaskService,
  30. MemberLogRepository $memberLogRepository
  31. )
  32. {
  33. $this->ResumeCredentRepository = $ResumeCredentRepository;
  34. $this->ResumeRepository = $ResumeRepository;
  35. $this->TaskService = $TaskService;
  36. $this->memberLogRepository=$memberLogRepository;
  37. }
  38. public function getResumeCredentByResumeId($resumeId,$user)
  39. {
  40. $res = Resume::where(['uid'=>$user->id])->get()->toArray();
  41. $array_id = array_column($res,'id');
  42. if(!in_array($resumeId,$array_id)){
  43. throw new ResponseException('简历不存在');
  44. }
  45. return $this->ResumeCredentRepository->getResumeCredentByResumeId($resumeId);
  46. }
  47. public function resumeCredentAdd($date, $user)
  48. {
  49. $arr = [];
  50. $arr['resume_id'] = array_get($date,'resume_id');
  51. $res = Resume::where(['uid'=>$user->id])->get()->toArray();
  52. $array_id = array_column($res,'id');
  53. if(array_key_exists('id',$date) && $date['id']){
  54. $exist = ResumeCredent::where(['uid'=>$user->id,'id'=>$date['id']])->get()->toArray();
  55. if(!$exist){
  56. throw new ResponseException('只能修改自己的简历');
  57. }
  58. }
  59. if(!in_array($arr['resume_id'],$array_id)){
  60. throw new ResponseException('简历不存在!');
  61. }
  62. $arr['uid'] =$user->id;
  63. $arr['year'] = $date['year'];
  64. $arr['month'] = $date['month'];
  65. $arr['name'] = $date['name'];
  66. $result = $this->ResumeCredentRepository->getResumeCredentByResumeId($arr['resume_id']);
  67. DB::beginTransaction();
  68. try {
  69. if (empty($result)) {
  70. $resumeArr = $this->ResumeRepository->getResumeById($arr['resume_id']);
  71. if ($resumeArr->complete_percent+5<=100) {
  72. if ($resumeArr->complete_percent+5>=70 && $resumeArr->complete_percent+5<90) {
  73. $this->TaskService->doTask(12);
  74. $this->ResumeRepository->updateById(['complete_percent'=>$resumeArr->complete_percent+5,'level'=>2], $arr['resume_id']);
  75. } elseif ($resumeArr->complete_percent+5>=90 && $resumeArr->complete_percent+5<=100) {
  76. $this->TaskService->doTask(11);
  77. $this->ResumeRepository->updateById(['complete_percent'=>$resumeArr->complete_percent+5,'level'=>1], $arr['resume_id']);
  78. } else {
  79. $this->ResumeRepository->updateById(['complete_percent'=>$resumeArr->complete_percent+5,'level'=>0], $arr['resume_id']);
  80. }
  81. }
  82. }
  83. if ($date['id']) {
  84. $resd = $this->ResumeCredentRepository->updateResume($arr, $date['id']);
  85. if(!$this->memberLogRepository->createLog(auth('web-member')->user(),2026,$arr['resume_id'])){
  86. throw new \Exception("日志记失败!");
  87. }
  88. } else {
  89. $resd = $this->ResumeCredentRepository->resumeCredentAdd($arr);
  90. if(!$this->memberLogRepository->createLog(auth('web-member')->user(),2025,$arr['resume_id'])){
  91. throw new \Exception("日志记失败!");
  92. }
  93. }
  94. if ($resd) {
  95. $das['audit'] =1;
  96. $expires = config('aix.personal_set.per_set.per_set.resume_expires');
  97. if($expires){
  98. $das['expires'] = strtotime("+{$expires} days");
  99. }
  100. $this->ResumeRepository->updateById($das, $date['resume_id']);
  101. event_search_update(Resume::class, (string)$date['resume_id'], 'update');
  102. $resd = $this->ResumeCredentRepository->getResumeCredentByResumeId($date['resume_id']);
  103. }
  104. DB::commit();
  105. return ['code'=>1,'info'=>$resd];
  106. } catch (\Exception $e) {
  107. DB::rollback();
  108. return ['code'=>0,'info'=>$e->getMessage()];
  109. }
  110. }
  111. public function resumeUpdate($id)
  112. {
  113. return $this->ResumeCredentRepository->getResumeById($id);
  114. }
  115. public function resumeCredentDelete($id)
  116. {
  117. $count = $this->ResumeCredentRepository->getResumeCredentCount(request()->resume_id);
  118. DB::beginTransaction();
  119. try {
  120. $res = $this->ResumeCredentRepository->resumeCredentDelete($id);
  121. if ($count==1) {
  122. $resumeArr = $this->ResumeRepository->getResumeById(request()->resume_id);
  123. if ($resumeArr->complete_percent-5>0) {
  124. if ($resumeArr->complete_percent-5>=70 && $resumeArr->complete_percent-5<90) {
  125. $this->ResumeRepository->updateById(['complete_percent'=>$resumeArr->complete_percent-5,'level'=>2], request()->resume_id);
  126. } elseif ($resumeArr->complete_percent-5>=90 && $resumeArr->complete_percent-5<=100) {
  127. $this->ResumeRepository->updateById(['complete_percent'=>$resumeArr->complete_percent-5,'level'=>1], request()->resume_id);
  128. } else {
  129. $this->ResumeRepository->updateById(['complete_percent'=>$resumeArr->complete_percent-5,'level'=>0], request()->resume_id);
  130. }
  131. event_search_update(Resume::class, (string)request()->resume_id, 'update');
  132. }
  133. }
  134. DB::commit();
  135. if(!$this->memberLogRepository->createLog(auth('web-member')->user(),2017,$id)){
  136. throw new \Exception("日志记失败!");
  137. }
  138. return ['code'=>1,'info'=>$res];
  139. } catch (\Exception $e) {
  140. DB::rollback();
  141. return ['code'=>0,'info'=>$e->getMessage()];
  142. }
  143. }
  144. public function certificate($id)
  145. {
  146. if ($id) {
  147. return $this->ResumeCredentRepository->find($id);
  148. }
  149. return false;
  150. }
  151. public function isOwn($id,$user,$resume_id = '')
  152. {
  153. $credent = $this->ResumeCredentRepository->getResumeCredent(['id'=>$id]);
  154. if(!$credent)
  155. {
  156. throw new ResponseException('该证书不存在!');
  157. }
  158. if($credent->uid != $user->id) {
  159. throw new ResponseException('对不起,您只能操作自己的简历!');
  160. }
  161. //删除时候判断是否为一致
  162. if($resume_id && $credent->resume_id != $resume_id) {
  163. throw new ResponseException('参数错误!');
  164. }
  165. }
  166. }