ResumeWorkService.php 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. <?php
  2. namespace App\Services\Person;
  3. use App\Models\Resume;
  4. use App\Models\ResumeWork;
  5. use App\Repositories\MemberLogRepository;
  6. use App\Repositories\ResumeRepository;
  7. use App\Repositories\ResumeWorkRepository;
  8. use App\Services\Common\TaskService;
  9. use Illuminate\Support\Facades\DB;
  10. use App\Exceptions\ResponseException;
  11. class ResumeWorkService
  12. {
  13. /**
  14. * @var ResumeWorkRepository
  15. */
  16. protected $ResumeWorkRepository;
  17. protected $ResumeRepository;
  18. protected $TaskService;
  19. protected $memberLogRepository;
  20. /**
  21. * ResumeWorkService constructor.
  22. * @param ResumeWorkRepository $ResumeWorkRepository
  23. * @param ResumeRepository $ResumeRepository
  24. * @param TaskService $TaskService
  25. */
  26. public function __construct
  27. (ResumeWorkRepository $ResumeWorkRepository,
  28. ResumeRepository $ResumeRepository,
  29. TaskService $TaskService,
  30. MemberLogRepository $memberLogRepository
  31. )
  32. {
  33. $this->ResumeWorkRepository = $ResumeWorkRepository;
  34. $this->ResumeRepository = $ResumeRepository;
  35. $this->TaskService = $TaskService;
  36. $this->memberLogRepository=$memberLogRepository;
  37. }
  38. public function getResumeWorkByResumeId($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->ResumeWorkRepository->getResumeWorkByResumeId($resumeId);
  46. }
  47. public function resumeWorkAdd($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 = ResumeWork::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. if (!$date['todate']) {
  63. $arr['endyear'] = $date['endyear'];
  64. $arr['endmonth'] = $date['endmonth'];
  65. $arr['todate'] = 0;
  66. } else {
  67. $arr['endyear'] = 0;
  68. $arr['endmonth'] = 0;
  69. $arr['todate'] = 1;
  70. }
  71. $arr['uid'] = $user->id;
  72. $arr['startyear'] = $date['startyear'];
  73. $arr['startmonth'] = $date['startmonth'];
  74. $arr['jobs'] = $date['jobs'];
  75. $arr['companyname'] = $date['companyname'];
  76. $arr['achievements'] = $date['achievements'];
  77. $result = $this->ResumeWorkRepository->getResumeWorkByResumeId($arr['resume_id']);
  78. DB::beginTransaction();
  79. try {
  80. if (empty($result)) {
  81. $resumeArr = $this->ResumeRepository->getResumeById($arr['resume_id']);
  82. if ($resumeArr->complete_percent+15<=100) {
  83. if ($resumeArr->complete_percent+15>=70 && $resumeArr->complete_percent+15<90) {
  84. $this->TaskService->doTask(12);
  85. $this->ResumeRepository->updateById(['complete_percent'=>$resumeArr->complete_percent+15,'level'=>2], $arr['resume_id']);
  86. } elseif ($resumeArr->complete_percent+15>=90 && $resumeArr->complete_percent+15<=100) {
  87. $this->TaskService->doTask(11);
  88. $this->ResumeRepository->updateById(['complete_percent'=>$resumeArr->complete_percent+15,'level'=>1], $arr['resume_id']);
  89. } else {
  90. $this->ResumeRepository->updateById(['complete_percent'=>$resumeArr->complete_percent+15,'level'=>0], $arr['resume_id']);
  91. }
  92. }
  93. }
  94. if ($date['id']) {
  95. $resd = $this->ResumeWorkRepository->updateResume($arr, $date['id']);
  96. if ($resd) {
  97. $this->ResumeRepository->updateById(['audit'=>1], $date['resume_id']);
  98. $resd = $this->ResumeWorkRepository->getResumeWorkByResumeId($date['resume_id']);
  99. }
  100. } else {
  101. $resd = $this->ResumeWorkRepository->resumeWorkAdd($arr);
  102. if ($resd) {
  103. $das['audit'] =1;
  104. $expires = config('aix.personal_set.per_set.per_set.resume_expires');
  105. if($expires){
  106. $das['expires'] = strtotime("+{$expires} days");
  107. }
  108. $this->ResumeRepository->updateById($das, $date['resume_id']);
  109. event_search_update(Resume::class, (string)$date['resume_id'], 'update');
  110. $resd = $this->ResumeWorkRepository->getResumeWorkByResumeId($date['resume_id']);
  111. }
  112. }
  113. DB::commit();
  114. if(!$this->memberLogRepository->createLog(auth('web-member')->user(),2020,$arr['resume_id'] )){
  115. throw new \Exception("日志记失败!");
  116. }
  117. return ['code'=>1,'info'=>$resd];
  118. } catch (\Exception $e) {
  119. DB::rollback();
  120. return ['code'=>0,'info'=>$e->getMessage()];
  121. }
  122. }
  123. public function resumeUpdate($id)
  124. {
  125. if(!$this->memberLogRepository->createLog(auth('web-member')->user(),2021,$id)){
  126. throw new \Exception("日志记失败!");
  127. }
  128. return $this->ResumeWorkRepository->getResumeById($id);
  129. }
  130. public function resumeWorkDelete($id)
  131. {
  132. $count = $this->ResumeWorkRepository->getResumeWorkCount(request()->resume_id);
  133. DB::beginTransaction();
  134. try {
  135. $res = $this->ResumeWorkRepository->resumeWorkDelete($id);
  136. if ($count==1) {
  137. $resumeArr = $this->ResumeRepository->getResumeById(request()->resume_id);
  138. if ($resumeArr->complete_percent-15>0) {
  139. if ($resumeArr->complete_percent-15>=70 && $resumeArr->complete_percent-15<90) {
  140. $this->ResumeRepository->updateById(['complete_percent'=>$resumeArr->complete_percent-15,'level'=>2], request()->resume_id);
  141. } elseif ($resumeArr->complete_percent-15>=90 && $resumeArr->complete_percent-15<=100) {
  142. $this->ResumeRepository->updateById(['complete_percent'=>$resumeArr->complete_percent-15,'level'=>1], request()->resume_id);
  143. } else {
  144. $this->ResumeRepository->updateById(['complete_percent'=>$resumeArr->complete_percent-15,'level'=>0], request()->resume_id);
  145. }
  146. event_search_update(Resume::class, (string)request()->resume_id, 'update');
  147. }
  148. }
  149. DB::commit();
  150. if(!$this->memberLogRepository->createLog(auth('web-member')->user(),2014,$id)){
  151. throw new \Exception("日志记失败!");
  152. }
  153. return ['code'=>1,'info'=>$res];
  154. } catch (\Exception $e) {
  155. DB::rollback();
  156. return ['code'=>0,'info'=>$e->getMessage()];
  157. }
  158. }
  159. public function workEdit($id)
  160. {
  161. if ($id) {
  162. return $this->ResumeWorkRepository->find($id);
  163. }
  164. return false;
  165. }
  166. public function isOwn($id,$user,$resume_id = '')
  167. {
  168. $work = $this->ResumeWorkRepository->getWork(['id'=>$id]);
  169. if(!$work)
  170. {
  171. throw new ResponseException('该工作经历不存在!');
  172. }
  173. if($work->uid != $user->id) {
  174. throw new ResponseException('对不起,您只能操作自己的简历!');
  175. }
  176. if($resume_id && $work->resume_id != $resume_id)
  177. {
  178. throw new ResponseException('参数错误!');
  179. }
  180. }
  181. }