Files
nginxserver/memory/session-20260619-1.md
2026-07-16 13:03:11 +08:00

4.9 KiB
Raw Blame History

name, description, metadata
name description metadata
session-20260619-1 2026-06-19 第1次会话 — 审计字段全栈实现:创建人/更新人/时间 + 按创建时间倒序 + DNS本地审计表
type date sessionNumber startTime
session 2026-06-19 1 2026-06-19T23:00:00+08:00

2026-06-19 第1次会话

会话摘要

全栈实现了审计字段功能Nginx转发管理和DNS解析管理两张表增加创建人/时间/更新人/时间字段前端显示并按创建时间倒序排列。数据库迁移已执行Java后端和Vue前端已编译部署到10.1.1.170的Docker容器。

关键操作

1. 数据库迁移

  • 做了什么: 给 forwarding_rulesdns_zone_configcertificates 三张表新增 created_by VARCHAR(100)updated_by VARCHAR(100) 列;新建 dns_records 本地审计表
  • SQL文件: sql/audit_migration.sql(用存储过程+INFORMATION_SCHEMA安全检查列是否已存在
  • 执行方式: Python pymysql 脚本直连 10.1.1.122
  • 结果: 6个审计列全部添加成功dns_records表已创建

2. Java实体层改动

  • 做了什么: ForwardingRule.java、DnsZoneConfig.java、Certificate.java 三个实体新增 createdBy/updatedBy 字段(@TableField + FieldFill自动填充新建 DnsRecord.java 实体和 DnsRecordMapper.java
  • 结果: 编译通过

3. MyMetaObjectHandler 自动填充

  • 做了什么: 新增 resolveOperator() 方法从 UserContext 获取当前用户优先级userName > userId > "系统"insertFill 同时填充 createdAt/updatedAt/createdBy/updatedByupdateFill 同时填充 updatedAt/updatedBy
  • 结果: 用户操作自动记录创建人/更新人;定时任务等无用户上下文场景写入"系统"

4. 业务层改动

  • ForwardingRuleService.java: listRules() 增加 .orderByDesc(ForwardingRule::getCreatedAt) — 最近创建排最前
  • 新建 DnsRecordService.java: 核心理念"阿里云DNS为权威数据源本地dns_records仅做审计追踪"listRecords()合并阿里云记录+本地审计字段addRecord/updateRecord/deleteRecord先操作阿里云再同步本地
  • DnsController.java: 注入 DnsRecordService 替代直接调 PythonApiClient

5. 前端改动

  • NginxForwarding.vue: 桌面表格新增"创建人"(width:100)和"创建时间"(width:160)列;移动端卡片新增创建人和创建时间行;新增 formatDate() 函数
  • DnsManagement.vue: 同上
  • 结果: 历史数据(null)显示"-",新数据正确显示创建人名称和格式化时间

6. 部署

  • 数据库: 已在10.1.1.122:3306/nginxserver执行迁移QA/PROD同一数据库
  • Java后端: JAR编译后部署到10.1.1.170 Docker容器 nginx-server-nginx-server重启成功端口4002正常
  • Vue前端: dist编译后部署到10.1.1.170 Docker容器 nginx-web-nginx-web端口3002正常
  • Python API: 无需改动

重要信息

部署架构10.1.1.170 Docker

容器 端口 镜像
nginx-server-nginx-server 4002 mokee-nginx-server-nginx-server
nginx-web-nginx-web 3002 mokee-nginx-web-nginx-web
mokeegateway-mokee-gateway-gateway 9000 Mokee Gateway

数据库

  • MySQL 10.1.1.122:3306/nginxserverQA和PROD共用
  • 新增表 dns_records — DNS记录本地审计
  • 3张表新增审计列forwarding_rules、dns_zone_config、certificates

审计字段自动填充逻辑

  • 优先取 UserContext.getUserName()网关X-User-Name头
  • 其次取 UserContext.getUserId()网关X-User-Id头
  • 都没有则填"系统"(定时任务场景)

涉及文件清单

文件 操作 说明
sql/audit_migration.sql 新增 SQL迁移脚本安全添加列+建表)
scripts/run_audit_migration.py 新增 Python数据库迁移执行脚本
entity/DnsRecord.java 新增 DNS记录本地审计实体
mapper/DnsRecordMapper.java 新增 DNS记录Mapper
service/DnsRecordService.java 新增 DNS记录业务服务阿里云+本地合并)
entity/ForwardingRule.java 新增 createdBy/updatedBy
entity/DnsZoneConfig.java 新增 createdBy/updatedBy
entity/Certificate.java 新增 createdBy/updatedBy
config/MyMetaObjectHandler.java 新增 createdBy/updatedBy 自动填充
service/ForwardingRuleService.java listRules() 加 ORDER BY created_at DESC
controller/DnsController.java 改用 DnsRecordService
views/NginxForwarding.vue 新增创建人/创建时间列 + formatDate
views/DnsManagement.vue 新增创建人/创建时间列 + formatDate

待处理

  • 用户通过网关登录后新增一条转发规则,验证创建人显示为实际用户名(而非"系统"
  • 用户新增一条DNS记录验证创建人/时间正确显示
  • 后续可考虑清理策略dns_records表中status=0的记录定期归档