Files
xsl_node/backend/docs/后端API文档.md
T
2026-01-26 12:29:56 +08:00

17 KiB

后端API文档

文档信息

  • 文档版本: V1.0
  • 创建日期: 2026-01-26
  • 文档类型: 后端API文档

1. API概述

1.1 基础信息

  • API前缀: /api
  • API文档地址: /docs
  • 认证方式: JWT Token (Bearer Token)
  • 响应格式: JSON
  • 错误处理: 统一错误响应格式

1.2 响应格式

成功响应

{
  "code": 200,
  "message": "操作成功",
  "data": {...}
}

错误响应

{
  "code": 错误码,
  "message": "错误信息"
}

1.3 错误码

错误码 说明
400 请求参数错误
401 未授权
403 禁止访问
404 资源不存在
500 服务器内部错误
1001 用户名或密码错误
1002 用户不存在
1003 用户名已存在
1004 密码不一致
2001 项目不存在
2002 无权限操作

2. 认证API

2.1 登录

接口地址: /api/auth/login

请求方法: POST

请求参数:

参数名 类型 位置 必填 说明
username string body 用户名
password string body 密码

请求示例:

{
  "username": "admin",
  "password": "123456"
}

响应示例:

{
  "code": 200,
  "message": "登录成功",
  "data": {
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "userInfo": {
      "userId": "admin001",
      "username": "admin",
      "realName": "系统管理员",
      "department": "ADMIN",
      "role": "ADMIN"
    }
  }
}

2.2 退出登录

接口地址: /api/auth/logout

请求方法: POST

请求参数: 无

响应示例:

{
  "code": 200,
  "message": "退出成功"
}

2.3 获取用户信息

接口地址: /api/auth/userInfo

请求方法: GET

请求参数: 无

响应示例:

{
  "code": 200,
  "message": "查询成功",
  "data": {
    "userId": "admin001",
    "username": "admin",
    "realName": "系统管理员",
    "department": "ADMIN",
    "role": "ADMIN"
  }
}

3. 用户API

3.1 创建用户

接口地址: /api/user

请求方法: POST

请求参数:

参数名 类型 位置 必填 说明
username string body 用户名
password string body 密码
realName string body 真实姓名
department string body 部门
phone string body 联系电话
email string body 邮箱
role string body 角色

请求示例:

{
  "username": "test",
  "password": "123456",
  "realName": "测试用户",
  "department": "技术部",
  "phone": "13800138000",
  "email": "test@example.com",
  "role": "OTHER"
}

响应示例:

{
  "code": 200,
  "message": "创建成功"
}

3.2 更新用户

接口地址: /api/user/{id}

请求方法: PUT

请求参数:

参数名 类型 位置 必填 说明
id string path 用户ID
realName string body 真实姓名
department string body 部门
phone string body 联系电话
email string body 邮箱
role string body 角色

请求示例:

{
  "realName": "测试用户1",
  "department": "市场部",
  "role": "MARKETING"
}

响应示例:

{
  "code": 200,
  "message": "更新成功"
}

3.3 删除用户

接口地址: /api/user/{id}

请求方法: DELETE

请求参数:

参数名 类型 位置 必填 说明
id string path 用户ID

响应示例:

{
  "code": 200,
  "message": "删除成功"
}

3.4 获取用户列表

接口地址: /api/user

请求方法: GET

请求参数:

参数名 类型 位置 必填 说明
page integer query 页码,默认1
size integer query 每页数量,默认10
username string query 用户名(模糊查询)
department string query 部门
role string query 角色

响应示例:

{
  "code": 200,
  "message": "查询成功",
  "data": [
    {
      "userId": "admin001",
      "username": "admin",
      "realName": "系统管理员",
      "department": "ADMIN",
      "role": "ADMIN",
      "status": 1,
      "createTime": "2025-01-01 00:00:00",
      "lastLoginTime": "2025-01-15 10:00:00"
    }
  ],
  "total": 1
}

3.5 重置密码

接口地址: /api/user/resetPassword/{id}

请求方法: PUT

请求参数:

参数名 类型 位置 必填 说明
id string path 用户ID
password string body 新密码

请求示例:

{
  "password": "123456"
}

响应示例:

{
  "code": 200,
  "message": "密码重置成功"
}

4. 项目API

4.1 创建项目

接口地址: /api/project

请求方法: POST

请求参数:

参数名 类型 位置 必填 说明
projectName string body 项目名称
status string body 项目状态
leader string body 负责人
phone string body 联系电话
email string body 邮箱
background string body 项目背景
goal string body 项目目标
scope string body 项目范围
startDate string body 开始日期
plannedEndDate string body 预计结束日期
actualEndDate string body 实际结束日期
totalBudget number body 总预算
usedBudget number body 已使用预算
members array body 项目成员
milestones array body 项目里程碑
risks array body 项目风险
remarks string body 备注

请求示例:

