123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384 |
- <?php
- /**
- * Created by PhpStorm.
- * User: michaelwu
- * Date: 2018/10/30
- * Time: 11:22
- */
- namespace App\Services\Crm;
- use App\Exceptions\ResponseException;
- use App\Models\Company;
- use App\Models\Jobs;
- use App\Models\Payment;
- use App\Models\SubsiteJob;
- use App\Repositories\AuditReasonsRepository;
- use App\Repositories\CompanyRepository;
- use App\Repositories\CompanyStatisticsRepository;
- use App\Repositories\Jobfair\JobfairJobRepository;
- use App\Repositories\Jobfair\JobfairJobsContactRepository;
- use App\Repositories\JobsContactRepository;
- use App\Repositories\JobsRepository;
- use App\Repositories\MemberHandselRepository;
- use App\Repositories\MemberLogRepository;
- use App\Repositories\MemberPointRepository;
- use App\Repositories\MemberSetmealRepository;
- use App\Repositories\MembersSetmealLogRepository;
- use App\Repositories\OrderRepository;
- use App\Repositories\PersonalJobsApplyRepository;
- use App\Repositories\QueueAutoRefreshRepository;
- use App\Repositories\RefreshLogRepository;
- use App\Repositories\SetmealRepository;
- use App\Repositories\SubsiteJobRepository;
- use Exception;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Cache;
- use App\Repositories\CategoryRepository;
- use App\Repositories\CategoryJobsRepository;
- use App\Repositories\CategoryDistrictRepository;
- use App\Repositories\ResumeRepository;
- use App\Repositories\ViewJobRepository;
- use App\Repositories\PersonFavoriteRepository;
- use App\Services\Common\PaymentService;
- use App\Services\Common\OrderService;
- use App\Services\Common\PayService;
- use App\Services\Company\ServiceService;
- use App\Services\Common\SmsService;
- use App\Services\Common\PmsService;
- use App\Models\AuditReason;
- use Aix\Sms\Contracts\Smser;
- use Aix\Pay\Data\PayOrder;
- use App\Repositories\ResumePrivacyRepository;
- class JobsService
- {
- protected $jobsRepository;
- protected $jobsContactRepository;
- protected $companyRepository;
- protected $membersSetmealRepository;
- protected $personalJobsApplyRepository;
- protected $auditReasonsRepository;
- protected $refreshLogRepository;
- protected $memberPointRepository;
- protected $setmealRepository;
- protected $jobsSearchRepository;
- protected $memberHandselRepository;
- protected $membersSetmealLogRepository;
- protected $app_spell = true;
- protected $categoryRepository;
- protected $categoryJobsRepository;
- protected $categoryDistrictRepository;
- protected $resumeRepository;
- protected $viewJobRepository;
- protected $personFavoriteRepository;
- protected $queueAutoRefreshRepository;
- protected $orderRepository;
- protected $companyStatisticsRepository;
- protected $jobfairJobRepository;
- protected $jobfairJobsContactRepository;
- protected $subsiteJobRepository;
- protected $paymentService;
- protected $orderService;
- protected $payService;
- protected $serviceService;
- protected $ResumePrivacyRepository;
- protected $memberLogRepository;
- protected $smsService;
- protected $pmsService;
- /**
- * JobsService constructor.
- */
- public function __construct
- ( JobsRepository $jobsRepository,
- ServiceService $serviceService,
- PayService $payService,
- SubsiteJobRepository $subsiteJobRepository,
- JobfairJobsContactRepository $jobfairJobsContactRepository,
- JobfairJobRepository $jobfairJobRepository,
- CompanyStatisticsRepository $companyStatisticsRepository,
- OrderRepository $orderRepository,
- QueueAutoRefreshRepository $queueAutoRefreshRepository,
- SetmealRepository $setmealRepository,
- MemberPointRepository $memberPointRepository,
- JobsContactRepository $jobsContactRepository,
- CompanyRepository $companyRepository,
- MemberSetmealRepository $memberSetmealRepository,
- PersonalJobsApplyRepository $personalJobsApplyRepository,
- AuditReasonsRepository $auditReasonsRepository,
- RefreshLogRepository $refreshLogRepository,
- CategoryRepository $categoryRepository,
- CategoryJobsRepository $categoryJobsRepository,
- CategoryDistrictRepository $categoryDistrictRepository,
- ResumeRepository $resumeRepository,
- ViewJobRepository $viewJobRepository,
- PersonFavoriteRepository $personFavoriteRepository,
- MembersSetmealLogRepository $membersSetmealLogRepository,
- MemberHandselRepository $memberHandselRepository,
- PaymentService $paymentService,
- OrderService $orderService,
- ResumePrivacyRepository $ResumePrivacyRepository,
- MemberLogRepository $memberLogRepository,
- SmsService $smsService,
- PmsService $pmsService
- )
- {
- $this->jobsRepository = $jobsRepository;
- $this->jobsContactRepository = $jobsContactRepository;
- $this->companyRepository = $companyRepository;
- $this->membersSetmealRepository = $memberSetmealRepository;
- $this->personalJobsApplyRepository = $personalJobsApplyRepository;
- $this->auditReasonsRepository = $auditReasonsRepository;
- $this->refreshLogRepository = $refreshLogRepository;
- $this->memberPointRepository = $memberPointRepository;
- $this->setmealRepository = $setmealRepository;
- $this->memberHandselRepository = $memberHandselRepository;
- $this->membersSetmealLogRepository = $membersSetmealLogRepository;
- $this->categoryRepository = $categoryRepository;
- $this->categoryJobsRepository = $categoryJobsRepository;
- $this->categoryDistrictRepository = $categoryDistrictRepository;
- $this->resumeRepository = $resumeRepository;
- $this->viewJobRepository = $viewJobRepository;
- $this->personFavoriteRepository = $personFavoriteRepository;
- $this->queueAutoRefreshRepository = $queueAutoRefreshRepository;
- $this->orderRepository = $orderRepository;
- $this->companyStatisticsRepository = $companyStatisticsRepository;
- $this->jobfairJobRepository = $jobfairJobRepository;
- $this->jobfairJobsContactRepository = $jobfairJobsContactRepository;
- $this->subsiteJobRepository = $subsiteJobRepository;
- $this->paymentService = $paymentService;
- $this->orderService = $orderService;
- $this->payService = $payService;
- $this->serviceService = $serviceService;
- $this->ResumePrivacyRepository = $ResumePrivacyRepository;
- $this->memberLogRepository=$memberLogRepository;
- $this->smsService = $smsService;
- $this->pmsService = $pmsService;
- }
- public function getJobs($where, $where_in, $order_by = '', $fileds = '', $offset = '', $limit = '')
- {
- $rst = $this->jobsRepository->getCrmJobs($where, $where_in, $order_by, $fileds, $offset, $limit);
- return $rst;
- }
- public function getJobNums($where, $where_in)
- {
- $rst = $this->jobsRepository->getCrmJobCount($where, $where_in);
- return $rst;
- }
- public function dealjobFilelds($list, $map_data = array(), $limit = '')
- {
- $return_list = array();
- foreach ($list as $key => $val) {
- if ($limit && ($key >= $limit)) {
- break;
- }
- $arr = $val->toArray();
- $arr['jobs_name']=cut_str($val->jobs_name, 12, 0, "...");
- $arr['companyname']=cut_str($val->company_name, 18, 0, "...");
- $arr['company_url'] = route(url_rewrite('AIX_companyshow'), ['id'=> $val->company_id]);
- $arr['jobs_url'] = route(url_rewrite('AIX_jobslist'), ['id'=> $val->id]);
- $arr['minwage'] = $val->wage_min;
- $return_list[$key] = $arr;
- }
- return $return_list;
- }
- public function getAutoRefreshJobs($where, $group_by)
- {
- $rst = $this->queueAutoRefreshRepository->getCrmRefreshs($where, $group_by);
- return $rst;
- }
- public function auditJobs($data){
- $ids = '';
- if (array_has($data, 'id')) {
- $ids = $data['id'];
- }
- if (!$ids) {
- return ['status'=>0,'msg'=>'请选择要审核的职位'];
- }
- $id = explode(',', $ids);
- $job_com_ids =$this->jobsRepository->findWhereIn('id', $id, ['company_id','id','jobs_name'])->toArray();
- $reason = '';
- if (array_has($data, 'reason')) {
- $reason = $data['reason'];
- }
- $audit = 0;
- if (array_has($data, 'audit')) {
- $audit = $data['audit'];
- }
- $data = ['audit'=>$audit];
- $auditusername = 'CRM业务员';
- if (array_has($data, 'auditusername')) {
- $auditusername = $data['auditusername'];
- }
- if (Jobs::jobsUpdate($id, $data)) {
- event_search_update(Jobs::class, implode(',', $id), 'update');
- if ($job_com_ids) {
- $company_ids = [];
- foreach ($company_ids as $k => $c) {
- $company_ids[] = $c['company_id'];
- }
- $company_condition = [['whereIn','id', $company_ids]];
- event_search_update(Company::class, $company_condition, 'update');
- }
- switch ($audit) {
- case 1:
- $html = "通过审核";
- $alias=Smser::TEMPLATE_SMS_JOBSALLOW;
- break;
- case 3:
- $html = "未通过审核";
- $alias=Smser::TEMPLATE_SMS_JOBSNOTALLOW;
- break;
- }
- $mobile = [];
- foreach ($id as $key => $val) {
- $jobsInfo = Jobs::with('jobsContact')->find($val);
- if ($jobsInfo->jobsContact && $jobsInfo->jobsContact->telephone) {
- if(!in_array($jobsInfo->jobsContact->telephone, $mobile)){
- $mobile[] = $jobsInfo->jobsContact->telephone;
- $this->smsService->sendSms($jobsInfo->jobsContact->telephone, $alias, ['sitename'=>config('aix.system.site.site.site_name'),'jobsname'=>$jobsInfo->jobs_name,'sitedomain'=>config('aix.system.site.site.site_domain')]);
- }
- }
- }
- //审核日志
- $auditData= [];
- $auditData['ids'] = $id;
- $auditData['status'] = $audit;
- $auditData['type'] = 3;
- $auditData['reason'] = $reason;
- if ($auditusername) {
- $auditData['audit_man'] = $auditusername;
- }
- AuditReason::addData($auditData);
- // 站内信
- $insertData = [];
- foreach ($job_com_ids as $key => $val) {
- $insertData[$key] = array(
- 'utype' => 1,
- 'msgtype' => 1,
- 'msgfromuid' => 0,
- 'msgfrom' => $auditusername,
- 'msgtoname' =>getComUserName($val['company_id']),
- 'msgtouid' => $val['company_id'],
- 'message' => '职位ID:'.$val['id'].',职位名称:'.$val['jobs_name'].','.$html.',【备注】'.$reason,
- 'new' => 1,
- 'created_at' =>date('Y-m-d H:i:s', time()),
- 'updated_at' =>date('Y-m-d H:i:s', time()),
- );
- }
- $this->pmsService->addBatchPms($insertData);
- return ['status'=>1,'msg'=>'职位审核成功'];
- } else {
- return ['status'=>0,'msg'=>'职位审核失'];
- }
- }
- public function getJobInfo($id)
- {
- $info = $this->jobsRepository->getCrmInfo(['id'=>$id]);
- if (!$info) {
- return ['status'=>0, 'msg'=>'没有找到对应的职位!'];
- }
- $info->companyname = $info->company_name;
- $info->user = $info->company;
- $info->contact = $info->jobsContact;
- $info->contents = $info->jobs_content;
- $info->addtime = strtotime($info->created_at);
- $info->refreshtime = $info->refresh_time;
- if ($info->wage == -1) {
- $info->negotiable = 1;
- }
- $info->minwage = $info->wage_min;
- $info->maxwage = $info->wage_max;
- //职位亮点
- $tag_cn = [];
- if ($info->tag) {
- foreach ($info->tag as $k => $v) {
- if ($tag = get_category($v)) {
- $tag_cn[] = $tag;
- }
- }
- }
- $info->tag_cn = implode(',', $tag_cn);
- //职位性质
- $info->nature_cn = get_category($info->nature);
- //工作地区
- $district_cn = [];
- $district = string_to_array('.', $info->district);
- foreach ($district as $key => $val) {
- $district_cn[] = get_district_cn($val);
- }
- $info->district_cn = implode(',', $district_cn);
- //职位类别
- $category_cn = '';
- if ($info->subclass) {
- $category_cn = get_job_category($info->subclass);
- } elseif ($info->category) {
- $category_cn = get_job_category($info->category);
- }
- $info->category_cn = $category_cn;
- $info->education_cn = $info->education?get_category($info->education):'不限'; //学历要求
- $info->experience_cn = $info->experience?get_category($info->experience):'不限'; //工作经验
- //性别
- $sex_cn = '不限';
- if ($info->sex == 1) {
- $sex_cn = '男';
- } elseif ($info->sex == 2) {
- $sex_cn = '女';
- } else {
- $sex_cn = '不限';
- }
- $info->sex_cn = $sex_cn;
- //年龄要求
- $info->minage = 0;
- $info->maxage = 0;
- $age = $info->age;
- if ($info->age[0]) {
- $info->minage = $info->age[0];
- }
- if ($info->age[1]) {
- $info->maxage = $info->age[1];
- }
- //处理固定电话
- $tels =[];
- if ($info->jobsContact) {
- $tel_arr = $info->jobsContact->landline_tel;
- if ($tel_arr) {
- if (implode('', $tel_arr)) {
- foreach ($tel_arr as $k => $v) {
- if ($v == '') {
- unset($tel_arr[$k]);
- }
- }
- }
- $tels = $tel_arr;
- }
- }
- $info->telarray = $tels;
- return ['status'=>1, 'msg'=>$info];
- }
- //获取智能刷新职位
- public function getAutoRefresh($where)
- {
- return $this->queueAutoRefreshRepository->findData($where);
- }
- }
|