作者 lyh

gx

@@ -3,13 +3,22 @@ @@ -3,13 +3,22 @@
3 namespace App\Console\Commands; 3 namespace App\Console\Commands;
4 4
5 use App\Helper\OaGlobalsoApi; 5 use App\Helper\OaGlobalsoApi;
  6 +use App\Http\Logic\Aside\Project\DeployBuildLogic;
  7 +use App\Http\Logic\Aside\Project\DeployOptimizeLogic;
  8 +use App\Http\Logic\Aside\Project\PaymentLogic;
6 use App\Http\Logic\Aside\Project\ProjectLogic; 9 use App\Http\Logic\Aside\Project\ProjectLogic;
7 use App\Models\Channel\Channel; 10 use App\Models\Channel\Channel;
8 use App\Models\Com\NoticeLog; 11 use App\Models\Com\NoticeLog;
  12 +use App\Models\Project\After;
  13 +use App\Models\Project\DeployBuild;
  14 +use App\Models\Project\DeployOptimize;
  15 +use App\Models\Project\Payment;
9 use App\Models\Project\Project; 16 use App\Models\Project\Project;
10 use App\Models\Project\ProjectRenew; 17 use App\Models\Project\ProjectRenew;
11 use App\Utils\LogUtils; 18 use App\Utils\LogUtils;
  19 +use Hashids\Hashids;
12 use Illuminate\Console\Command; 20 use Illuminate\Console\Command;
  21 +use Illuminate\Support\Facades\DB;