{
  "projectName": "测试项目",
  "status": "NOT_STARTED",
  "leader": "张三",
  "phone": "13800138000",
  "email": "zhangsan@example.com",
  "background": "为了提升企业运营效率",
  "goal": "完成企业内部管理系统的全面数字化改造",
  "scope": "包括人力资源、财务管理、供应链管理等模块",
  "startDate": "2025-01-15",
  "plannedEndDate": "2025-06-30",
  "totalBudget": 500000,
  "usedBudget": 0,
  "members": [
    {
      "name": "张三",
      "role": "项目经理",
      "department": "市场部"
    },
    {
      "name": "李四",
      "role": "技术负责人",
      "department": "技术部"
    }
  ],
  "milestones": [
    {
      "name": "需求分析完成",
      "plannedDate": "2025-02-15",
      "status": "NOT_STARTED"
    },
    {
      "name": "系统设计完成",
      "plannedDate": "2025-03-15",
      "status": "NOT_STARTED"
    }
  ],
  "risks": [
    {
      "description": "技术难度较高,可能影响进度",
      "level": "HIGH",
      "measure": "增加技术团队人员投入"
    }
  ],
  "remarks": "项目需要与现有系统进行数据对接"
}

响应示例:

{
  "code": 200,
  "message": "创建成功",
  "data": {
    "projectId": "PRJ2025001"
  }
}

4.2 更新项目

接口地址: /api/project/{id}

请求方法: PUT

请求参数:

参数名 类型 位置 必填 说明
id string path 项目ID
projectName string body 项目名称
status string body 项目状态
leader string body 负责人
phone string body 联系电话
email string body 邮箱
background string body 项目背景
goal string body 项目目标
scope string body 项目范围
startDate string body 开始日期
plannedEndDate string body 预计结束日期
actualEndDate string body 实际结束日期
totalBudget number body 总预算
usedBudget number body 已使用预算
members array body 项目成员
milestones array body 项目里程碑
risks array body 项目风险
remarks string body 备注

请求示例:

{
  "projectName": "测试项目1",
  "status": "IN_PROGRESS",
  "usedBudget": 100000
}

响应示例:

{
  "code": 200,
  "message": "更新成功"
}

4.3 删除项目

接口地址: /api/project/{id}

请求方法: DELETE

请求参数:

参数名 类型 位置 必填 说明
id string path 项目ID

响应示例:

{
  "code": 200,
  "message": "删除成功"
}

4.4 获取项目列表

接口地址: /api/project

请求方法: GET

请求参数:

参数名 类型 位置 必填 说明
page integer query 页码,默认1
size integer query 每页数量,默认10
projectName string query 项目名称(模糊查询)
status string query 项目状态
leader string query 负责人(模糊查询)

响应示例:

{
  "code": 200,
  "message": "查询成功",
  "data": [
    {
      "projectId": "PRJ2025001",
      "projectNo": "PRJ2025001",
      "projectName": "测试项目",
      "status": "IN_PROGRESS",
      "leader": "张三",
      "createTime": "2025-01-15 00:00:00",
      "updateTime": "2025-01-20 10:00:00"
    }
  ],
  "total": 1
}

4.5 获取项目详情

接口地址: /api/project/{id}

请求方法: GET

请求参数:

参数名 类型 位置 必填 说明
id string path 项目ID

响应示例:

{
  "code": 200,
  "message": "查询成功",
  "data": {
    "projectId": "PRJ2025001",
    "projectNo": "PRJ2025001",
    "projectName": "测试项目",
    "status": "IN_PROGRESS",
    "leader": "张三",
    "phone": "13800138000",
    "email": "zhangsan@example.com",
    "background": "为了提升企业运营效率",
    "goal": "完成企业内部管理系统的全面数字化改造",
    "scope": "包括人力资源、财务管理、供应链管理等模块",
    "startDate": "2025-01-15",
    "plannedEndDate": "2025-06-30",
    "actualEndDate": null,
    "totalBudget": 500000,
    "usedBudget": 100000,
    "remainingBudget": 400000,
    "members": [
      {
        "name": "张三",
        "role": "项目经理",
        "department": "市场部"
      },
      {
        "name": "李四",
        "role": "技术负责人",
        "department": "技术部"
      }
    ],
    "milestones": [
      {
        "name": "需求分析完成",
        "plannedDate": "2025-02-15",
        "actualDate": null,
        "status": "NOT_STARTED"
      },
      {
        "name": "系统设计完成",
        "plannedDate": "2025-03-15",
        "actualDate": null,
        "status": "NOT_STARTED"
      }
    ],
    "risks": [
      {
        "description": "技术难度较高,可能影响进度",
        "level": "HIGH",
        "measure": "增加技术团队人员投入"
      }
    ],
    "remarks": "项目需要与现有系统进行数据对接",
    "creator": "marketing",
    "createTime": "2025-01-15 00:00:00",
    "lastModifier": "admin",
    "updateTime": "2025-01-20 10:00:00"
  }
}

5. 历史记录API

5.1 获取项目历史

接口地址: /api/history/{projectId}

请求方法: GET

请求参数:

