/** * User level + integral XP (legacy user_level_s / user_level_opt / user_integral_opt). */ export const INTEGRAL_CATALOG = [ { key: 'sign_up', label: '首次注册', default: 20, group: '用户' }, { key: 'sign_in', label: '每日登录', default: 5, group: '用户' }, { key: 'followed', label: '被关注', default: 5, group: '用户' }, { key: 'post_new', label: '发布文章', default: 5, group: '文章' }, { key: 'post_like', label: '文章获赞', default: 1, group: '文章' }, { key: 'post_favorite', label: '文章被收藏', default: 2, group: '文章' }, { key: 'comment_new', label: '发表评论', default: 2, group: '文章' }, { key: 'comment_like', label: '评论获赞', default: 1, group: '文章' }, ] export function defaultLevelOpt(max = 10) { const opt = {} for (let i = 1; i <= max; i++) { opt['upgrade_integral_' + i] = i === 1 ? 0 : (i - 1) * 500 * i opt['name_' + i] = 'LV' + i opt['icon_img_' + i] = '' } return opt } export function defaultIntegralOpt() { const opt = { day_max: 100 } for (const row of INTEGRAL_CATALOG) { opt[row.key] = row.default } return opt } export const levelSchema = { key: 'users.level', title: '用户等级', icon: 'fa fas fa-level-up-alt', description: '等级与经验值:最高等级、升级阈值、经验获取矩阵(对齐 legacy user_level / user_integral)。', defaults: { user_level_s: true, user_level_public_display: true, user_level_max: 10, user_level_opt: defaultLevelOpt(10), user_integral_opt: defaultIntegralOpt(), user_level_notify: true, }, groups: [ { key: 'display', title: '等级显示', fields: [ { key: 'user_level_s', label: '启用用户等级', type: 'switch', default: true }, { key: 'user_level_public_display', label: '公开页显示等级', type: 'switch', default: true, dependsOn: { key: 'user_level_s', value: true } }, { key: 'user_level_max', label: '最高等级', type: 'number', default: 10, min: 3, max: 30, dependsOn: { key: 'user_level_s', value: true } }, { key: 'user_level_notify', label: '升级通知', type: 'switch', default: true, dependsOn: { key: 'user_level_s', value: true } }, ], }, { key: 'level_opt', title: '等级升级阈值', fields: [ { key: 'user_level_opt', label: '升级经验配置', type: 'json', sanitizeType: 'array', default: defaultLevelOpt(10), help: 'upgrade_integral_N 为升到 N 级所需累计经验' }, ], }, { key: 'integral', title: '经验值得分', fields: [ { key: 'user_integral_opt', label: '经验值获取', type: 'json', sanitizeType: 'array', default: defaultIntegralOpt(), help: 'day_max + 各行为得分;对应功能未开则将分值设 0' }, ], }, ], }