platform orders: batch activate guard renewal missing subscription

This commit is contained in:
萝卜
2026-03-15 05:44:09 +00:00
parent aee9026b98
commit a4c36ab868
2 changed files with 18 additions and 6 deletions

View File

@@ -1382,10 +1382,22 @@ class PlatformOrderController extends Controller
foreach ($orders as $orderRow) {
try {
$order = PlatformOrder::query()->find($orderRow->id);
if (! $order) {
continue;
}
// 治理优先:续费单必须绑定订阅(兼容历史脏数据/手工改库等场景)
if ((string) ($order->order_type ?? '') === 'renewal' && ! (int) ($order->site_subscription_id ?? 0)) {
throw new \InvalidArgumentException('续费单未绑定订阅site_subscription_id 为空),不允许批量同步订阅。');
}
$subscription = $service->activateOrder($orderRow->id, $admin->id);
// 注意activateOrder 过程中会写入 order 的 meta/site_subscription_id 等;此处必须 refresh避免后续写审计时覆盖掉同步结果
$order->refresh();
// 轻量审计:记录批量同步动作(方便追溯)
$order = PlatformOrder::query()->find($orderRow->id);
if ($order) {
$meta = (array) ($order->meta ?? []);
$audit = (array) (data_get($meta, 'audit', []) ?? []);