13 22
14 /** 23 /**
15 * 同步项目信息 24 * 同步项目信息
@@ -59,7 +68,7 @@ class SyncProject extends Command @@ -59,7 +68,7 @@ class SyncProject extends Command
59 $this->retry($item); 68 $this->retry($item);
60 } 69 }
61 if($data['data']['order_type'] == '首次'){ 70 if($data['data']['order_type'] == '首次'){
62 - ProjectLogic::instance()->sync($data['data']); 71 + $this->sync($data['data']);
63 } 72 }
64 if($data['data']['order_type'] == '续费'){ 73 if($data['data']['order_type'] == '续费'){
65 $this->renewSync($data['data']); 74 $this->renewSync($data['data']);
@@ -135,4 +144,144 @@ class SyncProject extends Command @@ -135,4 +144,144 @@ class SyncProject extends Command
135 return 1; 144 return 1;
136 } 145 }
137 } 146 }
  147 +
  148 + /**
  149 + * @remark :导入数据
  150 + * @name :sync
  151 + * @author :lyh
  152 + * @method :post
  153 + * @time :2023/8/9 15:04
  154 + */
  155 + public function sync($param){
  156 + $title = date('Ymd') . '-' . $param['company_name'];
  157 + $data = [
  158 + 'project'=>[
  159 + 'title' => $title,
  160 + 'api_no'=> $param['id'],
  161 + 'company' => $param['company_name'],
  162 + 'lead_name' => $param['principal_name'],
  163 + 'mobile' => $param['principal_mobile'],
  164 + 'mysql_id'=>Project::MYSQL_ID,
  165 + 'qq' => $param['customer_qq'],
  166 + 'channel' => Channel::getProjectChannel($param['company_id'], $param['username_sales']),
  167 + 'requirement' => $param['remark'],
  168 + 'cooperate_date' => date('Y-m-d', $param['create_time']),
  169 + ],
  170 + 'deploy_build' => [
  171 + 'service_duration' => $param['years'],
  172 + 'plan' => $this->versionData($param['plan_marketing']),
  173 + 'login_mobile'=>$param['principal_mobile']
  174 + ],
  175 + 'deploy_optimize' => [
  176 + 'api_no' => $param['id']
  177 + ],
  178 + 'project_after' => [],
  179 + 'payment' => [
  180 + 'amount' => $param['plan_price'],
  181 + 'contract' => $param['files'],
  182 + 'bill' => $param['images'],
  183 + ],
  184 + ];
  185 + DB::beginTransaction();
  186 + try {
  187 + $res = $this->saveProject($data['project']);
  188 + $id = $res['id'];
  189 + $this->setPostId($data['deploy_build']['plan'],$res['id']);
  190 + $this->savePayment($data['payment'],$id);
  191 + $this->saveDeployBuild($data['deploy_build'],$id);
  192 + $this->saveDeployOptimize($data['deploy_optimize'],$id);
  193 + $this->saveAfter($data['project_after'],$id);
  194 + DB::commit();
  195 + }catch (\Exception $e){
  196 + DB::rollBack();
  197 + errorLog('项目同步失败', $data, $e);
  198 + $this->fail('同步失败');
  199 + }
  200 + }
  201 +
  202 + /**
  203 + * @remark :设置post_id
  204 + * @name :setPostId
  205 + * @author :lyh
  206 + * @method :post
  207 + * @time :2023/8/9 14:47
  208 + */
  209 + public function setPostId($plan,$id){
  210 + $length = strlen((string)$id); // 获取变量的位数
  211 + $paddingLength = Project::TYPE_FIVE - $length; // 计算填充前面的 0 的位数
  212 + $zeros = str_repeat("0", $paddingLength);
  213 + $number = Project::TYPE_SIX.$plan.$zeros.$id;
  214 + $projectModel = new Project();
  215 + $projectModel->edit(['post_id'=>$number],['id'=>$id]);
  216 + return true;
  217 + }
  218 +
  219 + /**
  220 + * @remark :保存项目
  221 + * @name :saveProject
  222 + * @author :lyh
  223 + * @method :post
  224 + * @time :2023/8/30 15:53
  225 + */
  226 + public function saveProject($project){
  227 + $projectModel = new Project();
  228 + return $projectModel->save($project);
  229 + }
  230 +
  231 + /**
  232 + * 保存优化部署
  233 + * @author zbj
  234 + * @date 2023/4/26
  235 + */
  236 + protected function saveAfter($param,$id){
  237 + $param['project_id'] = $id;
  238 + //查询数据是否存在
  239 + $afterModel = new After();
  240 + return $afterModel->save($param);
  241 + }
  242 +
  243 + /**
  244 + * @remark :保存付款续费
  245 + * @name :savePayment
  246 + * @author :lyh
  247 + * @method :post
  248 + * @time :2023/8/29 16:19
  249 + */
  250 + protected function savePayment($param,$id){
  251 + $param['project_id'] = $id;
  252 + $paymentModel= new Payment();
  253 + return $paymentModel->save($param);
  254 + }
  255 +
  256 + /**
  257 + * @remark :保存建站部署
  258 + * @name :saveDeployBuild
  259 + * @author :lyh
  260 + * @method :post
  261 + * @time :2023/8/29 16:19
  262 + */
  263 + protected function saveDeployBuild($param,$id){
  264 + $param['project_id'] = $id;
  265 + $hashids = new Hashids('test_domain', 5, 'abcdefghjkmnpqrstuvwxyz1234567890');
  266 + $code = $hashids->encode($id);
  267 + $param['test_domain'] = 'https://v6-' . $code . '.globalso.site/';
  268 + $deployBuildModel = new DeployBuild();
  269 + return $deployBuildModel->save($param);
  270 + }
  271 +
  272 + /**
  273 + * 保存优化部署
  274 + * @author zbj
  275 + * @date 2023/4/26
  276 + */
  277 + protected function saveDeployOptimize($param,$id){
  278 + $param['project_id'] = $id;
  279 + if(isset($param['domain']) && !empty($param['domain'])){
  280 + if (!preg_match('/http/', $param['domain'])) {
  281 + $param['domain'] = 'https://'.trim($param['domain'],'/').'/';
  282 + }
  283 + }
  284 + $deployOptimizeModel = new DeployOptimize();
  285 + return $deployOptimizeModel->save($param);
  286 + }
