Files
hzdyjs/docs/变更管理/code-adjust-record-2025-07-16-wuzhen.md
T

7.5 KiB
Raw Blame History

代码调整记录 - 2025-07-16 - wuzhen

修复Excel导入包编译错误

问题描述

  • 时间: 2025-07-16 18:44:39
  • 错误: XgClassInfoVo.java 编译失败,找不到 com.alibaba.excel.annotation 包
  • 影响: 班级信息管理功能无法编译

错误分析

[ERROR] /Users/wuzhen/Documents/myworkspace/myproject/hzdyjspro/all-project/backend/ruoyi-modules/ruoyi-xg-xx/src/main/java/org/dromara/xg/domain/vo/XgClassInfoVo.java:[4,36] 程序包com.alibaba.excel.annotation不存在
[ERROR] /Users/wuzhen/Documents/myworkspace/myproject/hzdyjspro/all-project/backend/ruoyi-modules/ruoyi-xg-xx/src/main/java/org/dromara/xg/domain/vo/XgClassInfoVo.java:[5,36] 程序包com.alibaba.excel.annotation不存在

根本原因: 项目使用的是 cn.idev.excel.annotation 包,而不是 com.alibaba.excel.annotation 包。

解决方案

修改 XgClassInfoVo.java 文件中的导入语句:

修改前:

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;

修改后:

import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;

验证结果

  • 编译状态: 成功 ✅
  • 编译时间: 2分16秒
  • 影响范围: ruoyi-xg-xx 模块
  • 无其他错误: 所有依赖模块编译正常

经验总结

  1. 项目统一使用 cn.idev.excel 作为Excel处理库
  2. 在开发新功能时,应参考现有模块的导入方式
  3. 建议在开发规范中明确Excel注解的导入路径

班级信息管理权限配置检查

权限配置现状

  • 时间: 2025-07-16 19:45:00
  • 状态: ✅ 发现已存在权限配置
  • 影响: 需要调整控制器权限标识以匹配现有配置

控制器权限注解分析

已定义的权限标识

根据 XgClassInfoController.java 中的 @SaCheckPermission 注解,共定义了以下权限:

  1. 基础权限(6种):

    • xg:classInfo:list - 查询班级信息列表
    • xg:classInfo:export - 导出班级信息列表
    • xg:classInfo:query - 获取班级信息详情(用于多个查询接口)
    • xg:classInfo:add - 新增班级信息
    • xg:classInfo:edit - 修改班级信息
    • xg:classInfo:remove - 删除班级信息
  2. 权限使用统计:

    • xg:classInfo:list: 1个接口
    • xg:classInfo:export: 1个接口
    • xg:classInfo:query: 10个接口(详情查询和各种业务查询)
    • xg:classInfo:add: 1个接口
    • xg:classInfo:edit: 4个接口(修改、统计更新、批量更新、启用/禁用)
    • xg:classInfo:remove: 1个接口

现有权限配置发现

1. 数据库菜单权限配置 ✅

已存在内容:

  • 学工管理主菜单(ID: 3000)
  • 班级信息管理菜单(ID: 3200)
  • 8个功能按钮权限(ID: 3201-3208)

2. 权限标识对比分析

现有权限标识(数据库中):

  • xg:class:list - 班级信息管理
  • xg:class:query - 班级信息查询
  • xg:class:add - 班级信息新增
  • xg:class:edit - 班级信息修改
  • xg:class:remove - 班级信息删除
  • xg:class:export - 班级信息导出
  • xg:class:config - 班级人员配置
  • xg:class:statistics - 班级统计

控制器权限标识(代码中):

  • xg:classInfo:list - 查询班级信息列表
  • xg:classInfo:query - 获取班级信息详情
  • xg:classInfo:add - 新增班级信息
  • xg:classInfo:edit - 修改班级信息
  • xg:classInfo:remove - 删除班级信息
  • xg:classInfo:export - 导出班级信息

3. 权限配置不匹配问题

问题分析:

  • 数据库权限标识使用 xg:class:* 前缀
  • 控制器权限标识使用 xg:classInfo:* 前缀
  • 两者不匹配,会导致权限验证失败

