作者 李宇航

合并分支 'lyh-server' 到 'master'

gx



查看合并请求 !1668
... ... @@ -70,39 +70,11 @@ class RemainDay extends Command
*/
public function handle()
{
$this->saveSeoRemainDay();//单独白帽系统剩余服务时常
$this->saveRemainDay();
return true;
}
/**
* @remark :白帽系统剩余服务时常
* @name :getSeoList
* @author :lyh
* @method :post
* @time :2025/4/1 16:44
*/
public function saveSeoRemainDay(){
$projectArr = $this->deployBuild->selectField(['seo_plan'=>1,'project_id'=>['not in',$this->ceaseProjectId]],'project_id');
$data = $this->project->list(['id'=>['in',$projectArr]],'id',['id','uptime','finish_remain_day']);
foreach ($data as $item){
$deploy_build = $this->deployBuild->read(['project_id'=>$item['id']],['seo_service_duration']);
if($item['uptime']){
$diff = time() - strtotime($item['uptime']);
$item['finish_remain_day'] = floor($diff / (60 * 60 * 24));
$seo_remain_day = $deploy_build['seo_service_duration'] - floor($diff / (60 * 60 * 24));
}else{
$seo_remain_day = $deploy_build['seo_service_duration'];
}
$extend_type = 0;
if($seo_remain_day < 0){
$seo_remain_day = 0;
$extend_type = Project::TYPE_FIVE;
}
$this->project->edit(['seo_service_duration'=>$seo_remain_day,'extend_type'=>$extend_type],['id'=>$item['id']]);
}
return $projectArr;
}
/**
* @remark :普通项目剩余服务时常
... ... @@ -114,7 +86,7 @@ class RemainDay extends Command
public function saveRemainDay(){
$list = $this->project->list(['type'=>['in',[Project::TYPE_TWO,Project::TYPE_THREE,Project::TYPE_FOUR]]],'id',['id','type','uptime','remain_day','is_remain_today','pause_days','finish_remain_day']);
foreach ($list as $item){
$deploy_build = $this->deployBuild->read(['project_id'=>$item['id']],['service_duration']);
$deploy_build = $this->deployBuild->read(['project_id'=>$item['id']],['service_duration','seo_service_duration','plan','seo_plan']);
echo 'start->项目id:' . $item['id'] . '执行时间:'. date('Y-m-d H:i:s') . PHP_EOL;
if(in_array($item['id'],$this->ceaseProjectId)){//暂停的项目
if(($item['type'] == Project::TYPE_TWO) && ($item['is_remain_today'] == 1)){
... ... @@ -123,10 +95,28 @@ class RemainDay extends Command
if($item['type'] != Project::TYPE_THREE){
$pause_days = $item['pause_days'] + 1;
}
$this->project->edit(['pause_days'=>$pause_days],['id'=>$item['id']]);
// $this->project->edit(['pause_days'=>$pause_days],['id'=>$item['id']]);
continue;
}
//未暂停的项目
//白帽版本的系统
if($deploy_build['seo_plan'] == 1){
if($item['uptime']){
$diff = time() - strtotime($item['uptime']);
$seo_remain_day = $deploy_build['seo_service_duration'] - floor($diff / (60 * 60 * 24));
}else{
$seo_remain_day = $deploy_build['seo_service_duration'];
}
if($seo_remain_day < 0){
$seo_remain_day = 0;
}
if($deploy_build['plan'] == 0 && $seo_remain_day == 0 && $deploy_build['seo_service_duration'] != 0){//只有白帽版本的项目且剩余服务时常未0,放入未续费中
// $this->project->edit(['seo_remain_day'=>$seo_remain_day,'extend_type'=>Project::TYPE_FIVE],['id'=>$item['id']]);
continue;
}
//同时包括白帽版本+默认版本的项目
// $this->project->edit(['seo_remain_day'=>$seo_remain_day],['id'=>$item['id']]);
}
//默认版本计算剩余服务时常
if($item['type'] == Project::TYPE_TWO || $item['type'] == Project::TYPE_FOUR){
if(in_array($item['id'],$this->projectId)){//已开始优化的时间结算
$optimizeModel = new DeployOptimize();
... ... @@ -144,18 +134,17 @@ class RemainDay extends Command
//普通建站项目
if($item['uptime']){
$diff = time() - strtotime($item['uptime']);
$item['finish_remain_day'] = floor($diff / (60 * 60 * 24));
$remain_day = $deploy_build['service_duration'] - floor($diff / (60 * 60 * 24));
}else{
$remain_day = $deploy_build['service_duration'];
}
}
$extend_type = 0;
if($remain_day < 0){
if($remain_day < 0 && $deploy_build['service_duration'] != 0){
$remain_day = 0;
$extend_type = Project::TYPE_FIVE;
}
$this->project->edit(['remain_day'=>$remain_day,'extend_type'=>$extend_type],['id'=>$item['id']]);
// $this->project->edit(['remain_day'=>$remain_day,'extend_type'=>$extend_type],['id'=>$item['id']]);
echo 'end->项目id:' . $item['id'] . '执行时间:'. date('Y-m-d H:i:s') . PHP_EOL;
}
return true;
... ...
... ... @@ -146,13 +146,18 @@ class SyncProject extends Command
'channel' => json_encode(Channel::getProjectChannel($param['company_id'], $param['username_sales'])),
'requirement' => $param['remark'],
'cooperate_date' => date('Y-m-d', $param['create_time']),
'service_duration' => $param['years'],
'plan' => $this->versionData($param['plan_marketing']),
// 'api_no' => $param['id'], //改手动填
'amount' => $param['plan_price'],
'contract' => json_encode($param['files']),
'bill' => json_encode($param['images']),
];
if($param['plan_marketing'] == '白帽SEO方案'){
$data['seo_service_duration'] = $param['years'] ?? 0;
$data['seo_plan'] = 1;
}else{
$data['service_duration'] = $param['years'] ?? 0;
$data['plan'] = $this->versionData($param['plan_marketing']);
}
$renewModel = new ProjectRenew();
$rs = $renewModel->add($data);
if($rs === false){
... ... @@ -219,7 +224,6 @@ class SyncProject extends Command
'is_upgrade'=>$is_update,
],
'deploy_build' => [
'service_duration' => $param['years'] ?? 0,
'login_mobile'=>$param['principal_mobile']
],
'deploy_optimize' => [
... ... @@ -233,8 +237,10 @@ class SyncProject extends Command
],
];
if($param['plan_marketing'] == '白帽SEO方案'){
$data['deploy_build']['seo_service_duration'] = $param['years'] ?? 0;
$data['deploy_build']['seo_plan'] = $this->versionSeoData($param['plan_marketing']);
}else{
$data['deploy_build']['service_duration'] = $param['years'] ?? 0;
$data['deploy_build']['plan'] = $this->versionData($param['plan_marketing']);
}
DB::beginTransaction();
... ...
... ... @@ -37,7 +37,8 @@ class RenewLogic extends BaseLogic
if(!empty($lists['list'])){
$projectModel = new Project();
foreach ($lists['list'] as $k => $v){
$v['plan'] = Project::planMap()[$v['plan']];
$v['plan'] = Project::planMap()[$v['plan']] ?? 0;
$v['seo_plan'] = Project::seoMap()[$v['seo_plan']] ?? 0;
$v['project_name'] = $projectModel->getProjectName($v['project_id']);
$lists['list'][$k] = $v;
}
... ...