| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277 | <?php/** * Created by PhpStorm. * User: michaelwu * Date: 2018/11/14 * Time: 9:40 */namespace App\Http\Controllers\Web\Content;use App\Http\Controllers\Web\WebBaseController;use App\Services\Company\JobsService;use Illuminate\Http\Request;use App\Exceptions\ResponseException;use App\Services\Company\CompanyService;use App\Validators\Content\ReportValidatorRequest;use Illuminate\Support\Facades\View;class CompanyController extends WebBaseController{    protected $jobsService;    protected $companyService;    /**     * JobsController constructor.     * @param $jobsService     * @param $companyService     */    public function __construct(JobsService $jobsService, CompanyService $companyService)    {        $this->jobsService = $jobsService;        $this->companyService = $companyService;    }    public function companyShow(Request $request)    {        //获取企业信息        $preview = $request->input('preview', 0);        $company_id = $request->input('id');        $tpl = $request->input('tpl');        if ($preview && !$tpl) {            $back_url = \Illuminate\Support\Facades\URL::previous();            return $this->showMessage('模板不存在,请联系管理员!', $back_url, true, '上一页', '3');        }        $company_info = $this->companyService->getCompanyInfo(array(array('id','=',$company_id)));        $this->putSeoData('company', $company_info);        //在招职位        $jobs_where = array(            array('company_id','=',$company_info->id),            array('valid','=',1),            array('display','=',1)        );        $jobs_display = config('aix.companyset.comset.show_set.jobs_display');        if ($jobs_display == 1) {            $jobs_where[] = array('audit','=','1');        } else {            $jobs_where[] = array('audit','<>','3');        }        $jobs = $this->jobsService->getOtherJobs($jobs_where, 4);        $all_jobs = $this->jobsService->getOtherJobs($jobs_where);        if ($jobs->total() == 0) {            $jobs = null;            $all_jobs = null;        }        //相似职位信息。        $category_id = [];        $likeJobs = collect([]);        if(!empty($all_jobs)){            foreach ($all_jobs as $key=>$value){                if($value->category){                    $category_id[$key] = $value->category;                }            }            $category_id = array_unique($category_id);        }        if($category_id){            $new_jobs = array_diff_key($jobs_where,[0]);            $likeJobs = $this->jobsService->getOtherJobs($new_jobs, 6,1,$category_id);        }        //看过该公司的人还看过(获取相同行业的企业)        $company_where = array(            'trade' => $company_info->trade,            'except_id' =>$company_info->id        );        $other_companys = $this->companyService->getOtherCompanies($company_where, 5);        $user = $this->getUser();        if ($user && $user->utype==2) {            //获取当前时间段内申请过的职位            $space_time = (integer)config('aix.personal_set.per_set.per_set.apply_job_space');            if ($space_time>0) {                $stime = date('Y-m-d H:i:s', strtotime(date("Y-m-d", strtotime("-".$space_time." day"))));                $apply_where = array(array('personal_uid','=',auth('web-member')->user()->id),array('created_at','>=',$stime));            } else {                $apply_where = array(array('personal_uid','=',auth('web-member')->user()->id));            }            $applys = $this->jobsService->getApplyJobs($apply_where);        } else {            $applys = array();        }        $return_data = array(            'info'=>$company_info,            'jobs'=>$jobs,            'applys' => $applys,            'all_jobs'=>$all_jobs,            'other_companys'=>$other_companys,            'company_img' => $company_info->img,            'tpl'         => $tpl,            'likeJobs'=>$likeJobs,            'category_id'=>implode(',',$category_id)        );        if (!$tpl) {            $tpl = $company_info->tpl;            $is_scan = false;        } else {            $is_scan = true;        }        if ($tpl == 'default') {            return view('app.common.tpl_company.default.company_show', $return_data);        } else {            if (View::exists('company.'.$tpl.'.index')) {                $return_data['tpl'] = $tpl;                return view('company.'.$tpl.'.index', $return_data);            } else {                if ($is_scan) {                    $back_url = \Illuminate\Support\Facades\URL::previous();                    return $this->showMessage('模板不存在,请联系管理员!', $back_url, true, '上一页', '3');                } else {                    return view('app.common.tpl_company.default.company_show', $return_data);                }            }        }    }    public function moreCompany(Request $request)    {        $company_id = $request->input('id', 0);        if (!$company_id) {            return response()->json(['status'=>0, 'error'=>'参数错误!']);        }        $jobs_where = array(            array('company_id','=',$company_id),            array('valid','=',1),            array('display','=',1)        );        $jobs_display = config('aix.companyset.comset.show_set.jobs_display');        if ($jobs_display == 1) {            $jobs_where[] = array('audit','=','1');        } else {            $jobs_where[] = array('audit','<>','3');        }        $limit = $request->input('limit', 10);        $jobs = $this->jobsService->getOtherJobs($jobs_where, $limit);        if ($jobs->isEmpty()) {            return response()->json(['status'=>0, 'error'=>'没有更多职位了!']);        }        return response()->json(['status'=>1, 'jobs'=>json_encode($jobs->items()), 'jobs_num'=>count($jobs->items())]);    }    //关注企业    public function companyFocus(Request $request)    {        $company_id = $request->input('company_id');        if (!$company_id) {            throw new ResponseException('请选择要关注的企业!');        }        $rst = $this->companyService->focusCompany($company_id, auth('web-member')->user()->id);        return response()->json($rst);    }    //企业访客统计    public function addStatistics(Request $request)    {        $company_id = $request->input('company_id');        $rst = $this->companyService->addStatistics($company_id, 0, $this->getUser(), 0, 1);    }    public function getUser()    {        $user = array();        if (auth('web-member')->check()) {            $user = auth('web-member')->user();        } elseif (auth('web-company')->check()) {            $user = auth('web-company')->user();        }        return $user;    }    //在招职位页面    public function jobs(Request $request)    {        //获取企业信息        $company_id = $request->input('id');        $company_info = $this->companyService->getCompanyInfo(array(array('id','=',$company_id)));        $this->putSeoData('company', $company_info);        //在招职位        $jobs_where = array(            array('company_id','=',$company_info->id),            array('valid','=',1),            array('display','=',1)        );        $jobs_display = config('aix.companyset.comset.show_set.jobs_display');        if ($jobs_display == 1) {            $jobs_where[] = array('audit','=','1');        } else {            $jobs_where[] = array('audit','<>','3');        }        $jobs = $this->jobsService->getOtherJobs($jobs_where);        $user = $this->getUser();        if ($user && $user->utype==2) {            //获取当前时间段内申请过的职位            $space_time = (integer)config('aix.personal_set.per_set.per_set.apply_job_space');            if ($space_time>0) {                $stime = date('Y-m-d H:i:s', strtotime(date("Y-m-d", strtotime("-".$space_time." day"))));                $apply_where = array(array('personal_uid','=',auth('web-member')->user()->id),array('created_at','>=',$stime));            } else {                $apply_where = array(array('personal_uid','=',auth('web-member')->user()->id));            }            $applys = $this->jobsService->getApplyJobs($apply_where);        } else {            $applys = array();        }        //看过该公司的人还看过(获取相同行业的企业)        $company_where = array(            'trade' => $company_info->trade,            'except_id' =>$company_info->id        );        $other_companys = $this->companyService->getOtherCompanies($company_where, 5);        if ($request->input('tpl', '')) {            $tpl = $request->input('tpl', '');        } else {            $tpl = $company_info->tpl;        }        //相似职位信息。        $category_id = [];        $likeJobs = collect([]);        //在招职位bug,临时修改        if( !empty($jobs)){            foreach ($jobs as $key=>$value){                if($value->category){                    $category_id[$key] = $value->category;                }            }            $category_id = array_unique($category_id);        }        if($category_id){            $likeJobs = $this->jobsService->getOtherJobs($jobs_where, 6,1,$category_id);        }        if ($jobs->isEmpty()) {            $jobs = null;        }        $return_data = array(            'info'=>$company_info,            'jobs'=>$jobs,            'other_companys'=>$other_companys,            'applys' => $applys,            'tpl'    => $tpl,            'likeJobs'=>$likeJobs,            'category_id'=>implode(',',$category_id)        );        if ($tpl == 'default') {            return view('app.common.tpl_company.default.company_jobs', $return_data);        } else {            if (View::exists('company.'.$tpl.'.company_jobs')) {                $return_data['tpl'] = $tpl;                return view('company.'.$tpl.'.company_jobs', $return_data);            } else {                return view('app.common.tpl_company.default.company_jobs', $return_data);            }        }    }}
 |