ResumeTrainService.php 7.9 KB

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