feat(payment): rebuild order details and asset records
This commit is contained in:
1 parent
476e2f961d
commit
7b55cfb190
57 files changed
+2080
-1294
No files matched your search
+12
-4
@@ -609,17 +609,25 @@ class Badges {
|
||||
if ($type === '' || $type === 'manually_add') {
|
||||
continue;
|
||||
}
|
||||
if (in_array($type, ['creator_income', 'affiliate_commission'], true)) {
|
||||
if ($type === 'creator_income') {
|
||||
try {
|
||||
$need_minor = \AKSRT\Ledger\AssetAmount::balance((string) ($item['get_val'] ?? '0'))->minor();
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
continue;
|
||||
}
|
||||
$revenue_stats = \AKSRT\Payment\Revenue::get_instance()->get_stats($user_id);
|
||||
$have_minor = \AKSRT\Ledger\AssetAmount::balance((string) ($revenue_stats['cash']['settled'] ?? '0'))->minor();
|
||||
$qualified = $have_minor >= $need_minor;
|
||||
} elseif ($type === 'affiliate_commission') {
|
||||
try {
|
||||
$need_minor = \AKSRT\Ledger\AssetAmount::balance((string) ($item['get_val'] ?? '0'))->minor();
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
continue;
|
||||
}
|
||||
$reason = $type;
|
||||
$have_minor = \AKSRT\Ledger\LedgerQuery::get_instance()->sum_positive(
|
||||
$user_id,
|
||||
\AKSRT\Ledger\AssetType::BALANCE,
|
||||
$reason
|
||||
\AKSRT\Ledger\AssetType::COMMISSION,
|
||||
$type
|
||||
);
|
||||
$qualified = $have_minor >= $need_minor;
|
||||
} else {
|
||||
|
||||
@@ -68,10 +68,10 @@ class BalanceAdmin {
|
||||
return;
|
||||
}
|
||||
global $wpdb;
|
||||
$table = \AKSRT\Core\DBMigrator::table('asset_account');
|
||||
$query->query_from .= $wpdb->prepare(" LEFT JOIN {$table} aksrt_cash_account ON aksrt_cash_account.user_id = {$wpdb->users}.ID AND aksrt_cash_account.asset = %s", \AKSRT\Ledger\AssetType::BALANCE->value);
|
||||
$meta_table = $wpdb->usermeta;
|
||||
$query->query_from .= $wpdb->prepare(" LEFT JOIN {$meta_table} aksrt_cash_meta ON aksrt_cash_meta.user_id = {$wpdb->users}.ID AND aksrt_cash_meta.meta_key = %s", 'balance');
|
||||
$order = strtoupper((string) ($query->query_vars['order'] ?? 'DESC')) === 'ASC' ? 'ASC' : 'DESC';
|
||||
$query->query_orderby = "ORDER BY COALESCE(aksrt_cash_account.balance_minor, 0) {$order}";
|
||||
$query->query_orderby = "ORDER BY CAST(COALESCE(aksrt_cash_meta.meta_value, '0') AS DECIMAL(20,2)) {$order}";
|
||||
}
|
||||
|
||||
public function render_section(\WP_User $user): void {
|
||||
|
||||
@@ -107,10 +107,10 @@ class CreditsAdmin {
|
||||
return;
|
||||
}
|
||||
global $wpdb;
|
||||
$table = \AKSRT\Core\DBMigrator::table('asset_account');
|
||||
$query->query_from .= $wpdb->prepare(" LEFT JOIN {$table} aksrt_points_account ON aksrt_points_account.user_id = {$wpdb->users}.ID AND aksrt_points_account.asset = %s", \AKSRT\Ledger\AssetType::POINTS->value);
|
||||
$meta_table = $wpdb->usermeta;
|
||||
$query->query_from .= $wpdb->prepare(" LEFT JOIN {$meta_table} aksrt_points_meta ON aksrt_points_meta.user_id = {$wpdb->users}.ID AND aksrt_points_meta.meta_key = %s", 'points');
|
||||
$order = strtoupper((string) ($query->query_vars['order'] ?? 'DESC')) === 'ASC' ? 'ASC' : 'DESC';
|
||||
$query->query_orderby = "ORDER BY COALESCE(aksrt_points_account.balance_minor, 0) {$order}";
|
||||
$query->query_orderby = "ORDER BY CAST(COALESCE(aksrt_points_meta.meta_value, '0') AS SIGNED) {$order}";
|
||||
}
|
||||
|
||||
// ========== 用户列表:行操作 ==========
|
||||
|
||||
Reference in new issue
Block a user