feat(admin,forum): download logs, hidecontent, VIP tiers, users commerce
Add aksrt_download_logs workbench, zibll hidecontent alias + topic partial-hide path, VIP1/VIP2 price matrix for topics, and users list commerce snapshot column with deep links.
This commit is contained in:
1 parent
cf6ad0e972
commit
8d31e65ccd
14 files changed
+611
-32
No files matched your search
@@ -44,10 +44,14 @@ class AKSRT_User_Credits_Admin {
|
||||
public function add_balance_column(array $columns): array {
|
||||
$currency_name = class_exists('AKSRT_Settings') ? AKSRT_Settings::get_currency_name() : __('积分', 'aksrt');
|
||||
$columns['aksrt_credits_balance'] = sprintf(__('%s余额', 'aksrt'), $currency_name);
|
||||
$columns['aksrt_user_commerce'] = __('资产/分成', 'aksrt');
|
||||
return $columns;
|
||||
}
|
||||
|
||||
public function render_balance_column(string $output, string $column_name, int $user_id): string {
|
||||
if ($column_name === 'aksrt_user_commerce') {
|
||||
return $this->render_commerce_column($user_id);
|
||||
}
|
||||
if ($column_name !== 'aksrt_credits_balance') {
|
||||
return $output;
|
||||
}
|
||||
@@ -59,6 +63,55 @@ class AKSRT_User_Credits_Admin {
|
||||
return '<strong>' . esc_html((string) $balance) . '</strong>';
|
||||
}
|
||||
|
||||
/**
|
||||
* Compact commerce snapshot: VIP, revenue, rebate, download logs link.
|
||||
*/
|
||||
private function render_commerce_column(int $user_id): string {
|
||||
$bits = [];
|
||||
if (function_exists('aksrt_get_user_vip_level')) {
|
||||
$lv = (int) aksrt_get_user_vip_level($user_id);
|
||||
if ($lv > 0) {
|
||||
$bits[] = '<span class="aksrt-vip-badge">VIP' . esc_html((string) $lv) . '</span>';
|
||||
}
|
||||
}
|
||||
if (class_exists('AKSRT_Revenue')) {
|
||||
$stats = AKSRT_Revenue::get_instance()->get_stats($user_id);
|
||||
$pending = (float) ($stats['pending'] ?? 0);
|
||||
$total = (float) ($stats['total'] ?? 0);
|
||||
if ($total > 0 || $pending > 0) {
|
||||
$bits[] = sprintf(
|
||||
/* translators: 1 total 2 pending */
|
||||
esc_html__('分成 ¥%1$s(待结 ¥%2$s)', 'aksrt'),
|
||||
number_format($total, 2),
|
||||
number_format($pending, 2)
|
||||
);
|
||||
$bits[] = '<a href="' . esc_url(admin_url('admin.php?page=aksrt_income')) . '">' . esc_html__('明细', 'aksrt') . '</a>';
|
||||
}
|
||||
}
|
||||
if (class_exists('AKSRT_Rebate')) {
|
||||
$list = AKSRT_Rebate::get_instance()->get_list(['user_id' => $user_id, 'limit' => 1]);
|
||||
$total_r = (int) ($list['total'] ?? 0);
|
||||
if ($total_r > 0) {
|
||||
$sum = 0.0;
|
||||
// Lightweight sum via stats if available; else show count.
|
||||
if (method_exists(AKSRT_Rebate::get_instance(), 'get_stats')) {
|
||||
// global stats only — show link with count
|
||||
$bits[] = sprintf(esc_html__('返佣 %d 笔', 'aksrt'), $total_r);
|
||||
} else {
|
||||
$bits[] = sprintf(esc_html__('返佣 %d 笔', 'aksrt'), $total_r);
|
||||
}
|
||||
$bits[] = '<a href="' . esc_url(admin_url('admin.php?page=aksrt_rebate')) . '">' . esc_html__('返佣', 'aksrt') . '</a>';
|
||||
}
|
||||
}
|
||||
$bits[] = '<a href="' . esc_url(admin_url('admin.php?page=aksrt_download_logs&user_id=' . $user_id)) . '">' . esc_html__('下载记录', 'aksrt') . '</a>';
|
||||
$bits[] = '<a href="' . esc_url(admin_url('admin.php?page=aksrt_orders&s=' . $user_id)) . '">' . esc_html__('订单', 'aksrt') . '</a>';
|
||||
|
||||
if (!$bits) {
|
||||
return '—';
|
||||
}
|
||||
return '<div style="font-size:12px;line-height:1.5;">' . implode('<br>', $bits) . '</div>';
|
||||
}
|
||||
|
||||
public function make_balance_sortable(array $columns): array {
|
||||
$columns['aksrt_credits_balance'] = 'aksrt_credits_balance';
|
||||
return $columns;
|
||||
@@ -91,6 +144,11 @@ class AKSRT_User_Credits_Admin {
|
||||
esc_html(sprintf(__('调整%s', 'aksrt'), $currency_name))
|
||||
);
|
||||
}
|
||||
$actions['aksrt_user_dl_logs'] = sprintf(
|
||||
'<a href="%s">%s</a>',
|
||||
esc_url(admin_url('admin.php?page=aksrt_download_logs&user_id=' . (int) $user->ID)),
|
||||
esc_html__('下载记录', 'aksrt')
|
||||
);
|
||||
|
||||
return $actions;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user