后端: - 新增 RsaEncryptionUtil 工具类,支持 RSA 2048 位加解密 - 新增 RsaKeyRotationTask 定时任务,每月 1 日凌晨 2 点自动更换密钥 - 新增 EncryptedLoginRequest 和 PublicKeyResponse DTO - AuthController 添加 /public-key 和 /login/encrypted 接口 前端: - 添加 jsencrypt 依赖用于 RSA 加密 - 新增 encryption.ts 工具函数 - auth.ts 添加 getPublicKey 和 loginEncrypted API - user.ts 修改 login 函数使用 RSA 加密流程 feat(操作日志): 添加请求参数和请求接口字段 - 数据库迁移 V50 添加 request_uri 字段 - LogAspect 记录请求 URI - OperationLogResponse 新增 requestParams 和 requestUri 字段 - 前端 OperationLogView 详情弹窗展示新字段 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
4.5 KiB
4.5 KiB
开发日志 - 2026-03-24
工作内容
租户管理详情页字段补充
背景
超管端租户管理查看详情时,前端页面期望展示以下数据:
- 使用统计:教师数、学生数、班级数、授课数
- 最近教师列表(姓名、手机号、状态)
- 最近学生列表(姓名、性别、阅读数)
- 最近班级列表(名称、年级、学生数)
修改内容
1. 后端 DTO 扩展 (TenantResponse.java)
- 新增
classCount字段 - 班级数量 - 新增
lessonCount字段 - 授课数量 - 新增
teachers字段 - 最近教师列表(TeacherItem内部类) - 新增
students字段 - 最近学生列表(StudentItem内部类) - 新增
classes字段 - 最近班级列表(ClassItem内部类)
2. 后端 Service 层修改 (TenantServiceImpl.java)
- 新增
getTenantDetail()方法 - 返回完整的租户详情响应 - 新增
buildTenantResponse()方法 - 构建包含统计信息和列表的响应数据 - 新增 Mapper 依赖注入:
ClazzMapper- 班级数据访问StudentRecordMapper- 学生阅读记录访问StudentClassHistoryMapper- 学生班级关联访问
3. 后端 Controller 层修改 (AdminTenantController.java)
- 修改
getTenant()方法调用tenantService.getTenantDetail(id)返回完整详情
4. 前端类型定义更新 (admin.ts)
- 扩展
TenantDetail接口:- 添加
classCount和lessonCount字段 students[].classId改为可选字段(因为学生班级关联是可选的)
- 添加
5. 前端详情组件更新 (TenantListView.vue)
- 修改统计数据显示使用
detailData.classCount和detailData.lessonCount
技术细节
-
学生班级 ID 获取:由于学生实体没有直接的
classId字段,通过student_class_history关联表查询学生当前所在的班级 ID。 -
班级学生数统计:通过
student_class_history表查询每个班级的 ACTIVE 状态学生数量。 -
学生阅读次数统计:通过
student_record表统计每个学生的记录数。 -
教师授课次数统计:通过
schedule_plan表统计每个教师的排课数量。
验证步骤
- ✅ 后端编译成功
- ⏳ 启动服务测试(待用户验证)
文件清单
| 文件 | 修改内容 |
|---|---|
TenantResponse.java |
新增字段和内部类 |
TenantServiceImpl.java |
新增方法和 Mapper 依赖 |
AdminTenantController.java |
修改详情查询方法 |
admin.ts |
扩展类型定义 |
TenantListView.vue |
更新详情展示 |
工作内容 - 学校端操作日志请求参数与接口展示
背景
在学校端操作日志页面,需要记录并返回以下三个信息:
- 操作人 - 谁执行的操作(已有
userId、userRole) - 请求参数 - 操作时传入的参数(
requestParams) - 请求接口 - 执行的具体 API 接口路径(
requestUri)
当前后端已通过 LogAspect 自动记录这些信息到数据库,但未返回给前端展示。
修改内容
1. 数据库迁移
文件: V50__add_request_uri_to_operation_log.sql
- 添加
request_uri字段 - VARCHAR(500),记录请求接口路径
2. 后端实体修改
文件: OperationLog.java
- 新增
requestUri字段
3. 后端切面修改
文件: LogAspect.java
- 在
before()方法中记录requestURI
4. 后端 Response DTO 修改
文件: OperationLogResponse.java
- 新增
requestParams字段 - 请求参数 JSON - 新增
requestUri字段 - 请求接口路径
5. 后端 Controller 修改
文件: SchoolOperationLogController.java
- 在
convertToResponse()方法中添加字段映射
6. 前端类型定义更新
文件: school.ts
OperationLog接口添加requestParams和requestUri字段
7. 前端页面修改
文件: OperationLogView.vue
- 详情弹窗新增"请求接口"展示项
- 详情弹窗新增"请求参数"展示项(JSON 格式化)
验证步骤
- ✅ 后端编译成功
- ⏳ 数据库迁移待执行
- ⏳ 启动服务测试
文件清单
| 文件 | 修改内容 |
|---|---|
V50__add_request_uri_to_operation_log.sql |
新增数据库迁移 |
OperationLog.java |
新增 requestUri 字段 |
LogAspect.java |
记录 requestURI |
OperationLogResponse.java |
新增返回字段 |
SchoolOperationLogController.java |
字段映射 |
school.ts |
类型定义更新 |
OperationLogView.vue |
详情展示新增字段 |