Commit Graph

31 Commits

Author SHA1 Message Date
神码-方晓辉 eb7ef037f0 fix: 学生导入模板出生年月改为出生日期(YYYY-MM-DD) 2026-02-02 20:06:43 +08:00
神码-方晓辉 ca433d6ab9 feat: 完善学生导入模板下载功能
1. 后端新增接口 /business/student/template
   - 使用 ExcelUtil 导出模板
   - 包含示例数据方便用户参考

2. 前端修复模板下载:
   - 使用 fetch 下载文件
   - 文字"用户手机号"改为"会员手机号"

3. 新增 StudentImportDto 导入数据对象
   - 字段:姓名、学号、会员手机号、区域、学校、年级、班级、性别、出生年月
2026-02-02 20:02:41 +08:00
神码-方晓辉 6784e32e1e fix: 修复学生管理模块问题
1. 后端修复:
   - 添加 StudentVo 视图类,包含学校名、年级名、班级名、学科名、会员昵称等关联数据
   - Service 返回 StudentVo,关联查询各表数据

2. 前端修复:
   - StudentDialog 改为自获取 schoolTree 和 subjectList
   - 修复字段名适配(studentId/studentName)
   - 编辑时完整回显学校/年级/班级三级路径
   - 添加 MemberSelectDialog 会员选择弹窗

3. ImportDialog 完善:
   - 修复 token 获取方式适配 RuoYi 框架
   - 完善上传进度显示

4. index.vue 修复:
   - 表格列字段名适配后端返回数据
   - 添加日期格式化函数
2026-02-02 19:57:14 +08:00
神码-方晓辉 a9f57646fa fix: 添加学生管理学校树接口
前端调用 /business/student/schoolTree 接口获取学校树结构,
但后端缺失此接口导致路径匹配到 /{studentId} 引发类型转换错误。
2026-02-02 19:44:41 +08:00
神码-方晓辉 2baf792159 feat: 会员管理-添加学生绑定功能
1. 后端新增接口:
   - GET /business/student/available - 查询可绑定的学生列表
   - GET /business/student/byMember/{memberId} - 查询会员已绑定的学生
   - GET /business/member/{memberId}/students - 获取会员已绑定的学生列表
   - POST /business/member/{memberId}/bindStudents - 批量绑定学生到会员
   - POST /business/member/unbindStudent/{studentId} - 解绑学生
   - GET /business/school/grade/{schoolGradeId}/classes - 获取年级下的班级列表

2. 业务规则实现:
   - 教师身份只能绑定同校学生(schoolId相同)
   - 家长身份可绑定任意学生
   - 一个学生只能归属一个会员

3. 前端功能:
   - 新增StudentSelectDialog学生选择器组件
   - 支持按姓名、学号搜索
   - 支持多选绑定
   - MemberDialog集成学生选择器

4. 修复问题:
   - 修复会员编辑时学校信息(区域/年级/班级)回显问题
   - 修复班级列表接口404问题
2026-02-02 19:41:24 +08:00
神码-方晓辉 9820899ef7 docs: 完善 build.sh 使用说明注释 2026-02-02 19:14:49 +08:00
神码-方晓辉 5497e47b25 feat: 添加快速编译脚本 build.sh
优化策略:
- 多线程编译(-T 1C 使用全部CPU核心)
- 增量编译(不clean,复用已编译的class)
- 模块化编译(-pl -am 仅编译指定模块及其依赖)
- 静默模式(-q 减少日志输出)

使用方式:
- ./build.sh -q        快速编译(4秒,仅检查语法)
- ./build.sh -p        增量打包(4秒)
- ./build.sh -f        全量编译
- ./build.sh -m xxx -r 编译模块并重启(27秒)
2026-02-02 19:14:07 +08:00
神码-方晓辉 c4b4bf410d fix: 删除操作改为级联删除,有子级时给出提示
根据原型说明:删除时提示是否有子级,确认后级联删除
- 删除学校:提示有N个年级、N个班级,确认后级联删除
- 删除年级:提示有N个班级,确认后级联删除
- 前端改为 confirm 提示,后端支持级联删除
- 修复会员模块 BCrypt 依赖问题(改用 Hutool)
2026-02-02 19:11:30 +08:00
神码-方晓辉 5ef8420ace fix: 学校管理列表树优化
1. 默认折叠:移除 default-expand-all
2. 修复折叠展开联动问题:row-key 改为 type_id 组合,保证唯一性
3. 删除提示优化:
   - 有子级时显示具体数量(如"3个年级、5个班级")
   - 有子级时弹出 alert 提示"请先删除子级",而不是直接删除
