Files
mokeegateway/memory/session-20260612-1.md
2026-07-15 16:13:27 +08:00

6.1 KiB
Raw Blame History

name, description, metadata
name description metadata
session-20260612-1 2026-06-12 会话 — 域名迁移mokee.com→zgitm.com、对外开放API、邮件服务、Token一次消费、文件管理、移动端适配
type date sessionNumber startTime
session 2026-06-12 1 2026-06-12T00:00:00+08:00

2026-06-12 会话

会话摘要

域名从 mokee.com 迁移到 zgitm.com新增对外开放APIToken获取+邮件发送+一次消费新增邮件服务阿里企业邮箱新增Token日志和文件管理页面全员移动端适配修复多个关键Bug。

关键操作

一、域名迁移 mokee.com → zgitm.com

  • .env.production 所有 URL 改为 zgitm.com
  • auth.ts Cookie domain .zgitm.com(环境变量 VITE_COOKIE_DOMAIN
  • request.ts Cookie domain 环境变量化
  • IntegrationDoc.vue 备用 URL 更新
  • Bug: Cookie domain 拼写错误 .zgtim.com → 修正为 .zgitm.com
  • Bug: 登录不跳转 → Cookie domain 不匹配导致跨子域丢失
  • Nginx 需要配置 zgitm.com 域名

二、对外开放 API

  • 获取Token: POST /zgapi/v1/open/token 只需传 systemCode
  • 发送邮件: POST /zgapi/v1/open/email/send 带 Bearer Token
  • 一次消费: 每个 Token 只能用一次Redis open:token:{id}:consumed 标记
  • 30分钟有效期
  • 网关路由 /zgapi/v1/open/ → admin
  • TokenAuthFilter 放行 /zgapi/v1/open/token,其他 open 路径验证 open token

三、邮件服务

  • SMTP: smtp.qiye.aliyun.com:465 SSL, admin@zgitm.com / mokee2016.
  • EmailService.java — 支持纯文本/HTML/附件,自动加 [QA]/[PROD] 前缀
  • EmailService.setFrom() 设发件人(阿里企业邮箱要求发件人=认证账号)
  • EmailController.java — 后台发送+记录+分页查询+Token日志
  • sys_email_log 表 — 发送记录
  • @ConditionalOnBean 问题 → 改为 @Autowired(required = false) + null检查
  • Bug: 网关模块无 mail 配置导致 @Value("${spring.mail.username}") 启动失败 → 加默认值 :}

四、编码兼容

  • Bug: 外部系统发 GBK 编码 JSON → Jackson 按 UTF-8 解析失败 Invalid UTF-8 start byte 0xb2
  • 网关方案被拒绝 → 在 OpenApiController 手动读字节流,检测 GBK→UTF-8 转换
  • API 文档要求 Content-Type: application/json; charset=UTF-8

五、文件管理

  • 文件二进制存入数据库 file_data LONGBLOB
  • sys_file 表结构调整QA+PROD
  • FileController.{id}/view 端点输出图片流
  • FileList.vue — 文件列表+上传+预览
  • Bug: 图片显示 ERR_BLOCKED_BY_ORB → view 端点加 CORS 头
  • Bug: 上传报 MissingServletRequestPartException → 网关 spring.servlet.multipart.enabled=false
  • Bug: 图片 <img> 不带 Authorization 头 → TokenAuthFilter 支持 Cookie 读取 token

六、系统Bug全面检查

  • A-1: SysSystemgatewayUrl 字段 → 已添加
  • D-1/D-2: LoginView/UserForm 错误静默吞没 → 加错误提示
  • E-1: Cookie domain 硬编码 → 改为环境变量 VITE_COOKIE_DOMAIN
  • F-1/F-2: assignRoles/assignMenus 不同步 Redis → 清除会话强制重登
  • F-4: username 不同步 Redis → 已加同步

七、移动端适配全部22个Vue页面

  • AdminLayout: 汉堡菜单 + 侧边栏滑出 + 遮罩
  • 全局: 表格横向滚动、弹窗95vw、按钮缩小
  • 所有列表页: 工具栏垂直排列、select/input 100%宽
  • 所有表单页: max-width→100%、label缩到70px、按钮全宽
  • 操作列: 去掉 fixed="right",手机端只显示图标

八、Token日志

  • sys_open_token_logQA+PROD
  • OpenTokenLogList.vue — Token日志页面
  • 菜单 "Token日志" 在日志审计下
  • Bug: Token日志跳转登录 → 接口路径从 /zgapi/v1/open/ 移到 /zgapi/v1/admin/email/token-log/page

九、API文档

  • docs/open-api-doc.md — 独立API文档使用生产地址 gw.server.zgitm.com
  • Java(Hutool)调用示例
  • UTF-8 编码要求醒目提示

十、数据库变更QA+PROD均已执行

  • sys_file 表重建file_data LONGBLOB + 新结构)
  • sys_file 添加 file_url 兼容列
  • sys_open_token_log 表创建
  • sys_email_log 表创建
  • 文件管理菜单+权限 system:file:*
  • 邮件管理菜单+权限 system:email:*
  • Token日志菜单+权限 system:token:list

修改文件清单

后端:

  • SysSystem.java — 添加 gatewayUrl
  • SysFile.java — 重构file_data
  • SysEmailLog.java — 新建
  • SysOpenTokenLog.java — 新建
  • EmailService.java — 新建setFrom修复
  • JwtUtil.java — generateOpenToken()
  • FileService.java / FileServiceImpl.java — DB存储重写
  • FileController.java — view端点+CORS
  • EmailController.java — 发送+记录+Token日志
  • OpenApiController.java — Token获取+邮件发送+编码兼容+自主解析tokenId
  • UserServiceImpl.java — Redis同步+会话失效
  • RoleServiceImpl.java — 角色变更会话失效
  • AuthServiceImpl.java — 反向索引
  • TokenAuthFilter.java — Cookie token + Open API认证
  • GatewayController.java — open路由+multipart修复
  • 8个 application-*.yml — 日志级别+邮件配置+multipart禁用

前端:

  • .env.production / .env.development — VITE_COOKIE_DOMAIN
  • auth.ts — Cookie domain环境变量化
  • request.ts — Cookie domain环境变量化
  • LoginView.vue — 错误提示+移动端
  • AdminLayout.vue — fetchUserInfo+汉堡菜单+移动端+文件/邮件/Token菜单
  • PersonalView.vue — 头像上传修复+移动端
  • FileList.vue — 新建(上传+预览+移动端)
  • EmailList.vue — 新建(发送+记录+移动端)
  • OpenTokenLogList.vue — 新建(移动端)
  • IconPicker.vue — 已上传图标标签页
  • 15个页面 — 移动端@media适配
  • 7个表格 — 去掉fixed="right"
  • router/index.ts — 路由+标题favicon
  • global.css — 全局移动端CSS

文档:

  • docs/open-api-doc.md — 对外开放API文档

已知问题

  • E-1: Cookie domain localhost开发不可用开发环境VITE_COOKIE_DOMAIN为空
  • PROD Nginx 需要配 zgitm.com 域名
  • Docker部署需要重新构建镜像