coderxslee
|
4b0c146520
|
git commit -m "fix(codegen): 添加软删除字段支持,避免字段重复定义
## 背景
本次修复包含前后端两部分:
1. 前端SQL模板添加软删除字段(新功能)
2. 后端代码模板排除软删除字段(预防性修复)
## 修复内容
### 前端模板:添加软删除字段(新功能)
**文件**: createTableVisualPresets.ts
之前前端SQL模板缺少软删除字段,导致生成的表不完整。
- **mixinMysql()**: 添加软删除字段
- is_deleted: tinyint(1) NOT NULL - 标记是否已删除
- deleted_time: datetime NULL - 记录删除时间
- deleted_id: int NULL - 记录删除人ID
- **mixinPostgres()**: 添加软删除字段
- is_deleted: boolean NOT NULL - 标记是否已删除
- deleted_time: timestamp without time zone NULL - 记录删除时间
- deleted_id: integer NULL - 记录删除人ID
### 后端模板:排除软删除字段(预防性修复)
**文件**: model.py.j2, schema.py.j2
虽然之前前端模板没有软删除字段,但为了配合前端修复,需要确保后端模板正确排除这些字段。
- **model.py.j2**: 在排除列表中添加 is_deleted, deleted_time, deleted_id
- 原排除列表: ['id', 'uuid', 'status', 'description', 'created_time', 'updated_time', 'created_id', 'updated_id']
- 新排除列表: 添加 'is_deleted', 'deleted_time', 'deleted_id'
- 原因: 这些字段由 ModelMixin 和 UserMixin 提供,不应在生成的模型中重复定义
- **schema.py.j2**: 在排除列表中添加 is_deleted, deleted_time, deleted_id
- 原排除列表: ['uuid', 'created_time', 'updated_time', 'created_id', 'updated_id']
- 新排除列表: 添加 'is_deleted', 'deleted_time', 'deleted_id'
- 原因: 软删除字段由系统自动管理,不应出现在新增/更新Schema中
## 技术说明
### 软删除机制
软删除(逻辑删除)是一种不物理删除数据的删除方式:
- **is_deleted**: 标记记录是否已删除(false=未删除, true=已删除)
- **deleted_time**: 记录删除时间,用于审计和数据恢复
- **deleted_id**: 记录删除操作人ID,外键关联sys_user表
### 字段继承关系
生成的模型继承自两个基类:
- **ModelMixin**: 提供 id, uuid, status, description, created_time, updated_time, is_deleted, deleted_time
- **UserMixin**: 提供 created_id, updated_id, deleted_id 及对应的关联关系
代码生成器应排除这些字段,避免重复定义。
## 修复效果
### 修复前
- 前端模板生成的表缺少软删除字段 ❌
- 后端模板排除列表不完整(虽然暂时没问题,因为前端也没生成这些字段)
### 修复后
- 前端模板生成的表包含完整的软删除字段 ✅
- 后端模板正确排除软删除字段,避免重复定义 ✅
- 前后端配合,生成的代码正确继承基类的软删除功能 ✅
## 影响范围
- ✅ 使用\"单表·MySQL\"或\"单表·PostgreSQL\"模板创建的表自动包含软删除字段
- ✅ 生成的model.py只包含业务字段,不会重复定义基础字段
- ✅ 所有新生成的模型自动支持软删除功能
- ✅ 与现有系统的软删除机制保持一致"
|
2026-04-20 20:18:53 +08:00 |
|