|
|
@@ -52,6 +52,25 @@ Draft
|
|
|
- **业务逻辑**: 保持源服务中的重复检查、分页查询等逻辑
|
|
|
- [ ] 保持原有业务逻辑,适配新的服务架构
|
|
|
- [ ] 添加错误处理和日志记录
|
|
|
+- [ ] 实现自定义业务逻辑(覆盖GenericCrudService方法) (AC: 3.1)
|
|
|
+ - [ ] 覆盖`create`方法:添加渠道名称唯一性检查
|
|
|
+ - **业务逻辑**: 检查`channel_name`是否已存在,避免重复创建
|
|
|
+ - **源逻辑**: `channel.service.ts:14-37`中的重复检查逻辑
|
|
|
+ - [ ] 覆盖`update`方法:添加渠道存在性和名称重复检查
|
|
|
+ - **业务逻辑**: 检查渠道是否存在,检查更新后的名称是否与其他渠道重复
|
|
|
+ - **源逻辑**: `channel.service.ts:69-93`中的更新验证逻辑
|
|
|
+ - [ ] 覆盖`delete`方法:保持硬删除或改为软删除
|
|
|
+ - **当前逻辑**: 硬删除(`channel.service.ts:39-42`)
|
|
|
+ - **考虑**: 使用`status`字段实现软删除
|
|
|
+ - [ ] 自定义`findAll`方法:返回`{ data: Channel[], total: number }`格式
|
|
|
+ - **返回格式**: 保持源服务的分页返回格式
|
|
|
+ - **源逻辑**: `channel.service.ts:44-51`中的分页查询
|
|
|
+ - [ ] 实现`searchByName`方法:按名称模糊搜索
|
|
|
+ - **搜索逻辑**: 使用`Like`操作符进行模糊匹配
|
|
|
+ - **源逻辑**: `channel.service.ts:53-63`中的搜索功能
|
|
|
+ - [ ] 处理默认值设置:创建时设置默认值
|
|
|
+ - **默认字段**: `contact_person`, `contact_phone`, `channel_type`, `description`, `status`, `create_time`, `update_time`
|
|
|
+ - **源逻辑**: `channel.service.ts:24-33`中的默认值设置
|
|
|
- [ ] 完成路由层转换:从NestJS控制器转换为Hono路由 (AC: 4)
|
|
|
- [ ] 分析源控制器`allin_system-master/server/src/channel_info/channel.controller.ts`
|
|
|
- **源文件**: `allin_system-master/server/src/channel_info/channel.controller.ts`
|
|
|
@@ -64,6 +83,28 @@ Draft
|
|
|
- [ ] 添加认证中间件集成
|
|
|
- **参考**: `packages/auth-module/src/middleware/auth.middleware.ts`
|
|
|
- [ ] 配置OpenAPI文档和参数验证
|
|
|
+- [ ] 实现自定义路由处理(适配业务逻辑) (AC: 4.1)
|
|
|
+ - [ ] 自定义`POST /createChannel`路由:处理布尔返回值
|
|
|
+ - **返回格式**: 成功返回`{ success: true }`,失败返回`{ success: false, message: "渠道名称已存在" }`
|
|
|
+ - **源逻辑**: `channel.controller.ts:11-14`,`channel.service.ts:14-37`
|
|
|
+ - [ ] 自定义`POST /deleteChannel`路由:处理布尔返回值
|
|
|
+ - **返回格式**: 成功返回`{ success: true }`,失败返回`{ success: false }`
|
|
|
+ - **源逻辑**: `channel.controller.ts:16-19`,`channel.service.ts:39-42`
|
|
|
+ - [ ] 自定义`POST /updateChannel`路由:处理布尔返回值
|
|
|
+ - **返回格式**: 成功返回`{ success: true }`,失败返回`{ success: false, message: "渠道不存在或名称重复" }`
|
|
|
+ - **源逻辑**: `channel.controller.ts:21-24`,`channel.service.ts:69-93`
|
|
|
+ - [ ] 自定义`GET /getAllChannels`路由:处理分页参数和返回格式
|
|
|
+ - **参数**: `skip`, `take`查询参数
|
|
|
+ - **返回格式**: `{ data: Channel[], total: number }`
|
|
|
+ - **源逻辑**: `channel.controller.ts:26-29`,`channel.service.ts:44-51`
|
|
|
+ - [ ] 自定义`GET /searchChannels`路由:处理搜索功能
|
|
|
+ - **参数**: `name`(搜索关键词),`skip`, `take`(分页参数)
|
|
|
+ - **返回格式**: `{ data: Channel[], total: number }`
|
|
|
+ - **源逻辑**: `channel.controller.ts:31-34`,`channel.service.ts:53-63`
|
|
|
+ - [ ] 自定义`GET /getChannel/:id`路由:处理单个渠道查询
|
|
|
+ - **参数**: `id`路径参数
|
|
|
+ - **返回格式**: `Channel`对象或`null`
|
|
|
+ - **源逻辑**: `channel.controller.ts:36-39`,`channel.service.ts:65-67`
|
|
|
- [ ] 完成验证系统转换:从class-validator DTO转换为Zod Schema (AC: 5)
|
|
|
- [ ] 分析源DTO`allin_system-master/server/src/channel_info/channel.dto.ts`
|
|
|
- **源文件**: `allin_system-master/server/src/channel_info/channel.dto.ts`
|
|
|
@@ -118,6 +159,37 @@ Draft
|
|
|
- **转换要求**:下划线命名 → 驼峰命名,添加详细TypeORM配置
|
|
|
- **表名保持**:`channel_info`表名不变
|
|
|
|
|
|
+### 自定义实现分析
|
|
|
+- **需要覆盖GenericCrudService的方法**:
|
|
|
+ - **`create`方法**:需要添加渠道名称唯一性检查,避免重复创建
|
|
|
+ - **源逻辑**: `channel.service.ts:14-37` - 检查`channel_name`是否已存在
|
|
|
+ - **默认值设置**: 创建时设置`contact_person`, `contact_phone`, `channel_type`, `description`为空字符串,`status`为1,`create_time`和`update_time`为当前时间
|
|
|
+ - **`update`方法**:需要检查渠道存在性和名称重复性
|
|
|
+ - **源逻辑**: `channel.service.ts:69-93` - 检查渠道是否存在,检查更新后的名称是否与其他渠道重复
|
|
|
+ - **更新时间**: 自动设置`update_time`为当前时间
|
|
|
+ - **`delete`方法**:当前为硬删除,考虑改为软删除(使用`status`字段)
|
|
|
+ - **源逻辑**: `channel.service.ts:39-42` - 直接删除记录
|
|
|
+ - **建议**: 改为软删除,设置`status`为0或删除状态
|
|
|
+ - **`findAll`方法**:需要返回`{ data: Channel[], total: number }`格式
|
|
|
+ - **源逻辑**: `channel.service.ts:44-51` - 使用`findAndCount`返回数据和总数
|
|
|
+ - **排序**: 默认按`channel_id`降序排列
|
|
|
+ - **自定义`searchByName`方法**:按名称模糊搜索
|
|
|
+ - **源逻辑**: `channel.service.ts:53-63` - 使用`Like`操作符进行模糊匹配
|
|
|
+ - **返回格式**: `{ data: Channel[], total: number }`
|
|
|
+
|
|
|
+- **需要自定义路由处理**:
|
|
|
+ - **布尔返回值处理**:`createChannel`, `deleteChannel`, `updateChannel`返回`boolean`而非实体对象
|
|
|
+ - **成功**: `{ success: true }`
|
|
|
+ - **失败**: `{ success: false, message: "错误信息" }`
|
|
|
+ - **分页参数处理**:`getAllChannels`和`searchChannels`需要处理`skip`和`take`查询参数
|
|
|
+ - **搜索功能**:`searchChannels`需要处理`name`搜索参数
|
|
|
+
|
|
|
+- **与GenericCrudService的差异**:
|
|
|
+ - **返回值格式**:源服务返回布尔值或分页对象,GenericCrudService返回实体对象
|
|
|
+ - **验证逻辑**:源服务有自定义的业务验证逻辑(名称重复检查)
|
|
|
+ - **默认值设置**:源服务在创建时设置多个字段的默认值
|
|
|
+ - **搜索功能**:源服务有专门的按名称搜索功能
|
|
|
+
|
|
|
### API规范
|
|
|
- **现有API端点** [Source: allin_system-master/server/src/channel_info/channel.controller.ts]:
|
|
|
- `POST /channel/createChannel` - 创建渠道
|