Files
hzdyjs/docs/变更管理/code-adjust-record-2025-01-21-cursor.md
T
2025-08-23 09:58:59 +08:00

3.6 KiB

代码调整记录 - 2025-01-21 - Cursor AI

📋 变更概述

时间: 2025-01-21 10:30:00
操作人: Cursor AI
变更类型: 🐛 Bug修复
影响范围: 志愿者成员管理模块

🔍 问题描述

问题现象: 当前登录用户2025LY23117是志愿者马拉松工作组的队长,该队伍总共有3个人,但在志愿者成员管理页面只能看到一个成员。

根本原因: 志愿者角色类型(roleType)在前后端定义不一致,导致权限过滤逻辑失效。

问题详情

组件 队长值 队员值 状态
前端字典(修复前) 1 2 ❌ 错误
后端权限过滤 0 1 ✅ 正确
数据库SQL映射 0 1 ✅ 正确
字典表(修复前) 1 2 ❌ 错误

影响:

  • 权限过滤方法getCaptainTeamIds查找roleType=0时找不到队长记录
  • 查询条件被设置为relationId=-1L,导致返回空结果
  • 用户只能看到第一个队伍的数据

🛠️ 解决方案

采用方案A: 统一使用数据库SQL的定义(队长=0,队员=1)

修复内容

1. 修改字典表数据

文件: backend/script/sql/stgl_volunteer_role_dict.sql

  • 队长的dict_value从'1'改为'0'
  • 队员的dict_value从'2'改为'1'

2. 修改前端字典定义

文件: web/src/views/stgl/volunteer/member/index.vue

  • 第358-361行:更新手动定义的字典
  • 第432行:修改默认角色值为'1'(队员)
  • 第242行:移除parseInt转换,保持字符串类型
  • 第632行:修改类型转换为String()

3. 创建数据库更新脚本

文件: script/update-volunteer-role-dict.sql

  • 创建线上数据库更新脚本
  • 包含验证查询和完成提示

📝 修改细节

代码变更

// 修复前
const stgl_volunteer_role = ref([
  { value: '1', label: '队长' },
  { value: '2', label: '队员' }
]);

// 修复后
const stgl_volunteer_role = ref([
  { value: '0', label: '队长' },
  { value: '1', label: '队员' }
]);
-- 修复前字典数据
VALUES (..., '队长', '1', ...)
VALUES (..., '队员', '2', ...)

-- 修复后字典数据
VALUES (..., '队长', '0', ...)
VALUES (..., '队员', '1', ...)

权限过滤逻辑验证

后端权限过滤逻辑保持不变(已正确):

captainBo.setRoleType(0); // 队长角色 = 0

数据库SQL映射保持不变(已正确):

WHEN 0 THEN '队长'    <!-- 队长 = 0 -->
WHEN 1 THEN '队员'    <!-- 队员 = 1 -->

🎯 预期效果

修复完成后:

  1. ✅ 志愿者队长能够正确查看所属队伍的所有成员
  2. ✅ 权限过滤逻辑正常工作
  3. ✅ 前后端角色类型定义统一
  4. ✅ 字典数据显示正确

📋 部署步骤

  1. 执行数据库更新脚本:

    mysql -u username -p database < script/update-volunteer-role-dict.sql
    
  2. 重新构建前端:

    cd web
    npm run build
    
  3. 重启后端服务(如有缓存)

  4. 验证功能:

    • 使用队长账号登录
    • 访问志愿者成员管理页面
    • 确认能看到所有队伍成员

🔍 验证要点

  • 队长能查看所属队伍的所有成员
  • 角色显示正确(队长/队员)
  • 新增成员时角色选择正常
  • 权限过滤按预期工作

📚 相关文档

  • 问题分析: 本文档"问题描述"部分
  • 技术规范: .cursor/cursorrules-backend.md - 权限管理规范
  • API文档: docs/开发文档/API/志愿者管理API.md

🏷️ 标签

#志愿者管理 #权限过滤 #角色类型 #前后端统一 #字典数据 #Bug修复