|
@@ -9,13 +9,29 @@
|
|
|
namespace App\Http\Controllers\API;
|
|
|
|
|
|
|
|
|
+use App\Mail\CompanyAction;
|
|
|
+use App\Models\CaptchaMail;
|
|
|
+use App\Models\Enums\FileObjectType;
|
|
|
+use App\Models\File;
|
|
|
+use App\Models\Role;
|
|
|
+use App\Services\Notification\ActionEmail\ActionEmailService;
|
|
|
+use Illuminate\Mail\Mailable;
|
|
|
+use Illuminate\Support\Facades\DB;
|
|
|
+use Illuminate\Support\Facades\Hash;
|
|
|
+use Illuminate\Support\Facades\Mail;
|
|
|
+use function App\Http\Controllers\badRequest;
|
|
|
use App\Http\Controllers\Controller;
|
|
|
+
|
|
|
+use App\Http\Requests\API\Company\ActionRequest;
|
|
|
use App\Http\Requests\API\Company\CreateOrUpdateRequest;
|
|
|
use App\Http\Resources\API\CompanyResource;
|
|
|
use App\Models\Company;
|
|
|
use App\Models\User;
|
|
|
+use App\Services\File\FileAssociationService;
|
|
|
+use Carbon\Carbon;
|
|
|
use Illuminate\Http\Request;
|
|
|
use Illuminate\Support\Facades\Auth;
|
|
|
+use App\Models\Enums\CompanyReviewStatus;
|
|
|
|
|
|
class CompanyController extends Controller
|
|
|
{
|
|
@@ -77,4 +93,79 @@ class CompanyController extends Controller
|
|
|
|
|
|
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){
|
|
|
+ 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 此处给的默认角色为硬编码,暂未设置默认角色为哪个
|
|
|
+ $role = Role::query()->findOrFail($roleId);
|
|
|
+ $user->syncRoles($role);
|
|
|
+// $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,$rejectReason));
|
|
|
+ return $this->noContent();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
}
|