初始化
This commit is contained in:
102
memory/session-20260611-1.md
Normal file
102
memory/session-20260611-1.md
Normal file
@@ -0,0 +1,102 @@
|
||||
---
|
||||
name: session-20260611-1
|
||||
description: 2026-06-11 会话 — 头像上传修复、用户信息显示修复、文件存DB、系统Bug全面检查
|
||||
metadata:
|
||||
type: session
|
||||
date: 2026-06-11
|
||||
sessionNumber: 1
|
||||
startTime: 2026-06-11T01:00:00+08:00
|
||||
---
|
||||
|
||||
# 2026-06-11 会话
|
||||
|
||||
## 会话摘要
|
||||
修复了上次会话遗留的2个已知问题(头像上传、用户信息不显示),将文件存储从磁盘改为数据库,并对整个系统进行了全面Bug检查,修复了8个高/中优先级问题。
|
||||
|
||||
## 关键操作
|
||||
|
||||
### 一、sys_file 表重构(文件存数据库)
|
||||
- **做了什么**:
|
||||
- 重新设计 sys_file 表,添加 `file_data LONGBLOB` 字段存储二进制
|
||||
- 统一 Entity 和 DDL:新增 `system_id`, `mime_type`, `upload_user_id`, `md5` 字段
|
||||
- 删除旧磁盘存储字段 `file_path`(→file_data), `upload_by`(→upload_user_id)
|
||||
- **原因**: 用户要求图片文件存入数据库而非磁盘
|
||||
- **结果**: QA 数据库已更新,PROD 迁移脚本已准备(`sql/prod_migrate_sys_file.sql`)
|
||||
|
||||
### 二、FileServiceImpl 重写
|
||||
- **做了什么**: upload()改为读取文件字节存入DB;page()/list()排除file_data字段;新增getMetaById();新增文件输出流
|
||||
- **原因**: 配合数据库存储方案
|
||||
- **结果**: 编译通过
|
||||
|
||||
### 三、FileController 更新
|
||||
- **做了什么**: upload返回时清除fileData;新增 `GET /{id}/view` 端点直接输出文件流(支持浏览器 `<img>` 标签加载)
|
||||
- **原因**: 文件存DB后需要HTTP接口访问
|
||||
|
||||
### 四、PersonalView 头像上传修复
|
||||
- **做了什么**:
|
||||
- 修正 `res.data?.url` → 通过 `res.data?.id` 构建访问URL
|
||||
- 上传时添加 `fd.append('fileType', 'avatar')`
|
||||
- 头像地址格式: `{VITE_GATEWAY_URL}/zgapi/v1/admin/file/{id}/view`
|
||||
- 更新后调用 `authStore.fetchUserInfo()` 刷新store
|
||||
- **原因**: Entity字段名不匹配+文件访问方式变更
|
||||
|
||||
### 五、AdminLayout 用户信息修复
|
||||
- **做了什么**: onMounted中调用 `authStore.fetchUserInfo()`
|
||||
- **原因**: 跨域名跳转(login.user.mokee.com→web.gw.mokee.com)后Pinia状态丢失,需要重新加载
|
||||
- **结果**: 顶栏头像和用户名正确显示
|
||||
|
||||
### 六、Redis TokenInfo 同步机制
|
||||
- **做了什么**:
|
||||
- 登录时建立反向索引 `auth:user_session:{userId}` → tokenId
|
||||
- 登出时清除反向索引
|
||||
- UserServiceImpl.update()后同步更新Redis中的TokenInfo(username/realName/email/phone/avatar/post)
|
||||
- UserServiceImpl.assignRoles()后清除用户Redis会话强制重新登录
|
||||
- RoleServiceImpl.assignMenus()后清除所有受影响用户的Redis会话
|
||||
- **原因**: 用户信息/角色/权限变更后前端fetchUserInfo读到过期数据
|
||||
|
||||
### 七、SysSystem 实体补充
|
||||
- **做了什么**: 添加 `gatewayUrl` 字段映射 `gateway_url` 列
|
||||
- **原因**: DDL中有此列但Entity缺少映射,INSERT可能失败
|
||||
|
||||
### 八、前端错误处理修复
|
||||
- **做了什么**: LoginView和UserForm的catch块添加具体错误提示
|
||||
- **原因**: 登录失败/保存失败时用户看不到任何反馈
|
||||
|
||||
### 九、系统全面检查发现(已记录,部分待处理)
|
||||
- A-2: SysMenu.menuType注释错误(0-based vs 1-based) — LOW
|
||||
- D-3~D-6: 多处catch块无用户反馈 — MEDIUM(拦截器已提供基线处理)
|
||||
- E-1: Cookie domain硬编码.mokee.com导致localhost开发不可用 — HIGH(已知限制)
|
||||
- E-2: auth.ts和request.ts重复实现Token Cookie操作 — MEDIUM
|
||||
- F-3: bindSystems/unbindSystems不同步Redis — MEDIUM
|
||||
- F-5: RoleServiceImpl.update不同步Redis — LOW
|
||||
|
||||
## 修改文件清单
|
||||
**后端 (7个文件)**:
|
||||
- `mokee-gateway-common/.../entity/SysFile.java` — 重构字段
|
||||
- `mokee-gateway-common/.../entity/SysSystem.java` — 添加gatewayUrl
|
||||
- `mokee-gateway-admin/.../service/FileService.java` — 新增getMetaById
|
||||
- `mokee-gateway-admin/.../service/impl/FileServiceImpl.java` — 完全重写(DB存储)
|
||||
- `mokee-gateway-admin/.../controller/FileController.java` — 新增view端点
|
||||
- `mokee-gateway-admin/.../service/impl/UserServiceImpl.java` — Redis同步+会话失效
|
||||
- `mokee-gateway-admin/.../service/impl/RoleServiceImpl.java` — 角色变更会话失效
|
||||
- `mokee-gateway-auth/.../service/impl/AuthServiceImpl.java` — 反向索引
|
||||
|
||||
**前端 (3个文件)**:
|
||||
- `mokee-gateway-web/src/views/admin/PersonalView.vue` — 头像上传修复
|
||||
- `mokee-gateway-web/src/views/admin/AdminLayout.vue` — fetchUserInfo onMount
|
||||
- `mokee-gateway-web/src/views/login/LoginView.vue` — 错误提示
|
||||
- `mokee-gateway-web/src/views/admin/user/UserForm.vue` — 错误提示
|
||||
|
||||
**SQL (4个文件)**:
|
||||
- `sql/qa_ddl.sql` — sys_file新结构
|
||||
- `sql/prod_align_qa.sql` — sys_file新结构
|
||||
- `sql/prod_migrate_sys_file.sql` — PROD迁移(新建)
|
||||
- `init_qa_database.py` — sys_file新结构
|
||||
|
||||
## 待处理
|
||||
- [x] **PROD 数据库 sys_file 表迁移** — 已完成,QA和PROD结构一致
|
||||
- [ ] 部署前端到PROD(Nginx 10.10.1.160)
|
||||
- [ ] 部署后端到PROD(10.10.1.170)
|
||||
- [ ] 验证头像上传端到端流程
|
||||
- [ ] E-1 Cookie域localhost问题(开发环境限制,暂不处理)
|
||||
- [ ] F-3 bindSystems/unbindSystems Redis同步(低优先级)
|
||||
Reference in New Issue
Block a user