super_admin){ $company=Company::query()->filter($request->all())->get(); return CompanyResource::collection($company); }else{ $company=Auth::user()->company; return new CompanyResource($company); } } public function store(CreateOrUpdateRequest $request) { $company = new Company(); $company->fill([ ...$request->all(), ]); $company->save(); return $this->created(); } public function show(string $id) { $companyId=Auth::user()->company->id; if(empty(Auth::user()->super_admin)){ if($companyId!=$id){ return $this->forbidden("You are not a user under this company"); } } $field = Company::query()->findOrFail($id); return new CompanyResource($field); } public function update(Request $request,string $id){ $company = Company::findOrFail($id); $company->email =$request->email; $company->save(); return $this->noContent(); } public function destroy(string $id) { $company = Company::findOrFail($id); $company->delete(); return $this->noContent(); } //注册用户时注册公司 public function registerCompany(FileAssociationService $service,CreateOrUpdateRequest $request) { $company = new Company(); $service->check( $request->get("file_ids",[]), FileObjectType::COMPANY, $request->get("file_uuid"), ); $company->fill([ ...$request->all(), ]); $company->save(); $service->association($company->id); return $this->created(); } //公司审核 public function action(ActionRequest $request){ $company = Company::findOrFail($request->id); $status=$request->get('status'); $expDate=$request->get('exp_data'); $user = new User(); //通过审核->改变公司状态->设置公司过期时间->最后生成默认账户 DB::transaction(function () use($status,$expDate,$company,$user){ if ($status == 1){ //1.改变公司状态->设置公司过期时间 $company->review_status=CompanyReviewStatus::APPROVED; $company->exp_date = $expDate === null ? Carbon::now()->addYear()->toDateString():$expDate; //2.生成默认账户 $user->name='admin_'.$company->name; $user->email=$company->email; $user->username=$company->email; $user->company_id=$company->id; $user->password=Hash::make('admin@#123'); //TODO 此处给的默认角色为硬编码,暂未设置默认角色为哪个 $user->role_id=6; $user->syncRoles(6); $user->save(); }else{ $company->review_status=CompanyReviewStatus::REJECTED; } //公司保存 $company->save(); }); //发送邮件到公司账户 Mail::to($company->email)->send(new CompanyAction($company,$user)); return $this->noContent(); } }