作者 刘锟

项目更新6.0

... ... @@ -7,12 +7,15 @@ use App\Helper\Common;
use App\Helper\OaGlobalsoApi;
use App\Models\Channel\Channel;
use App\Models\Com\NoticeLog;
use App\Models\Com\UpdateLog;
use App\Models\Project\After;
use App\Models\Project\DeployBuild;
use App\Models\Project\DeployOptimize;
use App\Models\Project\Payment;
use App\Models\Project\Project;
use App\Models\Project\ProjectRenew;
use App\Models\User\User as UserModel;
use App\Services\ProjectServer;
use App\Utils\LogUtils;
use Hashids\Hashids;
use Illuminate\Console\Command;
... ... @@ -62,14 +65,20 @@ class SyncProject extends Command
$list = NoticeLog::where('type', NoticeLog::TYPE_PROJECT)->where('status', NoticeLog::STATUS_PENDING)->get();
foreach ($list as $item){
try {
$is_update = $item['data']['is_update']??0;//是否是4.0或5.0更新到6.0
$order_id = $item['data']['order_id'];
if($is_update == 1){
$data = http_get('https://quanqiusou.cn/extend_api/v6/update.php?postid='.$order_id, ['charset' => 'UTF-8']);
}else{
$api = new OaGlobalsoApi();
$data = $api->order_info($item['data']['order_id']);
$data = $api->order_info($order_id);
}
if(!$data || empty($data['data'])){
LogUtils::error('OaGlobalsoApi order_info error', $data);
$this->retry($item);
}
if($data['data']['order_type'] == '首次'){
$this->sync($data['data']);
$this->sync($data['data'],$is_update);
//同步aicc
if($data['data']['exclusive_aicc']){
... ... @@ -164,7 +173,7 @@ class SyncProject extends Command
* @method :post
* @time :2023/8/9 15:04
*/
public function sync($param){
public function sync($param,$is_update = 0){
$title = date('Ymd') . '-' . $param['company_name'];
$data = [
'project'=>[
... ... @@ -207,6 +216,22 @@ class SyncProject extends Command
$this->saveDeployBuild($data['deploy_build'],$id);
$this->saveDeployOptimize($data['deploy_optimize'],$id);
$this->saveAfter($data['project_after'],$id);
if($is_update == 1){
//4.0或5.0更新到6.0
//初始化数据库
$this->initializationMysql($id);
//初始账号
$this->createUser($data['project']['mobile'],$id,$data['project']['lead_name']);
//新增数据抓取任务
foreach ($param['api_type'] as $v_type){
UpdateLog::createLog($id,$v_type,$param['get_data_url']);
}
}
DB::commit();
}catch (\Exception $e){
DB::rollBack();
... ... @@ -388,4 +413,43 @@ class SyncProject extends Command
LogUtils::error('ProjectToHagro error', $res);
}
}
/**
* 初始化数据库
* @param $project_id
* @author Akun
* @date 2023/09/19 15:12
*/
public function initializationMysql($project_id){
//切换数据库配置
$project = ProjectServer::useProject($project_id);
//创建数据库
ProjectServer::createDatabase($project);
//创建表
ProjectServer::initTable();
}
/**
* 创建用户
* @param $mobile
* @param $project_id
* @param $lead_name
* @author Akun
* @date 2023/09/19 15:12
*/
public function createUser($mobile,$project_id,$lead_name){
$userModel = new UserModel();
//查看当前用户是否存在
$info = $userModel->read(['mobile'=>$mobile,'project_id'=>$project_id]);
if($info === false){
$data = [
'mobile'=>$mobile,
'password'=>base64_encode(md5('123456')),
'project_id'=>$project_id,
'name'=>$lead_name,
'type'=>UserModel::TYPE_ONE
];
$userModel->add($data);
}
}
}
... ...
<?php
namespace App\Models\Com;
use Illuminate\Database\Eloquent\Model;
class UpdateLog extends Model
{
//设置关联表名
protected $table = 'gl_update_log';
const STATUS_PENDING = 0;
const STATUS_SUCCESS = 1;
const STATUS_FAIL = 2;
/**
* 创建更新日志
* @param $type
* @param $project_id
* @param $type
* @param $url
* @return mixed
*/
public static function createLog($project_id, $type, $url)
{
$log = self::where('project_id', $project_id)->where('api_type', $type)->first();
if (!$log) {
$log = new self();
$log->project_id = $project_id;
$log->api_type = $type;
$log->api_url = $url;
return $log->save();
}
return true;
}
}
... ...