8.4 KiB
8.4 KiB
员工信息表重命名设计文档
创建日期: 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 表名变更
-- 表重命名(已完成)
RENAME TABLE ccdi_employee TO ccdi_base_staff;
2.2 字段变更
| 原字段名 | 新字段名 | 类型 | 说明 |
|---|---|---|---|
| employee_id | staff_id | BIGINT(20) | 主键,员工ID |
| teller_no | 删除 | VARCHAR(50) | 柜员号字段已移除 |
2.3 保持不变的字段
以下字段保持不变:
nameVARCHAR(100) - 姓名dept_idBIGINT(20) - 所属部门IDid_cardVARCHAR(18) - 身份证号phoneVARCHAR(11) - 电话hire_dateDATE - 入职时间statusCHAR(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
字段变更:
// 主键字段
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 语句更新:
<!-- 所有 SQL 中的字段名更新 -->
employee_id → staff_id
teller_no → 删除相关查询和条件
<!-- ResultMap 更新 -->
<id property="employeeId" column="employee_id"/>
→
<id property="staffId" column="staff_id"/>
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 路径变更:
// 所有接口路径更新
@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 层
文件更新:
// API 请求路径更新
url: '/ccdi/employee/list' → url: '/ccdi/baseStaff/list'
// 字段名更新
employeeId → staffId
tellerNo → 删除相关引用
4.2 页面组件
组件文件:
- 员工管理页面组件重命名
- 所有数据绑定的字段名更新
- 表单验证规则更新
- 表格列定义更新
字段映射:
// 数据绑定
employeeId → staffId
tellerNo → 删除
// 表格列 prop
:prop="'employeeId'" → :prop="'staffId'"
4.3 路由配置
如需更新路由路径:
{
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 前端权限指令
所有权限指令更新:
<!-- 示例 -->
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 端点:
-
基础 CRUD 测试
- 列表查询:验证分页、筛选功能
- 详情查询:验证
staffId参数 - 新增功能:验证字段必填项
- 修改功能:验证更新操作
- 删除功能:验证批量删除
-
字段验证测试
staffId字段正常返回tellerNo字段不存在
-
权限测试
- 不同角色访问接口验证权限控制
- 验证权限字符生效
6.2 前端功能测试
-
页面功能
- 列表页面正常加载
- 搜索筛选功能正常
- 新增/编辑对话框正常
- 删除确认功能正常
- 分页功能正常
-
导入导出测试
- Excel 模板下载(字段为
staffId) - 数据导入功能
- 数据导出功能
- Excel 模板下载(字段为
-
权限测试
- 按钮显示/隐藏根据权限控制
- 无权限时提示正确
6.3 数据库验证
-- 验证表结构
DESC ccdi_base_staff;
-- 验证主键
SHOW INDEX FROM ccdi_base_staff WHERE Key_name = 'PRIMARY';
-- 验证数据量
SELECT COUNT(*) FROM ccdi_base_staff;
7. 实施步骤
7.1 后端实施顺序
- 更新 Entity 层(CcdiBaseStaff)
- 更新 DTO/VO 层
- 更新 Mapper 层(接口和 XML)
- 更新 Service 层(接口和实现)
- 更新 Controller 层(包括权限字符)
- 编译验证
7.2 前端实施顺序
- 更新 API 层
- 更新页面组件
- 更新路由配置(如有)
- 更新权限指令
- 本地运行验证
7.3 数据库同步
- 更新菜单权限表(sys_menu)
- 验证表结构和索引
- 验证权限配置
8. 回滚方案
如需回滚,执行以下步骤:
-
数据库回滚
RENAME TABLE ccdi_base_staff TO ccdi_employee; -- 恢复 teller_no 字段(如有需要) -
代码回滚
- 使用 Git 回退到变更前的提交
- 或手动恢复所有类名和字段名
-
权限回滚
- 恢复 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 关键注意事项
- 字段删除:
teller_no字段已删除,需确认无其他代码引用 - 主键变更:
employee_id→staff_id,需注意自增策略变化 - 权限同步: 确保数据库菜单表与代码权限字符一致
- 测试覆盖: 全面测试导入导出功能的字段映射
文档状态: 已完成 审核状态: 待审核