重构合同文件管理逻辑,增加错误处理和日志记录 新增ContractBalance实体、Repository和VO类 完善Voable接口文档和实现规范 更新项目架构文档和数据库设计 修复SmbFileService的连接问题 移动合同相关TabSkin类到contract包 添加合同文件重建任务的WebSocket支持
546 lines
9.9 KiB
Markdown
546 lines
9.9 KiB
Markdown
# 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 接口。请在使用前仔细阅读相关说明,确保正确调用接口。* |