更新
This commit is contained in:
@@ -5827,7 +5827,20 @@ class YejiStatsLogic
|
||||
}
|
||||
|
||||
$payMap = self::commissionSettlementBatchPayTsMap($orderIds);
|
||||
$signMap = self::commissionSettlementBatchSignTsMapForOrderIds($orderIds);
|
||||
|
||||
$signItems = [];
|
||||
foreach ($rows as $r) {
|
||||
$oid = (int) ($r['id'] ?? 0);
|
||||
if ($oid <= 0) {
|
||||
continue;
|
||||
}
|
||||
$signItems[] = [
|
||||
'order_id' => $oid,
|
||||
'tracking_number' => trim((string) ($r['tracking_number'] ?? '')),
|
||||
];
|
||||
}
|
||||
// 与快递单详情 / logisticsTrace 同源:PHP 推导含 trace_time 字符串回填,避免 SQL 仅认 trace_time_stamp 导致误为空
|
||||
$signMap = ExpressTrackingService::batchResolveSignUnixFromDbForOrders($signItems);
|
||||
|
||||
foreach ($rows as &$r) {
|
||||
$oid = (int) ($r['id'] ?? 0);
|
||||
@@ -5836,14 +5849,19 @@ class YejiStatsLogic
|
||||
}
|
||||
$signTs = (int) ($signMap[$oid] ?? 0);
|
||||
if ($signTs <= 0) {
|
||||
$tn = trim((string) ($r['tracking_number'] ?? ''));
|
||||
if ($tn !== '') {
|
||||
$signTs = ExpressTrackingService::resolveSignUnixTimeForCommission(
|
||||
$tn,
|
||||
(string) ($r['express_company'] ?? 'auto'),
|
||||
(string) ($r['recipient_phone'] ?? ''),
|
||||
$allowKuaidiFallback
|
||||
);
|
||||
if ($allowKuaidiFallback && $oid > 0) {
|
||||
// 与 logisticsTrace 一致:库内无轨迹时 queryAndUpdate 落库后再解析
|
||||
$signTs = ExpressTrackingService::syncSignUnixFromLogisticsForPrescriptionOrder($oid, true);
|
||||
} else {
|
||||
$tn = trim((string) ($r['tracking_number'] ?? ''));
|
||||
if ($tn !== '') {
|
||||
$signTs = ExpressTrackingService::resolveSignUnixTimeForCommission(
|
||||
$tn,
|
||||
(string) ($r['express_company'] ?? 'auto'),
|
||||
(string) ($r['recipient_phone'] ?? ''),
|
||||
false
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
$r['sign_ts'] = $signTs;
|
||||
@@ -6798,7 +6816,7 @@ class YejiStatsLogic
|
||||
->page($page, $pageSize)
|
||||
->select()
|
||||
->toArray();
|
||||
$pageRows = self::commissionSettlementHydrateSignPay($pageRows, false);
|
||||
$pageRows = self::commissionSettlementHydrateSignPay($pageRows, true);
|
||||
|
||||
[$linkedApptByOrderId, $apptChannelsDictMap] =
|
||||
self::commissionSettlementLoadApptContextForOrders($pageRows);
|
||||
@@ -6835,7 +6853,7 @@ class YejiStatsLogic
|
||||
}
|
||||
|
||||
// bucket=current|deferred:分块判定签收/尾款后再 PHP 分页
|
||||
[$matchingIds, $signPayById] = self::commissionSettlementCollectBucketMatchingOrders(
|
||||
[$matchingIds] = self::commissionSettlementCollectBucketMatchingOrders(
|
||||
$pack,
|
||||
$params,
|
||||
$linesAssistScopeFlip,
|
||||
@@ -6865,14 +6883,8 @@ class YejiStatsLogic
|
||||
->order('o.id', 'desc')
|
||||
->select()
|
||||
->toArray();
|
||||
foreach ($pageRows as &$r) {
|
||||
$oid = (int) ($r['id'] ?? 0);
|
||||
if ($oid > 0 && isset($signPayById[$oid])) {
|
||||
$r['sign_ts'] = $signPayById[$oid]['sign_ts'];
|
||||
$r['pay_ts'] = $signPayById[$oid]['pay_ts'];
|
||||
}
|
||||
}
|
||||
unset($r);
|
||||
// 明细展示:库内解析后仍缺签收时,与 logisticsTrace 一致补查快递100(仅当前页)
|
||||
$pageRows = self::commissionSettlementHydrateSignPay($pageRows, true);
|
||||
|
||||
[$linkedApptByOrderId, $apptChannelsDictMap] =
|
||||
self::commissionSettlementLoadApptContextForOrders($pageRows);
|
||||
|
||||
Reference in New Issue
Block a user