完善养殖端小程序
This commit is contained in:
498
backend/swagger-integrated.js
Normal file
498
backend/swagger-integrated.js
Normal file
@@ -0,0 +1,498 @@
|
||||
/**
|
||||
* 宁夏智慧养殖监管平台 - 完整API文档整合配置
|
||||
* @file swagger-integrated.js
|
||||
* @description 整合所有模块的Swagger API文档
|
||||
*/
|
||||
|
||||
const swaggerJSDoc = require('swagger-jsdoc');
|
||||
|
||||
// 导入各模块的Swagger文档
|
||||
const { usersPaths, usersSchemas } = require('./swagger-users');
|
||||
const { authPaths, authSchemas } = require('./swagger-auth');
|
||||
const { farmsPaths, farmsSchemas } = require('./swagger-farms');
|
||||
const { animalsPaths, animalsSchemas } = require('./swagger-animals');
|
||||
const { devicesPaths, devicesSchemas } = require('./swagger-devices');
|
||||
const { alertsPaths, alertSchemas } = require('./swagger-alerts');
|
||||
const { smartAlertsPaths, smartAlertsSchemas } = require('./swagger-smart-alerts');
|
||||
const { statsPaths, statsSchemas } = require('./swagger-stats');
|
||||
const { reportsPaths, reportsSchemas } = require('./swagger-reports');
|
||||
const { systemPaths, systemSchemas } = require('./swagger-system');
|
||||
|
||||
const options = {
|
||||
definition: {
|
||||
openapi: '3.0.0',
|
||||
info: {
|
||||
title: '宁夏智慧养殖监管平台 API',
|
||||
version: '2.0.0',
|
||||
description: `
|
||||
# 宁夏智慧养殖监管平台API文档
|
||||
|
||||
## 平台概述
|
||||
宁夏智慧养殖监管平台是一个集成了物联网、大数据、人工智能等技术的现代化养殖管理系统。
|
||||
|
||||
## 功能模块
|
||||
|
||||
### 🔐 用户认证与权限
|
||||
- **用户认证**: 登录、注册、JWT令牌管理
|
||||
- **用户管理**: 用户信息管理、角色权限分配
|
||||
- **权限控制**: 基于角色的访问控制(RBAC)
|
||||
|
||||
### 🏭 养殖场管理
|
||||
- **养殖场信息**: 养殖场基本信息管理
|
||||
- **圈舍管理**: 圈舍分配、容量管理
|
||||
- **养殖场统计**: 养殖场数据统计分析
|
||||
|
||||
### 🐄 动物管理
|
||||
- **动物档案**: 牲畜基本信息、健康档案
|
||||
- **批次管理**: 动物批次跟踪、转移记录
|
||||
- **繁殖管理**: 配种、产仔记录管理
|
||||
- **健康监控**: 疫苗接种、疾病记录
|
||||
|
||||
### 📱 设备管理
|
||||
- **IoT设备**: 智能耳标、项圈设备管理
|
||||
- **设备绑定**: 设备与动物绑定关系
|
||||
- **设备监控**: 设备状态、电量、信号监控
|
||||
- **维护记录**: 设备维护、故障记录
|
||||
|
||||
### ⚠️ 预警系统
|
||||
- **智能预警**: 健康、环境、设备预警
|
||||
- **预警处理**: 预警状态管理、处理记录
|
||||
- **预警统计**: 预警数据分析、趋势分析
|
||||
|
||||
### 🗺️ 地理信息
|
||||
- **电子围栏**: 围栏设置、越界预警
|
||||
- **位置追踪**: 动物位置实时监控
|
||||
- **地图服务**: 地图展示、轨迹回放
|
||||
|
||||
### 📊 数据统计
|
||||
- **实时统计**: 养殖场、动物、设备实时数据
|
||||
- **报表生成**: 各类统计报表、数据导出
|
||||
- **数据分析**: 趋势分析、预测分析
|
||||
|
||||
### ⚙️ 系统管理
|
||||
- **系统配置**: 系统参数配置
|
||||
- **菜单管理**: 系统菜单权限配置
|
||||
- **操作日志**: 系统操作记录审计
|
||||
- **数据备份**: 数据备份与恢复
|
||||
|
||||
## 认证方式
|
||||
|
||||
本API使用JWT(JSON Web Token)进行身份认证。
|
||||
|
||||
### 获取Token
|
||||
1. 调用登录接口 \`POST /auth/login\` 获取访问令牌
|
||||
2. 在后续请求的Header中添加: \`Authorization: Bearer <token>\`
|
||||
|
||||
### Token格式
|
||||
\`\`\`
|
||||
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
|
||||
\`\`\`
|
||||
|
||||
## 响应格式
|
||||
|
||||
### 成功响应
|
||||
\`\`\`json
|
||||
{
|
||||
"success": true,
|
||||
"message": "操作成功",
|
||||
"data": { ... },
|
||||
"total": 100,
|
||||
"pagination": {
|
||||
"page": 1,
|
||||
"limit": 10,
|
||||
"total": 100,
|
||||
"totalPages": 10
|
||||
}
|
||||
}
|
||||
\`\`\`
|
||||
|
||||
### 错误响应
|
||||
\`\`\`json
|
||||
{
|
||||
"success": false,
|
||||
"message": "错误描述",
|
||||
"error": "详细错误信息"
|
||||
}
|
||||
\`\`\`
|
||||
|
||||
## 状态码说明
|
||||
|
||||
| 状态码 | 说明 |
|
||||
|--------|------|
|
||||
| 200 | 请求成功 |
|
||||
| 201 | 创建成功 |
|
||||
| 400 | 请求参数错误 |
|
||||
| 401 | 未授权访问 |
|
||||
| 403 | 权限不足 |
|
||||
| 404 | 资源不存在 |
|
||||
| 500 | 服务器内部错误 |
|
||||
|
||||
## 分页参数
|
||||
|
||||
大部分列表接口支持分页查询:
|
||||
- \`page\`: 页码,从1开始
|
||||
- \`limit\`: 每页数量,默认10,最大100
|
||||
- \`search\`: 搜索关键词
|
||||
|
||||
## 联系方式
|
||||
|
||||
- 开发团队: dev@nxxm.com
|
||||
- 技术支持: support@nxxm.com
|
||||
- 项目地址: https://github.com/nxxm/breeding-platform
|
||||
`,
|
||||
contact: {
|
||||
name: '宁夏智慧养殖平台开发团队',
|
||||
email: 'dev@nxxm.com',
|
||||
url: 'https://www.nxxm.com'
|
||||
},
|
||||
license: {
|
||||
name: 'MIT License',
|
||||
url: 'https://opensource.org/licenses/MIT'
|
||||
},
|
||||
termsOfService: 'https://www.nxxm.com/terms'
|
||||
},
|
||||
servers: [
|
||||
{
|
||||
url: 'http://localhost:5350/api',
|
||||
description: '本地开发环境'
|
||||
},
|
||||
{
|
||||
url: 'https://dev-api.nxxm.com/api',
|
||||
description: '开发测试环境'
|
||||
},
|
||||
{
|
||||
url: 'https://staging-api.nxxm.com/api',
|
||||
description: '预发布环境'
|
||||
},
|
||||
{
|
||||
url: 'https://api.nxxm.com/api',
|
||||
description: '生产环境'
|
||||
}
|
||||
],
|
||||
tags: [
|
||||
{
|
||||
name: '用户认证',
|
||||
description: '用户登录、注册、JWT令牌管理',
|
||||
externalDocs: {
|
||||
description: '认证文档',
|
||||
url: 'https://docs.nxxm.com/auth'
|
||||
}
|
||||
},
|
||||
{
|
||||
name: '用户管理',
|
||||
description: '用户信息管理、角色权限分配'
|
||||
},
|
||||
{
|
||||
name: '养殖场管理',
|
||||
description: '养殖场信息的增删改查、统计分析'
|
||||
},
|
||||
{
|
||||
name: '动物管理',
|
||||
description: '牲畜信息管理、批次管理、健康档案'
|
||||
},
|
||||
{
|
||||
name: '圈舍管理',
|
||||
description: '圈舍信息管理、牲畜圈舍分配'
|
||||
},
|
||||
{
|
||||
name: '设备管理',
|
||||
description: 'IoT设备管理、设备绑定、状态监控'
|
||||
},
|
||||
{
|
||||
name: '智能设备',
|
||||
description: '智能耳标、智能项圈等设备管理'
|
||||
},
|
||||
{
|
||||
name: '预警管理',
|
||||
description: '系统预警、告警处理、预警统计'
|
||||
},
|
||||
{
|
||||
name: '智能预警',
|
||||
description: '智能耳标、项圈预警系统'
|
||||
},
|
||||
{
|
||||
name: '电子围栏',
|
||||
description: '电子围栏设置、围栏点管理'
|
||||
},
|
||||
{
|
||||
name: '地图服务',
|
||||
description: '地图相关功能、位置服务'
|
||||
},
|
||||
{
|
||||
name: '数据统计',
|
||||
description: '各类统计数据、实时监控'
|
||||
},
|
||||
{
|
||||
name: '报表管理',
|
||||
description: '报表生成、数据导出功能'
|
||||
},
|
||||
{
|
||||
name: '系统管理',
|
||||
description: '系统配置、菜单管理、权限配置'
|
||||
},
|
||||
{
|
||||
name: '备份管理',
|
||||
description: '数据备份、恢复功能'
|
||||
},
|
||||
{
|
||||
name: '操作日志',
|
||||
description: '系统操作日志记录和查询'
|
||||
},
|
||||
{
|
||||
name: '产品管理',
|
||||
description: '产品信息管理'
|
||||
},
|
||||
{
|
||||
name: '订单管理',
|
||||
description: '订单处理、订单查询'
|
||||
}
|
||||
],
|
||||
components: {
|
||||
securitySchemes: {
|
||||
bearerAuth: {
|
||||
type: 'http',
|
||||
scheme: 'bearer',
|
||||
bearerFormat: 'JWT',
|
||||
description: 'JWT认证令牌,格式:Bearer <token>'
|
||||
},
|
||||
apiKey: {
|
||||
type: 'apiKey',
|
||||
in: 'header',
|
||||
name: 'X-API-Key',
|
||||
description: 'API密钥认证(用于第三方集成)'
|
||||
}
|
||||
},
|
||||
schemas: {
|
||||
// 通用响应模型
|
||||
ApiResponse: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
success: {
|
||||
type: 'boolean',
|
||||
description: '请求是否成功',
|
||||
example: true
|
||||
},
|
||||
message: {
|
||||
type: 'string',
|
||||
description: '响应消息',
|
||||
example: '操作成功'
|
||||
},
|
||||
data: {
|
||||
description: '响应数据,具体结构根据接口而定'
|
||||
},
|
||||
total: {
|
||||
type: 'integer',
|
||||
description: '总记录数(分页时使用)',
|
||||
example: 100
|
||||
},
|
||||
pagination: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
page: { type: 'integer', description: '当前页码', example: 1 },
|
||||
limit: { type: 'integer', description: '每页记录数', example: 10 },
|
||||
total: { type: 'integer', description: '总记录数', example: 100 },
|
||||
totalPages: { type: 'integer', description: '总页数', example: 10 }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
ErrorResponse: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
success: {
|
||||
type: 'boolean',
|
||||
example: false,
|
||||
description: '请求是否成功'
|
||||
},
|
||||
message: {
|
||||
type: 'string',
|
||||
description: '错误消息',
|
||||
example: '请求失败'
|
||||
},
|
||||
error: {
|
||||
type: 'string',
|
||||
description: '详细错误信息',
|
||||
example: '参数验证失败'
|
||||
},
|
||||
code: {
|
||||
type: 'string',
|
||||
description: '错误代码',
|
||||
example: 'VALIDATION_ERROR'
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
PaginationQuery: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
page: {
|
||||
type: 'integer',
|
||||
minimum: 1,
|
||||
default: 1,
|
||||
description: '页码,从1开始'
|
||||
},
|
||||
limit: {
|
||||
type: 'integer',
|
||||
minimum: 1,
|
||||
maximum: 100,
|
||||
default: 10,
|
||||
description: '每页记录数,最大100'
|
||||
},
|
||||
search: {
|
||||
type: 'string',
|
||||
description: '搜索关键词'
|
||||
},
|
||||
sortBy: {
|
||||
type: 'string',
|
||||
description: '排序字段'
|
||||
},
|
||||
sortOrder: {
|
||||
type: 'string',
|
||||
enum: ['asc', 'desc'],
|
||||
default: 'desc',
|
||||
description: '排序方向'
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// 整合各模块的数据模型
|
||||
...usersSchemas,
|
||||
...authSchemas,
|
||||
...farmsSchemas,
|
||||
...animalsSchemas,
|
||||
...devicesSchemas,
|
||||
...alertSchemas,
|
||||
...smartAlertsSchemas,
|
||||
...statsSchemas,
|
||||
...reportsSchemas,
|
||||
...systemSchemas
|
||||
},
|
||||
|
||||
parameters: {
|
||||
PageParam: {
|
||||
name: 'page',
|
||||
in: 'query',
|
||||
schema: { type: 'integer', minimum: 1, default: 1 },
|
||||
description: '页码'
|
||||
},
|
||||
LimitParam: {
|
||||
name: 'limit',
|
||||
in: 'query',
|
||||
schema: { type: 'integer', minimum: 1, maximum: 100, default: 10 },
|
||||
description: '每页数量'
|
||||
},
|
||||
SearchParam: {
|
||||
name: 'search',
|
||||
in: 'query',
|
||||
schema: { type: 'string' },
|
||||
description: '搜索关键词'
|
||||
},
|
||||
IdParam: {
|
||||
name: 'id',
|
||||
in: 'path',
|
||||
required: true,
|
||||
schema: { type: 'integer' },
|
||||
description: '资源ID'
|
||||
}
|
||||
},
|
||||
|
||||
responses: {
|
||||
Success: {
|
||||
description: '操作成功',
|
||||
content: {
|
||||
'application/json': {
|
||||
schema: { $ref: '#/components/schemas/ApiResponse' }
|
||||
}
|
||||
}
|
||||
},
|
||||
Created: {
|
||||
description: '创建成功',
|
||||
content: {
|
||||
'application/json': {
|
||||
schema: { $ref: '#/components/schemas/ApiResponse' }
|
||||
}
|
||||
}
|
||||
},
|
||||
BadRequest: {
|
||||
description: '请求参数错误',
|
||||
content: {
|
||||
'application/json': {
|
||||
schema: { $ref: '#/components/schemas/ErrorResponse' }
|
||||
}
|
||||
}
|
||||
},
|
||||
Unauthorized: {
|
||||
description: '未授权访问',
|
||||
content: {
|
||||
'application/json': {
|
||||
schema: { $ref: '#/components/schemas/ErrorResponse' }
|
||||
}
|
||||
}
|
||||
},
|
||||
Forbidden: {
|
||||
description: '权限不足',
|
||||
content: {
|
||||
'application/json': {
|
||||
schema: { $ref: '#/components/schemas/ErrorResponse' }
|
||||
}
|
||||
}
|
||||
},
|
||||
NotFound: {
|
||||
description: '资源不存在',
|
||||
content: {
|
||||
'application/json': {
|
||||
schema: { $ref: '#/components/schemas/ErrorResponse' }
|
||||
}
|
||||
}
|
||||
},
|
||||
InternalError: {
|
||||
description: '服务器内部错误',
|
||||
content: {
|
||||
'application/json': {
|
||||
schema: { $ref: '#/components/schemas/ErrorResponse' }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
security: [
|
||||
{ bearerAuth: [] }
|
||||
],
|
||||
|
||||
// 整合所有模块的API路径
|
||||
paths: {
|
||||
...authPaths,
|
||||
...usersPaths,
|
||||
...farmsPaths,
|
||||
...animalsPaths,
|
||||
...devicesPaths,
|
||||
...alertsPaths,
|
||||
...smartAlertsPaths,
|
||||
...statsPaths,
|
||||
...reportsPaths,
|
||||
...systemPaths
|
||||
}
|
||||
},
|
||||
|
||||
apis: [
|
||||
'./routes/*.js',
|
||||
'./controllers/*.js',
|
||||
'./swagger-*.js'
|
||||
]
|
||||
};
|
||||
|
||||
const specs = swaggerJSDoc(options);
|
||||
|
||||
// 确保paths对象存在
|
||||
if (!specs.paths) {
|
||||
specs.paths = {};
|
||||
}
|
||||
|
||||
// 添加API版本信息
|
||||
specs.info.version = '2.0.0';
|
||||
specs.info['x-api-version'] = '2.0';
|
||||
specs.info['x-build-date'] = new Date().toISOString();
|
||||
|
||||
module.exports = specs;
|
||||
Reference in New Issue
Block a user