feat(orders): full-chain My Orders for all product types
Unify front-end order center across shop, content, VIP, recharge, points, and plate-follow with type filters, stats, and type-aware cards; keep shop-only fulfillment actions; ensure 权益与消费 entry URL.
This commit is contained in:
1 parent
85ade059a2
commit
3baa8573c9
8 files changed
+841
-152
No files matched your search
@@ -43,30 +43,37 @@ trait ShopControllerFrontendFlowOperations {
|
||||
}
|
||||
|
||||
public function get_frontend_orders(\WP_REST_Request $request): \WP_REST_Response {
|
||||
if (!class_exists('\AKSRT\Shop\Shop')) {
|
||||
return $this->success(['data' => ['items' => [], 'total' => 0, 'total_pages' => 1, 'page' => 1]]);
|
||||
}
|
||||
|
||||
$page = max(1, (int) $request->get_param('page'));
|
||||
$per_page = max(1, min(50, (int) $request->get_param('per_page'))) ?: 20;
|
||||
$status = sanitize_key((string) $request->get_param('status'));
|
||||
$product_type = sanitize_key((string) $request->get_param('product_type'));
|
||||
|
||||
$view = \AKSRT\Shop\Shop::get_instance()->get_order_center_view(get_current_user_id(), [
|
||||
'page' => $page,
|
||||
'per_page' => $per_page,
|
||||
'status' => $status,
|
||||
]);
|
||||
$args = [
|
||||
'page' => $page,
|
||||
'per_page' => $per_page,
|
||||
'status' => $status,
|
||||
'product_type' => $product_type,
|
||||
];
|
||||
|
||||
if (class_exists('\AKSRT\Payment\UserOrders')) {
|
||||
$view = \AKSRT\Payment\UserOrders::get_instance()->get_order_center_view(get_current_user_id(), $args);
|
||||
} elseif (class_exists('\AKSRT\Shop\Shop')) {
|
||||
$view = \AKSRT\Shop\Shop::get_instance()->get_order_center_view(get_current_user_id(), $args);
|
||||
} else {
|
||||
$view = ['items' => [], 'total' => 0, 'total_pages' => 1, 'page' => 1];
|
||||
}
|
||||
|
||||
return $this->success(['data' => $view]);
|
||||
}
|
||||
|
||||
public function get_frontend_order(\WP_REST_Request $request): \WP_REST_Response {
|
||||
if (!class_exists('\AKSRT\Shop\Shop')) {
|
||||
return $this->error('商城服务不可用', 500);
|
||||
}
|
||||
|
||||
$order_number = sanitize_text_field((string) $request->get_param('order_number'));
|
||||
$order = \AKSRT\Shop\Shop::get_instance()->get_order_detail_view(get_current_user_id(), $order_number);
|
||||
$order = null;
|
||||
if (class_exists('\AKSRT\Payment\UserOrders')) {
|
||||
$order = \AKSRT\Payment\UserOrders::get_instance()->get_order_detail_view(get_current_user_id(), $order_number);
|
||||
} elseif (class_exists('\AKSRT\Shop\Shop')) {
|
||||
$order = \AKSRT\Shop\Shop::get_instance()->get_order_detail_view(get_current_user_id(), $order_number);
|
||||
}
|
||||
if (!$order) {
|
||||
return $this->error('订单不存在', 404);
|
||||
}
|
||||
@@ -75,15 +82,17 @@ trait ShopControllerFrontendFlowOperations {
|
||||
}
|
||||
|
||||
public function pay_frontend_order(\WP_REST_Request $request): \WP_REST_Response {
|
||||
if (!class_exists('\AKSRT\Shop\Shop')) {
|
||||
return $this->error('商城服务不可用', 500);
|
||||
}
|
||||
|
||||
$params = $this->get_json_params($request);
|
||||
$payment_method = sanitize_key((string) ($params['payment_method'] ?? 'balance'));
|
||||
$payment_method = sanitize_key((string) ($params['payment_method'] ?? ''));
|
||||
$order_number = sanitize_text_field((string) $request->get_param('order_number'));
|
||||
|
||||
$result = \AKSRT\Shop\Shop::get_instance()->pay_order(get_current_user_id(), $order_number, $payment_method);
|
||||
if (class_exists('\AKSRT\Payment\UserOrders')) {
|
||||
$result = \AKSRT\Payment\UserOrders::get_instance()->pay_order(get_current_user_id(), $order_number, $payment_method);
|
||||
} elseif (class_exists('\AKSRT\Shop\Shop')) {
|
||||
$result = \AKSRT\Shop\Shop::get_instance()->pay_order(get_current_user_id(), $order_number, $payment_method ?: 'balance');
|
||||
} else {
|
||||
return $this->error('订单服务不可用', 500);
|
||||
}
|
||||
if (empty($result['success'])) {
|
||||
return $this->error($result['message'] ?? '支付失败');
|
||||
}
|
||||
@@ -92,12 +101,14 @@ trait ShopControllerFrontendFlowOperations {
|
||||
}
|
||||
|
||||
public function cancel_frontend_order(\WP_REST_Request $request): \WP_REST_Response {
|
||||
if (!class_exists('\AKSRT\Shop\Shop')) {
|
||||
return $this->error('商城服务不可用', 500);
|
||||
}
|
||||
|
||||
$order_number = sanitize_text_field((string) $request->get_param('order_number'));
|
||||
$result = \AKSRT\Shop\Shop::get_instance()->cancel_order(get_current_user_id(), $order_number);
|
||||
if (class_exists('\AKSRT\Payment\UserOrders')) {
|
||||
$result = \AKSRT\Payment\UserOrders::get_instance()->cancel_order(get_current_user_id(), $order_number);
|
||||
} elseif (class_exists('\AKSRT\Shop\Shop')) {
|
||||
$result = \AKSRT\Shop\Shop::get_instance()->cancel_order(get_current_user_id(), $order_number);
|
||||
} else {
|
||||
return $this->error('订单服务不可用', 500);
|
||||
}
|
||||
if (empty($result['success'])) {
|
||||
return $this->error($result['message'] ?? '取消订单失败');
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user