实现任务2.2
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
## 1. 准备工作
|
||||
|
||||
- [ ] 1.1 阅读并理解 `openspec/changes/refactor-business-logic-layering/proposal.md`。
|
||||
- [ ] 1.2 阅读并理解 'AGENTS.md'
|
||||
- [ ] 1.2 阅读并理解 `openspec/changes/refactor-business-logic-layering/design.md`。
|
||||
- [ ] 1.3 阅读并理解 'AGENTS.md'
|
||||
|
||||
## 2. 统一服务层接口输入输出为 DTO
|
||||
|
||||
@@ -20,36 +21,36 @@
|
||||
|
||||
### 2.2 `device` 模块
|
||||
|
||||
- [ ] 2.2.1 **创建并修改 `internal/app/service/device_service.go`:**
|
||||
- [ ] 定义 `DeviceService` 接口,包含 `CreateDevice`, `UpdateDevice`, `CreateAreaController`, `UpdateAreaController`,
|
||||
- [x] 2.2.1 **创建并修改 `internal/app/service/device_service.go`:**
|
||||
- [x] 定义 `DeviceService` 接口,包含 `CreateDevice`, `UpdateDevice`, `CreateAreaController`, `UpdateAreaController`,
|
||||
`CreateDeviceTemplate`, `UpdateDeviceTemplate`, `GetDevice`, `ListDevices`, `GetAreaController`,
|
||||
`ListAreaControllers`, `GetDeviceTemplate`, `ListDeviceTemplates`, `ManualControl` 等方法。
|
||||
- [ ] 为 `CreateDevice`, `UpdateDevice`, `CreateAreaController`, `UpdateAreaController`, `CreateDeviceTemplate`,
|
||||
- [x] 为 `CreateDevice`, `UpdateDevice`, `CreateAreaController`, `UpdateAreaController`, `CreateDeviceTemplate`,
|
||||
`UpdateDeviceTemplate`, `ManualControl` 方法定义并接收 DTO 作为输入。
|
||||
- [ ] 将 `GetDevice`, `ListDevices`, `GetAreaController`, `ListAreaControllers`, `GetDeviceTemplate`,
|
||||
- [x] 将 `GetDevice`, `ListDevices`, `GetAreaController`, `ListAreaControllers`, `GetDeviceTemplate`,
|
||||
`ListDeviceTemplates` 方法的返回值 `models.Xxx` 或 `[]models.Xxx` 替换为 `dto.XxxResponse` 或 `[]dto.XxxResponse`。
|
||||
- [ ] 实现 `DeviceService` 接口。
|
||||
- [ ] 在此服务层内部将输入 DTO 转换为 `models` 对象。
|
||||
- [ ] 在此服务层内部将 `repository` 或 `domain` 层返回的 `models` 对象转换为 `dto.XxxResponse`。
|
||||
- [ ] 将控制器中 `SelfCheck()` 验证逻辑移入此服务层。
|
||||
- [ ] 将控制器中 `Properties`, `Commands`, `Values` 的 JSON 序列化逻辑移入此服务层。
|
||||
- [ ] 将控制器中 `ManualControl` 的业务逻辑(如动作映射)移入此服务层。
|
||||
- [ ] 将控制器中直接调用 `repository` 方法的逻辑移入此服务层。
|
||||
- [ ] 将控制器中通过检查 `repository` 错误信息处理业务规则的逻辑移入此服务层。
|
||||
- [ ] 调整此服务层对 `internal/domain/device.Service` 的调用,确保传递的是 `models` 或领域对象,而不是 DTO。
|
||||
- [ ] 2.2.2 **修改 `internal/app/controller/device/device_controller.go`:**
|
||||
- [ ] 引入并使用新创建的 `internal/app/service.DeviceService`。
|
||||
- [ ] 移除控制器中直接创建 `models.Device`, `models.AreaController`, `models.DeviceTemplate` 对象的逻辑。
|
||||
- [ ] 移除控制器中直接调用 `SelfCheck()` 的逻辑。
|
||||
- [ ] 移除控制器中直接调用 `repository` 方法的逻辑。
|
||||
- [ ] 移除控制器中通过检查 `repository` 错误信息处理业务规则的逻辑。
|
||||
- [ ] 移除控制器中 `Properties`, `Commands`, `Values` 的 JSON 序列化逻辑。
|
||||
- [ ] 调整服务层方法的调用,使其接收新的服务层输入 DTO 或基本参数,并直接处理服务层返回的 `dto.XxxResponse`。
|
||||
- [ ] 2.2.3 **保持 `internal/domain/device/device_service.go` 和 `internal/domain/device/general_device_service.go`
|
||||
- [x] 实现 `DeviceService` 接口。
|
||||
- [x] 在此服务层内部将输入 DTO 转换为 `models` 对象。
|
||||
- [x] 在此服务层内部将 `repository` 或 `domain` 层返回的 `models` 对象转换为 `dto.XxxResponse`。
|
||||
- [x] 将控制器中 `SelfCheck()` 验证逻辑移入此服务层。
|
||||
- [x] 将控制器中 `Properties`, `Commands`, `Values` 的 JSON 序列化逻辑移入此服务层。
|
||||
- [x] 将控制器中 `ManualControl` 的业务逻辑(如动作映射)移入此服务层。
|
||||
- [x] 将控制器中直接调用 `repository` 方法的逻辑移入此服务层。
|
||||
- [x] 将控制器中通过检查 `repository` 错误信息处理业务规则的逻辑移入此服务层。
|
||||
- [x] 调整此服务层对 `internal/domain/device.Service` 的调用,确保传递的是 `models` 或领域对象,而不是 DTO。
|
||||
- [x] 2.2.2 **修改 `internal/app/controller/device/device_controller.go`:**
|
||||
- [x] 引入并使用新创建的 `internal/app/service.DeviceService`。
|
||||
- [x] 移除控制器中直接创建 `models.Device`, `models.AreaController`, `models.DeviceTemplate` 对象的逻辑。
|
||||
- [x] 移除控制器中直接调用 `SelfCheck()` 的逻辑。
|
||||
- [x] 移除控制器中直接调用 `repository` 方法的逻辑。
|
||||
- [x] 移除控制器中通过检查 `repository` 错误信息处理业务规则的逻辑。
|
||||
- [x] 移除控制器中 `Properties`, `Commands`, `Values` 的 JSON 序列化逻辑。
|
||||
- [x] 调整服务层方法的调用,使其接收新的服务层输入 DTO 或基本参数,并直接处理服务层返回的 `dto.XxxResponse`。
|
||||
- [x] 2.2.3 **保持 `internal/domain/device/device_service.go` 和 `internal/domain/device/general_device_service.go`
|
||||
专注于领域逻辑:**
|
||||
- [ ] 确保 `internal/domain/device/device_service.go` 接口方法和 `internal/domain/device/general_device_service.go`
|
||||
- [x] 确保 `internal/domain/device/device_service.go` 接口方法和 `internal/domain/device/general_device_service.go`
|
||||
实现方法不直接接收或返回 DTO。
|
||||
- [ ] 调整 `internal/domain/device/general_device_service.go` 的方法签名和内部逻辑,以适应其调用方(新的
|
||||
- [x] 调整 `internal/domain/device/general_device_service.go` 的方法签名和内部逻辑,以适应其调用方(新的
|
||||
`internal/app/service.DeviceService`)的调整,如果需要的话。
|
||||
|
||||
### 2.3 `pig-farm` 模块
|
||||
|
||||
Reference in New Issue
Block a user