138 } 287 }
@@ -73,8 +73,8 @@ class ProjectLogic extends BaseLogic @@ -73,8 +73,8 @@ class ProjectLogic extends BaseLogic
73 * @time :2023/8/30 11:57 73 * @time :2023/8/30 11:57
74 */ 74 */
75 public function projectSave(){ 75 public function projectSave(){
76 -// DB::beginTransaction();  
77 -// try { 76 + DB::beginTransaction();
  77 + try {
78 $this->createProjectData($this->param); 78 $this->createProjectData($this->param);
79 //保存项目信息 79 //保存项目信息
80 $this->saveProject($this->param); 80 $this->saveProject($this->param);
@@ -86,10 +86,11 @@ class ProjectLogic extends BaseLogic @@ -86,10 +86,11 @@ class ProjectLogic extends BaseLogic
86 $this->saveProjectDeployOptimize($this->param['deploy_optimize']); 86 $this->saveProjectDeployOptimize($this->param['deploy_optimize']);
87 //保存售后信息 87 //保存售后信息
88 $this->saveProjectAfter($this->param['project_after']); 88 $this->saveProjectAfter($this->param['project_after']);
89 -// }catch (\Exception $e){  
90 -// DB::rollBack();  
91 -// $this->fail('error');  
92 -// } 89 + DB::commit();
  90 + }catch (\Exception $e){
  91 + DB::rollBack();
  92 + $this->fail('error');
  93 + }
93 return $this->success(); 94 return $this->success();
94 } 95 }
95 96
@@ -191,7 +192,6 @@ class ProjectLogic extends BaseLogic @@ -191,7 +192,6 @@ class ProjectLogic extends BaseLogic
191 * @time :2023/8/30 13:57 192 * @time :2023/8/30 13:57
192 */ 193 */
193 protected function saveProjectAfter($project_after){ 194 protected function saveProjectAfter($project_after){
194 - @file_put_contents(storage_path('logs/lyh_error.log'), var_export($project_after, true) . PHP_EOL, FILE_APPEND);  
195 //查询数据是否存在 195 //查询数据是否存在
196 $afterModel = new After(); 196 $afterModel = new After();
197 $afterModel->edit($project_after,['id'=>$project_after['id']]); 197 $afterModel->edit($project_after,['id'=>$project_after['id']]);
@@ -224,48 +224,6 @@ class ProjectLogic extends BaseLogic @@ -224,48 +224,6 @@ class ProjectLogic extends BaseLogic
224 return $this->success(); 224 return $this->success();
225 } 225 }
226 226
227 - /**  
228 - * @remark :保存项目配置数据  
229 - * @name :save  
230 - * @author :lyh  
231 - * @method :post  
232 - * @time :2023/8/17 14:19  
233 - */  
234 - public function save($param){  
235 - DB::beginTransaction();  
236 - try {  
237 - if($param['type'] == Project::TYPE_FIVE){  
238 - $param['extend_type'] == Project::TYPE_FIVE;  
239 - unset($param['type']);  
240 - }  
241 - $res = parent::save($param);  
242 - $param['id'] = $res['id'];  
243 - $this->savePayment($param);  
244 - $this->saveDeployBuild($param);  
245 - $this->saveDeployOptimize($param);  
246 - $this->saveAfter($param);  
247 - //创建默认数据库  
248 - if($param['type'] == Project::TYPE_ONE){  
249 - //初始化数据库  
250 - if(isset($param['mysql_id']) && !empty($param['mysql_id'])){  
251 - $this->initializationMysql($res['id']);  
252 - }  
253 - //初始账号  
254 - if(isset($param['mobile']) && !empty($param['mobile'])){  
255 - $this->createUser($param['mobile'],$res['id'],$param['lead_name']);  
256 - }  
257 - //更改服务器状态  
258 - if(isset($param['serve_id']) && !empty($param['serve_id'])){  
259 - $this->updateServe($param['serve_id']);  
260 - }  
261 - }  
262 - DB::commit();  
263 - }catch (\Exception $e){  
264 - DB::rollBack();  
265 - $this->fail('保存失败');  
266 - }  
267 - return $this->success();  
268 - }  
269 227
270 /** 228 /**
271 * @remark :初始化数据库 229 * @remark :初始化数据库
@@ -325,82 +283,8 @@ class ProjectLogic extends BaseLogic @@ -325,82 +283,8 @@ class ProjectLogic extends BaseLogic
325 return $this->success(); 283 return $this->success();
326 } 284 }
327 285
328 - /**  
329 - * @remark :保存付款续费  
330 - * @name :savePayment  
331 - * @author :lyh  
332 - * @method :post  
333 - * @time :2023/8/29 16:19  
334 - */  
335 - protected function savePayment($param){  
336 - if(empty($param['payment'])){  
337 - return true;  
338 - }  
339 - $data = $param['payment'];  
340 - $data['project_id'] = $param['id'];  
341 - $data['id'] = Payment::where('project_id', $param['id'])->value('id');  
342 - return (new PaymentLogic)->save($data);  
343 - }  
344 286
345 - /**  
346 - * @remark :保存建站部署  
347 - * @name :saveDeployBuild  
348 - * @author :lyh  
349 - * @method :post  
350 - * @time :2023/8/29 16:19  
351 - */  
352 - protected function saveDeployBuild($param){  
353 - if(empty($param['deploy_build'])){  
354 - return true;  
355 - }  
356 - $data = $param['deploy_build'];  
357 - $data['project_id'] = $param['id'];  
358 - $data['id'] = DeployBuild::where('project_id', $param['id'])->value('id');  
359 - if(empty($data['id'])){  
360 - $hashids = new Hashids('test_domain', 5, 'abcdefghjkmnpqrstuvwxyz1234567890');  
361 - $code = $hashids->encode($data['project_id']);  
362 - $data['test_domain'] = 'https://v6-' . $code . '.globalso.site/';  
363 - }  
364 - return (new DeployBuildLogic)->save($data);  
365 - }  
366 287
367 - /**  
368 - * 保存优化部署  
369 - * @author zbj  
370 - * @date 2023/4/26  
371 - */  
372 - protected function saveDeployOptimize($param){  
373 - if(empty($param['deploy_optimize'])){  
374 - return true;  
375 - }  
376 - $data = $param['deploy_optimize'];  
377 - $data['project_id'] = $param['id'];  
378 - if(isset($data['domain']) && !empty($data['domain'])){  
379 - if (!preg_match('/http/', $data['domain'])) {  
380 - $data['domain'] = 'https://'.trim($data['domain'],'/').'/';  
381 - }  
382 - }  
383 - $data['id'] = DeployOptimize::where('project_id', $param['id'])->value('id');  
384 - return (new DeployOptimizeLogic)->save($data);  
385 - }  
386 - /**  
387 - * 保存优化部署  
388 - * @author zbj  
389 - * @date 2023/4/26  
390 - */  
391 - protected function saveAfter($param){  
392 - $data = $param['project_after'];  
393 - $data['project_id'] = $param['id'];  
394 - //查询数据是否存在  
395 - $afterModel = new After();  
396 - $info = $afterModel->read(['project_id'=>$data['project_id']]);  
397 - if($info === false){  
398 - $rs = $afterModel->add($data);  
399 - }else{  
400 - $rs = $afterModel->edit($data,['id'=>$info['id']]);  
401 - }  
402 - return $rs;  
403 - }  
404 public function clearCache($id) 288 public function clearCache($id)
405 { 289 {
406 parent::clearCache($id); 290 parent::clearCache($id);
@@ -463,89 +347,8 @@ class ProjectLogic extends BaseLogic @@ -463,89 +347,8 @@ class ProjectLogic extends BaseLogic
463 } 347 }
464 348
465 349
466 - /**  
467 - * @remark :导入数据  
468 - * @name :sync  
469 - * @author :lyh  
470 - * @method :post  
471 - * @time :2023/8/9 15:04  
472 - */  
473 - public function sync($param){  
474 - $title = date('Ymd') . '-' . $param['company_name'];  
475 - $data = [  
476 - 'title' => $title,  
477 - 'api_no'=> $param['id'],  
478 - 'company' => $param['company_name'],  
479 - 'lead_name' => $param['principal_name'],  
480 - 'mobile' => $param['principal_mobile'],  
481 - 'mysql_id'=>Project::MYSQL_ID,  
482 - 'qq' => $param['customer_qq'],  
483 - 'channel' => Channel::getProjectChannel($param['company_id'], $param['username_sales']),  
484 - 'requirement' => $param['remark'],  
485 - 'cooperate_date' => date('Y-m-d', $param['create_time']),  
486 - 'deploy_build' => [  
487 - 'service_duration' => $param['years'],  
488 - 'plan' => $this->versionData($param['plan_marketing']),  
489 - 'login_mobile'=>$param['principal_mobile']  
490 - ],  
491 - 'deploy_optimize' => [  
492 - 'api_no' => $param['id']  
493 - ],  
494 - 'project_after' => [],  
495 - 'payment' => [  
496 - 'amount' => $param['plan_price'],  
497 - 'contract' => $param['files'],  
498 - 'bill' => $param['images'],  
499 - ],  
500 - ];  
501 - DB::beginTransaction();  
502 - try {  
503 - $res = parent::save($data);  
504 - $data['id'] = $res['id'];  
505 - $this->setPostId($data['deploy_build']['plan'],$res['id']);  
506 - $this->savePayment($data);  
507 - $this->saveDeployBuild($data);  
508 - $this->saveDeployOptimize($data);  
509 - $this->saveAfter($data);  
510 - DB::commit();  
511 - }catch (\Exception $e){  
512 - DB::rollBack();  
513 - errorLog('项目同步失败', $data, $e);  
514 - $this->fail('同步失败');  
515 - }  
516 - }  
517 350
518 - /**  
519 - * @remark :获取版本  
520 - * @name :versionData  
521 - * @author :lyh  
522 - * @method :post  
523 - * @time :2023/8/9 14:46  
524 - */  
525 - public function versionData($param){  
526 - $data = Project::planMap();  
527 - $data = array_flip($data);  
528 - if(isset($data[$param])){  
529 - return $data[$param];  
530 - }else{  
531 - return 1;  
532 - }  
533 - }  
534 351
535 - /**  
536 - * @remark :设置post_id  
537 - * @name :setPostId  
538 - * @author :lyh  
539 - * @method :post  
540 - * @time :2023/8/9 14:47  
541 - */  
542 - public function setPostId($plan,$id){  
543 - $length = strlen((string)$id); // 获取变量的位数  
544 - $paddingLength = Project::TYPE_FIVE - $length; // 计算填充前面的 0 的位数  
545 - $zeros = str_repeat("0", $paddingLength);  
546 - $number = Project::TYPE_SIX.$plan.$zeros.$id;  
547 - $projectModel = new Project();  
548 - $projectModel->edit(['post_id'=>$number],['id'=>$id]);  
549 - return true;  
550 - } 352 +
  353 +
551 } 354 }
@@ -13,10 +13,7 @@ class Project extends Base @@ -13,10 +13,7 @@ class Project extends Base
13 { 13 {
14 //设置关联表名 14 //设置关联表名
15 protected $table = 'gl_project'; 15 protected $table = 'gl_project';
16 - protected $fillable = ['title', 'level','company','lead_name',  
17 - 'mobile','qq','province_id','city_id','version_id','serve_id','mysql_id',  
18 - 'cooperate_date','requirement','channel','notice_file','confirm_file','created_at',  
19 - 'updated_at','project_location','type','extend_type','status']; 16 +
20 const DATABASE_NAME_FIX = 'gl_data_'; 17 const DATABASE_NAME_FIX = 'gl_data_';
21 18
22 const STATUS_ONE = 1;//审核通过 19 const STATUS_ONE = 1;//审核通过