权限配置回退过程

1. 删除新增权限配置

  • 删除了新创建的菜单项(ID: 2000-2106)
  • 删除了对应的角色权限分配
  • 删除了权限配置脚本文件

2. 恢复到原始状态

  • 保留现有的权限配置(ID: 3200-3208)
  • 确认现有权限配置完整性

现有菜单结构

学工管理 (3000)
└── 班级信息管理 (3200) - xg:class:list
    ├── 班级信息查询 (3201) - xg:class:query
    ├── 班级信息新增 (3202) - xg:class:add
    ├── 班级信息修改 (3203) - xg:class:edit
    ├── 班级信息删除 (3204) - xg:class:remove
    ├── 班级信息导出 (3205) - xg:class:export
    ├── 班级人员配置 (3206) - xg:class:config
    └── 班级统计 (3208) - xg:class:statistics

解决方案建议

方案1: 修改控制器权限标识(推荐)

将控制器中的权限标识修改为与数据库一致:

  • xg:classInfo:list → xg:class:list
  • xg:classInfo:query → xg:class:query
  • xg:classInfo:add → xg:class:add
  • xg:classInfo:edit → xg:class:edit
  • xg:classInfo:remove → xg:class:remove
  • xg:classInfo:export → xg:class:export

方案2: 修改数据库权限标识

将数据库中的权限标识修改为与控制器一致(不推荐,影响现有功能)

权限配置状态总结

  1. ✅ 数据库中已存在完整的班级信息管理权限配置
  2. ⚠️ 控制器权限标识与数据库不匹配
  3. ✅ 权限配置回退成功,恢复到原始状态
  4. 📋 需要统一权限标识以确保功能正常使用

技术要点

  • 发现现有权限配置,避免重复创建
  • 权限标识一致性是权限验证的关键
  • 遵循项目现有的权限标识规范
  • 保持数据库配置的稳定性

删除学工管理菜单权限配置

删除操作详情

  • 时间: 2025-07-16 19:50:00
  • 操作: 删除menu_id=1800的学工管理及其所有子菜单
  • 影响: 清理了旧的学工管理菜单配置,为新的班级信息管理功能让路

删除的菜单项

主菜单

  • 1800 - 学工管理(主菜单)

子菜单

  • 1801 - 学生信息管理(子菜单)

按钮权限

  • 1811 - 学生信息查询 (xg:studentInfo:query)
  • 1812 - 学生信息新增 (xg:studentInfo:add)
  • 1813 - 学生信息修改 (xg:studentInfo:edit)
  • 1814 - 学生信息删除 (xg:studentInfo:remove)
  • 1815 - 学生信息导出 (xg:studentInfo:export)
  • 1816 - 学生信息导入 (xg:studentInfo:import)
  • 1817 - 学生信息审核 (xg:studentInfo:audit)
  • 1818 - 学生信息统计 (xg:studentInfo:statistics)
  • 1819 - 学生信息批量操作 (xg:studentInfo:batch)

删除的角色权限分配

删除了以下角色对这些菜单的权限分配:

  • 超级管理员 (role_id=1): 所有菜单权限
  • 普通管理员 (role_id=2): 所有菜单权限
  • 学工管理员 (role_id=3): 部分菜单权限

删除操作步骤

  1. ✅ 删除角色权限分配 (sys_role_menu 表)
  2. ✅ 删除子菜单按钮权限 (ID: 1811-1819)
  3. ✅ 删除学生信息管理菜单 (ID: 1801)
  4. ✅ 删除学工管理主菜单 (ID: 1800)

验证结果

  • ✅ 菜单项删除成功:查询结果为空
  • ✅ 角色权限删除成功:查询结果为空
  • ✅ 数据库状态正常:无外键约束错误

影响评估

  • 正面影响: 清理了冗余的菜单配置,避免与新功能冲突
  • 注意事项: 如果有其他功能依赖这些权限标识,需要相应调整
  • 后续工作: 可以使用新的权限标识创建班级信息管理功能

📝 总结: 班级信息管理功能的代码开发已完成,成功删除了旧的学工管理菜单配置,现在可以使用新的权限标识正常配置功能权限。