- /user/balance/ 余额卡片入口改为通用「卡密兑换」弹窗:请求不带类型, 后端按卡密自动识别余额/会员/积分;卡号输入恒展示且选填 - 后台「余额充值 → 卡密充值」语义更新为「卡密兑换」,开关更名 「启用卡密兑换功能」(设置键不变),双源 schema 同步并重建 SPA - 删除死代码:credits-vip.php 死文件、credits-balance.php 内联积分 兑换块、/pay/card-pass/options 路由与 rest_options、labels 数组、 asset_points_card_description/password_only 死字段及内联块专属 CSS - 卡密核销订单实付恒 0:create_redeem_order 源头写 0,UserOrders 对 card_pass 订单视图层归零覆盖历史行(不迁移数据) - 订单名称按 note.meta 生成:卡密兑换-余额充值X / 卡密兑换-积分充值X / 购入[会员档位名]X天(永久) - 新增契约 card-pass-universal-redeem.test.cjs,收紧 user-assets-layout 契约(禁 .uc-card-pass 根类回潮)
81 lines
4.8 KiB
PHP
81 lines
4.8 KiB
PHP
<?php
|
|
/**
|
|
* User center credits: points asset card + sign-in + credits card-pass.
|
|
*
|
|
* @package AKSRT
|
|
*/
|
|
|
|
defined('ABSPATH') || exit;
|
|
|
|
$balance = max(0, (int) ($credit_balance ?? 0));
|
|
$credits_enabled = !empty($credits_enabled);
|
|
if (!$credits_enabled) {
|
|
return;
|
|
}
|
|
|
|
$all_settings = class_exists('\AKSRT\Settings\Settings') ? \AKSRT\Settings\Settings::get_all() : [];
|
|
$points_uid = (int) ($user_id ?? get_current_user_id());
|
|
$points_transfer_on = !empty($all_settings['points_transfer_s']);
|
|
if ($points_transfer_on && class_exists('\AKSRT\Settings\Capabilities') && !\AKSRT\Settings\Capabilities::user_can('points_transfer', $points_uid)) {
|
|
$points_transfer_on = false;
|
|
}
|
|
$points_transfer_min = max(1, (int) ($all_settings['points_transfer_min'] ?? 1));
|
|
$points_exchange = class_exists('\AKSRT\Settings\Settings') ? \AKSRT\Settings\Settings::get_payment_recharge_settings()['points_exchange'] ?? [] : [];
|
|
$recharge = class_exists('\AKSRT\Settings\Settings') ? \AKSRT\Settings\Settings::get_payment_recharge_settings() : [];
|
|
$points_exchange_on = !empty($points_exchange['enabled']) && !empty($recharge['enabled']);
|
|
$currency = (string) ($currency_name ?? __('积分', 'aksrt'));
|
|
?>
|
|
<div class="uc-asset-card uc-asset-card--points">
|
|
<div class="uc-asset-card__head flex jsb ac">
|
|
<div class="uc-asset-card__title">
|
|
<i class="fa fas fa-money-bill em12 mr6" aria-hidden="true"></i><?php echo esc_html($currency); ?>
|
|
</div>
|
|
<?php if (!empty($signin_enabled)) : ?>
|
|
<span class="uc-asset-card__head-action muted-color px12" data-aksrt-signin>
|
|
<button type="button" class="uc-asset-card__signin muted-color px12" data-signin-btn data-signin-idle-label="<?php esc_attr_e('签到领积分', 'aksrt'); ?>" data-signin-done-label="<?php esc_attr_e('已签到', 'aksrt'); ?>" disabled>
|
|
<span data-signin-label><?php esc_html_e('签到领积分', 'aksrt'); ?></span><i class="fa fas fa-angle-right em12 ml3" aria-hidden="true"></i>
|
|
</button>
|
|
<span class="uc-asset-card__signin-status" data-signin-status></span>
|
|
</span>
|
|
<?php endif; ?>
|
|
</div>
|
|
<div class="uc-asset-card__body flex jsb ac">
|
|
<div class="uc-asset-card__amount c-green">
|
|
<span class="uc-asset-card__value font-bold" data-aksrt-points-value data-credits-value title="<?php echo esc_attr(aksrt_format_points($balance)); ?>"><?php echo esc_html(aksrt_format_points($balance)); ?></span>
|
|
</div>
|
|
<div class="uc-asset-card__actions flex0">
|
|
<?php if ($points_transfer_on) : ?>
|
|
<button type="button" class="but c-green mr6 hollow" data-aksrt-transfer-open="points" data-aksrt-transfer-min="<?php echo esc_attr((string) $points_transfer_min); ?>"><?php esc_html_e('转账', 'aksrt'); ?></button>
|
|
<?php endif; ?>
|
|
<?php if ($points_exchange_on) : ?>
|
|
<button type="button" class="but c-green hollow" data-aksrt-points-exchange-open><?php esc_html_e('购买积分', 'aksrt'); ?></button>
|
|
<?php endif; ?>
|
|
</div>
|
|
</div>
|
|
<button type="button" class="uc-asset-card__link muted-2-color em09" data-aksrt-asset-tab="points_free"><?php esc_html_e('做任务赚积分', 'aksrt'); ?><i class="fa fas fa-angle-right em12 ml3" aria-hidden="true"></i></button>
|
|
</div>
|
|
|
|
<?php if ($points_exchange_on) :
|
|
$pb_rate = max(1, (int) ($points_exchange['rate'] ?? 100));
|
|
$pb_min_points = max(1, (int) ($points_exchange['min_points'] ?? 100));
|
|
$pb_daily_max_points = max(1, (int) ($points_exchange['daily_max_points'] ?? 100000));
|
|
?>
|
|
<div class="uc-modal" id="aksrt-points-exchange-modal" hidden data-aksrt-points-exchange-modal>
|
|
<div class="uc-modal__overlay" data-aksrt-points-exchange-close></div>
|
|
<div class="uc-modal__dialog" role="dialog" aria-modal="true">
|
|
<button type="button" class="uc-modal__close" data-aksrt-points-exchange-close aria-label="<?php esc_attr_e('关闭', 'aksrt'); ?>"><i class="fa fas fa-times" aria-hidden="true"></i></button>
|
|
<h3 class="uc-modal__title"><i class="fa fas fa-money-bill mr6" aria-hidden="true"></i><?php esc_html_e('购买积分', 'aksrt'); ?></h3>
|
|
<?php if (!empty($points_exchange['desc'])) : ?>
|
|
<div class="uc-modal__desc muted-box em09"><?php echo esc_html((string) $points_exchange['desc']); ?></div>
|
|
<?php endif; ?>
|
|
<form data-aksrt-points-exchange-form>
|
|
<label class="muted-color em09"><?php esc_html_e('兑换余额', 'aksrt'); ?></label>
|
|
<input type="number" class="uc-card-pass__input" name="amount" min="0.01" step="0.01" inputmode="decimal" data-aksrt-points-exchange-amount data-aksrt-points-exchange-rate="<?php echo esc_attr((string) $pb_rate); ?>">
|
|
<p class="muted-2-color em09 mt6"><?php printf(esc_html__('1 余额 = %d 积分;单笔至少 %d 积分,每日最多 %d 积分。', 'aksrt'), $pb_rate, $pb_min_points, $pb_daily_max_points); ?></p>
|
|
<p class="muted-2-color em09 mt6" data-aksrt-points-exchange-preview></p>
|
|
<button type="submit" class="but jb-blue btn-block mt10"><?php esc_html_e('立即购买', 'aksrt'); ?></button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
<?php endif; ?>
|