作者 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){  
103 - continue;  
104 - } 100 + //白帽版本单独计算
  101 + $this->seoRemainDay($deploy_build,$item);
  102 + //默认版本统计
  103 + if($deploy_build['service_duration'] == 0){
  104 + continue;
  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,49 +131,54 @@ class RemainDay extends Command @@ -113,49 +131,54 @@ 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; 134 + }else{
  135 + //同时包括白帽版本+默认版本的项目
  136 + $this->project->edit(['seo_remain_day'=>$seo_remain_day],['id'=>$item['id']]);
117 } 137 }
118 - //同时包括白帽版本+默认版本的项目  
119 - $this->project->edit(['seo_remain_day'=>$seo_remain_day],['id'=>$item['id']]);  
120 - }  
121 - if($deploy_build['service_duration'] == 0){  
122 - //服务时长为0自动跳过  
123 - continue;  
124 } 138 }
125 - //默认版本计算剩余服务时常  
126 - if($item['type'] == Project::TYPE_TWO || $item['type'] == Project::TYPE_FOUR){  
127 - if(in_array($item['id'],$this->projectId)){//已开始优化的时间结算  
128 - $optimizeModel = new DeployOptimize();  
129 - $opInfo = $optimizeModel->read(['project_id'=>$item['id']],['start_date']);  
130 - if($opInfo === false){  
131 - continue;  
132 - }  
133 - $diff = time() - strtotime($opInfo['start_date'] ?? $item['uptime']);  
134 - $compliance_day = floor($diff / (60 * 60 * 24));  
135 - $remain_day = $deploy_build['service_duration'] - $compliance_day; 139 + }
  140 + return true;
  141 + }
136 142
137 - }else{  
138 - $compliance_day = ($item['finish_remain_day'] ?? 0);  
139 - $remain_day = $deploy_build['service_duration'] - $compliance_day; 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){
  151 + //默认版本计算剩余服务时常
  152 + if($item['type'] == Project::TYPE_TWO || $item['type'] == Project::TYPE_FOUR){
  153 + if(in_array($item['id'],$this->projectId)){//已开始优化的时间结算
  154 + $optimizeModel = new DeployOptimize();
  155 + $opInfo = $optimizeModel->read(['project_id'=>$item['id']],['start_date']);
  156 + if($opInfo === false){
  157 + return true;
140 } 158 }
  159 + $diff = time() - strtotime($opInfo['start_date'] ?? $item['uptime']);
  160 + $compliance_day = floor($diff / (60 * 60 * 24));
  161 + $remain_day = $deploy_build['service_duration'] - $compliance_day;
141 }else{ 162 }else{
142 - //普通建站项目  
143 - if($item['uptime']){  
144 - $diff = time() - strtotime($item['uptime']);  
145 - $compliance_day = floor($diff / (60 * 60 * 24));  
146 - $remain_day = $deploy_build['service_duration'] - $compliance_day;  
147 - }else{  
148 - $remain_day = $deploy_build['service_duration'];  
149 - } 163 + $compliance_day = ($item['finish_remain_day'] ?? 0);
  164 + $remain_day = $deploy_build['service_duration'] - $compliance_day;
150 } 165 }
151 - $extend_type = 0;  
152 - if($remain_day < 0 && $deploy_build['service_duration'] != 0){  
153 - $remain_day = 0;  
154 - $extend_type = Project::TYPE_FIVE; 166 + }else{
  167 + //普通建站项目
  168 + if($item['uptime']){
  169 + $diff = time() - strtotime($item['uptime']);
  170 + $compliance_day = floor($diff / (60 * 60 * 24));
  171 + $remain_day = $deploy_build['service_duration'] - $compliance_day;
  172 + }else{
  173 + $remain_day = $deploy_build['service_duration'];
155 } 174 }
156 - $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 } 175 }
  176 + $extend_type = 0;
  177 + if($remain_day < 0 && $deploy_build['service_duration'] != 0){
  178 + $remain_day = 0;
  179 + $extend_type = Project::TYPE_FIVE;
  180 + }
  181 + $this->project->edit(['remain_day'=>$remain_day,'extend_type'=>$extend_type,'finish_remain_day'=>$compliance_day ?? 0],['id'=>$item['id']]);
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] = [];