/user/orders 顶部的「已退款」「售后待处理」统计卡移除(统计行改为 全部 / 待支付 / 已支付 / 已关闭 四格,栅格同步由 3 列调为 4 列), 筛选的订单状态新增「售后中」,命中带有「待审核 / 处理中」工单的订单。 售后中与订单自身状态正交(售后中的订单可能仍是 paid,也可能已 refunded),因此不过滤 status 列,而是由 OrderCenterQuery 通过 repository_args 的 after_sale_open 下传,在 get_user_order_query_parts 中作为独立谓词叠加工单子查询,与类型、订单号条件自然组合。 工单流转口径复用 AfterSaleService 的 STATUS_PENDING / STATUS_PROCESSING, 与 find_active() 的退款闸门同一套判定;已完结(completed)与已撤销 (cancelled)不算售后中。 同时清理随之失效的死代码:UserOrders::get_user_order_stats()、 AfterSaleService::count_user_open()、aksrt_get_order_status_labels(), 以及两处 summary 查询与空视图中的 refunded / after_sale_pending 统计键。 不写双路与数据迁移,旧键直接替换。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
43 lines
1.2 KiB
PHP
43 lines
1.2 KiB
PHP
<?php
|
|
/**
|
|
* AKSRT Transaction Helpers
|
|
*
|
|
* Frontend transaction view-model helpers.
|
|
*
|
|
* @package AKSRT
|
|
*/
|
|
|
|
defined('ABSPATH') || exit;
|
|
|
|
function aksrt_get_orders_page_view(int $user_id, int $paged = 1, int $per_page = 20, string $status = 'all', string $product_type = '', string $order_number = ''): array {
|
|
$empty = [
|
|
'items' => [],
|
|
'total' => 0,
|
|
'total_pages' => 1,
|
|
'page' => 1,
|
|
'query' => [],
|
|
'stats' => ['total' => 0, 'pending' => 0, 'paid' => 0],
|
|
'product_types' => class_exists('\AKSRT\Core\DomainModel')
|
|
? array_merge(['' => __('全部类型', 'aksrt')], \AKSRT\Core\DomainModel::order_product_type_labels())
|
|
: [],
|
|
];
|
|
|
|
if ($user_id <= 0) {
|
|
return $empty;
|
|
}
|
|
|
|
$args = [
|
|
'page' => $paged,
|
|
'per_page' => $per_page,
|
|
'status' => $status,
|
|
'product_type' => $product_type,
|
|
'order_number' => $order_number,
|
|
];
|
|
|
|
if (class_exists('\AKSRT\Payment\UserOrders')) {
|
|
return \AKSRT\Payment\UserOrders::get_instance()->get_order_center_view($user_id, $args);
|
|
}
|
|
|
|
return $empty;
|
|
}
|