123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257 |
- <?php
- /**
- * Created by PhpStorm.
- * User: michaelwu
- * Date: 2019/07/09
- * Time: 11:22
- */
- namespace App\Services\Crm;
- use App\Exceptions\ResponseException;
- use Exception;
- use Illuminate\Support\Facades\Cache;
- use Illuminate\Support\Facades\DB;
- use App\Repositories\MemberRepository;
- use App\Repositories\MemberInfoRepository;
- use App\Repositories\ResumeRepository;
- use App\Repositories\ResumeEducationRepository;
- use App\Repositories\ResumeWorkRepository;
- use App\Repositories\ResumeTrainRepository;
- use App\Repositories\AuditReasonsRepository;
- use App\Models\Resume;
- use App\Models\AuditReason;
- use App\Models\Pms;
- use App\Models\SmsRule;
- use App\Services\Common\SmsService;
- use App\Validators\Rules\MobileRule;
- class PersonService
- {
- protected $memberRepository;
- protected $memberInfoRepository;
- protected $resumeRepository;
- protected $resumeEducationRepository;
- protected $resumeWorkRepository;
- protected $resumeTrainRepository;
- protected $auditReasonsRepository;
- protected $smsService;
- /**
- * PersonService constructor.
- */
- public function __construct(MemberRepository $memberRepository, MemberInfoRepository $memberInfoRepository, ResumeRepository $resumeRepository, ResumeEducationRepository $resumeEducationRepository, ResumeWorkRepository $resumeWorkRepository, ResumeTrainRepository $resumeTrainRepository, AuditReasonsRepository $auditReasonsRepository, SmsService $smsService)
- {
- $this->memberRepository = $memberRepository;
- $this->memberInfoRepository = $memberInfoRepository;
- $this->resumeRepository = $resumeRepository;
- $this->resumeEducationRepository = $resumeEducationRepository;
- $this->resumeWorkRepository = $resumeWorkRepository;
- $this->resumeTrainRepository = $resumeTrainRepository;
- $this->auditReasonsRepository = $auditReasonsRepository;
- $this->smsService = $smsService;
- }
- public function getDuration($list)
- {
- if ($list) {
- foreach ($list as $key => $value) {
- $start = $value['startyear'].'-'.$value['startmonth'];
- $end = $value['endyear'].'-'.$value['endmonth'];
- if ($value['todate']==1) {
- $end = date('Y-m');
- }
- $list[$key]['duration'] = ddate($start, $end);
- }
- }
- return $list;
- }
- public function totalWorkDuration($list)
- {
- $total_year = 0;
- $total_month = 0;
- $return = '';
- if ($list) {
- foreach ($list as $key => $value) {
- $current_duration = strpos($value['duration'], '年');
- if ($current_duration === false) {
- $total_month += intval($value['duration']);
- } else {
- $arr = explode("年", $value['duration']);
- $total_year += intval($arr[0]);
- $total_month += intval($arr[1]);
- }
- }
- }
- $add_year = intval($total_month/12);
- $total_year += $add_year;
- $total_month = intval($total_month%12);
- if ($total_year > 0) {
- $return .= $total_year.'年';
- }
- if ($total_month>0) {
- $return .= $total_month.'个月';
- }
- return $return;
- }
- public function getResume($resume_id)
- {
- //获取简历信息
- $where = ['id'=>$resume_id];
- $resume = $this->resumeRepository->getResumeInfo($where);
- if (!$resume) {
- return ['status'=>0,'msg'=>'简历不存在或已经被删除!'];
- }
- $memberInfo = $this->memberInfoRepository->getMemberInfo($resume->uid);
- $resume->education_cn = $memberInfo->education_cn; //学历
- $resume->experience_cn = $memberInfo->experience_cn; //工作经验
- $resume->sex_cn = $memberInfo->sex_cn;
- //教育经历
- $education = $this->resumeEducationRepository->getResumeEducationByResumeId($resume_id);
- $education = $this->getDuration($education);
- $resume->resume_education = $education;
- //获取工作信息
- $work = $this->resumeWorkRepository->getResumeWorkByResumeId($resume_id);
- $work = $this->getDuration($work);
- $resume->resume_work = $work;
- $resume->work_count = count($work);
- $work_duration = $this->totalWorkDuration($work); //工龄
- $resume->work_duration = $work_duration;
- //获取培训信息
- $train = $this->resumeTrainRepository->getResumeTrainByResumeId($resume_id);
- $train = $this->getDuration($train);
- $resume->resume_training = $train;
- $resume->addtime = strtotime($resume->created_at);
- $resume->refreshtime = strtotime($resume->updated_at);
- $resume->fullname_ = $resume->fullname;
- $resume->fullname = $memberInfo->realname;
- $resume->age = date("Y") - $memberInfo->birthday; //年龄
- $resume->height = $memberInfo->height;
- $resume->marriage_cn = $memberInfo->marriage_cn;
- $resume->telephone = $memberInfo->phone;
- $resume->email = $memberInfo->email;
- $resume->householdaddress = $memberInfo->householdaddress_cn;
- if ($resume->display==1) {
- $resume->display_cn = '公开';
- } else {
- $resume->display_cn = '不公开';
- }
- if ($resume->talent==1) {
- $resume->talent_cn = '高级';
- } else {
- $resume->talent_cn = '普通';
- }
- if($resume->audit=='2'){
- $resume->audit_cn = '已通过审核';
- }elseif($resume->audit=='1'){
- $resume->audit_cn = '正在审核中';
- }elseif($resume->audit=='0'){
- $resume->audit_cn = '审核未通过';
- }
- if ($memberInfo->images) {
- if ($memberInfo->display_images == 1) {
- $resume->photo_display_cn = '公开';
- } else {
- $resume->photo_display_cn = '不公开';
- }
- } else {
- $resume->photo_display_cn = '未上传照片';
- }
- if (!$resume->specialty) {
- $resume->specialty = '无';
- }
- return ['status'=>1,'msg'=>$resume];
- }
- //审核简历
- public function auditResume($id, $data)
- {
- $audit = array_has($data, 'audit')?$data['audit']:'';
- $remark = array_has($data, 'reason')?$data['reason']:'';
- $pms_notice = array_has($data, 'pms_notice')?$data['pms_notice']:0;
- $audit_username = array_has($data, 'audit_username')?$data['audit_username']:'CRM业务员';
- $arr = array_filter($id);
- if (empty($arr)) {
- return ['status'=>0, 'msg'=>'数据异常'];
- }
- $reus = $this->resumeRepository->getCrmResumes([], ['id'=>$arr]);
- $mobile = [];
- foreach ($reus as $res) {
- if (isset($res->members->mobile)) {
- if (validator_check($res->members->mobile, new MobileRule())) {
- $mobile[] = $res->members->mobile;
- }
- }
- }
- $mobile = array_unique($mobile);
- $sms_id = $audit ? 'sms_resumeallow' : 'sms_resumenotallow';
- $result = Resume::whereIn('id', $arr)->update(['audit'=>$audit]);
- $data=[];
- foreach ($arr as $k => $v) {
- $data[$k]['type'] = 1;
- $data[$k]['type_id'] = $v;
- $data[$k]['status'] = $audit;
- $data[$k]['reason'] = $remark;
- $data[$k]['audit_man'] = $audit_username;
- $data[$k]['created_at'] = date('Y-m-d H:i:s', time());
- $data[$k]['updated_at'] = date('Y-m-d H:i:s', time());
- }
- AuditReason::insert($data);
- if ($pms_notice) {
- if ($audit==0) {
- $stat='审核未通过';
- } elseif ($audit==2) {
- $stat = '审核通过';
- } else {
- $stat='等待审核';
- }
- $da = [];
- foreach ($reus as $k => $v) {
- $da[$k]['uid'] = $v['members']['id'];
- $da[$k]['username'] = $v['members']['username'];
- $da[$k]['resume_title'] = $v->title;
- }
- foreach ($da as $k => $v) {
- $ds[$k]['msgtype'] = 1;
- $ds[$k]['msgfromuid'] = 0;
- $ds[$k]['msgfrom'] = $audit_username;
- $ds[$k]['msgtoname'] = $v['username'] ? $v['username'] : 'admin';
- $ds[$k]['msgtouid'] = $v['uid'] ? $v['uid'] : 0;
- if ($v['resume_title']) {
- $resume_title = '('.$v['resume_title'].')';
- } else {
- $resume_title = '';
- }
- $ds[$k]['message'] = $remark ? '简历'.$resume_title.$stat.'<备注:'.$remark.'>' : '简历'.$resume_title.$stat;
- $ds[$k]['created_at'] = date('Y-m-d H:i:s', time());
- $ds[$k]['updated_at'] = date('Y-m-d H:i:s', time());
- }
- Pms::insert($ds);
- }
- if ($result) {
- event_search_update(Resume::class, (string)implode(',', $arr), 'update');
- $this->resumeSms($sms_id, $mobile);
- return ['status'=>1, 'msg'=>'审核成功'];
- } else {
- return ['status'=>0, 'msg'=>'审核失败'];
- }
- }
- public function resumeSms($sms_id, $mobile)
- {
- $SmsRule = SmsRule::where('alias', $sms_id)->first();
- if (isset($SmsRule->status) && !empty($SmsRule->status)) {
- if ($mobile) {
- foreach ($mobile as $mobiles) {
- $this->smsService->sendSms($mobiles, $sms_id, ['sitename'=>config('aix.system.site.site.site_name'),'sitedomain'=>config('aix.system.site.site.site_domain')]);
- }
- }
- }
- }
- }
|