参数名 类型 位置 必填 说明
projectId string path 项目ID
page integer query 页码,默认1
size integer query 每页数量,默认10
operator string query 操作人(模糊查询)
startDate string query 开始日期
endDate string query 结束日期

响应示例:

{
  "code": 200,
  "message": "查询成功",
  "data": [
    {
      "historyId": "HIS2025001",
      "projectId": "PRJ2025001",
      "projectNo": "PRJ2025001",
      "operationType": "UPDATE",
      "operator": "admin",
      "operationTime": "2025-01-20 10:00:00",
      "fieldName": "status",
      "oldValue": "NOT_STARTED",
      "newValue": "IN_PROGRESS"
    }
  ],
  "total": 1
}

6. 统计API

6.1 筛选项目

接口地址: /api/statistics/filter

请求方法: POST

请求参数:

参数名 类型 位置 必填 说明
projectNo string body 项目编号
projectName string body 项目名称(模糊查询)
status string body 项目状态
leader string body 负责人(模糊查询)
creator string body 创建人(模糊查询)
createStartDate string body 创建开始日期
createEndDate string body 创建结束日期
updateStartDate string body 更新开始日期
updateEndDate string body 更新结束日期
page integer body 页码,默认1
size integer body 每页数量,默认10

请求示例:

{
  "projectName": "测试",
  "status": "IN_PROGRESS",
  "createStartDate": "2025-01-01",
  "createEndDate": "2025-12-31"
}

响应示例:

{
  "code": 200,
  "message": "查询成功",
  "data": [
    {
      "projectId": "PRJ2025001",
      "projectNo": "PRJ2025001",
      "projectName": "测试项目",
      "status": "IN_PROGRESS",
      "leader": "张三",
      "createTime": "2025-01-15 00:00:00",
      "updateTime": "2025-01-20 10:00:00"
    }
  ],
  "total": 1
}

6.2 统计项目

接口地址: /api/statistics/statistics

请求方法: POST

请求参数:

参数名 类型 位置 必填 说明
dimension string body 统计维度:status, department, leader, month
startDate string body 开始日期
endDate string body 结束日期

请求示例:

{
  "dimension": "status",
  "startDate": "2025-01-01",
  "endDate": "2025-12-31"
}

响应示例:

{
  "code": 200,
  "message": "统计成功",
  "data": {
    "dimension": "status",
    "total": 10,
    "details": [
      {
        "name": "NOT_STARTED",
        "value": 2
      },
      {
        "name": "IN_PROGRESS",
        "value": 5
      },
      {
        "name": "COMPLETED",
        "value": 2
      },
      {
        "name": "PAUSED",
        "value": 1
      }
    ]
  }
}

7. 系统API

7.1 获取操作日志

接口地址: /api/system/log

请求方法: GET

请求参数:

参数名 类型 位置 必填 说明
page integer query 页码,默认1
size integer query 每页数量,默认10
username string query 用户名(模糊查询)
operation string query 操作内容(模糊查询)
startDate string query 开始日期
endDate string query 结束日期

响应示例:

{
  "code": 200,
  "message": "查询成功",
  "data": [
    {
      "logId": "LOG2025001",
      "username": "admin",
      "operation": "登录系统",
      "ipAddress": "127.0.0.1",
      "userAgent": "Mozilla/5.0...",
      "operationTime": "2025-01-20 10:00:00"
    }
  ],
  "total": 1
}

8. 认证与授权

8.1 认证流程

  1. 客户端发送登录请求到 /api/auth/login
  2. 服务端验证用户名和密码
  3. 验证成功后生成 JWT Token
  4. 客户端保存 Token 到 localStorage
  5. 后续请求在请求头中携带 Token: Authorization: Bearer <token>
  6. 服务端验证 Token 的有效性
  7. 验证通过后处理请求

8.2 授权流程

  1. 服务端从 Token 中解析出用户信息
  2. 根据用户角色和权限判断是否有权限访问请求的资源
  3. 有权限则继续处理请求,无权限则返回 403 错误

8.3 角色权限

角色 权限
ADMIN 所有权限
MARKETING 创建项目、编辑项目、查看项目、查看历史记录
OTHER 编辑项目、查看项目、查看历史记录

9. 附录

9.1 数据字典

项目状态

说明
NOT_STARTED 未开始
IN_PROGRESS 进行中
COMPLETED 已完成
PAUSED 已暂停
CANCELLED 已取消

角色

说明
ADMIN 管理员
MARKETING 市场部
OTHER 其他部门

风险等级

说明
HIGH
MEDIUM
LOW

操作类型

说明
CREATE 创建
UPDATE 更新
DELETE 删除

9.2 开发规范

  • API设计: 遵循 RESTful API 设计规范
  • 参数验证: 使用 Pydantic 进行参数验证
  • 错误处理: 使用统一的错误处理机制
  • 日志记录: 记录重要操作的日志
  • 测试: 为每个 API 编写单元测试

9.3 变更记录

版本 日期 修改人 修改内容
V1.0 2026-01-26 - 初始版本创建