5.0 KiB
5.0 KiB
name, description, metadata
| name | description | metadata | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| session-20260611-1 | 2026-06-11 会话 — 头像上传修复、用户信息显示修复、文件存DB、系统Bug全面检查 |
|
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)
- 重新设计 sys_file 表,添加
- 原因: 用户要求图片文件存入数据库而非磁盘
- 结果: 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— 添加gatewayUrlmokee-gateway-admin/.../service/FileService.java— 新增getMetaByIdmokee-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 onMountmokee-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新结构
待处理
- PROD 数据库 sys_file 表迁移 — 已完成,QA和PROD结构一致
- 部署前端到PROD(Nginx 10.20.1.160)
- 部署后端到PROD(10.20.1.170)
- 验证头像上传端到端流程
- E-1 Cookie域localhost问题(开发环境限制,暂不处理)
- F-3 bindSystems/unbindSystems Redis同步(低优先级)