feat(admin): clear closed orders and bulk content-pay edit
Add zibll-style clear/delete for closed orders and bulk/quick fields for post pay_type, modo, prices, and virtual_sales.
This commit is contained in:
1 parent
f197745830
commit
73fdc479be
4 files changed
+204
-2
No files matched your search
@@ -648,6 +648,39 @@ class AKSRT_Order_Repository {
|
||||
return [$where, $params];
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete closed (cancelled/expired) orders older than $days days.
|
||||
* Mirrors zibll ZibPay::clear_order(14).
|
||||
*
|
||||
* @return int Number of rows deleted.
|
||||
*/
|
||||
public function clear_closed_orders(int $days = 14): int {
|
||||
global $wpdb;
|
||||
|
||||
$days = max(1, min(3650, $days));
|
||||
$table = $this->table();
|
||||
$cutoff = gmdate('Y-m-d H:i:s', time() - ($days * DAY_IN_SECONDS));
|
||||
// Prefer cancelled_at when set; fall back to created_at for older rows.
|
||||
$sql = "DELETE FROM {$table}
|
||||
WHERE status IN ('cancelled', 'expired')
|
||||
AND COALESCE(NULLIF(cancelled_at, ''), created_at) < %s";
|
||||
$deleted = $wpdb->query($wpdb->prepare($sql, $cutoff));
|
||||
return $deleted === false ? 0 : (int) $deleted;
|
||||
}
|
||||
|
||||
/**
|
||||
* Hard-delete a single order by order_number (admin hygiene).
|
||||
*/
|
||||
public function delete_order(string $order_number): bool {
|
||||
global $wpdb;
|
||||
$order_number = sanitize_text_field($order_number);
|
||||
if ($order_number === '') {
|
||||
return false;
|
||||
}
|
||||
$ok = $wpdb->delete($this->table(), ['order_number' => $order_number], ['%s']);
|
||||
return $ok !== false && $ok > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取订单统计
|
||||
*/
|
||||
|
||||
Reference in new issue
Block a user