|
...
|
...
|
@@ -182,6 +182,7 @@ class ProjectLogic extends BaseLogic |
|
|
|
$this->setAiBlog($this->param['id'],$this->param['main_lang_id'],$this->param['is_ai_blog'] ?? 0,
|
|
|
|
$this->param['company']??"", $this->param['deploy_optimize']['company_en_name'] ?? '',
|
|
|
|
$this->param['deploy_optimize']['company_en_description'] ?? '',$this->param['is_ai_video'] ?? 0,$this->param['is_related_video'] ?? 0);
|
|
|
|
$this->param = $this->getPaymentRamainDay($this->param);
|
|
|
|
//保存项目信息
|
|
|
|
$this->saveProject($this->param);
|
|
|
|
//保存建站部署信息
|
|
...
|
...
|
@@ -412,6 +413,53 @@ class ProjectLogic extends BaseLogic |
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @remark :推广续费网站设置剩余服务时常
|
|
|
|
* @name :getPaymentRamainDay
|
|
|
|
* @author :lyh
|
|
|
|
* @method :post
|
|
|
|
* @time :2025/9/22 11:13
|
|
|
|
*/
|
|
|
|
public function getPaymentRamainDay($param)
|
|
|
|
{
|
|
|
|
// 推广续费网站单独处理
|
|
|
|
if ($param['type'] == Project::TYPE_FOUR) {
|
|
|
|
// 先找到 expire_at 不为 null 的记录
|
|
|
|
$validRecords = array_filter(
|
|
|
|
$param['payment']['renewal_record'] ?? [],
|
|
|
|
fn($item) => !is_null($item['expire_at'] ?? null)
|
|
|
|
);
|
|
|
|
$maxExpireAt = null;
|
|
|
|
if ($validRecords) {
|
|
|
|
// 取出最大日期
|
|
|
|
$maxExpireAt = max(array_column($validRecords, 'expire_at'));
|
|
|
|
}
|
|
|
|
if (!$maxExpireAt) {
|
|
|
|
return $this->success($param);
|
|
|
|
}
|
|
|
|
// 遍历原始 renewal_record(用引用,方便写回)
|
|
|
|
foreach ($param['payment']['renewal_record'] as &$record) {
|
|
|
|
if (!is_null($record['expire_at'] ?? null) && $record['expire_at'] === $maxExpireAt) {
|
|
|
|
// 如果 end_time 不存在或与 expire_at 不一致,则更新
|
|
|
|
if (!isset($record['end_time']) || $record['end_time'] != $record['expire_at']) {
|
|
|
|
$record['end_time'] = $record['expire_at']; // ✅ 写回原数据
|
|
|
|
// 重新计算剩余天数
|
|
|
|
$diff = (strtotime($record['expire_at']) - strtotime(date('Y-m-d'))) / (60 * 60 * 24);
|
|
|
|
if ($param['project_type'] == Project::PROJECT_TYPE_SEO) {
|
|
|
|
$param['deploy_build']['seo_service_duration'] = $diff + $param['bm_finish_remain_day'];
|
|
|
|
} else {
|
|
|
|
$param['deploy_build']['service_duration'] = $diff + $param['finish_remain_day'];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break; // 找到后跳出循环
|
|
|
|
}
|
|
|
|
}
|
|
|
|
unset($record); // 释放引用
|
|
|
|
}
|
|
|
|
return $this->success($param);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @remark :保存项目
|
|
|
|
* @name :setExtendType
|
|
|
|
* @author :lyh
|
|
...
|
...
|
@@ -751,24 +799,6 @@ class ProjectLogic extends BaseLogic |
|
|
|
//改为异步
|
|
|
|
NoticeLog::createLog(NoticeLog::TYPE_INIT_PROJECT, ['project_id' => $param['id']]);
|
|
|
|
}
|
|
|
|
//推广续费网站单独处理
|
|
|
|
if($param['type'] == Project::TYPE_FOUR){
|
|
|
|
// 提取非 null 的 expire_at 字段
|
|
|
|
$validDates = array_filter(
|
|
|
|
array_column($param['payment']['renewal_record'] ?? [], 'expire_at'),
|
|
|
|
fn($date) => !is_null($date)
|
|
|
|
);
|
|
|
|
// 获取最大日期(如果有)
|
|
|
|
$maxExpireAt = $validDates ? max($validDates) : null;
|
|
|
|
if(!empty($maxExpireAt)){
|
|
|
|
$diff = (strtotime($maxExpireAt) - strtotime( date('Y-m-d'))) / (60 * 60 * 24);
|
|
|
|
if($param['project_type'] == Project::PROJECT_TYPE_SEO){
|
|
|
|
$param['deploy_build']['seo_service_duration'] = $diff + $param['bm_finish_remain_day'];
|
|
|
|
}else{
|
|
|
|
$param['deploy_build']['service_duration'] = $diff + $param['finish_remain_day'];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return $this->success($param);
|
|
|
|
}
|
|
|
|
|
...
|
...
|
|