# Contract-Manager API 接口文档
## 📖 概览
Contract-Manager 系统提供了完整的 RESTful API 接口,用于合同管理系统的各项业务操作。本文档详细描述了所有可用的 API 接口、请求参数、响应格式和错误处理。
### API 基础信息
- **基础URL**: `http://localhost:8080`
- **协议**: HTTP/HTTPS
- **数据格式**: JSON
- **认证方式**: Spring Security Session + JWT
- **字符编码**: UTF-8
### 通用响应格式
```json
{
"success": true|false,
"data": {...},
"message": "提示信息",
"error": "错误信息"
}
```
### 状态码说明
- `200`: 成功
- `400`: 请求参数错误
- `401`: 未认证
- `403`: 权限不足
- `404`: 资源不存在
- `500`: 服务器内部错误
---
## 🔐 认证接口
### 用户登录 - POST /api/login
用户登录接口,支持用户名密码登录和客户端认证两种方式。
**请求参数**:
```json
{
"type": "client|web", // 登录类型:client=客户端认证,web=用户名密码登录
"username": "用户名", // 用户名
"password": "密码", // 密码(web模式需要)
"sign": { // 客户端认证信息(client模式需要)
"MAC地址": "IP地址"
}
}
```
**响应数据**:
```json
{
"success": true,
"employeeId": 1,
"sessionId": "session_id",
"username": "admin",
"roles": ["ROLE_ADMIN"],
"message": "登录成功"
}
```
**错误响应**:
```json
{
"success": false,
"error": "用户名或密码错误"
}
```
---
## 👥 用户管理接口
### 员工信息 - GET /employee/findById
根据ID获取员工信息。
**请求参数**:
- `id` (Integer): 员工ID
**响应数据**:
```json
{
"success": true,
"data": {
"id": 1,
"name": "张三",
"account": "admin",
"email": "admin@example.com"
}
}
```
### 员工列表 - GET /employee/list
分页获取员工列表。
**请求参数**:
- `page` (Integer, 默认0): 页码
- `size` (Integer, 默认10): 每页大小
- `searchText` (String, 可选): 搜索关键词
**响应数据**:
```json
{
"content": [
{
"id": 1,
"name": "张三",
"account": "admin"
}
],
"totalElements": 10,
"totalPages": 1,
"size": 10,
"number": 0
}
```
### 保存员工信息 - POST /employee/save
保存或更新员工信息。
**请求参数**:
```json
{
"id": 1,
"name": "张三",
"account": "admin",
"email": "admin@example.com"
}
```
### 删除员工 - GET /employee/delete
删除指定ID的员工。
**请求参数**:
- `id` (Integer): 员工ID
### 获取当前用户信息 - GET /employee/currentUser
获取当前登录用户的信息。
**响应数据**:
```json
{
"success": true,
"employeeId": 1,
"sessionId": "session_id"
}
```
---
## 🏢 公司管理接口
### 公司信息 - GET /company/findById
根据ID获取公司信息。
**请求参数**:
- `id` (Integer): 公司ID
**响应数据**:
```json
{
"success": true,
"data": {
"id": 1,
"name": "示例公司",
"address": "北京市朝阳区",
"phone": "010-12345678"
}
}
```
### 公司列表 - GET /company/list
分页获取公司列表。
**请求参数**:
- `page` (Integer, 默认0): 页码
- `size` (Integer, 默认10): 每页大小
**响应数据**:
```json
{
"content": [
{
"id": 1,
"name": "示例公司",
"address": "北京市朝阳区"
}
],
"totalElements": 10,
"totalPages": 1,
"size": 10,
"number": 0
}
```
### 保存公司信息 - GET /company/save
保存或更新公司信息。
**请求参数**:
```json
{
"id": 1,
"name": "示例公司",
"address": "北京市朝阳区",
"phone": "010-12345678"
}
```
### 删除公司 - GET /company/delete
删除指定ID的公司。
**请求参数**:
- `id` (Integer): 公司ID
---
## 🏦 银行管理接口
### 银行信息 - GET /bank/findById
根据ID获取银行信息。
**请求参数**:
- `id` (Integer): 银行ID
### 银行列表 - GET /bank/list
分页获取银行列表。
**请求参数**:
- `page` (Integer, 默认0): 页码
- `size` (Integer, 默认10): 每页大小
### 保存银行信息 - POST /bank/save
保存或更新银行信息。
**请求参数**:
```json
{
"id": 1,
"name": "中国银行",
"code": "BOC"
}
```
### 删除银行 - GET /bank/delete
删除指定ID的银行。
**请求参数**:
- `id` (Integer): 银行ID
---
## 🔑 角色管理接口
### 角色信息 - GET /employee/role/findById
根据ID获取角色信息。
**请求参数**:
- `id` (Integer): 角色ID
### 角色列表 - GET /employee/role/list
分页获取角色列表,非系统管理员无法查看系统管理员角色。
**请求参数**:
- `page` (Integer, 默认0): 页码
- `size` (Integer, 默认10): 每页大小
- `searchText` (String, 可选): 搜索关键词
### 保存角色信息 - GET /employee/role/save
保存角色信息,**仅系统管理员可操作**。
### 删除角色 - GET /employee/role/delete
删除指定ID的角色,**仅系统管理员可操作**。
**请求参数**:
- `id` (Integer): 角色ID
**注意**: 不能删除系统管理员角色。
### 获取角色权限 - GET /employee/role/getFunctionsByRoleId
根据角色ID获取该角色的权限功能列表。
**请求参数**:
- `roleId` (Integer): 角色ID
---
## ☁️ 云服务接口
### 天眼查服务 - /cloudTyc
天眼查第三方数据服务接口。
#### 获取天眼查信息 - GET /cloudTyc/findById
#### 天眼查列表 - GET /cloudTyc/list
#### 保存天眼查信息 - GET /cloudTyc/save
#### 删除天眼查信息 - GET /cloudTyc/delete
### 企查查服务 - /cloudRk
企查查第三方数据服务接口。
#### 获取企查查信息 - GET /cloudRk/findById
#### 企查查列表 - GET /cloudRk/list
#### 保存企查查信息 - GET /cloudRk/save
#### 删除企查查信息 - GET /cloudRk/delete
### 用友云服务 - /cloudYu
用友云第三方数据服务接口。
#### 获取用友云信息 - GET /cloudYu/findById
#### 用友云列表 - GET /cloudYu/list
#### 保存用友云信息 - GET /cloudYu/save
#### 删除用友云信息 - GET /cloudYu/delete
---
## 📊 其他接口
### 系统首页 - GET /index
获取系统首页信息。
**响应数据**:
```json
{
"success": true,
"data": {
"systemInfo": "Contract Manager System",
"version": "1.0.0"
}
}
```
### WebSocket 连接 - GET /websocket
建立WebSocket连接,用于实时通信。
**连接地址**: `ws://localhost:8080/websocket`
---
## 🔒 权限说明
### 角色权限
- **ROLE_ADMIN**: 系统管理员,拥有所有权限
- **普通用户**: 只能查看和操作非系统管理员级别的数据
### 权限控制
- 删除角色操作仅限系统管理员
- 系统管理员角色不可删除
- 非系统管理员无法查看系统管理员角色信息
---
## 🚨 错误处理
### 常见错误码
#### 400 - 请求参数错误
```json
{
"success": false,
"error": "请求参数不正确"
}
```
#### 401 - 未认证
```json
{
"success": false,
"error": "请先登录"
}
```
#### 403 - 权限不足
```json
{
"success": false,
"error": "无权限执行此操作"
}
```
#### 404 - 资源不存在
```json
{
"success": false,
"error": "资源不存在"
}
```
### 认证错误
- 客户端认证模式下,需要提供正确的MAC地址和IP地址映射
- 用户名密码模式下,需要提供正确的用户名和密码
### 业务错误
- 系统管理员角色不可删除
- 用户未绑定认证信息无法登录
- 认证信息错误登录失败
---
## 📝 使用示例
### JavaScript/Ajax 调用示例
```javascript
// 用户登录
$.ajax({
url: '/api/login',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({
type: 'web',
username: 'admin',
password: 'password123'
}),
success: function(response) {
if (response.success) {
console.log('登录成功', response);
// 保存sessionId等认证信息
sessionStorage.setItem('sessionId', response.sessionId);
}
}
});
// 获取公司列表
$.ajax({
url: '/company/list',
type: 'GET',
data: {
page: 0,
size: 10
},
success: function(response) {
console.log('公司列表', response);
}
});
// 保存公司信息
$.ajax({
url: '/company/save',
type: 'GET',
data: {
id: 1,
name: '新公司名称',
address: '新地址'
},
success: function(response) {
console.log('保存成功', response);
}
});
```
### curl 调用示例
```bash
# 用户登录
curl -X POST http://localhost:8080/api/login \
-H "Content-Type: application/json" \
-d '{
"type": "web",
"username": "admin",
"password": "password123"
}'
# 获取公司列表
curl "http://localhost:8080/company/list?page=0&size=10"
# 获取员工信息
curl "http://localhost:8080/employee/findById?id=1"
```
---
## 🔧 SDK 使用指南
### 添加依赖
```xml
com.ecep.contract
contract-client
1.0.0
```
### 初始化客户端
```java
ContractClient client = new ContractClient("http://localhost:8080");
client.setSessionId(sessionId); // 设置认证session
```
### 调用API
```java
// 获取公司列表
Page companies = client.company().list(0, 10);
// 保存公司信息
CompanyVo company = new CompanyVo();
company.setName("新公司");
CompanyVo saved = client.company().save(company);
```
---
## 📈 版本历史
| 版本 | 日期 | 变更说明 |
|------|------|----------|
| v1.0.0 | 2024-01-01 | 初始版本,包含基础CRUD操作 |
| v1.1.0 | 2024-02-01 | 新增角色权限管理接口 |
| v1.2.0 | 2024-03-01 | 新增云服务集成接口 |
---
## 📞 技术支持
如有技术问题,请联系:
- **技术支持邮箱**: support@contractmanager.com
- **开发团队**: Contract Manager Development Team
- **文档版本**: v1.2.0
- **最后更新**: 2024-03-01
---
*本文档详细描述了 Contract-Manager 系统的所有 API 接口。请在使用前仔细阅读相关说明,确保正确调用接口。*