ResumeLanguageService.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. <?php
  2. namespace App\Services\Person;
  3. use App\Exceptions\ResponseException;
  4. use App\Models\Category;
  5. use App\Models\Resume;
  6. use App\Models\ResumeLanguage;
  7. use App\Repositories\CategoryRepository;
  8. use App\Repositories\MemberLogRepository;
  9. use App\Repositories\ResumeLanguageRepository;
  10. use App\Repositories\ResumeRepository;
  11. use App\Services\Common\TaskService;
  12. use Illuminate\Support\Facades\DB;
  13. class ResumeLanguageService
  14. {
  15. /**
  16. * @var ResumeLanguageRepository
  17. */
  18. protected $ResumeLanguageRepository;
  19. protected $CategoryRepository;
  20. protected $ResumeRepository;
  21. protected $TaskService;
  22. protected $memberLogRepository;
  23. /**
  24. * ResumeLanguageService constructor.
  25. * @param ResumeLanguageRepository $ResumeLanguageRepository
  26. * @param CategoryRepository $CategoryRepository
  27. * @param ResumeRepository $ResumeRepository
  28. * @param TaskService $TaskService
  29. */
  30. public function __construct
  31. (ResumeLanguageRepository $ResumeLanguageRepository,
  32. CategoryRepository $CategoryRepository,
  33. ResumeRepository $ResumeRepository,
  34. TaskService $TaskService,
  35. MemberLogRepository $memberLogRepository
  36. )
  37. {
  38. $this->ResumeLanguageRepository = $ResumeLanguageRepository;
  39. $this->CategoryRepository = $CategoryRepository;
  40. $this->ResumeRepository = $ResumeRepository;
  41. $this->TaskService = $TaskService;
  42. $this->memberLogRepository=$memberLogRepository;
  43. }
  44. public function getResumeLanByResumeId($resumeId)
  45. {
  46. return $this->ResumeLanguageRepository->getResumeLanByResumeId($resumeId);
  47. }
  48. public function resumeLanAdd($resume_id)
  49. {
  50. $res = $this->ResumeLanguageRepository->getResumeLanByResumeId($resume_id);
  51. if (empty($res)) {
  52. return [
  53. ['test'],
  54. ];
  55. } else {
  56. return $res;
  57. }
  58. }
  59. public function getLanguageL($resume_id,$user)
  60. {
  61. $res = Resume::where(['uid'=>$user->id])->get()->toArray();
  62. $array_id = array_column($res,'id');
  63. if(!in_array($resume_id,$array_id)){
  64. throw new ResponseException('简历不存在');
  65. }
  66. return $this->ResumeLanguageRepository->getResumeLanByResumeId($resume_id);
  67. }
  68. public function saveLanguage($data, $user)
  69. {
  70. $res = [];
  71. $languageArr = $data['language'];
  72. $levelArr = $data['level'];
  73. $languages=Category::where('alias', 'AIX_language')->pluck('demand', 'id');
  74. $lavels=Category::where('alias', 'AIX_language_level')->pluck('demand', 'id');
  75. $data_array=[];
  76. foreach ($languageArr as $key => $lan_id) {
  77. $res['resume_id'] = $data['resume_id'];
  78. $res['uid'] = $user->id;
  79. $res['language'] = $lan_id;
  80. $res['language_cn'] = $languages[$lan_id];
  81. $res['level'] = $levelArr[$key];
  82. $res['level_cn'] = $lavels[$levelArr[$key]];
  83. $data_array[]=$res;
  84. }
  85. $result = $this->ResumeLanguageRepository->getResumeLanByResumeId($data['resume_id']);
  86. DB::beginTransaction();
  87. try {
  88. if (empty($result)) {
  89. $resumeArr = $this->ResumeRepository->getResumeById($data['resume_id']);
  90. if ($resumeArr->complete_percent+5<=100) {
  91. if ($resumeArr->complete_percent+5>=70 && $resumeArr->complete_percent+5<90) {
  92. $this->TaskService->doTask(12);
  93. $this->ResumeRepository->updateById(['complete_percent'=>$resumeArr->complete_percent+5,'level'=>2], $data['resume_id']);
  94. } elseif ($resumeArr->complete_percent+5>=90 && $resumeArr->complete_percent+5<=100) {
  95. $this->TaskService->doTask(11);
  96. $this->ResumeRepository->updateById(['complete_percent'=>$resumeArr->complete_percent+5,'level'=>1], $data['resume_id']);
  97. } else {
  98. $this->ResumeRepository->updateById(['complete_percent'=>$resumeArr->complete_percent+5,'level'=>0], $data['resume_id']);
  99. }
  100. }
  101. $ko = $this->ResumeLanguageRepository->resumeLanAdd($data_array);
  102. } else {
  103. $this->ResumeLanguageRepository->delByResumeId($data['resume_id']);
  104. $ko = $this->ResumeLanguageRepository->resumeLanAdd($data_array);
  105. }
  106. if ($ko) {
  107. $das['audit'] =1;
  108. $expires = config('aix.personal_set.per_set.per_set.resume_expires');
  109. if($expires){
  110. $das['expires'] = strtotime("+{$expires} days");
  111. }
  112. $this->ResumeRepository->updateById($das, $data['resume_id']);
  113. event_search_update(Resume::class, (string)$data['resume_id'], 'update');
  114. $res = $this->ResumeLanguageRepository->getResumeLanByResumeId($data['resume_id']);
  115. if(!$this->memberLogRepository->createLog(auth('web-member')->user(),2024,$data['resume_id'])){
  116. throw new \Exception("日志记失败!");
  117. }
  118. }
  119. DB::commit();
  120. return ['code'=>1,'info'=>$res];
  121. } catch (\Exception $e) {
  122. DB::rollback();
  123. return ['code'=>0,'info'=>$e->getMessage()];
  124. }
  125. }
  126. public function mobileSaveLanguage($data, $user)
  127. {
  128. $arr = [];
  129. $arr['resume_id'] = array_get($data,'resume_id');
  130. $res = Resume::where(['uid'=>$user->id])->get()->toArray();
  131. $array_id = array_column($res,'id');
  132. if(!in_array($arr['resume_id'],$array_id)){
  133. throw new ResponseException('简历不存在!');
  134. }
  135. $arr['uid'] =$user->id;
  136. $ResumeLanguage = ResumeLanguage::where(['resume_id'=>$data['resume_id'],'language'=>$data['language']])->first();
  137. if ($ResumeLanguage) {
  138. throw new ResponseException('不能重复选择相同的语言!', '', 400);
  139. }
  140. $arr['language'] = $data['language'];
  141. $arr['level'] = $data['level'];
  142. $default = [$data['language'],$data['level']];
  143. $Category = Category::whereIn('id',$default)->get();
  144. $arr['language_cn'] = $Category[0]->demand;
  145. $arr['level_cn'] = $Category[1]->demand;
  146. $result = $this->ResumeLanguageRepository->getResumeLanByResumeId($data['resume_id']);
  147. DB::beginTransaction();
  148. try {
  149. if (empty($result)) {
  150. $resumeArr = $this->ResumeRepository->getResumeById($data['resume_id']);
  151. if ($resumeArr->complete_percent+5<=100) {
  152. if ($resumeArr->complete_percent+5>=70 && $resumeArr->complete_percent+5<90) {
  153. $this->TaskService->doTask(12);
  154. $this->ResumeRepository->updateById(['complete_percent'=>$resumeArr->complete_percent+5,'level'=>2], $data['resume_id']);
  155. } elseif ($resumeArr->complete_percent+5>=90 && $resumeArr->complete_percent+5<=100) {
  156. $this->TaskService->doTask(11);
  157. $this->ResumeRepository->updateById(['complete_percent'=>$resumeArr->complete_percent+5,'level'=>1], $data['resume_id']);
  158. } else {
  159. $this->ResumeRepository->updateById(['complete_percent'=>$resumeArr->complete_percent+5,'level'=>0], $data['resume_id']);
  160. }
  161. }
  162. }
  163. if ($data['id']) {
  164. $resd = $this->ResumeLanguageRepository->updateResume($arr, $data['id']);
  165. } else {
  166. $resd = $this->ResumeLanguageRepository->resumeCreate($arr);
  167. }
  168. if ($resd) {
  169. $das['audit'] =1;
  170. $expires = config('aix.personal_set.per_set.per_set.resume_expires');
  171. if($expires){
  172. $das['expires'] = strtotime("+{$expires} days");
  173. }
  174. $this->ResumeRepository->updateById($das, $data['resume_id']);
  175. event_search_update(Resume::class, (string)$data['resume_id'], 'update');
  176. $resd = $this->ResumeLanguageRepository->getResumeLanByResumeId($data['resume_id']);
  177. }
  178. DB::commit();
  179. return ['code'=>1,'info'=>$resd];
  180. } catch (\Exception $e) {
  181. DB::rollback();
  182. return ['code'=>0,'info'=>$e->getMessage()];
  183. }
  184. }
  185. public function delLanguage($data)
  186. {
  187. if (empty($data['id'])) {
  188. throw new ResponseException('请选择需要删除的语种', '', 400);
  189. }
  190. $count = $this->ResumeLanguageRepository->getResumeLanCount($data['resume_id']);
  191. DB::beginTransaction();
  192. try {
  193. $res = $this->ResumeLanguageRepository->resumeLanDelete($data['id']);
  194. if ($count==1) {
  195. $resumeArr = $this->ResumeRepository->getResumeById(request()->resume_id);
  196. if ($resumeArr->complete_percent-5>0) {
  197. if ($resumeArr->complete_percent-5>=70 && $resumeArr->complete_percent-5<90) {
  198. $this->ResumeRepository->updateById(['complete_percent'=>$resumeArr->complete_percent-5,'level'=>2], request()->resume_id);
  199. } elseif ($resumeArr->complete_percent-5>=90 && $resumeArr->complete_percent-15<=100) {
  200. $this->ResumeRepository->updateById(['complete_percent'=>$resumeArr->complete_percent-5,'level'=>1], request()->resume_id);
  201. } else {
  202. $this->ResumeRepository->updateById(['complete_percent'=>$resumeArr->complete_percent-5,'level'=>0], request()->resume_id);
  203. }
  204. event_search_update(Resume::class, (string)request()->resume_id, 'update');
  205. }
  206. }
  207. DB::commit();
  208. if(!$this->memberLogRepository->createLog(auth('web-member')->user(),2016,$data['id'])){
  209. throw new \Exception("日志记失败!");
  210. }
  211. return ['code'=>1,'info'=>$res];
  212. } catch (\Exception $e) {
  213. DB::rollback();
  214. return ['code'=>0,'info'=>$e->getMessage()];
  215. }
  216. }
  217. public function language($id)
  218. {
  219. if ($id) {
  220. return $this->ResumeLanguageRepository->find($id);
  221. }
  222. return false;
  223. }
  224. public function isOwn($id,$user,$resume_id = '')
  225. {
  226. $language = $this->ResumeLanguageRepository->getResumeLan(['id'=>$id]);
  227. if(!$language)
  228. {
  229. throw new ResponseException('该语言能力不存在!');
  230. }
  231. if($language->uid != $user->id) {
  232. throw new ResponseException('对不起,您只能操作自己的简历!');
  233. }
  234. //删除时候判断是否为一致
  235. if($resume_id && $language->resume_id != $resume_id) {
  236. throw new ResponseException('参数错误!');
  237. }
  238. }
  239. }