# Tasks: 添加中介人员黑名单管理模块

## 环境准备

- [ ] 1.1 确认 `replace-poi-with-easyexcel` change 已完成（EasyExcel 依赖可用）
- [ ] 1.2 创建 `ruoyi-dpc` 模块目录结构（如果不存在）
- [ ] 1.3 在父 pom.xml 中添加 `ruoyi-dpc` 模块声明（如果不存在）

## 数据库设计

- [ ] 2.1 编写数据库建表 SQL
  - [ ] 2.1.1 创建 `ccdi_intermediary_blacklist` 表
  - [ ] 2.1.2 添加索引（name, id_card, intermediary_type）
  - [ ] 2.1.3 添加表注释和字段注释

- [ ] 2.2 编写菜单权限 SQL
  - [ ] 2.2.1 添加"信息维护"一级菜单（menu_id: 2000）
  - [ ] 2.2.2 添加"中介库管理"二级菜单（menu_id: 2001）
  - [ ] 2.2.3 添加按钮权限（查询、新增、修改、删除、导出、导入）

- [ ] 2.3 编写字典数据 SQL
  - [ ] 2.3.1 添加"中介类型"字典（ccdi_intermediary_type）
  - [ ] 2.3.2 添加"风险等级"字典（ccdi_risk_level）

- [ ] 2.4 执行 SQL 脚本初始化数据

## 后端开发

- [ ] 3.1 创建 Domain 层
  - [ ] 3.1.1 创建 `CcdiIntermediaryBlacklist.java` 实体类
  - [ ] 3.1.2 创建 `CcdiIntermediaryBlacklistAddDTO.java` 新增 DTO
  - [ ] 3.1.3 创建 `CcdiIntermediaryBlacklistEditDTO.java` 编辑 DTO
  - [ ] 3.1.4 创建 `CcdiIntermediaryBlacklistQueryDTO.java` 查询 DTO
  - [ ] 3.1.5 创建 `CcdiIntermediaryBlacklistVO.java` 视图对象
  - [ ] 3.1.6 添加 `@Excel` 注解支持导入导出

- [ ] 3.2 创建 Mapper 层
  - [ ] 3.2.1 创建 `CcdiIntermediaryBlacklistMapper.java` 接口
  - [ ] 3.2.2 创建 `CcdiIntermediaryBlacklistMapper.xml` 映射文件
  - [ ] 3.2.3 实现 `selectIntermediaryList` 方法（支持条件查询）
  - [ ] 3.2.4 实现 `selectIntermediaryById` 方法
  - [ ] 3.2.5 实现 `insertIntermediary` 方法
  - [ ] 3.2.6 实现 `updateIntermediary` 方法
  - [ ] 3.2.7 实现 `deleteIntermediaryByIds` 方法

- [ ] 3.3 创建 Service 层
  - [ ] 3.3.1 创建 `ICcdiIntermediaryBlacklistService.java` 接口
  - [ ] 3.3.2 创建 `CcdiIntermediaryBlacklistServiceImpl.java` 实现类
  - [ ] 3.3.3 实现查询列表业务逻辑（分页）
  - [ ] 3.3.4 实现查询详情业务逻辑
  - [ ] 3.3.5 实现新增业务逻辑（含数据校验）
  - [ ] 3.3.6 实现修改业务逻辑（含数据校验）
  - [ ] 3.3.7 实现删除业务逻辑
  - [ ] 3.3.8 实现导出业务逻辑
  - [ ] 3.3.9 实现导入业务逻辑（含数据验证）

- [ ] 3.4 创建 Controller 层
  - [ ] 3.4.1 创建 `CcdiIntermediaryBlacklistController.java`
  - [ ] 3.4.2 实现 `list` 接口（查询列表）
  - [ ] 3.4.3 实现 `getInfo` 接口（查询详情）
  - [ ] 3.4.4 实现 `add` 接口（新增）
  - [ ] 3.4.5 实现 `edit` 接口（修改）
  - [ ] 3.4.6 实现 `remove` 接口（删除）
  - [ ] 3.4.7 实现 `export` 接口（导出 Excel）
  - [ ] 3.4.8 实现 `importTemplate` 接口（下载模板）
  - [ ] 3.4.9 实现 `importData` 接口（导入 Excel）
  - [ ] 3.4.10 添加 `@PreAuthorize` 权限注解
  - [ ] 3.4.11 添加 `@Log` 操作日志注解

- [ ] 3.5 实现数据验证逻辑
  - [ ] 3.5.1 姓名必填校验
  - [ ] 3.5.2 姓名长度校验（1-100字符）
  - [ ] 3.5.3 身份证号长度校验（最大50字符）
  - [ ] 3.5.4 中介类型枚举校验（1=个人，2=机构）
  - [ ] 3.5.5 风险等级枚举校验（1=高，2=中，3=低）
  - [ ] 3.5.6 状态枚举校验（0=正常，1=停用）
  - [ ] 3.5.7 备注长度校验（最大500字符）

- [ ] 3.6 实现 Excel 导入导出功能
  - [ ] 3.6.1 生成导入模板（带示例数据）
  - [ ] 3.6.2 实现 Excel 数据读取
  - [ ] 3.6.3 实现导入数据验证
  - [ ] 3.6.4 实现导入错误提示
  - [ ] 3.6.5 实现批量插入数据
  - [ ] 3.6.6 实现 Excel 数据导出
  - [ ] 3.6.7 支持按查询条件导出

## 前端开发

