diff --git a/assets/admin/src/schema/sections/users/credits.js b/assets/admin/src/schema/sections/users/credits.js index 87d11a32..92f298f2 100644 --- a/assets/admin/src/schema/sections/users/credits.js +++ b/assets/admin/src/schema/sections/users/credits.js @@ -24,6 +24,9 @@ export const creditsSchema = { points_deduction_s: false, points_deduction_rate: 100, points_deduction_max: 50, + points_pass_exchange_s: false, + points_pass_exchange_desc: '', + points_pass_exchange_only_password: true, points_show_balance: true, points_show_log: true, points_expire_days: 0, @@ -84,6 +87,16 @@ export const creditsSchema = { { key: 'points_deduction_max', label: '最大抵扣比例(%)', type: 'number', default: 50, min: 1, max: 100, dependsOn: { key: 'points_deduction_s', value: true } }, ], }, + { + key: 'card_pass', + title: '积分卡密兑换', + icon: 'fas fa-ticket-alt', + fields: [ + { key: 'points_pass_exchange_s', label: '启用积分卡密兑换', type: 'switch', default: false, help: '对齐 zibll points_pass_exchange_s。后台充值卡可生成积分卡,用户中心兑换入账。' }, + { key: 'points_pass_exchange_desc', label: '兑换说明', type: 'textarea', default: '', dependsOn: { key: 'points_pass_exchange_s', value: true } }, + { key: 'points_pass_exchange_only_password', label: '仅密码兑换', type: 'switch', default: true, dependsOn: { key: 'points_pass_exchange_s', value: true }, help: '开启后只需输入卡密;关闭则需卡号+卡密。' }, + ], + }, { key: 'display', title: '展示设置', diff --git a/inc/classes/admin/schema/class-aksrt-admin-schema-users.php b/inc/classes/admin/schema/class-aksrt-admin-schema-users.php index d9dc12de..3aa2b7bb 100644 --- a/inc/classes/admin/schema/class-aksrt-admin-schema-users.php +++ b/inc/classes/admin/schema/class-aksrt-admin-schema-users.php @@ -437,6 +437,11 @@ class AKSRT_Admin_Schema_Users { ['key' => 'points_deduction_rate', 'label' => '抵扣比例(%)', 'type' => 'number', 'default' => 100, 'min' => 1, 'max' => 100], ['key' => 'points_deduction_max', 'label' => '最大抵扣比例(%)', 'type' => 'number', 'default' => 50, 'min' => 1, 'max' => 100], ]], + ['key' => 'card_pass', 'title' => '积分卡密兑换', 'fields' => [ + ['key' => 'points_pass_exchange_s', 'label' => '启用积分卡密兑换', 'type' => 'switch', 'default' => false], + ['key' => 'points_pass_exchange_desc', 'label' => '兑换说明', 'type' => 'textarea', 'default' => '', 'dependsOn' => ['key' => 'points_pass_exchange_s', 'value' => true]], + ['key' => 'points_pass_exchange_only_password', 'label' => '仅密码兑换', 'type' => 'switch', 'default' => true, 'dependsOn' => ['key' => 'points_pass_exchange_s', 'value' => true]], + ]], ['key' => 'display', 'title' => '展示设置', 'fields' => [ ['key' => 'points_show_balance', 'label' => '导航栏显示余额', 'type' => 'switch', 'default' => true], ['key' => 'points_show_log', 'label' => '显示积分记录', 'type' => 'switch', 'default' => true], diff --git a/inc/classes/class-aksrt-charge-card.php b/inc/classes/class-aksrt-charge-card.php index c59843c0..e5d18643 100644 --- a/inc/classes/class-aksrt-charge-card.php +++ b/inc/classes/class-aksrt-charge-card.php @@ -138,22 +138,34 @@ class AKSRT_Charge_Card { } } + // Points card-pass: zibll points_pass_exchange_* (stored in aksrt_settings). + $credits = ['enabled' => false, 'desc' => '', 'only_password' => true]; + $all = class_exists('AKSRT_Settings') && method_exists('AKSRT_Settings', 'get_all') + ? AKSRT_Settings::get_all() + : (array) get_option('aksrt_settings', []); + if (!empty($all['points_pass_exchange_s'])) { + // Require credits system on when available. + $credits_on = !class_exists('AKSRT_Settings') || !method_exists('AKSRT_Settings', 'credits_enabled') || AKSRT_Settings::credits_enabled(); + $credits = [ + 'enabled' => $credits_on, + 'desc' => sanitize_textarea_field((string) ($all['points_pass_exchange_desc'] ?? '')), + 'only_password' => !isset($all['points_pass_exchange_only_password']) || !empty($all['points_pass_exchange_only_password']), + ]; + } + return [ 'balance' => $balance, 'vip' => $vip, - 'credits' => [ - 'enabled' => false, - 'desc' => '', - 'only_password' => true, - ], + 'credits' => $credits, 'labels' => [ - 'title' => __('卡密兑换', 'aksrt'), - 'password' => __('卡密', 'aksrt'), - 'card' => __('卡号', 'aksrt'), - 'submit_balance' => __('兑换余额', 'aksrt'), - 'submit_vip' => __('兑换会员', 'aksrt'), - 'placeholder_pw' => __('请输入卡密', 'aksrt'), - 'placeholder_card'=> __('请输入卡号', 'aksrt'), + 'title' => __('卡密兑换', 'aksrt'), + 'password' => __('卡密', 'aksrt'), + 'card' => __('卡号', 'aksrt'), + 'submit_balance' => __('兑换余额', 'aksrt'), + 'submit_vip' => __('兑换会员', 'aksrt'), + 'submit_credits' => __('兑换积分', 'aksrt'), + 'placeholder_pw' => __('请输入卡密', 'aksrt'), + 'placeholder_card' => __('请输入卡号', 'aksrt'), ], ]; } diff --git a/inc/helpers/user-center-renderers/credits-balance.php b/inc/helpers/user-center-renderers/credits-balance.php index 7bd04c31..58c49621 100644 --- a/inc/helpers/user-center-renderers/credits-balance.php +++ b/inc/helpers/user-center-renderers/credits-balance.php @@ -13,9 +13,11 @@ $balance = (float) ($credit_balance ?? 0.0); $credits_enabled = !empty($credits_enabled); $card_pass_balance = ['enabled' => false, 'desc' => '', 'only_password' => true]; +$card_pass_credits = ['enabled' => false, 'desc' => '', 'only_password' => true]; if (class_exists('AKSRT_Charge_Card')) { $opts = AKSRT_Charge_Card::get_instance()->get_public_options(); $card_pass_balance = is_array($opts['balance'] ?? null) ? $opts['balance'] : $card_pass_balance; + $card_pass_credits = is_array($opts['credits'] ?? null) ? $opts['credits'] : $card_pass_credits; } elseif (class_exists('AKSRT_Settings') && method_exists('AKSRT_Settings', 'get_payment_recharge_settings')) { $recharge = AKSRT_Settings::get_payment_recharge_settings(); $pc = is_array($recharge['pass_charge'] ?? null) ? $recharge['pass_charge'] : []; @@ -68,3 +70,23 @@ if (class_exists('AKSRT_Charge_Card')) {
+ + +