/** * 宁夏智慧养殖监管平台 - 完整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格式 \`\`\` 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 ' }, 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;