123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354 |
- <?php
- namespace App\Services\Company;
- use App\Exceptions\ResponseException;
- use App\Repositories\CompanyDownResumeRepository;
- use App\Repositories\ResumeRepository;
- use App\Repositories\JobsRepository;
- use App\Repositories\MemberPointRepository;
- use App\Repositories\PersonalJobsApplyRepository;
- use App\Repositories\MemberSetmealRepository;
- use App\Repositories\MemberLogRepository;
- use App\Repositories\MemberHandselRepository;
- use Illuminate\Support\Facades\DB;
- class CompanyDownResumeService
- {
- /**
- * @var CompanyDownResumeRepository
- */
- protected $CompanyDownResumeRepository;
- protected $ResumeRepository;
- protected $jobsRepository;
- protected $memberPointRepository;
- protected $personalJobsApplyRepository;
- protected $memberSetmealRepository;
- protected $memberLogRepository;
- protected $memberHandselRepository;
- /**
- * CompanyDownResumeService constructor.
- * @param CompanyDownResumeRepository $CompanyDownResumeRepository
- * @param ResumeRepository $ResumeRepository
- * @param JobsRepository $jobsRepository
- * @param MemberPointRepository $memberPointRepository
- * @param PersonalJobsApplyRepository $personalJobsApplyRepository
- * @param MemberSetmealRepository $memberSetmealRepository
- * @param MemberLogRepository $memberLogRepository
- * @param MemberHandselRepository $memberHandselRepository
- */
- public function __construct(CompanyDownResumeRepository $CompanyDownResumeRepository, ResumeRepository $ResumeRepository, JobsRepository $jobsRepository, MemberPointRepository $memberPointRepository, PersonalJobsApplyRepository $personalJobsApplyRepository, MemberSetmealRepository $memberSetmealRepository, MemberLogRepository $memberLogRepository, MemberHandselRepository $memberHandselRepository)
- {
- $this->CompanyDownResumeRepository = $CompanyDownResumeRepository;
- $this->ResumeRepository = $ResumeRepository;
- $this->jobsRepository = $jobsRepository;
- $this->memberPointRepository = $memberPointRepository;
- $this->personalJobsApplyRepository = $personalJobsApplyRepository;
- $this->memberSetmealRepository = $memberSetmealRepository;
- $this->memberLogRepository = $memberLogRepository;
- $this->memberHandselRepository = $memberHandselRepository;
- }
- public function getDownResume($data)
- {
- return $this->CompanyDownResumeRepository->getDownResume($data);
- }
- /**
- * 标注简历
- * @param $id
- * @param $state
- * @return \Illuminate\Http\JsonResponse
- */
- public function labelApply($id, $state)
- {
- if (!$id) {
- return response()->json(['status'=>0, 'msg'=>'请选择简历!']);
- }
- // $old_info = $this->CompanyDownResumeRepository->find($id);
- $r = false;
- DB::beginTransaction();
- try {
- $data = [
- 'is_reply'=>$state,
- ];
- if (!$this->CompanyDownResumeRepository->companyLabelResume($id, $data)) {
- throw new ResponseException('标记失败!');
- // return response()->json(['status'=>0, 'msg'=>'标记失败']);
- }
- //添加日志
- DB::commit();
- $user = auth('web-company')->user();
- $statArr=["1"=>"合适","2"=>"不合适","3"=>"待定","4"=>"未接通"];
- $this->memberLogRepository->createLog($user,1030,[$id,$statArr[$state]]);
- return response()->json(['status'=>1, 'msg'=>'标记成功','task'=>$r]);
- } catch (\Exception $e) {
- DB::rollback();
- return response()->json(['status'=>0, 'msg'=>$e->getMessage()]);
- }
- }
- public function getCompanyDownResumeNum($where)
- {
- return $this->CompanyDownResumeRepository->getDownResumeNums($where);
- }
- //简历下载
- public function addDownResume($addarr, $user, $member_setmeal)
- {
- if (!auth('web-company')->check()) { //检测是否是企业账号
- return array('status'=>0,'msg'=>'必须是企业会员才可以下载简历!');
- }
- if ($user->user_status != 1) { //检测企业账号是否正常
- return array('status'=>0,'msg'=>'您的账号处于暂停状态,请联系管理员设为正常后进行操作!');
- }
- if (!$addarr['rid']) { //检测是否选择了简历
- return array('status'=>0,'msg'=>'请选择简历!');
- }
- $resume_num = count($addarr['rid']);
- if (config('aix.personal_set.per_set.resume_download_set.down_resume_limit') == 1) { //检测是否有通过审核的职位
- //获取通过审核的职位数量
- $where = array(
- array('company_id','=',$user->id),
- array('valid','=','1'),
- array('display','=','1')
- );
- if (config('aix.companyset.comset.show_set.jobs_display') == 1) {
- $where[] = array('audit','=', '1');
- } else {
- $where[] = array('audit','<>', '3');
- }
- $jobs = $this->jobsRepository->getOtherJobsCount($where);
- if (count($jobs) == 0) {
- return array('status'=>0,'msg'=>'你没有发布职位或职位审核未通过导致无法下载简历!');
- }
- } elseif (config('aix.personal_set.per_set.resume_download_set.down_resume_limit') == 3) { //判断企业是否认证通过
- if ($user->audit != 1) {
- return array('status'=>0,'msg'=>'你的营业执照未通过认证导致无法下载简历!');
- }
- }
- //判断是否达到当天下载上限
- if ($member_setmeal->download_resume_max > 0) {
- //获取当天已下载简历数
- $downwhere = array(
- array('down_addtime','>=',strtotime('today')),
- array('down_addtime','<',strtotime('tomorrow')),
- array('company_uid','=',$user->id)
- );
- $downnum = $this->getCompanyDownResumeNum($downwhere);
- if ($downnum >= $member_setmeal->download_resume_max) {
- return array('status'=>0,'msg'=>'您今天已下载 <span class="font_yellow">'.$downnum.'</span> 份简历,已达到每天下载上限,请先收藏该简历,明天继续下载。');
- }
- }
- //积分下载时判断积分数量是否足够
- if ($member_setmeal->download_resume <=0) {
- $members_points = $this->memberPointRepository->getPointsById($user->id, '1');
- if ($members_points->points < config('aix.companyset.comsume.comsume_set.download_resume_price')*config('aix.companyset.points.points_set.payment_rate')*$resume_num) {
- return array('status'=>0,'msg'=>"你的积分不足,不能下载简历!");
- }
- }
- if ($resume_num > 1) {
- //多个简历批量下载
- return $this->addDownResumeBatch($addarr['rid'], $user, $member_setmeal);
- } else {
- //单个简历是单个现在
- return $this->addDownResumeOne($addarr, $user, $member_setmeal);
- }
- }
- //批量下载简历
- public function addDownResumeBatch($rid, $user, $setmeal)
- {
- $num = 0;
- $down_where = array(
- 'company_uid' => $user->id
- );
- $down_where_In = array('resume_id'=>$rid);
- $down_rst = $this->CompanyDownResumeRepository->getDowmResumes($down_where, $down_where_In);
- if ($down_rst) {
- foreach ($rid as $key => $value) {
- if (array_has($down_rst, $value)) {
- unset($rid[$key]); //过滤已下载的简历
- }
- }
- }
- if ($rid && $setmeal->show_apply_contact == 0 && $user->id) {
- $apply_where = array(
- 'company_uid' => $$user->id
- );
- $apply_where_In = array('resume_id'=>$rid);
- $rst = $this->personalJobsApplyRepository->getApplies($apply_where, $apply_where_In);
- if ($rst) {
- foreach ($rid as $key => $value) {
- if (array_has($rst, $value)) {
- unset($rid[$key]); //过滤已申请大当前企业职位的简历
- }
- }
- }
- }
- if ($rid) {
- //获取简历信息
- $resume_arr = $this->ResumeRepository->getResumesWithInfo($rid);
- $company = $this->companyRepository->getCompanyInfo(array('id'=>$user->id));
- $setmeal_download_resume = $setmeal->download_resume;
- if ($resume_arr->toArray()) {
- foreach ($resume_arr as $key => $value) {
- $memberInfo = $value->memberInfos;
- $addarr['resume_id'] = $value->id;
- //套餐信息
- //获取简历名称
- if ($memberInfo->display_name == "2") {
- $addarr['resume_name'] = "N" . str_pad($value->id, 7, "0", STR_PAD_LEFT);
- } elseif ($memberInfo->display_name == "3") {
- if ($memberInfo->sex == 1) {
- $addarr['resume_name'] = cut_str($memberInfo->realname, 1, 0, "先生");
- } elseif ($memberInfo->sex == 2) {
- $addarr['resume_name'] = cut_str($memberInfo->realname, 1, 0, "女士");
- }
- } else {
- $addarr['resume_name'] = $memberInfo->realname;
- }
- $addarr["resume_uid"]=$value->uid;
- $addarr["company_uid"]=$company->id;
- $addarr["company_name"]=$company->companyname;
- $addarr['down_addtime'] = time();
- $addarr['is_reply'] = 0;
- $info = $this->CompanyDownResumeRepository->create($addarr);
- if ($info) {
- //如果套餐简历下载数大于0,则修改
- if ($setmeal_download_resume > 0) {
- $this->memberSetmealRepository->decrementData(array('uid'=>$user->id), 'download_resume', 1);
- $this->memberLogRepository->createLog($user, '1012', array($value->id,'消耗简历下载数:1,套餐剩余:'.($setmeal_download_resume-1),''));
- $setmeal_download_resume = $setmeal_download_resume -1 ;
- } else {
- //修改会员积分
- $point = config('aix.companyset.comsume.comsume_set.download_resume_price')*config('aix.companyset.points.points_set.payment_rate');
- $p_rst = $this->memberPointRepository->reportDeal($user->id, $user->utype, 2, $point);
- if ($p_rst) {
- $this->memberLogRepository->createLog($user, '1012', array($value->id,'消耗积分:'.$point,''));
- $stime = date('Y-m-d H:i:s', time());
- $handsel['uid'] = $user->id;
- $handsel['utype'] = $user->utype;
- $handsel['htype'] = 'download_resume';
- $handsel['htype_cn'] = '下载简历';
- $handsel['operate'] = 2;
- $handsel['points'] = $point;
- $this->memberHandselRepository->create($handsel);
- }
- }
- $num++;
- }
- }
- }
- }
- if ($num>0) {
- return array('status'=>1,'msg'=>'成功下载'.$num.'份简历!');
- } else {
- return array('status'=>0,'msg'=>'下载失败!');
- }
- }
- //下载单个下载简历
- public function addDownResumeOne($addarr, $user, $setmeal)
- {
- $add_arr['resume_id'] = $addarr['rid'][0];
- //检测是否下载过简历
- $down_where = array(
- 'resume_id' => $add_arr['resume_id'],
- 'company_uid' => $user->id
- );
- $down_info = $this->CompanyDownResumeRepository->getDownResume($down_where);
- if ($down_info) {
- return array('status'=>0,'msg'=>"您已经下载过此简历了!");
- }
- //检测会员套餐中收到的简历是否可以免费查看,免费查看时不需要下载
- if ($setmeal->show_apply_contact == 1) {
- //检测是否申请过职位
- $has = $this->personalJobsApplyRepository->checkJobsApply($add_arr['resume_id'], $user->id);
- if ($has) {
- //return array('status'=>0,'msg'=>'简历联系方式可见,您无需下载此简历!');
- return array('status'=>0,'msg'=>'当前用户的其它简历已下载,您无需下载此简历!');
- }
- }
- //获取简历信息、简历用户信息,用于处理简历名称
- $resumeInfo = $this->ResumeRepository->getResumeById($add_arr['resume_id']);
- $user_info = $resumeInfo->memberInfos;
- if ($user_info->display_name == 2) {
- $add_arr['resume_name'] = "N".str_pad($resumeInfo->id, 7, "0", STR_PAD_LEFT);
- } elseif ($user_info->display_name == 3) {
- if ($user_info->sex==1) {
- $add_arr['resume_name'] = cut_str($user_info->realname, 1, 0, "先生");
- } elseif ($user_info->sex==2) {
- $add_arr['resume_name'] = cut_str($user_info->realname, 1, 0, "女士");
- }
- } else {
- $add_arr['resume_name'] = $user_info->realname;
- }
- $stime1 = time();
- $stime2 = date('Y-m-d H:i:s', $stime1);
- $add_arr["resume_uid"]=$resumeInfo->uid;
- $add_arr["company_uid"]=$user->id;
- $add_arr["company_name"]=$user->companyname;
- $add_arr['down_addtime'] = $stime1;
- $add_arr['is_reply'] = 0;
- $add_arr['created_at'] = $stime2;
- $add_arr['updated_at'] = $stime2;
- $info = $this->CompanyDownResumeRepository->create($add_arr);
- return array('status'=>1,'msg'=>$info);
- }
- public function getDownResumes($where)
- {
- return $this->CompanyDownResumeRepository->getDowmResumes($where);
- }
- public function getLimitDownResumes($limit)
- {
- $order_by = array(
- 'down_addtime' => 'desc'
- );
- $rst = $this->CompanyDownResumeRepository->getDownResumes(array(), $order_by, $limit);
- return $rst;
- }
- //当投递简历成功时,插入记录
- public function addDownResumes($company_id,$resume_id)
- {
- //判断企业套餐是否允许查看
- $setmeal = $this->memberSetmealRepository->getSetmealByUid($company_id,1);
- $downResume = $this->CompanyDownResumeRepository->getDownResume(['resume_id'=>$resume_id,'company_uid'=>$company_id]);
- if($setmeal && $setmeal->show_apply_contact == 1 && !$downResume){
- $resume_info = $this->ResumeRepository->getResumeById($resume_id);
- $down_data = array(
- 'resume_id' => $resume_id,
- 'resume_name' => $resume_info->title,
- 'resume_uid' => $resume_info->uid,
- 'company_uid' => $company_id,
- 'company_name' => getCompanyName($company_id)->companyname,
- 'down_addtime' => time(),
- 'is_reply' => 0
- );
- $this->CompanyDownResumeRepository->create($down_data);
- }
- }
- //判断下载的简历是否是已下载简历
- public function isOwn($y_id,$user,$column)
- {
- $idsArr = $this->CompanyDownResumeRepository->getPluck(['company_uid'=>$user->id],$column)->toArray();
- if(array_diff($y_id,$idsArr))
- {
- throw new ResponseException('参数错误!');
- }
- }
- }
|