作者 lyh

gx剩余服务时常

... ... @@ -83,7 +83,7 @@ class RemainDay extends Command
* @time :2025/4/2 10:48
*/
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']);
$list = $this->project->list(['extend_type'=>Project::TYPE_ZERO,'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','seo_service_duration','plan','seo_plan']);
echo 'start->项目id:' . $item['id'] . '执行时间:'. date('Y-m-d H:i:s') . PHP_EOL;
... ... @@ -97,11 +97,29 @@ class RemainDay extends Command
$this->project->edit(['pause_days'=>$pause_days],['id'=>$item['id']]);
continue;
}
//白帽版本的系统
if($deploy_build['seo_plan'] == 1){
if($deploy_build['seo_service_duration'] == 0){
//白帽版本单独计算
$this->seoRemainDay($deploy_build,$item);
//默认版本统计
if($deploy_build['service_duration'] == 0){
continue;
}
$this->remainDay($item,$deploy_build);
echo 'end->项目id:' . $item['id'] . '执行时间:'. date('Y-m-d H:i:s') . PHP_EOL;
}
return true;
}
/**
* @remark :白帽版本单独计算
* @name :seoRemainDay
* @author :lyh
* @method :post
* @time :2025/4/25 14:24
*/
public function seoRemainDay($deploy_build,$item){
//白帽版本的系统
if($deploy_build['seo_plan'] == 1){
if($deploy_build['seo_service_duration'] != 0){
if($item['uptime']){
$diff = time() - strtotime($item['uptime']);
$seo_remain_day = $deploy_build['seo_service_duration'] - floor($diff / (60 * 60 * 24));
... ... @@ -113,27 +131,34 @@ class RemainDay extends Command
}
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;
}
}else{
//同时包括白帽版本+默认版本的项目
$this->project->edit(['seo_remain_day'=>$seo_remain_day],['id'=>$item['id']]);
}
if($deploy_build['service_duration'] == 0){
//服务时长为0自动跳过
continue;
}
}
return true;
}
/**
* @remark :普通版本剩余服务时常
* @name :RemainDay
* @author :lyh
* @method :post
* @time :2025/4/25 14:31
*/
public function remainDay($item,$deploy_build){
//默认版本计算剩余服务时常
if($item['type'] == Project::TYPE_TWO || $item['type'] == Project::TYPE_FOUR){
if(in_array($item['id'],$this->projectId)){//已开始优化的时间结算
$optimizeModel = new DeployOptimize();
$opInfo = $optimizeModel->read(['project_id'=>$item['id']],['start_date']);
if($opInfo === false){
continue;
return true;
}
$diff = time() - strtotime($opInfo['start_date'] ?? $item['uptime']);
$compliance_day = floor($diff / (60 * 60 * 24));
$remain_day = $deploy_build['service_duration'] - $compliance_day;
}else{
$compliance_day = ($item['finish_remain_day'] ?? 0);
$remain_day = $deploy_build['service_duration'] - $compliance_day;
... ... @@ -154,8 +179,6 @@ class RemainDay extends Command
$extend_type = Project::TYPE_FIVE;
}
$this->project->edit(['remain_day'=>$remain_day,'extend_type'=>$extend_type,'finish_remain_day'=>$compliance_day ?? 0],['id'=>$item['id']]);
echo 'end->项目id:' . $item['id'] . '执行时间:'. date('Y-m-d H:i:s') . PHP_EOL;
}
return true;
}
}
... ...
... ... @@ -59,7 +59,7 @@ class MonthCountLogic extends BaseLogic
$ensTime = date('Y-m-d',time());
$lists = $count->list(['date'=>['between',[$startTime,$ensTime]],'project_id'=>$this->user['project_id']],'id',['*'],'asc');
$groupedData = [];
foreach ($lists as $k=>$v){
foreach ($lists as $v){
$month = date('Y-m', strtotime($v['date']));
if(!isset($groupedData[$month])){
$groupedData[$month] = [];
... ...