正在显示
1 个修改的文件
包含
94 行增加
和
21 行删除
| @@ -9,6 +9,7 @@ | @@ -9,6 +9,7 @@ | ||
| 9 | 9 | ||
| 10 | namespace App\Console\Commands\Project; | 10 | namespace App\Console\Commands\Project; |
| 11 | 11 | ||
| 12 | +use App\Models\Com\NoticeLog; | ||
| 12 | use App\Models\Project\After; | 13 | use App\Models\Project\After; |
| 13 | use App\Models\Project\DeployBuild; | 14 | use App\Models\Project\DeployBuild; |
| 14 | use App\Models\Project\DeployOptimize; | 15 | use App\Models\Project\DeployOptimize; |
| @@ -42,11 +43,46 @@ class CopyProject extends Command | @@ -42,11 +43,46 @@ class CopyProject extends Command | ||
| 42 | public function handle() | 43 | public function handle() |
| 43 | { | 44 | { |
| 44 | $projectModel = new Project(); | 45 | $projectModel = new Project(); |
| 45 | - DB::beginTransaction(); | ||
| 46 | - try { | 46 | + while (true) { |
| 47 | $this->output('CopyProjectJob start, project_id: ' . $this->param['project_id']); | 47 | $this->output('CopyProjectJob start, project_id: ' . $this->param['project_id']); |
| 48 | - //复制初始项目 | ||
| 49 | - $data = $projectModel::where('id', $this->param['project_id'])->first(); | 48 | + $list = NoticeLog::where('type', NoticeLog::TYPE_COPY_PROJECT)->where('status', NoticeLog::STATUS_PENDING)->get(); |
| 49 | + if(empty($list)){ | ||
| 50 | + sleep(5); | ||
| 51 | + continue; | ||
| 52 | + } | ||
| 53 | + foreach ($list as $item){ | ||
| 54 | + try { | ||
| 55 | + $data = $item['data']['project_id']; | ||
| 56 | + $old_project_id = $data['project_id']; | ||
| 57 | + $type = $data['type']; | ||
| 58 | + $project_id = $this->copyProject($old_project_id); | ||
| 59 | + $this->copyDeployBuild($old_project_id,$project_id); | ||
| 60 | + $this->copyDeployOptimize($old_project_id,$project_id); | ||
| 61 | + $this->copyPayment($old_project_id,$project_id); | ||
| 62 | + $this->copyAfter($old_project_id,$project_id); | ||
| 63 | + $this->copyUser($old_project_id,$project_id); | ||
| 64 | + if($type != 0){ | ||
| 65 | + $this->copyMysql($old_project_id,$project_id); | ||
| 66 | + } | ||
| 67 | + //修改项目状态 | ||
| 68 | + $projectModel->edit(['delete_status'=>0],['id'=>$project_id]); | ||
| 69 | + $this->output('CopyProjectJob end, old project_id: ' . $old_project_id . ', new project_id: ' . $project_id); | ||
| 70 | + $item->status = NoticeLog::STATUS_SUCCESS; | ||
| 71 | + $item->save(); | ||
| 72 | + }catch (\Exception $e){ | ||
| 73 | + echo 'error:' . $item['id'] . $e->getMessage() . PHP_EOL . date('Y-m-d H:i:s'); | ||
| 74 | + errorLog('项目初始化失败', $item, $e); | ||
| 75 | + $item->status = NoticeLog::STATUS_FAIL; | ||
| 76 | + $item->save(); | ||
| 77 | + } | ||
| 78 | + } | ||
| 79 | + } | ||
| 80 | + return true; | ||
| 81 | + } | ||
| 82 | + | ||
| 83 | + public function copyProject($old_project_id){ | ||
| 84 | + $projectModel = new Project(); | ||
| 85 | + $data = $projectModel::where('id', $old_project_id)->first(); | ||
| 50 | $data = $data->getAttributes(); | 86 | $data = $data->getAttributes(); |
| 51 | $type = $data['type']; | 87 | $type = $data['type']; |
| 52 | $data['type'] = 0; | 88 | $data['type'] = 0; |
| @@ -68,9 +104,20 @@ class CopyProject extends Command | @@ -68,9 +104,20 @@ class CopyProject extends Command | ||
| 68 | ]; | 104 | ]; |
| 69 | $settingTemplateModel->add($data); | 105 | $settingTemplateModel->add($data); |
| 70 | } | 106 | } |
| 107 | + return ['project_id'=>$project_id,'type'=>$type]; | ||
| 108 | + } | ||
| 109 | + | ||
| 110 | + /** | ||
| 111 | + * @remark :复制部署表 | ||
| 112 | + * @name :copyDeployBuild | ||
| 113 | + * @author :lyh | ||
| 114 | + * @method :post | ||
| 115 | + * @time :2025/1/15 14:59 | ||
| 116 | + */ | ||
| 117 | + public function copyDeployBuild($old_project_id,$project_id){ | ||
| 71 | //复制部署表 | 118 | //复制部署表 |
| 72 | $buildModel = new DeployBuild(); | 119 | $buildModel = new DeployBuild(); |
| 73 | - $buildData = $buildModel::where('project_id', $this->param['project_id'])->first(); | 120 | + $buildData = $buildModel::where('project_id', $old_project_id)->first(); |
| 74 | if(!empty($buildData)){ | 121 | if(!empty($buildData)){ |
| 75 | $buildData = $buildData->getAttributes(); | 122 | $buildData = $buildData->getAttributes(); |
| 76 | $buildData['project_id'] = $project_id; | 123 | $buildData['project_id'] = $project_id; |
| @@ -80,9 +127,20 @@ class CopyProject extends Command | @@ -80,9 +127,20 @@ class CopyProject extends Command | ||
| 80 | unset($buildData['id']); | 127 | unset($buildData['id']); |
| 81 | $buildModel->insert($buildData); | 128 | $buildModel->insert($buildData); |
| 82 | } | 129 | } |
| 130 | + return true; | ||
| 131 | + } | ||
| 132 | + | ||
| 133 | + /** | ||
| 134 | + * @remark :复制优化表 | ||
| 135 | + * @name :copyDeployOptimize | ||
| 136 | + * @author :lyh | ||
| 137 | + * @method :post | ||
| 138 | + * @time :2025/1/15 15:02 | ||
| 139 | + */ | ||
| 140 | + public function copyDeployOptimize($old_project_id,$project_id){ | ||
| 83 | //复制优化表 | 141 | //复制优化表 |
| 84 | $optimizeModel = new DeployOptimize(); | 142 | $optimizeModel = new DeployOptimize(); |
| 85 | - $optimizeData = $optimizeModel::where('project_id', $this->param['project_id'])->first(); | 143 | + $optimizeData = $optimizeModel::where('project_id', $old_project_id)->first(); |
| 86 | if(!empty($optimizeData)){ | 144 | if(!empty($optimizeData)){ |
| 87 | $optimizeData = $optimizeData->getAttributes(); | 145 | $optimizeData = $optimizeData->getAttributes(); |
| 88 | unset($optimizeData['id'],$optimizeData['domain'],$optimizeData['backlink'],$optimizeData['ai_video']); | 146 | unset($optimizeData['id'],$optimizeData['domain'],$optimizeData['backlink'],$optimizeData['ai_video']); |
| @@ -90,45 +148,59 @@ class CopyProject extends Command | @@ -90,45 +148,59 @@ class CopyProject extends Command | ||
| 90 | $optimizeData['api_no'] = 0; | 148 | $optimizeData['api_no'] = 0; |
| 91 | $optimizeModel->insert($optimizeData); | 149 | $optimizeModel->insert($optimizeData); |
| 92 | } | 150 | } |
| 151 | + return true; | ||
| 152 | + } | ||
| 153 | + | ||
| 154 | + /** | ||
| 155 | + * @remark :复制付费表 | ||
| 156 | + * @name :copyPayment | ||
| 157 | + * @author :lyh | ||
| 158 | + * @method :post | ||
| 159 | + * @time :2025/1/15 15:03 | ||
| 160 | + */ | ||
| 161 | + public function copyPayment($old_project_id,$project_id){ | ||
| 93 | //复制付费表 | 162 | //复制付费表 |
| 94 | $paymentModel = new Payment(); | 163 | $paymentModel = new Payment(); |
| 95 | - $paymentData = $paymentModel::where('project_id', $this->param['project_id'])->first(); | 164 | + $paymentData = $paymentModel::where('project_id', $old_project_id)->first(); |
| 96 | if(!empty($paymentData)){ | 165 | if(!empty($paymentData)){ |
| 97 | $paymentData = $paymentData->getAttributes(); | 166 | $paymentData = $paymentData->getAttributes(); |
| 98 | unset($paymentData['id']); | 167 | unset($paymentData['id']); |
| 99 | $paymentData['project_id'] = $project_id; | 168 | $paymentData['project_id'] = $project_id; |
| 100 | $paymentModel->insert($paymentData); | 169 | $paymentModel->insert($paymentData); |
| 101 | } | 170 | } |
| 171 | + return true; | ||
| 172 | + } | ||
| 173 | + | ||
| 174 | + public function copyAfter($old_project_id,$project_id){ | ||
| 102 | //复制售后表 | 175 | //复制售后表 |
| 103 | $afterModel = new After(); | 176 | $afterModel = new After(); |
| 104 | - $afterData = $afterModel::where('project_id', $this->param['project_id'])->first(); | 177 | + $afterData = $afterModel::where('project_id',$old_project_id)->first(); |
| 105 | if(!empty($afterData)){ | 178 | if(!empty($afterData)){ |
| 106 | $afterData = $afterData->getAttributes(); | 179 | $afterData = $afterData->getAttributes(); |
| 107 | unset($afterData['id']); | 180 | unset($afterData['id']); |
| 108 | $afterData['project_id'] = $project_id; | 181 | $afterData['project_id'] = $project_id; |
| 109 | $afterModel->insert($afterData); | 182 | $afterModel->insert($afterData); |
| 110 | } | 183 | } |
| 184 | + return true; | ||
| 185 | + } | ||
| 186 | + | ||
| 187 | + /** | ||
| 188 | + * @remark :复制user | ||
| 189 | + * @name :copyUser | ||
| 190 | + * @author :lyh | ||
| 191 | + * @method :post | ||
| 192 | + * @time :2025/1/15 15:04 | ||
| 193 | + */ | ||
| 194 | + public function copyUser($old_project_id,$project_id){ | ||
| 111 | //复制用户 | 195 | //复制用户 |
| 112 | $userModel = new UserModel(); | 196 | $userModel = new UserModel(); |
| 113 | - $userData = $userModel::where('project_id', $this->param['project_id'])->where('role_id',0)->first(); | 197 | + $userData = $userModel::where('project_id', $old_project_id)->where('role_id',0)->first(); |
| 114 | if(!empty($userData)){ | 198 | if(!empty($userData)){ |
| 115 | $userData = $userData->getAttributes(); | 199 | $userData = $userData->getAttributes(); |
| 116 | unset($userData['id']); | 200 | unset($userData['id']); |
| 117 | $userData['project_id'] = $project_id; | 201 | $userData['project_id'] = $project_id; |
| 118 | $userModel->insert($userData); | 202 | $userModel->insert($userData); |
| 119 | } | 203 | } |
| 120 | - DB::commit(); | ||
| 121 | - }catch (\Exception $e){ | ||
| 122 | - DB::rollBack(); | ||
| 123 | - $this->output('CopyProjectJob error, error message: ' . $e->getMessage()); | ||
| 124 | - $this->fail('error'); | ||
| 125 | - } | ||
| 126 | - if($type != 0){ | ||
| 127 | - $this->copyMysql($this->param['project_id'],$project_id); | ||
| 128 | - } | ||
| 129 | - //修改项目状态 | ||
| 130 | - $projectModel->edit(['delete_status'=>0],['id'=>$project_id]); | ||
| 131 | - $this->output('CopyProjectJob end, old project_id: ' . $this->param['project_id'] . ', new project_id: ' . $project_id); | ||
| 132 | return true; | 204 | return true; |
| 133 | } | 205 | } |
| 134 | 206 | ||
| @@ -191,4 +263,5 @@ class CopyProject extends Command | @@ -191,4 +263,5 @@ class CopyProject extends Command | ||
| 191 | Log::info($output); | 263 | Log::info($output); |
| 192 | return true; | 264 | return true; |
| 193 | } | 265 | } |
| 266 | + | ||
| 194 | } | 267 | } |
-
请 注册 或 登录 后发表评论