作者 lyh

gx

@@ -532,70 +532,78 @@ class ProjectLogic extends BaseLogic @@ -532,70 +532,78 @@ class ProjectLogic extends BaseLogic
532 * @time :2023/11/8 14:23 532 * @time :2023/11/8 14:23
533 */ 533 */
534 public function copyProject(){ 534 public function copyProject(){
535 - //复制初始项目  
536 - $data = $this->model::where('id', $this->param['project_id'])->first();  
537 - $data = $data->getAttributes();  
538 - $data['type'] = 0;  
539 - $data['title'] = $data['title'].'-copy';  
540 - unset($data['id']);  
541 - $project_id = $this->model->insertGetId($data);  
542 - //复制部署表  
543 - $buildModel = new DeployBuild();  
544 - $buildData = $buildModel::where('project_id', $this->param['project_id'])->first();  
545 - if(!empty($buildData)){  
546 - $buildData = $buildData->getAttributes();  
547 - $buildData['project_id'] = $project_id;  
548 - $hashids = new Hashids('test_domain', 5, 'abcdefghjkmnpqrstuvwxyz1234567890');  
549 - $code = $hashids->encode($project_id);  
550 - $buildData['test_domain'] = 'https://v6-' . $code . '.globalso.site/';  
551 - unset($buildData['id']);  
552 - $buildModel->insert($buildData);  
553 - }  
554 - //复制优化表  
555 - $optimizeModel = new DeployOptimize();  
556 - $optimizeData = $optimizeModel::where('project_id', $this->param['project_id'])->first();  
557 - if(!empty($optimizeData)){  
558 - $optimizeData = $optimizeData->getAttributes();  
559 - unset($optimizeData['id'],$optimizeData['domain']);  
560 - $optimizeData['project_id'] = $project_id;  
561 - $optimizeModel->insert($optimizeData);  
562 - }  
563 - //复制付费表  
564 - $paymentModel = new Payment();  
565 - $paymentData = $paymentModel::where('project_id', $this->param['project_id'])->first();  
566 - if(!empty($paymentData)){  
567 - $paymentData = $paymentData->getAttributes();  
568 - unset($paymentData['id']);  
569 - $paymentData['project_id'] = $project_id;  
570 - $paymentModel->insert($paymentData);  
571 - }  
572 - //复制售后表  
573 - $afterModel = new After();  
574 - $afterData = $afterModel::where('project_id', $this->param['project_id'])->first();  
575 - if(!empty($afterData)){  
576 - $afterData = $afterData->getAttributes();  
577 - unset($afterData['id']);  
578 - $afterData['project_id'] = $project_id;  
579 - $afterModel->insert($afterData);  
580 - }  
581 - //复制用户  
582 - $userModel = new UserModel();  
583 - $userData = $userModel::where('project_id', $this->param['project_id'])->where('role_id',0)->first();  
584 - if(!empty($userData)){  
585 - $userData = $userData->getAttributes();  
586 - unset($userData['id']);  
587 - $userData['project_id'] = $project_id;  
588 - $userModel->insert($userData);  
589 - }  
590 - //复制设置的模版  
591 - $settingTemplateModel = new Setting();  
592 - $settingData = $settingTemplateModel::where('project_id', $this->param['project_id'])->first();  
593 - if(!empty($settingData)){  
594 - $settingData = $settingData->getAttributes();  
595 - unset($settingData['id']);  
596 - $settingData['project_id'] = $project_id;  
597 - $settingTemplateModel->insert($settingData); 535 + DB::beginTransaction();
  536 + try {
  537 + //复制初始项目
  538 + $data = $this->model::where('id', $this->param['project_id'])->first();
  539 + $data = $data->getAttributes();
  540 + $data['type'] = 0;
  541 + $data['title'] = $data['title'].'-copy';
  542 + unset($data['id']);
  543 + $project_id = $this->model->insertGetId($data);
  544 + //复制部署表
  545 + $buildModel = new DeployBuild();
  546 + $buildData = $buildModel::where('project_id', $this->param['project_id'])->first();
  547 + if(!empty($buildData)){
  548 + $buildData = $buildData->getAttributes();
  549 + $buildData['project_id'] = $project_id;
  550 + $hashids = new Hashids('test_domain', 5, 'abcdefghjkmnpqrstuvwxyz1234567890');
  551 + $code = $hashids->encode($project_id);
  552 + $buildData['test_domain'] = 'https://v6-' . $code . '.globalso.site/';
  553 + unset($buildData['id']);
  554 + $buildModel->insert($buildData);
  555 + }
  556 + //复制优化表
  557 + $optimizeModel = new DeployOptimize();
  558 + $optimizeData = $optimizeModel::where('project_id', $this->param['project_id'])->first();
  559 + if(!empty($optimizeData)){
  560 + $optimizeData = $optimizeData->getAttributes();
  561 + unset($optimizeData['id'],$optimizeData['domain']);
  562 + $optimizeData['project_id'] = $project_id;
  563 + $optimizeModel->insert($optimizeData);
  564 + }
  565 + //复制付费表
  566 + $paymentModel = new Payment();
  567 + $paymentData = $paymentModel::where('project_id', $this->param['project_id'])->first();
  568 + if(!empty($paymentData)){
  569 + $paymentData = $paymentData->getAttributes();
  570 + unset($paymentData['id']);
  571 + $paymentData['project_id'] = $project_id;
  572 + $paymentModel->insert($paymentData);
  573 + }
  574 + //复制售后表
  575 + $afterModel = new After();
  576 + $afterData = $afterModel::where('project_id', $this->param['project_id'])->first();
  577 + if(!empty($afterData)){
  578 + $afterData = $afterData->getAttributes();
  579 + unset($afterData['id']);
  580 + $afterData['project_id'] = $project_id;
  581 + $afterModel->insert($afterData);
  582 + }
  583 + //复制用户
  584 + $userModel = new UserModel();
  585 + $userData = $userModel::where('project_id', $this->param['project_id'])->where('role_id',0)->first();
  586 + if(!empty($userData)){
  587 + $userData = $userData->getAttributes();
  588 + unset($userData['id']);
  589 + $userData['project_id'] = $project_id;
  590 + $userModel->insert($userData);
  591 + }
  592 + //复制设置的模版
  593 + $settingTemplateModel = new Setting();
  594 + $settingData = $settingTemplateModel::where('project_id', $this->param['project_id'])->first();
  595 + if(!empty($settingData)){
  596 + $settingData = $settingData->getAttributes();
  597 + unset($settingData['id']);
  598 + $settingData['project_id'] = $project_id;
  599 + $settingTemplateModel->insert($settingData);
  600 + }
  601 + DB::commit();
  602 + }catch (\Exception $e){
  603 + DB::rollBack();
  604 + $this->fail('error');
598 } 605 }
  606 +
599 $this->copyMysql($this->param['project_id'],$project_id); 607 $this->copyMysql($this->param['project_id'],$project_id);
600 return $this->success($data); 608 return $this->success($data);
601 } 609 }