companyRepository = $companyRepository; $this->memberLogRepository=$memberLogRepository; } /** * Index interface. * * @param Content $content * @return Content */ public function index(Content $content) { return $content ->header('企业套餐') ->description('列表') ->body($this->grid()); } /** * Show interface. * * @param mixed $id * @param Content $content * @return Content */ public function show($id, Content $content) { return $content ->header('Detail') ->description('description') ->body($this->detail($id)); } public function detail($id) { $show = new Show(MembersSetmeal::findOrFail($id)); $show->setmeal_name('套餐名称'); $show->companys()->companyname('公司名称')->as(function ($companys) { return $companys->companyname; }); $show->companys()->username('用户名称')->as(function ($companys) { return $companys->username; }); $show->starttime('开始时间')->as(function ($starttime) { return date('Y-m-d H:i:s', $starttime); }); $show->endtime('结束时间')->as(function ($endtime) { if ($endtime!=0) { return $endtime; } return "永久"; }); $show->days('服务天数'); $show->jobs_meanwhile('在招职位数'); $show->jobfair_num('招聘会场次'); $show->refresh_jobs_free('职位免费刷新数'); $show->download_resume('下载简历数'); $show->download_resume_max('下载简历数上限'); $show->companys()->sms_num('短信数')->as(function ($companys) { return $companys->sms_num; }); $show->show_apply_contact('收到简历的联系方式')->as(function ($show_apply_contact) { switch ($show_apply_contact) { case 0: return "需下载"; break; case 1: return "免费查看"; break; } }); $show->expense('收费金额'); $show->added('其他说明'); return $show; } /** * Edit interface. * * @param mixed $id * @param Content $content * @return Content */ public function edit($id, Content $content) { Permission::check('setmeal_manager'); return $content ->header('企业套餐') ->description('修改') ->body($this->eidtForm()->edit($id)); } /** * Make a grid builder. * * @return Grid */ protected function grid() { Permission::check('setmeal_manager_companysetmeal_index'); $grid = new Grid(new MembersSetmeal); $grid->model()->where('utype', 1)->whereHas('companys')->when(get_subsite_id()>0, function ($querys) { $querys->whereHas('companys', function ($query) { $query->where('subsite_id', get_subsite_id()); }); })->orderBy('id', 'desc'); $grid->setmeal_name('套餐名称'); $grid->column('companys.companyname', '公司名称'); $grid->column('companys.username', '用户名称'); $grid->starttime('开始时间')->display(function ($starttime) { return date('Y-m-d H:i:s', $starttime); }); $grid->endtime('结束时间')->display(function ($endtime) { if ($endtime) { return $endtime; } return "永久"; }); $grid->actions(function ($actions) { if (Admin::user()->can('setmeal_manager_index_edit')) { $actions->disableEdit(false); } }); $grid->filter(function ($filter) { $filter->equal('uid', '企业ID'); $filter->like('companys.companyname', '企业名称'); $filter->like('companys.username', '用户名称'); $filter->equal('setmeal_id', '企业套餐')->select(Setmeal::get()->pluck('setmeal_name', 'id')); $filter->between('starttime', '开始时间')->datetime(); $filter->between('endtime', '结束时间')->datetime(); }); return $grid; } public function eidtForm($setmeal_manager_index_edit=true) { //有在业务中的套餐修改用了,就不验证权限了 if ($setmeal_manager_index_edit){ Permission::check('setmeal_manager_index_edit'); } $form = new Form(new MembersSetmeal); $form->display('id'); $form->display('companys.companyname', '企业名称'); $form->display('setmeal_name', '套餐名称'); $form->display('setmealtime', '服务时间')->with(function () { return '起:'.date('Y-m-d H:i:s', $this->starttime).' ~ 止:'.($this->endtime ==0?"无限制":$this->endtime); }); $form->datetime('endtime', '到期时间'); $form->text('dayes', '服务天数')->help("默认为空表示不做修改,0为不限制,如填写3则延长3天,-3则减少3天"); $form->hidden('days', "服务天数"); $form->number('jobs_meanwhile', '在招职位数')->min(0); $form->number('jobfair_num', '招聘会场次')->min(0); $form->number('refresh_jobs_free', '职位免费刷新数')->min(0); $form->number('download_resume', '下载简历数')->min(0); $form->number('download_resume_max', '下载简历数上限')->min(0); $form->number('companys.sms_num', '短信数')->min(0); $form->radio('show_apply_contact', '收到简历的联系方式')->options([0=>'需下载',1=>'免费查看']); $form->switch('is_money', '是否已收费'); $form->text('expense', '收费金额'); $form->text('added', '其他说明'); $form->hidden('uid'); $form->hidden('utype'); $form->hidden('companys.username'); $form->hidden('setmeal_id'); $form->hidden('setmeal_name'); $form->hidden('is_money'); $form->hidden('amount'); $form->hidden('starttime'); return $form; } public function store() { return $this->form()->store(); } /** * @param $id * @param ServiceService $serviceService * @param CompanyRepository $companyRepository * @return \Illuminate\Http\RedirectResponse|\Symfony\Component\HttpFoundation\Response * @throws \Prettus\Validator\Exceptions\ValidatorException * 注意改动此方法会影响到企业管理-业务-套餐管理的功能 */ public function update($id,ServiceService $serviceService,CompanyRepository $companyRepository) { $data1 = Input::except('_token', '_method'); //是否验证企业-套餐管理-修改 这个权限 $setmeal_manager_index_edit=false; //在业务套餐修改中复用了此处并加上了更换套餐 if (isset($data1['setmeal']) && $data1['setmeal']==1){ //只更换套餐 ,为1就是返回和修改套餐 $data['setmeal_id'] = $data1['setmeal_id']; $setmeal = Setmeal::where('display', 1)->list()->pluck('setmeal_name', 'id')->toArray(); $data['setmeal_name'] =$setmeal[$data['setmeal_id']]; }else{ $setmeal_manager_index_edit=true; Permission::check('setmeal_manager_index_edit'); $data['jobs_meanwhile'] = $data1['jobs_meanwhile']; $data['jobfair_num'] = $data1['jobfair_num'];//招聘会场次 $data['refresh_jobs_free'] = $data1['refresh_jobs_free']; $data['download_resume'] = $data1['download_resume']; $data['download_resume_max'] = $data1['download_resume_max']; $data['show_apply_contact'] = $data1['show_apply_contact']; $data['added'] = $data1['added']; if ($data1['endtime'] != '' && $data1['endtime'] != 0) { $data['endtime'] = strtotime($data1['endtime']); } else { $data['endtime'] = 0; } if ($data1['dayes'] <> '') { if ($data1['dayes'] <> 0) { $oldtime = strtotime($data1['endtime']); $data['days'] = abs($data1['dayes']); $data['endtime'] = strtotime(''.$data1['dayes'].' days', $oldtime==''?time():$oldtime); } else { $data['endtime'] = 0; } } if ($data1['dayes'] < 0) { $act = "-"; if($data["endtime"]<=$data1["starttime"]){ $error = new MessageBag([ 'title' => '提示', 'message' => "到期日期不得小于等于开始日期", ]); return back()->with(compact('error')); } } else if ($data1['dayes'] > 0) { $act = "+"; } else { $act = ''; } $this->companyRepository->save(['sms_num'=>$data1['companys']['sms_num']], $data1['uid']); unset($data['dayes']); } $updateInfo=$this->eidtForm($setmeal_manager_index_edit)->update($id, $data); //更新完在去跑定时任务 dispatch(new ClearExpiredSetmealJob()); //清理过期的会员套餐 if (isset($data1['setmeal']) && $data1['setmeal']==1){ $membersSetmeal=MembersSetmeal::find($id); $user = $companyRepository->getCompanyInfo(['id'=>$membersSetmeal->uid]); //直接调用公共的就OK了 $serviceService->setMembersSetmeal($user,$data1['setmeal_id']); $amount = 0; if ($data1['is_money']) { $amount = $data1['amount']; } $logData['log_uid'] = $id; $logData['log_utype'] = 1; $logData['log_username'] = $user->username; $logData['log_value'] = "操作人:".Admin::user()->username.",说明:修改会员:{$user->username}套餐,(+收费".$amount."元)"; $logData['log_amount'] = $amount; $logData['log_ismoney'] = $data1['is_money']; $logData['log_type'] = 2; $logData['log_mode'] = 1; if (!MembersChargeLog::create($logData)) { throw new \Exception('企业增加记录失败'); } } if (isset($data1['setmeal'])) { return back(); } return $updateInfo; } public function SetmealRecord(Request $request,$Api=false) { $id = $request->id; $headers = ['setmeal_name'=>"套餐名称", 'starttime'=>'开始时间', 'endtime'=>'到期时间']; $data = []; $data=MembersSetmealsRecord::where(['uid'=>$id])->select('setmeal_name','starttime','endtime')->orderBy('id', 'desc')->get()->toArray(); for ($i=0;$i$table->render(),'detail'=>'套餐购买记录']; } }