2026-02-02 19:04:17 +08:00
神码-方晓辉 ee33a26e57 fix: 学校列表创建人显示昵称而不是ID
注入 UserService,批量查询创建人昵称并映射到树形节点
2026-02-02 17:56:44 +08:00
神码-方晓辉 3cad9fa79a fix: 修复新增年级/班级时Integer转Long类型错误
JSON解析时数值会被解析为Integer,直接强制转换为List<Long>会报错
改为逐个元素转换:id -> Long.valueOf(id.toString())
2026-02-02 17:51:06 +08:00
神码-方晓辉 f0f94e552d fix: 完善学校管理删除逻辑 - 参照旧版本修复
根据旧版本代码修复删除逻辑:
- 删除学校前检查是否有年级,有则提示"请先删除年级"
- 删除年级前检查是否有班级,有则提示"请先删除班级"
- 树形数据添加 gradeId、classId 字段
- TODO: 学生管理模块完成后添加学生引用检查
2026-02-02 17:44:43 +08:00
神码-方晓辉 b42aab4a8f feat: 重构学校管理模块 - 按需求文档实现树形展示
根据需求文档完全重构学校管理页面:
- 按区域树形展示学校、年级、班级结构
- 新增后端接口 /business/school/tree 返回树形数据
- 新增后端接口删除年级/班级
- 前端使用树形表格展示层级结构
- 弹窗标题按需求文档:编辑-学校、新增-年级、新增-班级
- 操作按钮:学校(编辑/新增年级/删除)、年级(新增班级/删除)、班级(删除)
- 删除时提示是否有子级
2026-02-02 17:41:22 +08:00
神码-方晓辉 bb14acd923 feat: 完善学校管理模块
- 后端:学校新增时自动生成学校编码(格式:SCH + 年份后两位 + 6位序号)
- 前端:列表页显示学校编码列
- 前端:编辑弹窗显示学校编码(只读)
- 前端:优化年级/班级选项数据格式转换
2026-02-02 17:31:27 +08:00
神码-方晓辉 50e291d2b4 fix: 完善学校管理模块
- 后端:学校列表查询时填充区域名称
- 前端:学校类型显示转换(数字转文字)
- 前端:学校类型选项值修正为数字
2026-02-02 17:27:00 +08:00
神码-方晓辉 31322a9ecc fix: 修复角色管理菜单权限树加载问题
- 前端:修复菜单树和部门树数据路径(response.data.menus)
- 后端:角色菜单树只返回可见菜单(visible='0')
2026-02-02 17:20:01 +08:00
神码-方晓辉 7e327e2131 fix: 新增应用时自动生成编码和密钥
- 自动生成应用编码:YY + 6位序号
- 自动生成32位应用密钥
2026-02-02 17:14:24 +08:00
神码-方晓辉 ec2d69a09f feat: 完善应用管理模块前后端
- 后端:添加重置密钥接口和API列表接口
- 后端:新增 IPgApiDictService 服务
- 前端:修复API路径(/api -> /business)
- 前端:修复字段名映射(contactName -> contactPerson)
- 前端:添加 SecretDialog 密钥弹窗组件
- 数据:初始化应用数据和API字典数据
2026-02-02 17:11:06 +08:00
神码-方晓辉 bd14bb36c4 feat: 完善学校管理模块(根据需求文档)
后端修改:
1. PgRegionController: 新增 /tree 接口用于获取区域树
2. PgRegion: 添加 children 字段支持树形结构
3. PgRegionService: 实现 selectTree 方法构建树形数据
4. PgSchoolController: 新增学校年级/班级管理接口
   - GET /{schoolId}/grades: 获取学校的年级列表
   - POST /grade: 为学校批量添加年级
   - POST /class: 为年级批量添加班级
5. PgSchoolService: 实现年级班级挂载逻辑
6. PgSchoolGrade: 添加 gradeName 字段用于显示

前端修改:
1. school.js API: 修正路径 /api → /business
2. index.vue: 修正删除接口的 ID 字段(id → schoolId)
3. SchoolDialog.vue: 修正表单字段名
4. GradeDialog.vue: 修正 API 调用和数据格式
5. ClassDialog.vue: 重写支持选择学校已挂载的年级

@author pangu
2026-02-02 16:32:33 +08:00
神码-方晓辉 82a0cb7f07 feat: 根据需求文档初始化系统管理数据
根据需求文档 3.1/3.2 角色层级和权限矩阵初始化:

1. 角色:
   - 超级管理员(管理全部数据)
   - 分公司用户(管理所属区域)
   - 学校用户(管理本校数据)

2. 部门(组织架构):
   - 湖北新华书店
     - 武汉分公司
       - 武汉市第一中学
       - 武汉市第三中学
       - 武汉市水果湖小学
     - 黄冈分公司
       - 黄冈中学
       - 红安县第一中学

3. 示例用户:
   - admin(超级管理员)
   - wuhan(分公司用户,密码:admin123)
   - whyz(学校用户,密码:admin123)

@author pangu
2026-02-02 16:25:24 +08:00
神码-方晓辉 fa722945c4 fix: 根据需求文档完善系统管理和系统监控菜单
系统管理(需求文档 4.6):
- 显示:用户管理、角色管理、菜单管理、部门管理、字典管理、参数设置
- 隐藏:岗位管理、通知公告、文件管理、客户端管理

系统监控(需求文档 4.7):
- 在线用户
- 登录日志(从日志管理移入)
- 操作日志(从日志管理移入)
- 服务监控(新增)
- 缓存监控
- 隐藏:Admin监控、任务调度中心

