feat(users): rewrite medal catalog + verify apply SPA contract

Replace user_badge_dictionary textarea with structured user_medal_*
catalog (categories/items/get_type). Expand verify SPA/PHP to Zibll
apply fields. Reader derives badge.dictionary from medal catalog for
existing AKSRT_User_Badges wear/grant runtime. No dual-read of old
pipe dictionary. audit-admin-contracts: 0 errors.
This commit is contained in:
kate522 committed 2026-07-17 01:00:05 +08:00
1 parent cab132a536
commit e80d8ea45d
7 files changed
+572 -154

No files matched your search

@@ -54,6 +54,43 @@
<n-form-item label="启用人工审核台">
<n-switch v-model:value="form.user_verify_require_manual_review" :disabled="!form.user_verify_enabled" />
</n-form-item>
<n-form-item label="申请类型选项">
<n-input
v-model:value="form.user_verify_apply_option"
type="textarea"
:autosize="{ minRows: 2, maxRows: 6 }"
:disabled="!form.user_verify_enabled"
placeholder="slug|显示名称,每行一条"
/>
</n-form-item>
<n-form-item label="允许用户前台申请">
<n-switch v-model:value="form.user_verify_allow_apply" :disabled="!form.user_verify_enabled" />
</n-form-item>
<n-form-item v-if="!form.user_verify_allow_apply" label="停用申请说明">
<n-input
v-model:value="form.user_verify_disable_desc"
type="textarea"
:autosize="{ minRows: 2, maxRows: 6 }"
:disabled="!form.user_verify_enabled"
/>
</n-form-item>
<n-form-item v-if="form.user_verify_allow_apply" label="申请要求等级">
<n-input-number
v-model:value="form.user_verify_limit_level"
:min="0"
:max="99"
:disabled="!form.user_verify_enabled"
style="width: 180px;"
/>
</n-form-item>
<n-form-item v-if="form.user_verify_allow_apply" label="申请介绍">
<n-input
v-model:value="form.user_verify_desc"
type="textarea"
:autosize="{ minRows: 3, maxRows: 8 }"
:disabled="!form.user_verify_enabled"
/>
</n-form-item>
<div class="aksrt-form-actions">
<n-button type="primary" :loading="saving" @click="handleSave">保存配置</n-button>
</div>
@@ -118,6 +155,11 @@ const form = reactive({
user_verify_badge_text: '已认证',
user_verify_accept_email_verified: true,
user_verify_require_manual_review: false,
user_verify_allow_apply: true,
user_verify_disable_desc: '由于系统正在维护,暂时无法申请身份认证\n详情请联系管理员',
user_verify_limit_level: 2,
user_verify_desc: '认证用户会在昵称后显示认证徽章,同时享受多种优先待遇。申请请确保信息属实。',
user_verify_apply_option: 'real_name|实名认证\norganization|企业认证',
})
const authSummary = reactive({
@@ -276,6 +318,14 @@ async function load() {
form.user_verify_badge_text = schemaData.user_verify_badge_text || '已认证'
form.user_verify_accept_email_verified = schemaData.user_verify_accept_email_verified !== false
form.user_verify_require_manual_review = !!schemaData.user_verify_require_manual_review
form.user_verify_allow_apply = schemaData.user_verify_allow_apply !== false
form.user_verify_disable_desc = schemaData.user_verify_disable_desc
|| '由于系统正在维护,暂时无法申请身份认证\n详情请联系管理员'
form.user_verify_limit_level = Number(schemaData.user_verify_limit_level ?? 2)
form.user_verify_desc = schemaData.user_verify_desc
|| '认证用户会在昵称后显示认证徽章,同时享受多种优先待遇。申请请确保信息属实。'
form.user_verify_apply_option = schemaData.user_verify_apply_option
|| 'real_name|实名认证\norganization|企业认证'
authSummary.emailVerificationEnabled = !!authData.registration_email_verification_enabled
await loadRequests()
@@ -311,6 +361,11 @@ async function handleSave() {
user_verify_badge_text: form.user_verify_badge_text,
user_verify_accept_email_verified: form.user_verify_accept_email_verified,
user_verify_require_manual_review: form.user_verify_require_manual_review,
user_verify_allow_apply: form.user_verify_allow_apply,
user_verify_disable_desc: form.user_verify_disable_desc,
user_verify_limit_level: Number(form.user_verify_limit_level || 0),
user_verify_desc: form.user_verify_desc,
user_verify_apply_option: form.user_verify_apply_option,
})
message.success('身份认证配置已保存')
} catch (error) {