# 员工信息表重命名设计文档
**创建日期**: 2026-02-09
**作者**: Claude
**版本**: 1.0
---
## 1. 概述
### 1.1 变更目的
将员工信息表 `ccdi_employee` 重命名为 `ccdi_base_staff`,并同步更新所有相关的 Java 类名、字段名和权限字符,保持代码命名的一致性和可读性。
### 1.2 变更范围
- **数据库**: 表名、字段名、索引
- **后端**: Entity、DTO、VO、Mapper、Service、Controller
- **前端**: API 调用、页面组件、权限指令
- **权限**: 菜单权限、按钮权限
### 1.3 环境说明
- 开发环境,无生产数据
- 无需数据迁移
- 变更风险可控
---
## 2. 数据库变更
### 2.1 表名变更
```sql
-- 表重命名(已完成)
RENAME TABLE ccdi_employee TO ccdi_base_staff;
```
### 2.2 字段变更
| 原字段名 | 新字段名 | 类型 | 说明 |
|-------------|--------------|-------------|----------|
| employee_id | **staff_id** | BIGINT(20) | 主键,员工ID |
| teller_no | **删除** | VARCHAR(50) | 柜员号字段已移除 |
### 2.3 保持不变的字段
以下字段保持不变:
- `name` VARCHAR(100) - 姓名
- `dept_id` BIGINT(20) - 所属部门ID
- `id_card` VARCHAR(18) - 身份证号
- `phone` VARCHAR(11) - 电话
- `hire_date` DATE - 入职时间
- `status` CHAR(1) - 状态
- `create_by`, `create_time`, `update_by`, `update_time` - 审计字段
### 2.4 索引变更
- 主键索引:`PRIMARY KEY (staff_id)`
- 普通索引:`idx_dept_id`, `idx_status`
- 删除 `uk_teller_no` 唯一索引(已随字段删除)
---
## 3. 后端代码变更
### 3.1 Entity 层
**类名变更**:
```
CcdiEmployee.java → CcdiBaseStaff.java
```
**字段变更**:
```java
// 主键字段
private Long employeeId; → private Long staffId;
// 删除字段
- private String tellerNo;
// @TableName 注解
@TableName("ccdi_employee") → @TableName("ccdi_base_staff")
// @TableId 注解
@TableId(type = IdType.INPUT) // 保持不变
```
### 3.2 DTO/VO 层
所有 DTO/VO 类需要同步重命名:
| 原类名 | 新类名 |
|----------------------|-----------------------|
| CcdiEmployeeAddDTO | CcdiBaseStaffAddDTO |
| CcdiEmployeeEditDTO | CcdiBaseStaffEditDTO |
| CcdiEmployeeQueryDTO | CcdiBaseStaffQueryDTO |
| CcdiEmployeeVO | CcdiBaseStaffVO |
| CcdiEmployeeExcel | CcdiBaseStaffExcel |
字段变更:
- `employeeId` → `staffId`
- 删除 `tellerNo`
### 3.3 Mapper 层
**接口变更**:
```
CcdiEmployeeMapper.java → CcdiBaseStaffMapper.java
```
**XML 文件变更**:
```
CcdiEmployeeMapper.xml → CcdiBaseStaffMapper.xml
```
**SQL 语句更新**:
```xml
employee_id → staff_id
teller_no → 删除相关查询和条件
→
```
### 3.4 Service 层
**接口和实现类变更**:
```
ICcdiEmployeeService.java → ICcdiBaseStaffService.java
CcdiEmployeeServiceImpl.java → CcdiBaseStaffServiceImpl.java
ICcdiEmployeeImportService.java → ICcdiBaseStaffImportService.java
CcdiEmployeeImportServiceImpl → CcdiBaseStaffImportServiceImpl
```
方法参数和返回值类型同步更新。
### 3.5 Controller 层
**类名变更**:
```
CcdiEmployeeController.java → CcdiBaseStaffController.java
```
**API 路径变更**:
```java
// 所有接口路径更新
@PreAuthorize("@ss.hasPermi('ccdi:employee:list')") → @PreAuthorize("@ss.hasPermi('ccdi:baseStaff:list')")
@RequestMapping("/ccdi/employee") → @RequestMapping("/ccdi/baseStaff")
```
**接口端点**:
- `GET /ccdi/baseStaff/list` - 列表查询
- `GET /ccdi/baseStaff/{staffId}` - 详情查询
- `POST /ccdi/baseStaff` - 新增
- `PUT /ccdi/baseStaff` - 修改
- `DELETE /ccdi/baseStaff/{staffIds}` - 删除
- `POST /ccdi/baseStaff/importData` - 导入
- `POST /ccdi/baseStaff/export` - 导出
---
## 4. 前端代码变更
### 4.1 API 层
**文件更新**:
```javascript
// API 请求路径更新
url: '/ccdi/employee/list' → url: '/ccdi/baseStaff/list'
// 字段名更新
employeeId → staffId
tellerNo → 删除相关引用
```
### 4.2 页面组件
**组件文件**:
- 员工管理页面组件重命名
- 所有数据绑定的字段名更新
- 表单验证规则更新
- 表格列定义更新
**字段映射**:
```javascript
// 数据绑定
employeeId → staffId
tellerNo → 删除
// 表格列 prop
:prop="'employeeId'" → :prop="'staffId'"
```
### 4.3 路由配置
如需更新路由路径:
```javascript
{
path: 'baseStaff',
component: () => import('@/views/ccdi/baseStaff/index')
}
```
---
## 5. 权限字符变更
### 5.1 后端权限注解
所有 `@PreAuthorize` 注解中的权限字符需要更新:
| 原权限字符 | 新权限字符 |
|----------------------|-----------------------|
| ccdi:employee:list | ccdi:baseStaff:list |
| ccdi:employee:query | ccdi:baseStaff:query |
| ccdi:employee:add | ccdi:baseStaff:add |
| ccdi:employee:edit | ccdi:baseStaff:edit |
| ccdi:employee:remove | ccdi:baseStaff:remove |
| ccdi:employee:export | ccdi:baseStaff:export |
| ccdi:employee:import | ccdi:baseStaff:import |
### 5.2 前端权限指令
所有权限指令更新:
```vue
v-hasPermi="['ccdi:employee:add']" → v-hasPermi="['ccdi:baseStaff:add']"
```
### 5.3 数据库菜单权限表
需要在 `sys_menu` 表中更新:
- 菜单权限标识:`ccdi:employee:list` → `ccdi:baseStaff:list`
- 按钮权限:`ccdi:employee:add/edit/remove/export/import` → `ccdi:baseStaff:add/edit/remove/export/import`
---
## 6. 测试验证方案
### 6.1 后端接口测试
使用测试脚本验证所有 API 端点:
1. **基础 CRUD 测试**
- 列表查询:验证分页、筛选功能
- 详情查询:验证 `staffId` 参数
- 新增功能:验证字段必填项
- 修改功能:验证更新操作
- 删除功能:验证批量删除
2. **字段验证测试**
- `staffId` 字段正常返回
- `tellerNo` 字段不存在
3. **权限测试**
- 不同角色访问接口验证权限控制
- 验证权限字符生效
### 6.2 前端功能测试
1. **页面功能**
- 列表页面正常加载
- 搜索筛选功能正常
- 新增/编辑对话框正常
- 删除确认功能正常
- 分页功能正常
2. **导入导出测试**
- Excel 模板下载(字段为 `staffId`)
- 数据导入功能
- 数据导出功能
3. **权限测试**
- 按钮显示/隐藏根据权限控制
- 无权限时提示正确
### 6.3 数据库验证
```sql
-- 验证表结构
DESC ccdi_base_staff;
-- 验证主键
SHOW INDEX FROM ccdi_base_staff WHERE Key_name = 'PRIMARY';
-- 验证数据量
SELECT COUNT(*) FROM ccdi_base_staff;
```
---
## 7. 实施步骤
### 7.1 后端实施顺序
1. 更新 Entity 层(CcdiBaseStaff)
2. 更新 DTO/VO 层
3. 更新 Mapper 层(接口和 XML)
4. 更新 Service 层(接口和实现)
5. 更新 Controller 层(包括权限字符)
6. 编译验证
### 7.2 前端实施顺序
1. 更新 API 层
2. 更新页面组件
3. 更新路由配置(如有)
4. 更新权限指令
5. 本地运行验证
### 7.3 数据库同步
1. 更新菜单权限表(sys_menu)
2. 验证表结构和索引
3. 验证权限配置
---
## 8. 回滚方案
如需回滚,执行以下步骤:
1. **数据库回滚**
```sql
RENAME TABLE ccdi_base_staff TO ccdi_employee;
-- 恢复 teller_no 字段(如有需要)
```
2. **代码回滚**
- 使用 Git 回退到变更前的提交
- 或手动恢复所有类名和字段名
3. **权限回滚**
- 恢复 sys_menu 表中的权限字符
---
## 9. 附录
### 9.1 影响文件清单
**后端 Java 文件(约 25 个)**:
- Entity: CcdiEmployee.java
- DTO/VO: AddDTO, EditDTO, QueryDTO, VO, Excel
- Mapper: CcdiEmployeeMapper.java/xml
- Service: ICcdiEmployeeService, ServiceImpl
- ImportService: ICcdiEmployeeImportService, ImportServiceImpl
- Controller: CcdiEmployeeController
**前端文件**:
- API: ccdiEmployee.js
- Views: 员工管理相关组件
- Router: 路由配置(如有)
**SQL 文件(约 6 个)**:
- dpc_employee.sql
- fix_charset.sql
- migration/employee_org_no_to_dept_id.sql
- modify_employee_id_to_teller_no.sql
- 等相关脚本
### 9.2 关键注意事项
1. **字段删除**: `teller_no` 字段已删除,需确认无其他代码引用
2. **主键变更**: `employee_id` → `staff_id`,需注意自增策略变化
3. **权限同步**: 确保数据库菜单表与代码权限字符一致
4. **测试覆盖**: 全面测试导入导出功能的字段映射
---
**文档状态**: 已完成
**审核状态**: 待审核