作者 lyh

gx剩余服务时常

@@ -83,7 +83,7 @@ class RemainDay extends Command @@ -83,7 +83,7 @@ class RemainDay extends Command
83 * @time :2025/4/2 10:48 83 * @time :2025/4/2 10:48
84 */ 84 */
85 public function saveRemainDay(){ 85 public function saveRemainDay(){
86 - $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']); 86 + $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']);
87 foreach ($list as $item){ 87 foreach ($list as $item){
88 $deploy_build = $this->deployBuild->read(['project_id'=>$item['id']],['service_duration','seo_service_duration','plan','seo_plan']); 88 $deploy_build = $this->deployBuild->read(['project_id'=>$item['id']],['service_duration','seo_service_duration','plan','seo_plan']);
89 echo 'start->项目id:' . $item['id'] . '执行时间:'. date('Y-m-d H:i:s') . PHP_EOL; 89 echo 'start->项目id:' . $item['id'] . '执行时间:'. date('Y-m-d H:i:s') . PHP_EOL;
@@ -97,11 +97,29 @@ class RemainDay extends Command @@ -97,11 +97,29 @@ class RemainDay extends Command
97 $this->project->edit(['pause_days'=>$pause_days],['id'=>$item['id']]); 97 $this->project->edit(['pause_days'=>$pause_days],['id'=>$item['id']]);
98 continue; 98 continue;
99 } 99 }
100 - //白帽版本的系统  
101 - if($deploy_build['seo_plan'] == 1){  
102 - if($deploy_build['seo_service_duration'] == 0){ 100 + //白帽版本单独计算
  101 + $this->seoRemainDay($deploy_build,$item);
  102 + //默认版本统计
  103 + if($deploy_build['service_duration'] == 0){
103 continue; 104 continue;
104 } 105 }
  106 + $this->remainDay($item,$deploy_build);
  107 + echo 'end->项目id:' . $item['id'] . '执行时间:'. date('Y-m-d H:i:s') . PHP_EOL;
  108 + }
  109 + return true;
  110 + }
  111 +
  112 + /**
  113 + * @remark :白帽版本单独计算
  114 + * @name :seoRemainDay
  115 + * @author :lyh
  116 + * @method :post
  117 + * @time :2025/4/25 14:24
  118 + */
  119 + public function seoRemainDay($deploy_build,$item){
  120 + //白帽版本的系统
  121 + if($deploy_build['seo_plan'] == 1){
  122 + if($deploy_build['seo_service_duration'] != 0){
105 if($item['uptime']){ 123 if($item['uptime']){
106 $diff = time() - strtotime($item['uptime']); 124 $diff = time() - strtotime($item['uptime']);
107 $seo_remain_day = $deploy_build['seo_service_duration'] - floor($diff / (60 * 60 * 24)); 125 $seo_remain_day = $deploy_build['seo_service_duration'] - floor($diff / (60 * 60 * 24));
@@ -113,27 +131,34 @@ class RemainDay extends Command @@ -113,27 +131,34 @@ class RemainDay extends Command
113 } 131 }
114 if($deploy_build['plan'] == 0 && $seo_remain_day == 0 && $deploy_build['seo_service_duration'] != 0){//只有白帽版本的项目且剩余服务时常未0,放入未续费中 132 if($deploy_build['plan'] == 0 && $seo_remain_day == 0 && $deploy_build['seo_service_duration'] != 0){//只有白帽版本的项目且剩余服务时常未0,放入未续费中
115 $this->project->edit(['seo_remain_day'=>$seo_remain_day,'extend_type'=>Project::TYPE_FIVE],['id'=>$item['id']]); 133 $this->project->edit(['seo_remain_day'=>$seo_remain_day,'extend_type'=>Project::TYPE_FIVE],['id'=>$item['id']]);
116 - continue;  
117 - } 134 + }else{
118 //同时包括白帽版本+默认版本的项目 135 //同时包括白帽版本+默认版本的项目
119 $this->project->edit(['seo_remain_day'=>$seo_remain_day],['id'=>$item['id']]); 136 $this->project->edit(['seo_remain_day'=>$seo_remain_day],['id'=>$item['id']]);
120 } 137 }
121 - if($deploy_build['service_duration'] == 0){  
122 - //服务时长为0自动跳过  
123 - continue;  
124 } 138 }
  139 + }
  140 + return true;
  141 + }
  142 +
  143 + /**
  144 + * @remark :普通版本剩余服务时常
  145 + * @name :RemainDay
  146 + * @author :lyh
  147 + * @method :post
  148 + * @time :2025/4/25 14:31
  149 + */
  150 + public function remainDay($item,$deploy_build){
125 //默认版本计算剩余服务时常 151 //默认版本计算剩余服务时常
126 if($item['type'] == Project::TYPE_TWO || $item['type'] == Project::TYPE_FOUR){ 152 if($item['type'] == Project::TYPE_TWO || $item['type'] == Project::TYPE_FOUR){
127 if(in_array($item['id'],$this->projectId)){//已开始优化的时间结算 153 if(in_array($item['id'],$this->projectId)){//已开始优化的时间结算
128 $optimizeModel = new DeployOptimize(); 154 $optimizeModel = new DeployOptimize();
129 $opInfo = $optimizeModel->read(['project_id'=>$item['id']],['start_date']); 155 $opInfo = $optimizeModel->read(['project_id'=>$item['id']],['start_date']);
130 if($opInfo === false){ 156 if($opInfo === false){
131 - continue; 157 + return true;
132 } 158 }
133 $diff = time() - strtotime($opInfo['start_date'] ?? $item['uptime']); 159 $diff = time() - strtotime($opInfo['start_date'] ?? $item['uptime']);
134 $compliance_day = floor($diff / (60 * 60 * 24)); 160 $compliance_day = floor($diff / (60 * 60 * 24));
135 $remain_day = $deploy_build['service_duration'] - $compliance_day; 161 $remain_day = $deploy_build['service_duration'] - $compliance_day;
136 -  
137 }else{ 162 }else{
138 $compliance_day = ($item['finish_remain_day'] ?? 0); 163 $compliance_day = ($item['finish_remain_day'] ?? 0);
139 $remain_day = $deploy_build['service_duration'] - $compliance_day; 164 $remain_day = $deploy_build['service_duration'] - $compliance_day;
@@ -154,8 +179,6 @@ class RemainDay extends Command @@ -154,8 +179,6 @@ class RemainDay extends Command
154 $extend_type = Project::TYPE_FIVE; 179 $extend_type = Project::TYPE_FIVE;
155 } 180 }
156 $this->project->edit(['remain_day'=>$remain_day,'extend_type'=>$extend_type,'finish_remain_day'=>$compliance_day ?? 0],['id'=>$item['id']]); 181 $this->project->edit(['remain_day'=>$remain_day,'extend_type'=>$extend_type,'finish_remain_day'=>$compliance_day ?? 0],['id'=>$item['id']]);
157 - echo 'end->项目id:' . $item['id'] . '执行时间:'. date('Y-m-d H:i:s') . PHP_EOL;  
158 - }  
159 return true; 182 return true;
160 } 183 }
161 } 184 }
@@ -59,7 +59,7 @@ class MonthCountLogic extends BaseLogic @@ -59,7 +59,7 @@ class MonthCountLogic extends BaseLogic
59 $ensTime = date('Y-m-d',time()); 59 $ensTime = date('Y-m-d',time());
60 $lists = $count->list(['date'=>['between',[$startTime,$ensTime]],'project_id'=>$this->user['project_id']],'id',['*'],'asc'); 60 $lists = $count->list(['date'=>['between',[$startTime,$ensTime]],'project_id'=>$this->user['project_id']],'id',['*'],'asc');
61 $groupedData = []; 61 $groupedData = [];
62 - foreach ($lists as $k=>$v){ 62 + foreach ($lists as $v){
63 $month = date('Y-m', strtotime($v['date'])); 63 $month = date('Y-m', strtotime($v['date']));
64 if(!isset($groupedData[$month])){ 64 if(!isset($groupedData[$month])){
65 $groupedData[$month] = []; 65 $groupedData[$month] = [];