Files
ccdi/assets/api-docs/api/员工信息管理API文档.md
2026-03-03 16:14:16 +08:00

329 lines
8.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 员工信息管理 API 文档
## 概述
员工信息管理模块提供员工信息的增删改查、批量导入导出功能。
**基础路径**: `/ccdi/employee`
**权限标识前缀**: `ccdi:employee`
**重要更新**: 自2026-02-05起,员工ID(employeeId)作为柜员号使用,为7位数字,手动输入,唯一不可重复。
---
## API 接口列表
### 1. 查询员工列表
**接口地址**: `GET /ccdi/employee/list`
**权限要求**: `ccdi:employee:list`
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
|------------|---------|----|---------------------|
| name | String | 否 | 姓名(模糊查询) |
| employeeId | Long | 否 | 员工ID(柜员号,精确查询,7位数字) |
| deptId | Long | 否 | 所属部门ID |
| idCard | String | 否 | 身份证号(精确查询) |
| status | String | 否 | 状态(0=在职, 1=离职) |
| pageNum | Integer | 否 | 页码(默认1) |
| pageSize | Integer | 否 | 每页数量(默认10) |
**响应示例**:
```json
{
"code": 200,
"msg": "操作成功",
"rows": [
{
"employeeId": 1000001,
"name": "张三",
"deptId": 100,
"deptName": "总部",
"idCard": "110101199001011234",
"phone": "13800138000",
"hireDate": "2020-01-01",
"status": "0",
"statusDesc": "在职",
"createTime": "2026-01-28 10:00:00"
}
],
"total": 1
}
```
**响应字段说明**:
| 字段名 | 类型 | 说明 |
|------------|--------|-----------------------|
| employeeId | Long | 员工ID(柜员号,7位数字) |
| name | String | 姓名 |
| deptId | Long | 所属部门ID |
| deptName | String | 所属部门名称(关联 sys_dept 表) |
| idCard | String | 身份证号 |
| phone | String | 电话 |
| hireDate | Date | 入职时间 |
| status | String | 状态(0=在职, 1=离职) |
| statusDesc | String | 状态描述 |
| createTime | Date | 创建时间 |
---
### 2. 查询员工详情
**接口地址**: `GET /ccdi/employee/{employeeId}`
**权限要求**: `ccdi:employee:query`
**路径参数**:
| 参数名 | 类型 | 必填 | 说明 |
|------------|------|----|-----------|
| employeeId | Long | 是 | 员工ID(柜员号) |
**响应示例**:
```json
{
"code": 200,
"msg": "操作成功",
"data": {
"employeeId": 1000001,
"name": "张三",
"deptId": 100,
"idCard": "110101199001011234",
"phone": "13800138000",
"hireDate": "2020-01-01",
"status": "0",
"statusDesc": "在职",
"createTime": "2026-01-28 10:00:00"
}
}
```
---
### 3. 新增员工
**接口地址**: `POST /ccdi/employee`
**权限要求**: `ccdi:employee:add`
**请求头**:
```
Content-Type: application/json
Authorization: Bearer {token}
```
**请求体**:
```json
{
"employeeId": 1000001,
"name": "张三",
"deptId": 100,
"idCard": "110101199001011234",
"phone": "13800138000",
"hireDate": "2020-01-01",
"status": "0"
}
```
**字段说明**:
| 字段名 | 类型 | 必填 | 说明 | 校验规则 |
|------------|--------|----|----------------|-------------|
| employeeId | Long | 是 | 员工ID(柜员号,7位数字) | 必填,7位数字,唯一 |
| name | String | 是 | 姓名 | 最大100字符 |
| deptId | Long | 是 | 所属部门ID | 必填 |
| idCard | String | 是 | 身份证号 | 18位,符合国标,唯一 |
| phone | String | 是 | 电话 | 必填,11位手机号 |
| hireDate | Date | 否 | 入职时间 | yyyy-MM-dd |
| status | String | 是 | 状态 | 0=在职, 1=离职 |
**响应示例**:
```json
{
"code": 200,
"msg": "操作成功"
}
```
---
### 4. 编辑员工
**接口地址**: `PUT /ccdi/employee`
**权限要求**: `ccdi:employee:edit`
**请求体**:
```json
{
"employeeId": 1000001,
"name": "张三",
"deptId": 100,
"idCard": "110101199001011234",
"phone": "13800138000",
"hireDate": "2020-01-01",
"status": "0"
}
```
**字段说明**: 与新增接口相同,employeeId 为必填项,编辑时不可修改柜员号。
**响应示例**:
```json
{
"code": 200,
"msg": "操作成功"
}
```
---
### 5. 删除员工
**接口地址**: `DELETE /ccdi/employee/{employeeIds}`
**权限要求**: `ccdi:employee:remove`
**路径参数**:
| 参数名 | 类型 | 必填 | 说明 |
|-------------|--------|----|--------------|
| employeeIds | Long[] | 是 | 员工ID数组逗号分隔 |
**响应示例**:
```json
{
"code": 200,
"msg": "操作成功"
}
```
---
### 6. 导出员工信息
**接口地址**: `POST /ccdi/employee/export`
**权限要求**: `ccdi:employee:export`
**请求参数**: 与查询列表接口相同(支持筛选条件)
**响应**: Excel 文件下载
---
### 7. 下载导入模板(带字典下拉框)
**接口地址**: `POST /ccdi/employee/importTemplate`
**权限要求**: 无
**功能说明**: 下载的 Excel 模板中,"状态"列会自动添加字典下拉框,方便用户选择。
**响应**: Excel 模板文件下载
**Excel 格式说明**:
**Sheet1: 员工信息**
| 姓名* | 柜员号* | 所属部门ID* | 身份证号* | 电话* | 入职时间 | 状态▼* |
|------|--------|------------|----------|------|----------|------|
| 张三 | 1000001 | 100 | 110101199001011234 | 13800138000 | 2020-01-01 | 在职 |
**注**:
- 带 * 标记的列为必填项(姓名、柜员号、所属部门、身份证号、电话、状态)
- 带 ▼ 标记的列包含下拉框,选项来自字典 `ccdi_employee_status`
**使用 @DictDropdown 注解实现**:
- 状态字段使用 `@DictDropdown(dictType = "ccdi_employee_status")` 注解
- 系统自动从 Redis 缓存读取字典数据并生成下拉框
- 下拉选项可动态更新,刷新字典缓存后生效
---
### 8. 导入员工信息
**接口地址**: `POST /ccdi/employee/importData`
**权限要求**: `ccdi:employee:import`
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
|---------------|---------|----|--------------------|
| file | File | 是 | Excel 文件 |
| updateSupport | Boolean | 否 | 是否更新已存在数据(默认false) |
**Excel 格式**:
**Sheet1: 员工信息**
| 姓名* | 柜员号* | 所属部门ID* | 身份证号* | 电话* | 入职时间 | 状态* |
|------|--------|------------|----------|------|----------|------|
| 张三 | 1000001 | 100 | 110101199001011234 | 13800138000 | 2020-01-01 | 在职 |
**说明**:
- ***标记为必填项**: 姓名、柜员号、所属部门、身份证号、电话、状态**
- 柜员号: 7位数字,必填,唯一
- 所属部门: 必须填写有效的部门ID
- 电话: 必须填写11位手机号
- 入职时间: 选填,格式为 yyyy-MM-dd
**响应示例**:
```json
{
"code": 200,
"msg": "恭喜您,数据已全部导入成功!共 10 条"
}
```
---
## 错误码说明
| 错误码 | 说明 |
|-----|----------|
| 200 | 操作成功 |
| 401 | 未授权,请先登录 |
| 403 | 无权限访问 |
| 500 | 服务器内部错误 |
## 业务错误信息
| 错误信息 | 说明 |
|-----------------|--------------|
| 该柜员号已存在 | 新增时柜员号重复 |
| 柜员号不能为空 | 新增时柜员号为空 |
| 柜员号必须为7位数字 | 柜员号格式不正确 |
| 所属部门不能为空 | 新增时所属部门为空 |
| 该身份证号已存在 | 新增/编辑时身份证号重复 |
| 姓名不能为空 | 新增时姓名为空 |
| 身份证号格式不正确 | 身份证号不符合18位国标 |
| 电话不能为空 | 新增时电话为空 |
| 电话格式不正确 | 手机号不符合11位格式 |
| 状态只能填写'在职'或'离职' | 状态值不正确 |
---
## 测试账号
- 用户名: `admin`
- 密码: `admin123`
测试前请先调用 `/login/test` 接口获取 Token。