---
description: DO/ReqVO/RespVO/DTO实体规范，适配达梦8雪花ID、字段类型映射
globs: ["**/*DO.java","**/*VO.java","**/*DTO.java"]
alwaysApply: false
---
# 冲突优先级声明
达梦数据库全局规则、Java编码禁令优先级高于本文件。

# DO、VO、DTO 实体开发规范（达梦8适配）
## 一、DO 数据库实体规范
1. 存放路径：domain/dataobject，命名 Xxx；
2. 基础注解：
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    @TableName("xxx")
3. 主键字段统一：
    @TableId(type = IdType.ASSIGN_ID)
    private String id;
4. 必须包含框架通用字段：creator、createTime、updater、updateTime、deleted；
5. 字段类型严格遵循达梦8映射规则，时间统一LocalDateTime，布尔使用Boolean；
6. 复杂数组/集合字段添加类型处理器注解：
    @TableField(typeHandler = JacksonTypeHandler.class)
    private List<String> tagList;
7. 禁止在DO中添加业务计算字段、字典翻译字段，翻译逻辑统一在RespVO处理；
8. 所有字段添加中文注释，说明业务含义。

## 二、ReqVO 请求VO规范
### 1. SaveReqVO（新增/编辑共用）
1. 命名：XxxSaveReqVO；
2. 仅包含前端可编辑业务字段，**不包含id、租户、创建人、创建时间、软删除**等框架字段；
3. 字段校验注解统一使用Hibernate Validator：@NotBlank、@NotNull、@Size、@Min、@Max；
4. 时间字段统一LocalDateTime；ID、编码类文本统一String；

### 2. PageReqVO（分页查询）
1. 命名：XxxPageReqVO，继承若依框架 PageParam；
2. 仅包含分页参数、业务模糊查询、状态筛选条件；
3. 禁止分页VO携带大文本、复杂数组参数；
4. 所有查询条件允许为空，不强制@NotNull。

## 三、RespVO 返回VO规范
1. 命名：XxxRespVO；
2. 包含DO全部基础字段，额外增加富化展示字段（如分类名称、字典中文名称、关联业务名称）；
3. 富化字段仅用于前端展示，不参与新增/编辑保存；
4. 时间统一LocalDateTime，序列化输出标准ISO格式；
5. 字典状态字段同时返回数字编码和中文翻译，方便前端展示。

## 四、Feign DTO 传输对象规范
1. 命名：XxxDTO，存放于ruoyi-business-api模块；
2. DTO仅存储跨服务传输必要字段，精简冗余字段；
3. 禁止将DO、VO直接作为Feign接口入参/返回值；
4. DTO不添加数据库相关注解（@TableName、@TableId等）；
5. 基础注解仅保留@Data、@Builder，按需构造无参/全参构造。

## 五、实体通用禁止项
❌ 禁止DO直接返回前端，必须通过RespVO转换；
❌ 禁止SaveReqVO携带主键ID做新增操作；
❌ 禁止DTO中使用LocalDate、Date，统一LocalDateTime；
❌ 禁止实体字段使用基本类型（int、long、boolean），统一包装类型（Integer、Long、Boolean）；
❌ 禁止在VO/DTO中编写业务逻辑方法，实体仅做数据载体。
