4.9 KiB
4.9 KiB
name, description, metadata
| name | description | metadata | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| session-20260619-1 | 2026-06-19 第1次会话 — 审计字段全栈实现:创建人/更新人/时间 + 按创建时间倒序 + DNS本地审计表 |
|
2026-06-19 第1次会话
会话摘要
全栈实现了审计字段功能:Nginx转发管理和DNS解析管理两张表增加创建人/时间/更新人/时间字段,前端显示并按创建时间倒序排列。数据库迁移已执行,Java后端和Vue前端已编译部署到10.1.1.170的Docker容器。
关键操作
1. 数据库迁移
- 做了什么: 给
forwarding_rules、dns_zone_config、certificates三张表新增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/updatedBy;updateFill 同时填充 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/nginxserver(QA和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的记录定期归档