# 代码调整记录 - 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` - 创建线上数据库更新脚本 - 包含验证查询和完成提示 ## 📝 修改细节 ### 代码变更 ```javascript // 修复前 const stgl_volunteer_role = ref([ { value: '1', label: '队长' }, { value: '2', label: '队员' } ]); // 修复后 const stgl_volunteer_role = ref([ { value: '0', label: '队长' }, { value: '1', label: '队员' } ]); ``` ```sql -- 修复前字典数据 VALUES (..., '队长', '1', ...) VALUES (..., '队员', '2', ...) -- 修复后字典数据 VALUES (..., '队长', '0', ...) VALUES (..., '队员', '1', ...) ``` ### 权限过滤逻辑验证 后端权限过滤逻辑保持不变(已正确): ```java captainBo.setRoleType(0); // 队长角色 = 0 ``` 数据库SQL映射保持不变(已正确): ```xml WHEN 0 THEN '队长' WHEN 1 THEN '队员' ``` ## 🎯 预期效果 修复完成后: 1. ✅ 志愿者队长能够正确查看所属队伍的所有成员 2. ✅ 权限过滤逻辑正常工作 3. ✅ 前后端角色类型定义统一 4. ✅ 字典数据显示正确 ## 📋 部署步骤 1. **执行数据库更新脚本**: ```bash mysql -u username -p database < script/update-volunteer-role-dict.sql ``` 2. **重新构建前端**: ```bash cd web npm run build ``` 3. **重启后端服务**(如有缓存) 4. **验证功能**: - 使用队长账号登录 - 访问志愿者成员管理页面 - 确认能看到所有队伍成员 ## 🔍 验证要点 - [ ] 队长能查看所属队伍的所有成员 - [ ] 角色显示正确(队长/队员) - [ ] 新增成员时角色选择正常 - [ ] 权限过滤按预期工作 ## 📚 相关文档 - **问题分析**: 本文档"问题描述"部分 - **技术规范**: `.cursor/cursorrules-backend.md` - 权限管理规范 - **API文档**: `docs/开发文档/API/志愿者管理API.md` ## 🏷️ 标签 `#志愿者管理` `#权限过滤` `#角色类型` `#前后端统一` `#字典数据` `#Bug修复`