作者 刘锟

项目更新6.0

@@ -7,12 +7,15 @@ use App\Helper\Common; @@ -7,12 +7,15 @@ use App\Helper\Common;
7 use App\Helper\OaGlobalsoApi; 7 use App\Helper\OaGlobalsoApi;
8 use App\Models\Channel\Channel; 8 use App\Models\Channel\Channel;
9 use App\Models\Com\NoticeLog; 9 use App\Models\Com\NoticeLog;
  10 +use App\Models\Com\UpdateLog;
10 use App\Models\Project\After; 11 use App\Models\Project\After;
11 use App\Models\Project\DeployBuild; 12 use App\Models\Project\DeployBuild;
12 use App\Models\Project\DeployOptimize; 13 use App\Models\Project\DeployOptimize;
13 use App\Models\Project\Payment; 14 use App\Models\Project\Payment;
14 use App\Models\Project\Project; 15 use App\Models\Project\Project;
15 use App\Models\Project\ProjectRenew; 16 use App\Models\Project\ProjectRenew;
  17 +use App\Models\User\User as UserModel;
  18 +use App\Services\ProjectServer;
16 use App\Utils\LogUtils; 19 use App\Utils\LogUtils;
17 use Hashids\Hashids; 20 use Hashids\Hashids;
18 use Illuminate\Console\Command; 21 use Illuminate\Console\Command;
@@ -62,14 +65,20 @@ class SyncProject extends Command @@ -62,14 +65,20 @@ class SyncProject extends Command
62 $list = NoticeLog::where('type', NoticeLog::TYPE_PROJECT)->where('status', NoticeLog::STATUS_PENDING)->get(); 65 $list = NoticeLog::where('type', NoticeLog::TYPE_PROJECT)->where('status', NoticeLog::STATUS_PENDING)->get();
63 foreach ($list as $item){ 66 foreach ($list as $item){
64 try { 67 try {
  68 + $is_update = $item['data']['is_update']??0;//是否是4.0或5.0更新到6.0
  69 + $order_id = $item['data']['order_id'];
  70 + if($is_update == 1){
  71 + $data = http_get('https://quanqiusou.cn/extend_api/v6/update.php?postid='.$order_id, ['charset' => 'UTF-8']);
  72 + }else{
65 $api = new OaGlobalsoApi(); 73 $api = new OaGlobalsoApi();
66 - $data = $api->order_info($item['data']['order_id']); 74 + $data = $api->order_info($order_id);
  75 + }
67 if(!$data || empty($data['data'])){ 76 if(!$data || empty($data['data'])){
68 LogUtils::error('OaGlobalsoApi order_info error', $data); 77 LogUtils::error('OaGlobalsoApi order_info error', $data);
69 $this->retry($item); 78 $this->retry($item);
70 } 79 }
71 if($data['data']['order_type'] == '首次'){ 80 if($data['data']['order_type'] == '首次'){
72 - $this->sync($data['data']); 81 + $this->sync($data['data'],$is_update);
73 82
74 //同步aicc 83 //同步aicc
75 if($data['data']['exclusive_aicc']){ 84 if($data['data']['exclusive_aicc']){
@@ -164,7 +173,7 @@ class SyncProject extends Command @@ -164,7 +173,7 @@ class SyncProject extends Command
164 * @method :post 173 * @method :post
165 * @time :2023/8/9 15:04 174 * @time :2023/8/9 15:04
166 */ 175 */
167 - public function sync($param){ 176 + public function sync($param,$is_update = 0){
168 $title = date('Ymd') . '-' . $param['company_name']; 177 $title = date('Ymd') . '-' . $param['company_name'];
169 $data = [ 178 $data = [
170 'project'=>[ 179 'project'=>[
@@ -207,6 +216,22 @@ class SyncProject extends Command @@ -207,6 +216,22 @@ class SyncProject extends Command
207 $this->saveDeployBuild($data['deploy_build'],$id); 216 $this->saveDeployBuild($data['deploy_build'],$id);
208 $this->saveDeployOptimize($data['deploy_optimize'],$id); 217 $this->saveDeployOptimize($data['deploy_optimize'],$id);
209 $this->saveAfter($data['project_after'],$id); 218 $this->saveAfter($data['project_after'],$id);
  219 +
  220 + if($is_update == 1){
  221 + //4.0或5.0更新到6.0
  222 +
  223 + //初始化数据库
  224 + $this->initializationMysql($id);
  225 +
  226 + //初始账号
  227 + $this->createUser($data['project']['mobile'],$id,$data['project']['lead_name']);
  228 +
  229 + //新增数据抓取任务
  230 + foreach ($param['api_type'] as $v_type){
  231 + UpdateLog::createLog($id,$v_type,$param['get_data_url']);
  232 + }
  233 + }
  234 +
210 DB::commit(); 235 DB::commit();
211 }catch (\Exception $e){ 236 }catch (\Exception $e){
212 DB::rollBack(); 237 DB::rollBack();
@@ -388,4 +413,43 @@ class SyncProject extends Command @@ -388,4 +413,43 @@ class SyncProject extends Command
388 LogUtils::error('ProjectToHagro error', $res); 413 LogUtils::error('ProjectToHagro error', $res);
389 } 414 }
390 } 415 }
  416 +
  417 + /**
  418 + * 初始化数据库
  419 + * @param $project_id
  420 + * @author Akun
  421 + * @date 2023/09/19 15:12
  422 + */
  423 + public function initializationMysql($project_id){
  424 + //切换数据库配置
  425 + $project = ProjectServer::useProject($project_id);
  426 + //创建数据库
  427 + ProjectServer::createDatabase($project);
  428 + //创建表
  429 + ProjectServer::initTable();
  430 + }
  431 +
  432 + /**
  433 + * 创建用户
  434 + * @param $mobile
  435 + * @param $project_id
  436 + * @param $lead_name
  437 + * @author Akun
  438 + * @date 2023/09/19 15:12
  439 + */
  440 + public function createUser($mobile,$project_id,$lead_name){
  441 + $userModel = new UserModel();
  442 + //查看当前用户是否存在
  443 + $info = $userModel->read(['mobile'=>$mobile,'project_id'=>$project_id]);
  444 + if($info === false){
  445 + $data = [
  446 + 'mobile'=>$mobile,
  447 + 'password'=>base64_encode(md5('123456')),
  448 + 'project_id'=>$project_id,
  449 + 'name'=>$lead_name,
  450 + 'type'=>UserModel::TYPE_ONE
  451 + ];
  452 + $userModel->add($data);
  453 + }
  454 + }
391 } 455 }
  1 +<?php
  2 +
  3 +namespace App\Models\Com;
  4 +
  5 +use Illuminate\Database\Eloquent\Model;
  6 +
  7 +class UpdateLog extends Model
  8 +{
  9 + //设置关联表名
  10 + protected $table = 'gl_update_log';
  11 +
  12 + const STATUS_PENDING = 0;
  13 + const STATUS_SUCCESS = 1;
  14 + const STATUS_FAIL = 2;
  15 +
  16 + /**
  17 + * 创建更新日志
  18 + * @param $type
  19 + * @param $project_id
  20 + * @param $type
  21 + * @param $url
  22 + * @return mixed
  23 + */
  24 + public static function createLog($project_id, $type, $url)
  25 + {
  26 + $log = self::where('project_id', $project_id)->where('api_type', $type)->first();
  27 + if (!$log) {
  28 + $log = new self();
  29 + $log->project_id = $project_id;
  30 + $log->api_type = $type;
  31 + $log->api_url = $url;
  32 + return $log->save();
  33 + }
  34 + return true;
  35 + }
  36 +}