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

9.9 KiB
Raw Blame History

Contract-Manager API 接口文档

📖 概览

Contract-Manager 系统提供了完整的 RESTful API 接口,用于合同管理系统的各项业务操作。本文档详细描述了所有可用的 API 接口、请求参数、响应格式和错误处理。

API 基础信息

  • 基础URL: http://localhost:8080
  • 协议: HTTP/HTTPS
  • 数据格式: JSON
  • 认证方式: Spring Security Session + JWT
  • 字符编码: UTF-8

通用响应格式

{
  "success": true|false,
  "data": {...},
  "message": "提示信息",
  "error": "错误信息"
}

状态码说明

  • 200: 成功
  • 400: 请求参数错误
  • 401: 未认证
  • 403: 权限不足
  • 404: 资源不存在
  • 500: 服务器内部错误

🔐 认证接口

用户登录 - POST /api/login

用户登录接口,支持用户名密码登录和客户端认证两种方式。

请求参数:

{
  "type": "client|web",           // 登录类型client=客户端认证web=用户名密码登录
  "username": "用户名",            // 用户名
  "password": "密码",              // 密码web模式需要
  "sign": {                       // 客户端认证信息client模式需要
    "MAC地址": "IP地址"
  }
}

响应数据:

{
  "success": true,
  "employeeId": 1,
  "sessionId": "session_id",
  "username": "admin",
  "roles": ["ROLE_ADMIN"],
  "message": "登录成功"
}

错误响应:

{
  "success": false,
  "error": "用户名或密码错误"
}

👥 用户管理接口

员工信息 - GET /employee/findById

根据ID获取员工信息。

请求参数:

  • id (Integer): 员工ID

响应数据:

{
  "success": true,
  "data": {
    "id": 1,
    "name": "张三",
    "account": "admin",
    "email": "admin@example.com"
  }
}

员工列表 - GET /employee/list

分页获取员工列表。

请求参数:

  • page (Integer, 默认0): 页码
  • size (Integer, 默认10): 每页大小
  • searchText (String, 可选): 搜索关键词

响应数据:

{
  "content": [
    {
      "id": 1,
      "name": "张三",
      "account": "admin"
    }
  ],
  "totalElements": 10,
  "totalPages": 1,
  "size": 10,
  "number": 0
}

保存员工信息 - POST /employee/save

保存或更新员工信息。

请求参数:

{
  "id": 1,
  "name": "张三",
  "account": "admin",
  "email": "admin@example.com"
}

删除员工 - GET /employee/delete

删除指定ID的员工。

请求参数:

  • id (Integer): 员工ID

获取当前用户信息 - GET /employee/currentUser

获取当前登录用户的信息。

响应数据:

{
  "success": true,
  "employeeId": 1,
  "sessionId": "session_id"
}

🏢 公司管理接口

公司信息 - GET /company/findById

根据ID获取公司信息。

请求参数:

  • id (Integer): 公司ID

响应数据:

{
  "success": true,
  "data": {
    "id": 1,
    "name": "示例公司",
    "address": "北京市朝阳区",
    "phone": "010-12345678"
  }
}

公司列表 - GET /company/list

分页获取公司列表。

请求参数:

  • page (Integer, 默认0): 页码
  • size (Integer, 默认10): 每页大小

响应数据:

{
  "content": [
    {
      "id": 1,
      "name": "示例公司",
      "address": "北京市朝阳区"
    }
  ],
  "totalElements": 10,
  "totalPages": 1,
  "size": 10,
  "number": 0
}

保存公司信息 - GET /company/save

保存或更新公司信息。

请求参数:

{
  "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

保存或更新银行信息。

请求参数:

{
  "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

获取系统首页信息。

响应数据:

{
  "success": true,
  "data": {
    "systemInfo": "Contract Manager System",
    "version": "1.0.0"
  }
}

WebSocket 连接 - GET /websocket

建立WebSocket连接用于实时通信。

连接地址: ws://localhost:8080/websocket


🔒 权限说明

角色权限

  • ROLE_ADMIN: 系统管理员,拥有所有权限
  • 普通用户: 只能查看和操作非系统管理员级别的数据

权限控制

  • 删除角色操作仅限系统管理员
  • 系统管理员角色不可删除
  • 非系统管理员无法查看系统管理员角色信息

🚨 错误处理

常见错误码

400 - 请求参数错误

{
  "success": false,
  "error": "请求参数不正确"
}

401 - 未认证

{
  "success": false,
  "error": "请先登录"
}

403 - 权限不足

{
  "success": false,
  "error": "无权限执行此操作"
}

404 - 资源不存在

{
  "success": false,
  "error": "资源不存在"
}

认证错误

  • 客户端认证模式下需要提供正确的MAC地址和IP地址映射
  • 用户名密码模式下,需要提供正确的用户名和密码

业务错误

  • 系统管理员角色不可删除
  • 用户未绑定认证信息无法登录
  • 认证信息错误登录失败

📝 使用示例

JavaScript/Ajax 调用示例

// 用户登录
$.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 调用示例

# 用户登录
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 使用指南

添加依赖

<dependency>
    <groupId>com.ecep.contract</groupId>
    <artifactId>contract-client</artifactId>
    <version>1.0.0</version>
</dependency>

初始化客户端

ContractClient client = new ContractClient("http://localhost:8080");
client.setSessionId(sessionId); // 设置认证session

调用API

// 获取公司列表
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 接口。请在使用前仔细阅读相关说明,确保正确调用接口。