- [ ] 4.1 创建 API 接口文件
  - [ ] 4.1.1 创建 `ruoyi-ui/src/api/dpcIntermediary.js`
  - [ ] 4.1.2 定义 `listIntermediary` 接口
  - [ ] 4.1.3 定义 `getIntermediary` 接口
  - [ ] 4.1.4 定义 `addIntermediary` 接口
  - [ ] 4.1.5 定义 `updateIntermediary` 接口
  - [ ] 4.1.6 定义 `delIntermediary` 接口
  - [ ] 4.1.7 定义 `exportIntermediary` 接口
  - [ ] 4.1.8 定义 `importTemplate` 接口
  - [ ] 4.1.9 定义 `importData` 接口

- [ ] 4.2 创建主页面
  - [ ] 4.2.1 创建 `ruoyi-ui/src/views/dpcIntermediary/index.vue`
  - [ ] 4.2.2 实现搜索表单区域
  - [ ] 4.2.3 实现操作按钮区域（新增、导入、导出、下载模板）
  - [ ] 4.2.4 实现数据表格（展示列表数据）
  - [ ] 4.2.5 实现分页组件
  - [ ] 4.2.6 实现新增/编辑对话框
  - [ ] 4.2.7 实现导入对话框
  - [ ] 4.2.8 实现表单验证规则
  - [ ] 4.2.9 实现字典数据回显（中介类型、风险等级、状态）

- [ ] 4.3 实现前端功能细节
  - [ ] 4.3.1 搜索条件组合查询
  - [ ] 4.3.2 新增/编辑表单提交
  - [ ] 4.3.3 单条/批量删除确认
  - [ ] 4.3.4 Excel 文件上传
  - [ ] 4.3.5 导入结果展示（成功/失败数量）
  - [ ] 4.3.6 导入错误详情展示
  - [ ] 4.3.7 权限按钮显示控制（v-hasPermi）

## 测试

- [ ] 5.1 后端单元测试
  - [ ] 5.1.1 测试查询列表功能
  - [ ] 5.1.2 测试查询详情功能
  - [ ] 5.1.3 测试新增功能（含边界条件）
  - [ ] 5.1.4 测试修改功能
  - [ ] 5.1.5 测试删除功能
  - [ ] 5.1.6 测试数据校验逻辑
  - [ ] 5.1.7 测试 Excel 导入功能（含异常数据）
  - [ ] 5.1.8 测试 Excel 导出功能

- [ ] 5.2 后端集成测试
  - [ ] 5.2.1 测试 Controller 层接口
  - [ ] 5.2.2 测试权限验证
  - [ ] 5.2.3 测试操作日志记录

- [ ] 5.3 前端功能测试
  - [ ] 5.3.1 测试页面加载和列表展示
  - [ ] 5.3.2 测试搜索功能（各种条件组合）
  - [ ] 5.3.3 测试新增功能
  - [ ] 5.3.4 测试编辑功能
  - [ ] 5.3.5 测试删除功能（单条和批量）
  - [ ] 5.3.6 测试 Excel 模板下载
  - [ ] 5.3.7 测试 Excel 导入（正常和异常数据）
  - [ ] 5.3.8 测试 Excel 导出
  - [ ] 5.3.9 测试权限控制

- [ ] 5.4 生成测试脚本
  - [ ] 5.4.1 编写自动化测试脚本
  - [ ] 5.4.2 生成测试数据
  - [ ] 5.4.3 执行测试并验证结果

## 文档编写

- [ ] 6.1 生成 API 文档
  - [ ] 6.1.1 生成 Swagger 接口文档
  - [ ] 6.1.2 编写接口使用说明

- [ ] 6.2 编写用户手册
  - [ ] 6.2.1 功能概述
  - [ ] 6.2.2 操作步骤说明
  - [ ] 6.2.3 常见问题解答

## 验收

- [ ] 7.1 功能完整性验收
  - [ ] 7.1.1 所有 CRUD 功能正常
  - [ ] 7.1.2 Excel 导入导出功能正常
  - [ ] 7.1.3 数据验证功能正常
  - [ ] 7.1.4 权限控制功能正常
  - [ ] 7.1.5 操作日志记录正常

- [ ] 7.2 性能验收
  - [ ] 7.2.1 列表查询响应时间 < 1秒（1000条数据）
  - [ ] 7.2.2 Excel 导入 1000 条数据耗时 < 10秒
  - [ ] 7.2.3 Excel 导出 1000 条数据耗时 < 5秒

- [ ] 7.3 兼容性验收
  - [ ] 7.3.1 支持 Chrome 浏览器
  - [ ] 7.3.2 支持 Edge 浏览器
  - [ ] 7.3.3 支持 Firefox 浏览器

## 依赖关系

```
1. 环境准备
    ↓
2. 数据库设计
    ↓
3. 后端开发（Domain → Mapper → Service → Controller）
    ↓
4. 前端开发（API → 页面 → 功能）
    ↓
5. 测试
    ↓
6. 文档编写
    ↓
7. 验收
```

## 并行任务

以下任务可以并行执行：
- 3.2（Mapper 层）可与 3.3（Service 层）部分并行（先定义接口）
- 4.1（API 接口）可与 3.4（Controller 层）并行
- 5.1（单元测试）可与 5.2（集成测试）部分并行

## 验收标准

所有任务完成后，必须满足：
1. 所有接口功能正常，无 Bug
2. Excel 导入导出功能完整可用
3. 数据验证规则正确执行
4. 权限控制有效
5. 操作日志正确记录
6. 前端页面交互流畅
7. 通过所有测试用例
8. API 文档完整准确
