登录注册体系的源码级硬切换

This commit is contained in:
kate522 committed 2026-08-23 20:30:01 +08:00
1 parent 73fcd4ed72
commit af52f9e94d
72 files changed
+1666 -6576

No files matched your search

+2 -28
View File
@@ -2,7 +2,7 @@
<div class="aksrt-page-container">
<PageHeader
title="健康检查"
desc="集中查看运行环境、数据库表、邮箱验证迁移和系统诊断状态。"
desc="集中查看运行环境、数据库表和系统诊断状态。"
>
<template #actions>
<n-space>
@@ -13,23 +13,6 @@
</PageHeader>
<n-spin :show="loading" style="width: 100%; min-height: 200px;">
<n-card class="aksrt-section-card">
<div class="aksrt-section-header">
<h3>邮箱验证状态</h3>
</div>
<n-space>
<n-tag round :type="emailHealth.feature_enabled ? 'success' : 'default'">
功能开关:{{ emailHealth.feature_enabled ? '已启用' : '未启用' }}
</n-tag>
<n-tag round :type="emailHealth.rest_blocking_active ? 'warning' : 'default'">
REST 阻断:{{ emailHealth.rest_blocking_active ? '已开启' : '仅记录/关闭' }}
</n-tag>
<n-tag round type="info">
待验证用户:{{ emailHealth.pending_users }}
</n-tag>
</n-space>
</n-card>
<div class="aksrt-health-grid">
<n-card v-for="check in checkItems" :key="check.key" class="aksrt-section-card">
<div class="aksrt-section-header">
@@ -55,11 +38,6 @@ const message = useMessage()
const loading = ref(true)
const healthData = ref({})
const emailHealth = ref({
feature_enabled: false,
pending_users: 0,
rest_blocking_active: false,
})
const checkItems = computed(() => {
return Object.entries(healthData.value || {}).map(([key, value]) => ({
@@ -86,12 +64,8 @@ function statusToTag(status) {
async function load() {
loading.value = true
try {
const [healthRes, emailRes] = await Promise.all([
api.getHealthCheck(),
api.getHealthEmailVerification(),
])
const healthRes = await api.getHealthCheck()
healthData.value = extractData(healthRes).checks || {}
emailHealth.value = extractData(emailRes)
} catch (error) {
message.error(error.message || '加载健康检查失败')
} finally {
+2 -69
View File
@@ -23,9 +23,6 @@
<n-tag round :type="form.referral_reward_enabled ? 'success' : 'default'">
推广奖励:{{ form.referral_reward_enabled ? '已启用' : '已关闭' }}
</n-tag>
<n-tag round :type="form.referral_registration_enabled ? 'info' : 'default'">
推广码注册:{{ form.referral_registration_enabled ? '开启' : '关闭' }}
</n-tag>
<n-tag round :type="captchaSummary.register ? 'info' : 'default'">
注册验证码:{{ captchaSummary.register ? '启用' : '未启用' }}
</n-tag>
@@ -82,43 +79,6 @@
<n-switch v-model:value="form.referral_reward_enabled" />
</n-form-item>
<n-form-item label="Ref 码长度">
<n-input-number v-model:value="form.referral_code_length" :min="4" :max="12" style="width: 180px;" />
<template #feedback>
<span class="aksrt-hint-text">只影响新生成或管理员重新生成的推广码,已有 Ref 不会失效。</span>
</template>
</n-form-item>
<n-form-item label="首次触达窗口(天)">
<n-input-number v-model:value="form.referral_window_days" :min="1" :max="365" style="width: 180px;" />
</n-form-item>
<n-form-item label="开放推广码注册">
<n-switch v-model:value="form.referral_registration_enabled" />
<template #feedback>
<span class="aksrt-hint-text">此开关只控制注册页推广码字段;现金返佣和积分奖励仍可独立使用同一 Ref 关系。</span>
</template>
</n-form-item>
<template v-if="form.referral_registration_enabled">
<n-form-item label="注册页推广码字段">
<n-radio-group v-model:value="form.referral_register_field">
<n-space size="large">
<n-radio value="hidden">隐藏</n-radio>
<n-radio value="optional">选填</n-radio>
<n-radio value="required">必填</n-radio>
</n-space>
</n-radio-group>
</n-form-item>
<n-form-item label="无效推广码处理" v-if="form.referral_register_field === 'required'">
<n-switch v-model:value="form.referral_reject_invalid" />
<template #feedback>
<span class="aksrt-hint-text">开启后,必填模式下无效推广码会直接拒绝注册。首次触达 Ref 始终优先于手填码。</span>
</template>
</n-form-item>
</template>
<template v-if="form.referral_reward_enabled">
<n-form-item label="推广人奖励">
<n-input-number v-model:value="form.promoter_amount" :min="0" :max="100000" style="width: 180px;" />
@@ -160,7 +120,6 @@ const message = useMessage()
const loading = ref(true)
const saving = ref(false)
const creditSnapshot = ref({})
const authSnapshot = ref({})
const captchaSummary = reactive({
register: false,
@@ -179,11 +138,6 @@ const form = reactive({
level_points: 0,
require_verify: true,
ip_daily_cap: 3,
referral_registration_enabled: true,
referral_code_length: 12,
referral_window_days: 30,
referral_register_field: 'optional',
referral_reject_invalid: true,
})
const currencyLabel = computed(() => form.currency_name || '积分')
@@ -229,14 +183,12 @@ function parseStreakText(value) {
async function load() {
loading.value = true
try {
const [creditRes, authRes, captchaRes] = await Promise.all([
const [creditRes, captchaRes] = await Promise.all([
api.getCreditSettings(),
api.getAuthSettings(),
api.getPermissionsLoginSettings(),
])
const creditData = extractData(creditRes)
const authData = extractData(authRes)
const captchaData = extractData(captchaRes)
const dailySignin = creditData.daily_signin || {}
const referralReward = creditData.referral_reward || {}
@@ -246,7 +198,6 @@ async function load() {
const sceneOn = (key) => enabledScenarios.includes(key)
creditSnapshot.value = creditData
authSnapshot.value = authData
form.credits_enabled = creditData.enabled !== false
form.currency_name = creditData.currency_name || ''
@@ -259,11 +210,6 @@ async function load() {
form.level_points = Number(referralReward.level_points || 0)
form.require_verify = referralReward.require_verify !== false
form.ip_daily_cap = Number(referralReward.ip_daily_cap || 0)
form.referral_registration_enabled = authData.referral_registration_enabled !== false
form.referral_code_length = Number(authData.referral_code_length || 12)
form.referral_window_days = Number(authData.referral_window_days || 30)
form.referral_register_field = authData.referral_register_field || 'optional'
form.referral_reject_invalid = authData.referral_reject_invalid !== false
captchaSummary.register = !!captchaData.enabled && !!captchaData.active_provider && sceneOn('register')
captchaSummary.signin = !!captchaData.enabled && !!captchaData.active_provider && sceneOn('signin')
@@ -296,22 +242,9 @@ async function handleSave() {
},
}
const nextAuth = {
...authSnapshot.value,
referral_registration_enabled: form.referral_registration_enabled,
referral_code_length: Number(form.referral_code_length || 12),
referral_window_days: Number(form.referral_window_days || 30),
referral_register_field: form.referral_register_field,
referral_reject_invalid: form.referral_reject_invalid,
}
await Promise.all([
api.saveCreditSettings(nextCredit),
api.saveAuthSettings(nextAuth),
])
await api.saveCreditSettings(nextCredit)
creditSnapshot.value = nextCredit
authSnapshot.value = nextAuth
message.success('签到奖励配置已保存')
} catch (error) {
message.error(error.message || '保存失败')