九宫性格能量测试系统源码 - 全栈开源项目 | 144题专业性格测评平台

发布时间:2026/5/20 1:23:08

九宫性格能量测试系统源码 - 全栈开源项目 | 144题专业性格测评平台 项目概述九宫性格能量测试系统是一个基于九型人格理论的在线性格测评平台采用前后端分离架构包含H5移动端用户系统和Web管理后台。系统通过144道二选一选择题运用独特的九宫矩阵算法3×3维度计算用户的性格能量分布生成详细的性格分析报告。核心功能模块一、用户认证系统auth.js1. 手机号密码登录接口POST /api/auth/login参数phone手机号、password密码流程验证手机号格式正则/^1[3-9]\d{9}$/查询用户记录bcrypt比对密码哈希值生成JWT Token有效期配置在.env中返回用户信息和Token2. 手机号验证码登录接口POST /api/auth/sms-login参数phone、code6位验证码特点自动注册新用户首次登录时创建用户记录短信验证码功能预留接口需接入阿里云/腾讯云短信服务开发环境返回验证码便于调试3. 用户注册接口POST /api/auth/register参数phone、password、nickname可选流程验证手机号唯一性bcrypt加密密码salt rounds: 10自动生成昵称“用户” 手机后4位创建用户并返回Token4. 微信登录接口POST /api/auth/wechat-login参数code微信登录凭证流程调用微信API获取openid和session_key根据openid查找或创建用户生成JWT Token支持微信小程序场景5. 发送短信验证码接口POST /api/auth/send-sms参数phone功能生成6位随机验证码验证手机号格式预留短信服务商接口TODO标记开发环境直接返回验证码二、测试答题系统test.js1. 开始测试接口POST /api/test/start需要认证是authUser中间件参数testType测试类型activation_code/wechat_pay功能创建测试记录test_records表初始状态为0进行中返回测试记录ID记录开始时间2. 提交答案接口POST /api/test/answer需要认证是参数testRecordId测试记录IDquestionId题目IDquestionNo题号answer答案A或B特点兼容snake_case和camelCase参数命名逐题保存答案到test_answers表实时记录答题进度不立即计算结果等待全部完成3. 完成测试并提交接口POST /api/test/submit需要认证是参数testRecordId核心流程验证是否答完144道题answers.length 144则拒绝调用九宫性格计算器nineGridCalculator.calculate更新测试记录状态为1已完成计算答题时长duration end_time - start_time保存测试结果到test_results表JSON格式返回完整的性格分析结果4. 获取测试结果接口GET /api/test/result/:testRecordId需要认证是权限控制只能查看自己的测试结果WHERE user_id ?返回数据record测试记录信息时长、状态等result.matrix3×3矩阵数据result.personality9种性格类型排序列表result.chart柱状图数据按九型顺序特殊处理mysql2自动解析JSON字段为对象智能判断数据类型object则直接使用string则JSON.parse5. 获取答题进度接口GET /api/test/progress/:testRecordId需要认证是返回answered已答题数量total总题数144progress进度百分比0-1006. 生成分享链接接口GET /api/test/share/:testRecordId需要认证是功能生成可分享的测试结果URL三、支付与激活码系统payment.js1. 创建订单接口POST /api/payment/create需要认证是功能生成订单号格式JG 时间戳 随机字符串从配置读取测试价格默认29.90元创建待支付订单status0返回订单ID和金额2. 微信支付接口POST /api/payment/wechat需要认证是参数orderId流程验证订单归属和状态TODO调用微信支付统一下单API返回支付参数appId、timeStamp、nonceStr、package、paySign当前为示例实现需配置真实微信商户参数3. 支付回调接口POST /api/payment/notify无需认证微信服务器调用功能TODO验证微信支付签名更新订单状态为1已支付记录支付时间和交易号返回SUCCESS/FAIL给微信服务器4. 验证激活码接口POST /api/payment/verify-code需要认证是参数code激活码流程查询激活码status0未使用检查是否过期expire_time更新激活码状态为1已使用记录使用者ID和使用时间返回canTesttrue5. 获取订单列表接口GET /api/payment/orders需要认证是参数page、limit分页返回当前用户的订单列表按创建时间倒序6. 获取订单详情接口GET /api/payment/orders/:id需要认证是权限控制只能查看自己的订单四、管理员系统admin.js1. 管理员登录接口POST /api/admin/login参数username、password流程bcrypt验证密码更新最后登录时间生成管理员TokenadminId记录操作日志operation_logs表返回角色信息admin/operator2. 退出登录接口POST /api/admin/logout需要认证是authAdmin中间件记录登出日志3. 数据概览Dashboard接口GET /api/admin/dashboard需要认证是返回数据今日统计新增用户数、测试次数、订单数、收入总计数据累计用户、测试、订单、总收入近7天趋势每日新增用户折线图数据SQL优化使用子查询一次性获取所有统计数据4. 用户管理用户列表接口GET /api/admin/users参数page、limit、keyword搜索关键词功能支持昵称/手机号模糊搜索分页查询返回用户基本信息用户详情接口GET /api/admin/users/:id返回用户基本信息测试记录数量订单数量最近5条测试记录更新用户状态接口PUT /api/admin/users/:id/status需要权限admin角色requireRole中间件参数status1启用/0禁用记录操作日志5. 题目管理题目列表接口GET /api/admin/questions参数page、limit默认20条/页排序按题号升序question_no ASC添加题目接口POST /api/admin/questions需要权限admin角色参数question_no题号option_a、option_a_type选项A内容及类型option_b、option_b_type选项B内容及类型默认状态1启用更新题目接口PUT /api/admin/questions/:id需要权限admin角色可修改选项内容、类型、状态删除题目接口DELETE /api/admin/questions/:id需要权限admin角色物理删除非软删除6. 订单管理订单列表接口GET /api/admin/orders参数page、limit、status筛选状态关联查询LEFT JOIN users表获取用户昵称和手机号排序按创建时间倒序订单详情接口GET /api/admin/orders/:id返回订单完整信息用户信息昵称、头像、手机号关联的激活码信息如果有7. 激活码管理激活码列表接口GET /api/admin/codes参数page、limit、status关联查询LEFT JOIN users表显示使用者昵称排序按创建时间倒序生成激活码接口POST /api/admin/codes需要权限admin角色参数count生成数量默认1expire_time过期时间可选功能批量生成激活码格式JG 时间戳 随机6位大写循环插入数据库返回生成的激活码列表记录操作日志8. 系统设置获取设置接口GET /api/admin/settings返回键值对形式的配置项包括网站名称、测试价格、测试说明、微信配置等更新设置接口PUT /api/admin/settings需要权限admin角色参数settings对象key-value功能批量更新配置INSERT … ON DUPLICATE KEY UPDATE存在则更新不存在则插入记录操作日志9. 操作日志日志列表接口GET /api/admin/logs参数page、limit默认20条/页关联查询LEFT JOIN admins表显示操作人用户名排序按创建时间倒序记录内容管理员ID、操作类型、模块、内容、IP地址五、九宫性格核心算法nineGridCalculator.js这是系统的核心业务逻辑实现了独特的九宫性格能量计算模型。1. 九宫类型映射体系系统定义了36种细分类型每个类型由三个维度组合而成维度一动机Motivation控制Control理想Ideal认同Identity维度二方式Approach靠近Approach抽离Detached对抗Oppose维度三九型编号Type 1-9例如type1_approach_control第1型 靠近 控制type8_oppose_control第8型 对抗 控制type9_detached_ideal第9型 抽离 理想2. 性格动物映射系统将9种类型对应为动物形象便于用户理解第1型老虎完美主义者第2型海豚助人者第3型蜜蜂成就者第4型八爪浪漫主义者第5型企鹅观察者第6型考拉忠诚者第7型孔雀享乐者第8型狮子挑战者第9型鸽子和平者3. 计算流程输入用户答案数组144个答案每个包含question_id和answer步骤1初始化分数matrixScores{控制:{靠近:0,抽离:0,对抗:0},理想:{靠近:0,抽离:0,对抗:0},认同:{靠近:0,抽离:0,对抗:0}}typeScores{1:0,2:0,...,9:0}步骤2遍历答案统计对于每道题根据question_id查询题目信息根据用户选择A或B获取对应的type字段从typeMap解析出type、approach、motivationmatrixScores[motivation][approach]typeScores[type]步骤3计算矩阵数据生成3×3矩阵包含每个单元格的分数每行合计控制合计、理想合计、认同合计每列合计靠近合计、抽离合计、对抗合计总计应为144步骤4计算性格能量计算基准值baseValue totalScore / 9计算每种类型的比率ratio score / baseValue生成personality数组包含type、name动物名、score、ratio按分数降序排序添加排名rank 1-9步骤5生成图表数据按九型顺序1-9生成chart数组用于ECharts柱状图展示输出{matrix:{/* 3×3矩阵数据 */},personality:[/* 9种类型排序列表 */],chart:[/* 柱状图数据 */]}数据库设计核心表结构10张表1. users用户表主键id唯一索引openid、phone字段昵称、头像、手机号、密码bcrypt、状态支持多种登录方式微信openid、手机号2. questions题目表主键id唯一索引question_no1-144字段题号、选项A内容及类型、选项B内容及类型、状态每题两个选项分别对应不同的九宫类型3. test_records测试记录表主键id索引user_id、status、created_at字段用户ID、测试类型、状态0进行中/1已完成、开始/结束时间、答题时长一次测试一条记录4. test_answers测试答案表主键id索引test_record_id、question_id、question_no字段测试记录ID、题目ID、题号、答案A/B144条答案对应一条测试记录5. test_results测试结果表主键id唯一索引test_record_id一对一关系字段matrix_dataJSON、personality_dataJSON、chart_dataJSON使用MySQL 5.7的JSON类型支持自动解析6. activation_codes激活码表主键id唯一索引code字段激活码、状态0未使用/1已使用、使用者ID、使用时间、过期时间支持批量生成和有效期控制7. orders订单表主键id唯一索引order_no索引user_id、status字段订单号、用户ID、金额、状态0待支付/1已支付/2已取消、支付时间、微信交易号8. admins管理员表主键id唯一索引username字段用户名、密码bcrypt、角色admin/operator、状态、最后登录时间支持权限分级9. operation_logs操作日志表主键id索引admin_id、created_at字段管理员ID、操作类型、模块、内容、IP地址记录所有敏感操作10. settings系统设置表主键id唯一索引key字段设置键、值、描述动态配置系统参数视图Viewsv_user_test_stats用户测试统计视图字段用户ID、昵称、手机号、测试次数、最后测试时间GROUP BY聚合查询v_daily_stats每日数据统计视图字段日期、新增用户数、测试次数、收入用于Dashboard趋势图前端页面功能H5移动端7个页面1. Home.vue首页/能量评估功能展示测试介绍和价格¥29.90激活码输入框开始评估按钮底部Tabbar导航能量评估、我的交互点击开始评估检查登录状态未登录跳转登录页已登录创建测试记录并跳转答题页2. Login.vue登录页功能手机号输入密码输入登录按钮去注册链接样式纯色背景#1989fa无渐变3. Register.vue注册页功能手机号、密码、确认密码输入昵称输入可选注册按钮去登录链接4. Test.vue答题页功能显示当前题号1/144进度条展示题目内容选项A和选项B按钮上一题/下一题导航交互选择答案后自动保存实时更新进度答完144题自动提交5. Result.vue结果页功能九宫性格能量柱状图ECharts主要性格类型展示9种类型分数排名列表3×3矩阵数据表格重新测试按钮技术nextTick确保DOM更新后渲染图表窗口resize自适应支持路径参数和查询参数两种方式访问6. Profile.vue个人中心功能用户头像van-icon图标昵称和手机号显示编辑资料入口修改密码入口底部Tabbar导航状态未登录显示点击登录提示已登录显示用户信息7. Records.vue测试记录功能历史测试记录列表每条记录显示测试时间、时长、主要性格点击查看结果按钮Admin管理后台8个页面1. Login.vue管理员登录简洁的登录表单用户名和密码输入Element Plus组件2. Layout.vue布局框架侧边栏菜单导航顶部Header主要内容区域退出登录按钮3. Dashboard.vue数据概览今日数据卡片新增用户、测试次数、订单数、收入总计数据卡片近7天用户增长趋势图ECharts折线图使用Element Plus图标替换emoji4. Users.vue用户管理用户列表表格搜索框昵称/手机号分页组件操作按钮查看详情、启用/禁用用户详情抽屉5. Questions.vue题目管理题目列表表格分页展示20条/页添加题目对话框编辑题目对话框删除确认显示题号、选项A、选项B、状态6. Orders.vue订单管理订单列表表格状态筛选待支付/已支付/已取消关联用户信息显示订单详情查看分页组件7. Codes.vue激活码管理激活码列表表格状态筛选未使用/已使用批量生成对话框输入数量和过期时间显示使用者信息复制激活码功能8. Settings.vue系统设置表单配置项网站名称、测试价格测试说明文案微信配置AppID、密钥等保存按钮安全机制1. 认证授权JWT Token用户和管理员分别使用userId和adminId签发中间件验证authUser验证用户TokenauthAdmin验证管理员TokenrequireRole检查管理员角色权限Token过期配置在.env中默认7天2. 密码安全bcrypt加密salt rounds设置为10不存储明文数据库中只存哈希值登录验证使用bcrypt.compare比对3. SQL注入防护参数化查询所有SQL使用占位符?空字符串检查防止parseInt(“”)返回NaN导致SQL错误输入验证手机号正则、必填字段检查4. 权限控制路由守卫前端路由需要登录才能访问后端鉴权所有敏感接口需要Token角色权限部分操作仅限admin角色如删除题目、生成激活码5. 操作审计日志记录所有管理员操作记录到operation_logs表IP追踪记录操作来源IP时间戳精确到秒的操作时间业务流程用户测试完整流程1. 用户访问首页 → 点击开始评估 ↓ 2. 检查登录状态 → 未登录跳转登录页 ↓ 3. 登录/注册 → 获取JWT Token ↓ 4. 选择支付方式 ├─ 输入激活码 → POST /api/payment/verify-code └─ 付费购买 → POST /api/payment/create → 微信支付 ↓ 5. 开始测试 → POST /api/test/start → 获取testRecordId ↓ 6. 答题过程144题 - 逐题选择A或B - POST /api/test/answer 保存答案 - 实时更新进度条 ↓ 7. 完成答题 → POST /api/test/submit - 验证144题全部完成 - 调用nineGridCalculator计算结果 - 保存matrix、personality、chart到数据库 ↓ 8. 查看结果 → GET /api/test/result/:id - 显示柱状图 - 显示性格排名 - 显示矩阵数据 ↓ 9. 可选操作 - 重新测试 - 分享结果 - 查看历史记录管理员操作流程1. 管理员登录 → POST /api/admin/login ↓ 2. 进入Dashboard → 查看今日数据和趋势图 ↓ 3. 日常管理 ├─ 用户管理查看用户列表、禁用违规用户 ├─ 题目管理添加/编辑/删除测试题目 ├─ 订单管理查看支付订单、处理异常 ├─ 激活码管理批量生成激活码、设置有效期 ├─ 系统设置修改测试价格、更新文案 └─ 操作日志审计管理员行为特色功能1. 双轨支付系统激活码模式适合企业批量采购、线下销售在线支付集成微信支付支持个人用户购买2. 智能九宫算法3×3矩阵模型突破传统九型人格的单一维度36种细分类型更精准的性格刻画能量比率计算相对值而非绝对值更具参考性3. 完善的测试管理断点续答测试记录保存可随时继续进度追踪实时显示答题进度历史记录用户可查看历次测试结果对比4. 数据可视化ECharts柱状图直观展示9种类型能量分布矩阵表格3×3网格展示动机×方式交叉分析Dashboard统计多维度数据汇总和趋势分析5. 灵活的配置系统动态价格可在后台修改测试价格自定义文案测试说明、评估方法可配置微信配置支持切换不同小程序/公众号总结九宫性格能量测试系统是一个功能完整、架构清晰的在线测评平台具有以下特点✅技术先进现代化技术栈✅算法独特3×3九宫矩阵模型36种细分类型✅功能全面用户系统、测试答题、支付激活、管理后台✅安全可靠JWT认证、bcrypt加密、SQL防注入、操作审计✅体验优良移动端适配、数据可视化、流畅交互✅易于扩展模块化设计、RESTful API、配置化管理系统适合用于企业员工性格测评心理咨询机构工具教育培训行业应用个人自我认知探索

相关新闻