ERPTurbo_Server/.lingma/rules/api_addition_guide.md
shenyifei ab0151e84d feat(purchase): 添加获取上一车车次号接口
- 新增 getLastVehicleNo 接口用于查询最新车次号
- 在 PurchaseOrderController 中添加对应 GET 接口
- 实现 LastVehicleNoQry 查询执行器及查询逻辑
- 扩展相关 DTO 和 Gateway 接口定义
- 更新 OrderDealer 实体类及其映射配置
- 添加新的查询参数类 LastVehicleNoQry
- 在 CostItem 中增加 requireQuantityAndPrice 字段
- 扩展 CostItemCostTypeEnum 枚举值
2025-11-13 23:08:20 +08:00

157 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
trigger: manual
---
# 新增接口需要添加的组件清单
注意:
不用管 erp-turbo-svc 这个目录的代码
本文档描述了在本项目中添加一个新的API接口时需要修改或创建的组件。
## 1. API层 (接口定义层)
注意这个 biz 可以是其他的名user、goods、order等
### 1.1 DTO定义
- **查询参数类(Query)**
- 路径: `erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/`
- 命名规范: `功能名+CountQry``功能名+ListQry``功能名+PageQry`
- 继承: `Query` 基类
- 注解: `@Data`, `@Schema`, `@EqualsAndHashCode(callSuper = true)`
- **命令类(Command)**
- 路径: `erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/`
- 命名规范: `功能名+CreateCmd``功能名+UpdateCmd``功能名+DestroyCmd`
- 继承: `Command` 基类
- 注解: `@Data`, `@Schema`, `@EqualsAndHashCode(callSuper = true)`
- **返回值类(Value Object)**
- 路径: `erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/`
- 命名规范: `功能名+VO`
- 注解: `@Data`, `@Schema`
### 1.2 服务接口定义
- **接口文件**
- 路径: `erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/api/`
- 文件命名: `功能名+ServiceI`
- 方法签名: 定义业务方法
## 2. 业务实现层 (Biz层)
### 2.1 服务实现
- **服务实现类**
- 路径: `erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/service/`
- 文件命名: `功能名+ServiceImpl`
- 实现接口: 实现对应的ServiceI接口
- 注解: `@Service`, `@DubboService`, `@RequiredArgsConstructor`
- 依赖注入: 通过构造函数注入执行器
### 2.2 查询执行器
- **查询执行器类**
- 路径: `erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/`
- 文件命名: `功能名+QryExe`
- 注解: `@Component`, `@RequiredArgsConstructor`
- 方法: `execute()`方法处理具体查询逻辑
### 2.3 命令执行器
- **命令执行器类**
- 路径: `erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/cmd/`
- 文件命名: `功能名+CmdExe`
- 注解: `@Component`, `@RequiredArgsConstructor`
- 方法: `execute()`方法处理具体命令逻辑
### 2.4 网关接口
- **网关接口**
- 路径: `erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/gateway/`
- 文件命名: `功能名+Gateway`
- 定义数据访问方法
### 2.5 领域实体
- **领域实体类**
- 路径: `erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/`
- 文件命名: `功能名`
- 注解: `@Data`, `@ToString`, `@Builder`, `@NoArgsConstructor`, `@AllArgsConstructor`
### 2.6 数据实体
- **数据实体类**
- 路径: `erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/`
- 文件命名: `功能名+DO`
- 继承: `BaseDO`
- 注解: `@Data`, `@TableName`, `@EqualsAndHashCode(callSuper = true)`
### 2.7 数据转换器
- **转换器类**
- 路径: `erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/convert/`
- 文件命名: `功能名+Convert`
- 注解: `@Mapper`
- 方法: 定义DO与领域实体、DO与VO之间的转换方法
### 2.8 数据访问层
- **Mapper接口**
- 路径: `erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/mapper/`
- 文件命名: `功能名+Mapper`
- 继承: `BaseMapper<实体类>`
- 注解: `@Mapper`
- **Mapper XML文件**
- 路径: `erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/`
- 文件命名: `功能名+Mapper.xml`
## 3. 控制层 (Controller层)
### 3.1 控制器
- **控制器类**
- 路径: `erp-turbo-admin/src/main/java/com/xunhong/erp/turbo/admin/controller/`
- 文件命名: `功能名+Controller`
- 注解: `@RestController`, `@RequestMapping`, `@RequiredArgsConstructor`
- 方法注解: `@SaCheckLogin`, `@GetMapping`/`@PostMapping`, `@Operation`
- Dubbo引用: `@DubboReference` 注解引入服务接口
## 4. 枚举类 (如有需要)
### 4.1 枚举定义
- **枚举类**
- 路径: `erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/enums/`
- 文件命名: `功能名+Enum`
- 实现接口: `DictEnum`
- 注解: `@Getter`, `@AllArgsConstructor`
## 5. 数据库变更 (如有需要)
### 5.1 数据库迁移脚本
- **SQL脚本**
- 路径: `db/migration/`
- 文件命名: `V版本号__变更描述.sql`
## 6. 测试用例 (建议)
### 6.1 单元测试
- **测试类**
- 路径: 对应模块的test目录下
- 文件命名: 被测试类+Test
## 7. 接口文档
### 7.1 Swagger注解
- 所有Controller方法都应添加Swagger注解包括:
- `@Tag` - 类级别,描述接口分类
- `@Operation` - 方法级别,描述接口功能
- `@Schema` - 类属性级别,描述字段含义
## 8. 权限控制
### 8.1 权限注解
- 使用`@SaCheckLogin`进行登录检查
- 使用`@SaCheckRole`进行角色检查
- 使用`@SaCheckPermission`进行权限检查(如需要)
## 9. 校验注解
### 9.1 参数校验
- 在Query和Command类的字段上使用校验注解如:
- `@NotNull` - 非空校验
- `@NotBlank` - 非空字符串校验
- `@Min`/`@Max` - 数值范围校验
- 在Controller方法参数中使用`@Validated`注解