提交修改的代码
This commit is contained in:
1 parent
8538ef5036
commit
0869a4adf3
6 files changed
+78
-4
No files matched your search
@@ -1979,3 +1979,53 @@ public interface SysUserMapper extends BaseMapperPlus<SysUser, SysUserVo> {
|
||||
Page<SysUserVo> selectUserPage(Page<SysUser> page, @Param("bo") SysUserBo bo);
|
||||
}
|
||||
```
|
||||
|
||||
### 🗑️ 逻辑删除规则(全局强制,2025-07-11新增)
|
||||
|
||||
> **适用范围**:所有业务表、所有MyBatis-Plus实体、所有Service删除操作
|
||||
>
|
||||
> **设计目标**:统一软删除实现,避免物理删除带来的数据丢失,保证查询接口自动过滤已删除数据。
|
||||
|
||||
1. **数据库字段**
|
||||
- 字段名:`deleted`
|
||||
- 字段类型:`tinyint(1)`
|
||||
- 默认值:`0`(存在)
|
||||
- 含义:`0`-存在,`1`-已删除
|
||||
|
||||
2. **实体类注解**
|
||||
```java
|
||||
/**
|
||||
* 删除标志(0代表存在 1代表删除)
|
||||
*/
|
||||
@TableLogic(value = "0", delval = "1")
|
||||
private Integer deleted;
|
||||
```
|
||||
- `@TableLogic` 由 MyBatis-Plus 提供,可自动将 `DELETE` SQL 转换为
|
||||
```sql
|
||||
UPDATE table SET deleted = 1 WHERE id = ?
|
||||
```
|
||||
- 同时在所有自动生成的 `SELECT` 语句中追加条件 `deleted = 0`,无需显式编写过滤条件。
|
||||
|
||||
3. **删除操作代码规范**
|
||||
- Service 层推荐使用 MyBatis-Plus 的 `deleteById` / `deleteBatchIds` 等方法即可触发逻辑删除。
|
||||
- 如需自定义删除 SQL,**必须**包含 `deleted = 0` 过滤并在删除时设置 `deleted = 1`。
|
||||
- Controller 层仍按业务语义暴露 `DELETE /{id}` 接口,无需额外逻辑,保持与物理删除一致的调用方式。
|
||||
|
||||
4. **查询操作规范**
|
||||
- 默认情况下,MyBatis-Plus 已自动附加 `deleted = 0` 条件。编写自定义 SQL 时,**必须**手动加上 `AND deleted = 0`。
|
||||
- 对外返回的分页/列表接口,不得包含 `deleted = 1` 的数据。
|
||||
|
||||
5. **数据恢复**
|
||||
- 若业务需要"恢复已删除数据",可单独提供接口,将 `deleted` 字段重新置回 `0`。
|
||||
|
||||
> 📌 **注意**:逻辑删除是项目级强制要求,任何物理删除(`DELETE FROM ...`)将被代码审查拒绝。
|
||||
|
||||
#### 🔴 AI 开发强制要求
|
||||
|
||||
当使用 AI 进行数据库开发时:
|
||||
|
||||
1. **必须先阅读** `docs/设计文档/database/mysql-database-standard.md` 规范
|
||||
2. **必须使用标准模板**,不得随意修改基础字段
|
||||
3. **必须保持与现有表结构的一致性**
|
||||
4. **建表后必须立即更新** `hzdyjs_xg.sql` 文件
|
||||
5. **必须在变更记录中记录** 数据库变更
|
||||
Reference in new issue
Block a user