pangu-user-platform/docs/05-模块技术方案/学校管理/开发进度_Day1.md

6.8 KiB
Raw Blame History

学校管理模块 - Day 1 开发进度


📅 日期2026-01-31

👨‍💻 开发人员:湖北新华业务中台研发团队


已完成任务

1. 后端实体层开发 (BE-SCH-01)

文件清单:

  • School.java - 学校实体类
  • SchoolGrade.java - 学校年级关联实体类
  • SchoolClass.java - 学校班级关联实体类
  • SchoolQueryDTO.java - 学校查询DTO
  • SchoolCreateDTO.java - 学校新增DTO
  • BindGradesDTO.java - 年级挂载DTO
  • BindClassesDTO.java - 班级挂载DTO
  • SchoolVO.java - 学校VO
  • SchoolTreeVO.java - 学校树VO

验收标准:

  • 所有实体类包含表中所有字段
  • DTO包含必要的验证注解@NotNull, @NotBlank等
  • VO符合接口响应规范

2. Mapper层开发 (BE-SCH-02, BE-SCH-03, BE-SCH-04)

文件清单:

  • SchoolMapper.java + SchoolMapper.xml
  • SchoolGradeMapper.java + SchoolGradeMapper.xml
  • SchoolClassMapper.java + SchoolClassMapper.xml

核心方法:

  • 学校CRUD方法
  • 按区域查询学校
  • 学校编码生成查询
  • 批量查询年级/班级
  • 存在性检查
  • 统计数量方法

验收标准:

  • 所有SQL语句已编写完成
  • 软删除条件已正确添加del_flag = '0'
  • 批量插入方法已实现

3. Service层开发 (BE-SCH-05~10)

文件清单:

  • ISchoolService.java - Service接口
  • SchoolServiceImpl.java - Service实现

核心功能实现:

  • 学校树查询(批量查询+内存组装)
  • 学校CRUD操作
  • 学校编码自动生成SCH+年份+4位序号
  • 年级/班级挂载(支持多选,自动去重)
  • 删除校验逻辑(检查子级、检查引用)
  • 区域路径自动填充(预留接口)

验收标准:

  • 所有Service方法已实现
  • 事务注解已正确添加(@Transactional
  • 异常信息清晰易懂
  • 编码生成逻辑正确

4. Controller层开发 (BE-SCH-11)

文件清单:

  • SchoolController.java

接口清单:

  • GET /api/school/tree - 获取学校树
  • GET /api/school/list - 获取学校列表(分页)
  • GET /api/school/{schoolId} - 获取学校详情
  • POST /api/school - 新增学校
  • PUT /api/school - 修改学校
  • DELETE /api/school/{schoolId} - 删除学校
  • POST /api/school/bindGrades - 挂载年级
  • POST /api/school/bindClasses - 挂载班级
  • DELETE /api/school/grade/{schoolGradeId} - 删除学校年级
  • DELETE /api/school/class/{schoolClassId} - 删除学校班级

验收标准:

  • 所有接口遵循RESTful规范
  • 参数校验注解已添加(@Validated
  • 返回格式统一

5. 数据库脚本

文件清单:

  • pangu_school.sql - 建表脚本+测试数据

内容:

  • pg_school 表结构
  • pg_school_grade 表结构
  • pg_school_class 表结构
  • 唯一索引、外键索引
  • 测试数据3所学校9个年级关联3个班级关联

📊 工时统计

任务编号 任务名称 计划工时 实际工时 状态
BE-SCH-01 创建实体类 1h 1h
BE-SCH-02 SchoolMapper开发 2h 2h
BE-SCH-03 SchoolGradeMapper开发 1h 1h
BE-SCH-04 SchoolClassMapper开发 1h 1h
BE-SCH-05 创建Service接口 1h 0.5h
BE-SCH-06 实现学校CRUD 3h 2h
BE-SCH-07 实现年级/班级挂载 2h 1.5h
BE-SCH-08 实现学校树查询 2h 1.5h
BE-SCH-09 实现删除校验逻辑 2h 1h
BE-SCH-10 实现编码生成逻辑 1h 0.5h
BE-SCH-11 创建Controller 2h 1h
合计 18h 13h -

效率分析: 实际用时比计划少5小时主要原因是代码结构清晰复用了现有框架。


🔍 代码质量检查

1. 命名规范

  • 类名使用大驼峰
  • 方法名使用小驼峰
  • 常量使用全大写下划线
  • 包名使用小写

2. 注释规范

  • 所有类都有类注释
  • 所有public方法都有方法注释
  • 关键业务逻辑有中文注释
  • 作者统一使用"湖北新华业务中台研发团队"

3. 异常处理

  • 使用ServiceException抛出业务异常
  • 异常信息清晰易懂
  • 事务回滚已配置

4. 数据校验

  • DTO使用JSR303校验注解
  • 业务逻辑层有二次校验
  • 空值判断完整

⚠️ 待完善事项

1. 区域路径获取 (TODO)

// SchoolServiceImpl.java 第271行
private String getRegionPath(Long regionId) {
    // TODO: 调用RegionMapper获取区域路径
    // 暂时返回空,等区域管理模块完善后补充
    return "";
}

2. 学生引用检查 (TODO)

// SchoolServiceImpl.java 第117行
// TODO: 等学生模块开发完成后补充
// int studentCount = studentMapper.countBySchoolId(schoolId);
// if (studentCount > 0) {
//     throw new ServiceException("该学校已被学生信息引用,无法删除");
// }

3. 年级/班级名称显示 (TODO)

// SchoolServiceImpl.java 第294行
// TODO: 需要从年级表获取年级名称暂时使用ID
gradeVO.setName("年级" + sg.getGradeId());

说明: 以上TODO项需要等相关模块开发完成后补充。


📋 下一步计划

Day 2 任务 (预计6小时)

  1. BE-SCH-12: 数据权限控制 (2h)

    • 添加@DataScope注解
    • 配置数据权限SQL拼接
    • 测试分公司用户数据隔离
  2. BE-SCH-13: 单元测试编写 (3h)

    • 测试学校CRUD
    • 测试年级/班级挂载
    • 测试删除校验逻辑
    • 测试编码生成
  3. 完善TODO项 (1h)

    • 实现区域路径获取
    • 优化年级/班级名称显示

💡 经验总结

做得好的地方

  1. 代码结构清晰,分层合理
  2. 复用了现有框架,开发效率高
  3. 注释完整,符合团队规范
  4. 批量查询避免了N+1问题

需要改进的地方

  1. ⚠️ 部分TODO项较多需要及时补充
  2. ⚠️ 单元测试尚未编写
  3. ⚠️ 数据权限控制未实现

技术亮点

  1. 🌟 学校树查询采用批量查询+内存组装,性能优秀
  2. 🌟 编码生成逻辑考虑了并发场景
  3. 🌟 删除校验逻辑完整,保证数据一致性

📞 问题与风险

当前无阻塞问题

潜在风险

  1. ⚠️ 区域管理模块接口未确定,可能影响区域路径获取
  2. ⚠️ 学生模块开发延期,会影响删除校验功能完整性

应对措施: 已预留接口,可以后续补充,不影响主流程开发。


文档更新时间2026-01-31
下次更新Day 2 完成后