# 员工管理模块 API 文档 > **文档版本**: v1.0 > **创建日期**: 2026-06-20 > **作者**: AI Assistant > **状态**: 正式发布 --- ## 目录 1. [概述](#概述) 2. [基础路径](#基础路径) 3. [员工管理接口](#员工管理接口) - [分页获取员工列表(含角色信息)](#分页获取员工列表含角色信息) 4. [用户管理接口(复用)](#用户管理接口复用) - [创建员工账号](#创建员工账号) - [获取员工详情](#获取员工详情) - [更新员工信息](#更新员工信息) - [逻辑删除员工](#逻辑删除员工) - [修改密码](#修改密码) - [为用户分配角色](#为用户分配角色) - [获取用户的角色](#获取用户的角色) 5. [角色管理接口(复用)](#角色管理接口复用) - [获取所有角色](#获取所有角色) 6. [数据模型](#数据模型) - [UserRegisterRequest](#userregisterrequest) - [EmployeePageResponse](#employeepageresponse) - [RoleInfo](#roleinfo) --- ## 概述 员工管理模块为店长(超级管理员 admin)提供新员工账号创建和权限分配功能。该模块复用已有的用户管理、角色管理接口,并新增了带角色信息的员工分页查询接口。 ## 基础路径 所有接口的基础路径为: `http://{host}:{port}/api` --- ## 员工管理接口 ### 分页获取员工列表(含角色信息) > **新增接口**:该接口在已有 `/api/users/page` 基础上,额外返回每个员工的角色详细信息。 | 属性 | 值 | |------|-----| | **HTTP方法** | GET | | **接口路径** | `/api/employees/page` | | **所属文件** | `SysUserHandler.java` | **请求参数**: | 参数名 | 类型 | 必填 | 默认值 | 说明 | |--------|------|------|--------|------| | page | int | 否 | 0 | 页码(从0开始) | | size | int | 否 | 10 | 每页数量 | | sort | string | 否 | id | 排序字段 | | order | string | 否 | asc | 排序方向(asc/desc) | | keyword | string | 否 | - | 搜索关键字(匹配用户名/昵称) | **成功响应** (200 OK): ```json { "content": [ { "id": 1, "username": "admin", "nickname": "超级管理员", "email": "admin@novalon.com", "phone": "13800138000", "avatar": null, "status": 1, "roles": [ { "id": 1, "roleName": "超级管理员", "roleKey": "admin", "roleSort": 1 } ], "createdAt": "2026-03-13T10:00:00", "updatedAt": "2026-03-13T10:00:00" } ], "totalPages": 1, "totalElements": 1, "currentPage": 0, "pageSize": 10, "first": true, "last": true } ``` --- ## 用户管理接口(复用) 以下接口为 `SysUserHandler` 中已有的用户管理接口,可直接用于员工管理。 ### 创建员工账号 | 属性 | 值 | |------|-----| | **HTTP方法** | POST | | **接口路径** | `/api/users` | | **所属文件** | `SysUserHandler.java` | **请求体**: ```json { "username": "newstaff", "password": "Staff@123", "nickname": "新员工", "email": "staff@novalon.com", "phone": "13900139001", "roles": [2, 3] } ``` **成功响应** (201 Created): ```json { "id": 11, "username": "newstaff", "nickname": "新员工", "email": "staff@novalon.com", "phone": "13900139001", "status": 1, "createdAt": "2026-06-20T10:00:00", "updatedAt": "2026-06-20T10:00:00" } ``` **校验规则**: - `username`: 3-50位,只能包含字母、数字、下划线和横线 - `password`: 8-20位,必须包含大小写字母和数字 - `email`: 合法邮箱格式 - `phone`: 中国大陆手机号格式(1[3-9]开头的11位数字) ### 获取员工详情 | 属性 | 值 | |------|-----| | **HTTP方法** | GET | | **接口路径** | `/api/users/{id}` | | **所属文件** | `SysUserHandler.java` | **成功响应** (200 OK): ```json { "id": 1, "username": "admin", "nickname": "超级管理员", "email": "admin@novalon.com", "phone": "13800138000", "avatar": null, "status": 1, "roles": [1], "createdAt": "2026-03-13T10:00:00", "updatedAt": "2026-03-13T10:00:00" } ``` ### 更新员工信息 | 属性 | 值 | |------|-----| | **HTTP方法** | PUT | | **接口路径** | `/api/users/{id}` | | **所属文件** | `SysUserHandler.java` | **请求体**: ```json { "email": "newemail@novalon.com", "roleId": 2, "status": 1 } ``` ### 逻辑删除员工 | 属性 | 值 | |------|-----| | **HTTP方法** | POST | | **接口路径** | `/api/users/{id}/action/logical-delete` | | **所属文件** | `SysUserHandler.java` | ### 修改密码 | 属性 | 值 | |------|-----| | **HTTP方法** | POST | | **接口路径** | `/api/users/{id}/action/change-password` | | **所属文件** | `SysUserHandler.java` | **请求体**: ```json { "oldPassword": "Old@123", "newPassword": "New@456" } ``` ### 为用户分配角色 | 属性 | 值 | |------|-----| | **HTTP方法** | POST | | **接口路径** | `/api/users/{id}/roles` | | **所属文件** | `SysUserHandler.java` | **请求体**: ```json { "roleIds": ["2", "3"] } ``` ### 获取用户的角色 | 属性 | 值 | |------|-----| | **HTTP方法** | GET | | **接口路径** | `/api/users/{id}/roles` | | **所属文件** | `SysUserHandler.java` | --- ## 角色管理接口(复用) ### 获取所有角色 | 属性 | 值 | |------|-----| | **HTTP方法** | GET | | **接口路径** | `/api/roles` | | **所属文件** | `SysRoleHandler.java` | **成功响应** (200 OK): ```json [ { "id": 1, "roleName": "超级管理员", "roleKey": "admin", "roleSort": 1, "status": 1, "createdAt": "2026-03-13T10:00:00", "updatedAt": "2026-03-13T10:00:00" }, { "id": 2, "roleName": "测试管理员", "roleKey": "test_admin", "roleSort": 2, "status": 1, "createdAt": "2026-03-13T10:00:00", "updatedAt": "2026-03-13T10:00:00" }, { "id": 3, "roleName": "普通用户", "roleKey": "normal_user", "roleSort": 3, "status": 1, "createdAt": "2026-03-13T10:00:00", "updatedAt": "2026-03-13T10:00:00" }, { "id": 4, "roleName": "访客", "roleKey": "guest", "roleSort": 4, "status": 1, "createdAt": "2026-03-13T10:00:00", "updatedAt": "2026-03-13T10:00:00" } ] ``` --- ## 数据模型 ### UserRegisterRequest | 字段 | 类型 | 必填 | 说明 | |------|------|------|------| | username | String | 是 | 用户名(3-50位字母数字下划线横线) | | password | String | 是 | 密码(8-20位含大小写字母和数字) | | nickname | String | 否 | 昵称 | | email | String | 是 | 邮箱 | | phone | String | 是 | 手机号(中国大陆11位) | | roles | List\ | 否 | 角色ID列表 | ### EmployeePageResponse | 字段 | 类型 | 说明 | |------|------|------| | content | List\ | 员工列表 | | totalPages | int | 总页数 | | totalElements | long | 总记录数 | | currentPage | int | 当前页码 | | pageSize | int | 每页数量 | | first | boolean | 是否第一页 | | last | boolean | 是否最后一页 | ### EmployeeInfo | 字段 | 类型 | 说明 | |------|------|------| | id | Long | 用户ID | | username | String | 用户名 | | nickname | String | 昵称 | | email | String | 邮箱 | | phone | String | 手机号 | | avatar | String | 头像URL | | status | Integer | 状态:0-禁用, 1-正常 | | roles | List\ | 角色列表 | | createdAt | String | 创建时间 | | updatedAt | String | 更新时间 | ### RoleInfo | 字段 | 类型 | 说明 | |------|------|------| | id | Long | 角色ID | | roleName | String | 角色名称 | | roleKey | String | 角色标识 | | roleSort | Integer | 排序号 |