feat(split): 添加批量查询手动分账覆盖和变更历史功能

- 新增 SplitManualService::orderIdsWithOverride 方法用于批量查询存在手动覆盖的订单
- 新增 SplitManualService::orderIdsWithLog 方法用于批量查询存在变更历史的订单
- 在订单列表页面优化性能,批量查询订单的手动覆盖和变更历史状态
- 添加 can_view_manual_history 权限控制,允许成功/失败后查看变更历史
- 更新前端界面显示逻辑,优化变更历史查看权限判断
- 增强操作提示文案,说明变更历史查看功能
```
这个提交包含在:
可乐加冰
2026-10-23 00:15:38 +08:00
父节点 af08af8d47
当前提交 d2f22d7ecf
共有 4 个文件被更改,包括 55 次插入 和 3 次删除

查看文件

@@ -135,6 +135,18 @@ class Order extends Base
protected function formatSplitOrderList($list)
{
$rows = [];
$manualService = new SplitManualService();
$orderIds = [];
foreach ($list as $item) {
$data = is_array($item) ? $item : $item->toArray();
$oid = intval($data['order_id'] ?? 0);
if ($oid > 0) {
$orderIds[] = $oid;
}
}
$overrideOrderIds = array_flip($manualService->orderIdsWithOverride($orderIds));
$logOrderIds = array_flip($manualService->orderIdsWithLog($orderIds));
foreach ($list as $item) {
$data = is_array($item) ? $item : $item->toArray();
@@ -193,8 +205,14 @@ class Order extends Base
$orderSplitSource = $data['split_source'] ?? 'auto';
$data['split_source'] = $orderSplitSource;
$data['split_source_text'] = $orderSplitSource === 'manual' ? '手动指定' : $data['calc_source_text'];
$data['has_manual_override'] = (new SplitManualService())->hasOverride($orderId);
$hasOverride = isset($overrideOrderIds[$orderId]);
$hasManualLog = isset($logOrderIds[$orderId]);
$data['has_manual_override'] = $hasOverride;
$data['has_manual_log'] = $hasManualLog;
$data['can_edit_manual'] = ($status === 4 && $channel === 'huifu');
// 变更历史:成功/失败后均可查看,不限于 status=4
$data['can_view_manual_history'] = ($channel === 'huifu')
&& ($hasOverride || $hasManualLog || $orderSplitSource === 'manual');
unset($data['order'], $data['receivers']);
$rows[] = $data;