get('page_size') ?? 0; if(Auth::user()->super_admin){ $company=Company::query()->filter($request->all())->paginate($pageSize); make_display_id($company,$pageSize); return CompanyResource::collection($company); }else{ $companyId=Auth::user()->company->id; $company=Company::query()->filter($request->all())->where('id',$companyId)->paginate($pageSize); make_display_id($company,$pageSize); return CompanyResource::collection($company); } } public function publicSearch(Request $request){ $company=Company::query()->filter($request->all())->where('id',Auth::user()->company->id)->get(); return CompanyResource::collection($company); } public function store(CreateOrUpdateRequest $request) { $company = new Company(); $company->fill([ ...$request->all(), 'review_status'=>CompanyReviewStatus::APPROVED, 'exp_date'=> $request->exp_date === null ? Carbon::now()->addYear()->toDateString():$request->exp_date, ]); $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->exp_date =$request->exp_date; $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(); $company->fill([ ...$request->all(), ]); $company->save(); $this->filesAssociationCompany($request->get("file_ids", []), FileObjectType::COMPANY,$company->id); return $this->created(); } public function filesAssociationCompany(array $fileIds, FileObjectType $fileObjectType,string $companyId){ if (! $fileIds) { return; } foreach ($fileIds as $fileId){ $file=File::query() ->where('object_type',$fileObjectType->value) ->whereNull("object_id") ->where('id',$fileId) ->first(); $file->company_id=$companyId; $file->object_id =$companyId; $file->save(); } } //公司审核 public function action(ActionRequest $request){ $company = Company::findOrFail($request->id); $status=$request->get('status'); $expDate=$request->get('exp_date'); $roleId=$request->get('role_id'); $rejectReason=$request->get('reject_reason'); $user = new User(); //通过审核->改变公司状态->设置公司过期时间->最后生成默认账户 DB::transaction(function () use($status,$expDate,$company,$user,$roleId,$rejectReason){ 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'); $user->role_id=$roleId; //TODO 此处给的默认角色为硬编码,暂未设置默认角色为哪个 $role = Role::query()->findOrFail($roleId); $user->syncRoles($role); // $user->role_id=6; // $user->syncRoles(6); $user->save(); $company->save(); Mail::to($company->email)->send(new CompanyAction($company,$user,$rejectReason??'')); }else{ $company->review_status=CompanyReviewStatus::REJECTED; $company->save(); Mail::to($company->email)->send(new CompanyAction($company,$user,$rejectReason??'')); $company->delete(); } }); return $this->noContent(); } }