Files
contract-manager/API_DOCUMENTATION.md
songqq 02afa189f8 feat(contract): 新增合同余额功能及重构文件管理
重构合同文件管理逻辑,增加错误处理和日志记录
新增ContractBalance实体、Repository和VO类
完善Voable接口文档和实现规范
更新项目架构文档和数据库设计
修复SmbFileService的连接问题
移动合同相关TabSkin类到contract包
添加合同文件重建任务的WebSocket支持
2025-11-19 00:50:16 +08:00

546 lines
9.9 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.

# 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
<dependency>
<groupId>com.ecep.contract</groupId>
<artifactId>contract-client</artifactId>
<version>1.0.0</version>
</dependency>
```
### 初始化客户端
```java
ContractClient client = new ContractClient("http://localhost:8080");
client.setSessionId(sessionId); // 设置认证session
```
### 调用API
```java
// 获取公司列表
Page<CompanyVo> 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 接口。请在使用前仔细阅读相关说明,确保正确调用接口。*