下号比率恢复 + 触线降权 + 同步裁决

This commit is contained in:
root
2026-07-04 11:46:00 +08:00
parent 455b6669e8
commit 9b57b0c400
16 changed files with 358 additions and 88 deletions
@@ -13,7 +13,7 @@ use think\Db;
* 工单同步结果写入号码表
*
* 同步策略(全量镜像):
* - 爬虫返回的号码:写入 platform_status / inbound_count,开关 status 与云控在线状态一致
* - 爬虫返回的号码:写入 platform_status / inbound_countstatus 由后续 applyNumberRules 裁决
* - 爬虫未返回且 manual_manage=0:物理删除
* - manual_manage=1:不删除,仅当仍在爬虫结果中时更新 platform_status
*/
@@ -108,27 +108,11 @@ class SplitTicketNumberSyncService
}
/**
* 工单手动开启等非同步场景:按已存的 platform_status 对齐开关(不跑单号上限/下号比率)
* 工单手动开启等非同步场景:按业务规则对齐号码开关(平台 + 单号上限 + 下号比率)
*/
public function applyStatusFromPlatformSnapshot(Ticket $ticket): void
{
if ((string) ($ticket['status'] ?? 'hidden') !== 'normal') {
return;
}
$numbers = Number::where('admin_id', (int) $ticket['admin_id'])
->where('split_link_id', (int) $ticket['split_link_id'])
->where('ticket_name', (string) $ticket['ticket_name'])
->where('manual_manage', 0)
->select();
foreach ($numbers as $number) {
$platformStatus = (string) ($number['platform_status'] ?? 'offline');
Number::where('id', (int) $number['id'])->update([
'status' => self::resolveSwitchStatus($ticket, $platformStatus),
'updatetime' => time(),
]);
}
(new SplitTicketRuleService())->applyNumberRules($ticket);
}
/**
@@ -163,7 +147,6 @@ class SplitTicketNumberSyncService
}
$update['inbound_count'] = max(0, $newFollowers);
$update['status'] = self::resolveSwitchStatus($ticket, $platformStatus);
Number::where('id', (int) $row['id'])->update($update);
}
@@ -185,7 +168,7 @@ class SplitTicketNumberSyncService
'inbound_count' => max(0, $newFollowers),
'manual_manage' => 0,
'platform_status' => $platformStatus,
'status' => self::resolveSwitchStatus($ticket, $platformStatus),
'ratio_deferred' => 0,
'createtime' => $now,
'updatetime' => $now,
];