作者 lyh

gx

... ... @@ -3,13 +3,22 @@
namespace App\Console\Commands;
use App\Helper\OaGlobalsoApi;
use App\Http\Logic\Aside\Project\DeployBuildLogic;
use App\Http\Logic\Aside\Project\DeployOptimizeLogic;
use App\Http\Logic\Aside\Project\PaymentLogic;
use App\Http\Logic\Aside\Project\ProjectLogic;
use App\Models\Channel\Channel;
use App\Models\Com\NoticeLog;
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\Utils\LogUtils;
use Hashids\Hashids;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
/**
* 同步项目信息
... ... @@ -59,7 +68,7 @@ class SyncProject extends Command
$this->retry($item);
}
if($data['data']['order_type'] == '首次'){
ProjectLogic::instance()->sync($data['data']);
$this->sync($data['data']);
}
if($data['data']['order_type'] == '续费'){
$this->renewSync($data['data']);
... ... @@ -135,4 +144,144 @@ class SyncProject extends Command
return 1;
}
}
/**
* @remark :导入数据
* @name :sync
* @author :lyh
* @method :post
* @time :2023/8/9 15:04
*/
public function sync($param){
$title = date('Ymd') . '-' . $param['company_name'];
$data = [
'project'=>[
'title' => $title,
'api_no'=> $param['id'],
'company' => $param['company_name'],
'lead_name' => $param['principal_name'],
'mobile' => $param['principal_mobile'],
'mysql_id'=>Project::MYSQL_ID,
'qq' => $param['customer_qq'],
'channel' => Channel::getProjectChannel($param['company_id'], $param['username_sales']),
'requirement' => $param['remark'],
'cooperate_date' => date('Y-m-d', $param['create_time']),
],
'deploy_build' => [
'service_duration' => $param['years'],
'plan' => $this->versionData($param['plan_marketing']),
'login_mobile'=>$param['principal_mobile']
],
'deploy_optimize' => [
'api_no' => $param['id']
],
'project_after' => [],
'payment' => [
'amount' => $param['plan_price'],
'contract' => $param['files'],
'bill' => $param['images'],
],
];
DB::beginTransaction();
try {
$res = $this->saveProject($data['project']);
$id = $res['id'];
$this->setPostId($data['deploy_build']['plan'],$res['id']);
$this->savePayment($data['payment'],$id);
$this->saveDeployBuild($data['deploy_build'],$id);
$this->saveDeployOptimize($data['deploy_optimize'],$id);
$this->saveAfter($data['project_after'],$id);
DB::commit();
}catch (\Exception $e){
DB::rollBack();
errorLog('项目同步失败', $data, $e);
$this->fail('同步失败');
}
}
/**
* @remark :设置post_id
* @name :setPostId
* @author :lyh
* @method :post
* @time :2023/8/9 14:47
*/
public function setPostId($plan,$id){
$length = strlen((string)$id); // 获取变量的位数
$paddingLength = Project::TYPE_FIVE - $length; // 计算填充前面的 0 的位数
$zeros = str_repeat("0", $paddingLength);
$number = Project::TYPE_SIX.$plan.$zeros.$id;
$projectModel = new Project();
$projectModel->edit(['post_id'=>$number],['id'=>$id]);
return true;
}
/**
* @remark :保存项目
* @name :saveProject
* @author :lyh
* @method :post
* @time :2023/8/30 15:53
*/
public function saveProject($project){
$projectModel = new Project();
return $projectModel->save($project);
}
/**
* 保存优化部署
* @author zbj
* @date 2023/4/26
*/
protected function saveAfter($param,$id){
$param['project_id'] = $id;
//查询数据是否存在
$afterModel = new After();
return $afterModel->save($param);
}
/**
* @remark :保存付款续费
* @name :savePayment
* @author :lyh
* @method :post
* @time :2023/8/29 16:19
*/
protected function savePayment($param,$id){
$param['project_id'] = $id;
$paymentModel= new Payment();
return $paymentModel->save($param);
}
/**
* @remark :保存建站部署
* @name :saveDeployBuild
* @author :lyh
* @method :post
* @time :2023/8/29 16:19
*/
protected function saveDeployBuild($param,$id){
$param['project_id'] = $id;
$hashids = new Hashids('test_domain', 5, 'abcdefghjkmnpqrstuvwxyz1234567890');
$code = $hashids->encode($id);
$param['test_domain'] = 'https://v6-' . $code . '.globalso.site/';
$deployBuildModel = new DeployBuild();
return $deployBuildModel->save($param);
}
/**
* 保存优化部署
* @author zbj
* @date 2023/4/26
*/
protected function saveDeployOptimize($param,$id){
$param['project_id'] = $id;
if(isset($param['domain']) && !empty($param['domain'])){
if (!preg_match('/http/', $param['domain'])) {
$param['domain'] = 'https://'.trim($param['domain'],'/').'/';
}
}
$deployOptimizeModel = new DeployOptimize();
return $deployOptimizeModel->save($param);
}
}
... ...
... ... @@ -73,8 +73,8 @@ class ProjectLogic extends BaseLogic
* @time :2023/8/30 11:57
*/
public function projectSave(){
// DB::beginTransaction();
// try {
DB::beginTransaction();
try {
$this->createProjectData($this->param);
//保存项目信息
$this->saveProject($this->param);
... ... @@ -86,10 +86,11 @@ class ProjectLogic extends BaseLogic
$this->saveProjectDeployOptimize($this->param['deploy_optimize']);
//保存售后信息
$this->saveProjectAfter($this->param['project_after']);
// }catch (\Exception $e){
// DB::rollBack();
// $this->fail('error');
// }
DB::commit();
}catch (\Exception $e){
DB::rollBack();
$this->fail('error');
}
return $this->success();
}
... ... @@ -191,7 +192,6 @@ class ProjectLogic extends BaseLogic
* @time :2023/8/30 13:57
*/
protected function saveProjectAfter($project_after){
@file_put_contents(storage_path('logs/lyh_error.log'), var_export($project_after, true) . PHP_EOL, FILE_APPEND);
//查询数据是否存在
$afterModel = new After();
$afterModel->edit($project_after,['id'=>$project_after['id']]);
... ... @@ -224,48 +224,6 @@ class ProjectLogic extends BaseLogic
return $this->success();
}
/**
* @remark :保存项目配置数据
* @name :save
* @author :lyh
* @method :post
* @time :2023/8/17 14:19
*/
public function save($param){
DB::beginTransaction();
try {
if($param['type'] == Project::TYPE_FIVE){
$param['extend_type'] == Project::TYPE_FIVE;
unset($param['type']);
}
$res = parent::save($param);
$param['id'] = $res['id'];
$this->savePayment($param);
$this->saveDeployBuild($param);
$this->saveDeployOptimize($param);
$this->saveAfter($param);
//创建默认数据库
if($param['type'] == Project::TYPE_ONE){
//初始化数据库
if(isset($param['mysql_id']) && !empty($param['mysql_id'])){
$this->initializationMysql($res['id']);
}
//初始账号
if(isset($param['mobile']) && !empty($param['mobile'])){
$this->createUser($param['mobile'],$res['id'],$param['lead_name']);
}
//更改服务器状态
if(isset($param['serve_id']) && !empty($param['serve_id'])){
$this->updateServe($param['serve_id']);
}
}
DB::commit();
}catch (\Exception $e){
DB::rollBack();
$this->fail('保存失败');
}
return $this->success();
}
/**
* @remark :初始化数据库
... ... @@ -325,82 +283,8 @@ class ProjectLogic extends BaseLogic
return $this->success();
}
/**
* @remark :保存付款续费
* @name :savePayment
* @author :lyh
* @method :post
* @time :2023/8/29 16:19
*/
protected function savePayment($param){
if(empty($param['payment'])){
return true;
}
$data = $param['payment'];
$data['project_id'] = $param['id'];
$data['id'] = Payment::where('project_id', $param['id'])->value('id');
return (new PaymentLogic)->save($data);
}
/**
* @remark :保存建站部署
* @name :saveDeployBuild
* @author :lyh
* @method :post
* @time :2023/8/29 16:19
*/
protected function saveDeployBuild($param){
if(empty($param['deploy_build'])){
return true;
}
$data = $param['deploy_build'];
$data['project_id'] = $param['id'];
$data['id'] = DeployBuild::where('project_id', $param['id'])->value('id');
if(empty($data['id'])){
$hashids = new Hashids('test_domain', 5, 'abcdefghjkmnpqrstuvwxyz1234567890');
$code = $hashids->encode($data['project_id']);
$data['test_domain'] = 'https://v6-' . $code . '.globalso.site/';
}
return (new DeployBuildLogic)->save($data);
}
/**
* 保存优化部署
* @author zbj
* @date 2023/4/26
*/
protected function saveDeployOptimize($param){
if(empty($param['deploy_optimize'])){
return true;
}
$data = $param['deploy_optimize'];
$data['project_id'] = $param['id'];
if(isset($data['domain']) && !empty($data['domain'])){
if (!preg_match('/http/', $data['domain'])) {
$data['domain'] = 'https://'.trim($data['domain'],'/').'/';
}
}
$data['id'] = DeployOptimize::where('project_id', $param['id'])->value('id');
return (new DeployOptimizeLogic)->save($data);
}
/**
* 保存优化部署
* @author zbj
* @date 2023/4/26
*/
protected function saveAfter($param){
$data = $param['project_after'];
$data['project_id'] = $param['id'];
//查询数据是否存在
$afterModel = new After();
$info = $afterModel->read(['project_id'=>$data['project_id']]);
if($info === false){
$rs = $afterModel->add($data);
}else{
$rs = $afterModel->edit($data,['id'=>$info['id']]);
}
return $rs;
}
public function clearCache($id)
{
parent::clearCache($id);
... ... @@ -463,89 +347,8 @@ class ProjectLogic extends BaseLogic
}
/**
* @remark :导入数据
* @name :sync
* @author :lyh
* @method :post
* @time :2023/8/9 15:04
*/
public function sync($param){
$title = date('Ymd') . '-' . $param['company_name'];
$data = [
'title' => $title,
'api_no'=> $param['id'],
'company' => $param['company_name'],
'lead_name' => $param['principal_name'],
'mobile' => $param['principal_mobile'],
'mysql_id'=>Project::MYSQL_ID,
'qq' => $param['customer_qq'],
'channel' => Channel::getProjectChannel($param['company_id'], $param['username_sales']),
'requirement' => $param['remark'],
'cooperate_date' => date('Y-m-d', $param['create_time']),
'deploy_build' => [
'service_duration' => $param['years'],
'plan' => $this->versionData($param['plan_marketing']),
'login_mobile'=>$param['principal_mobile']
],
'deploy_optimize' => [
'api_no' => $param['id']
],
'project_after' => [],
'payment' => [
'amount' => $param['plan_price'],
'contract' => $param['files'],
'bill' => $param['images'],
],
];
DB::beginTransaction();
try {
$res = parent::save($data);
$data['id'] = $res['id'];
$this->setPostId($data['deploy_build']['plan'],$res['id']);
$this->savePayment($data);
$this->saveDeployBuild($data);
$this->saveDeployOptimize($data);
$this->saveAfter($data);
DB::commit();
}catch (\Exception $e){
DB::rollBack();
errorLog('项目同步失败', $data, $e);
$this->fail('同步失败');
}
}
/**
* @remark :获取版本
* @name :versionData
* @author :lyh
* @method :post
* @time :2023/8/9 14:46
*/
public function versionData($param){
$data = Project::planMap();
$data = array_flip($data);
if(isset($data[$param])){
return $data[$param];
}else{
return 1;
}
}
/**
* @remark :设置post_id
* @name :setPostId
* @author :lyh
* @method :post
* @time :2023/8/9 14:47
*/
public function setPostId($plan,$id){
$length = strlen((string)$id); // 获取变量的位数
$paddingLength = Project::TYPE_FIVE - $length; // 计算填充前面的 0 的位数
$zeros = str_repeat("0", $paddingLength);
$number = Project::TYPE_SIX.$plan.$zeros.$id;
$projectModel = new Project();
$projectModel->edit(['post_id'=>$number],['id'=>$id]);
return true;
}
}
... ...
... ... @@ -13,10 +13,7 @@ class Project extends Base
{
//设置关联表名
protected $table = 'gl_project';
protected $fillable = ['title', 'level','company','lead_name',
'mobile','qq','province_id','city_id','version_id','serve_id','mysql_id',
'cooperate_date','requirement','channel','notice_file','confirm_file','created_at',
'updated_at','project_location','type','extend_type','status'];
const DATABASE_NAME_FIX = 'gl_data_';
const STATUS_ONE = 1;//审核通过
... ...