@author pangu
2026-02-02 16:22:32 +08:00
神码-方晓辉 2a2321a403 fix: 按需求文档8.2节调整菜单排序
根据需求规格说明书8.2节页面清单顺序:
1. 学校管理 (order_num=1)
2. 会员管理 (order_num=2)
3. 学生管理 (order_num=3)
4. 应用管理 (order_num=4)
5. 基础数据 (order_num=5)
6. 系统管理 (order_num=6)
7. 系统监控 (order_num=7)

隐藏菜单:系统工具、租户管理、PLUS官网、测试菜单

@author pangu
2026-02-02 16:15:14 +08:00
神码-方晓辉 127d396995 fix: 按需求文档调整菜单布局
根据需求规格说明书调整菜单结构:
- 学校管理:一级菜单(order_num=4)
- 会员管理:一级菜单(order_num=5)
- 学生管理:一级菜单(order_num=6)
- 应用管理:一级菜单(order_num=7)
- 基础数据:一级目录(order_num=8)
  - 年级管理
  - 班级管理
  - 学科管理
  - 区域管理

隐藏不需要的菜单:租户管理、PLUS官网、测试菜单

@author pangu
2026-02-02 16:07:52 +08:00
神码-方晓辉 38eba2812a fix: 修正 @author 为 pangu
按照项目规范,所有代码的作者统一使用 pangu
2026-02-02 15:59:52 +08:00
神码-方晓辉 aa5d5b125e feat: 创建 pangu-business 业务模块并完成迁移
主要变更:
1. 创建 pangu-business 模块,适配 RuoYi-Vue-Plus 5.5.3 架构
2. 迁移业务实体类:PgGrade, PgClass, PgSubject, PgRegion, PgSchool, PgMember, PgStudent, PgApplication 等
3. 创建对应的 Mapper 接口(继承 BaseMapperPlus)
4. 创建 Service 层(接口 + 实现)
5. 创建 Controller(使用 R<T> 响应格式、Sa-Token 权限控制)
6. 添加业务表 SQL 脚本(适配租户字段)
7. 添加业务菜单数据

技术适配:
- Entity 继承 BaseEntity,添加 tenantId 字段
- Mapper 继承 BaseMapperPlus<T, V>
- Controller 使用 @SaCheckPermission 权限注解
- API 路径:/business/grade, /business/class, /business/school 等
2026-02-02 15:59:10 +08:00
神码-方晓辉 d99646c00d refactor: 升级后端至 RuoYi-Vue-Plus 5.5.3
主要变更:
- Spring Boot 2.7.18 → 3.5.9
- 认证框架: Spring Security → Sa-Token
- 缓存: 新增 Redisson 支持
- 数据访问: JdbcTemplate → MyBatis-Plus
- 新增工作流引擎 Warm-Flow
- 新增 API 文档 SpringDoc
- 新增多租户、OSS、定时任务等功能

前端适配:
- 更新 API 路径 (/auth/login, /auth/code 等)
- 添加 clientid header
- 适配新的响应数据结构

注意:数据库已使用 RuoYi-Vue-Plus 的 SQL 重建
2026-02-02 15:36:13 +08:00
神码-方晓辉 8591cebee0 feat: 新增参数设置和通知公告功能
- 新增 SysConfigController 参数配置管理
- 新增 SysNoticeController 通知公告管理
- 系统管理模块功能完整
2026-02-02 15:09:31 +08:00
神码-方晓辉 c577c74b3e fix: 修复字典管理中文乱码问题
- 配置 HTTP 响应编码为 UTF-8
- 修复数据库中字典类型 remark 字段乱码数据
2026-02-02 14:53:20 +08:00
神码-方晓辉 a5c380c90f fix: 修复系统管理模块字段显示问题
- 修复菜单管理:返回树形结构,权限标识和组件路径正常显示
- 修复部门管理:字段名转换为驼峰格式
- 修复岗位管理:字段名转换为驼峰格式
- 修复字典管理:字典类型和字典数据字段名转换
- 修复角色管理:字段名转换为驼峰格式
- 更新项目规则:添加前后端命名规范文档
2026-02-02 14:46:23 +08:00
神码-方晓辉 b85f332e44 fix: 修复用户管理列表字段显示问题
将后端返回的下划线命名字段转换为驼峰格式:
- user_id → userId
- user_name → userName
- nick_name → nickName
- dept_name → dept.deptName

用户管理功能正常
2026-02-02 14:38:39 +08:00
神码-方晓辉 4e43376ef9 refactor: 项目目录重构,登录和验证码功能正常
1. 重构目录结构
   - 后端代码移至 backend/ 目录
   - 前端代码移至 frontend/ 目录
   - 删除根目录旧模块(pangu-admin, pangu-common 等)

2. 统一 API 规范(若依做法)
   - 前端 /dev-api 代理去掉前缀
   - 后端 Controller 无 /api 前缀
   - 添加 API 接口规范到项目规则

3. 功能验证
   - 登录功能正常
   - 验证码生成和校验正常
   - 系统管理模块正常
2026-02-02 14:32:22 +08:00