366 lines
9.9 KiB
JavaScript
366 lines
9.9 KiB
JavaScript
/**
|
||
* 设备路由
|
||
* @file devices.js
|
||
* @description 定义设备相关的API路由
|
||
*/
|
||
|
||
const express = require('express');
|
||
const router = express.Router();
|
||
const deviceController = require('../controllers/deviceController');
|
||
const { verifyToken } = require('../middleware/auth');
|
||
|
||
// 公开API路由,不需要验证token
|
||
const publicRoutes = express.Router();
|
||
router.use('/public', publicRoutes);
|
||
|
||
// 公开创建设备接口
|
||
publicRoutes.post('/', deviceController.createDevice);
|
||
|
||
// 公开获取单个设备接口
|
||
publicRoutes.get('/:id', deviceController.getDeviceById);
|
||
|
||
// 公开更新设备接口
|
||
publicRoutes.put('/:id', deviceController.updateDevice);
|
||
|
||
// 公开删除设备接口
|
||
publicRoutes.delete('/:id', deviceController.deleteDevice);
|
||
|
||
// 公开获取设备状态统计接口
|
||
publicRoutes.get('/stats/status', deviceController.getDeviceStatsByStatus);
|
||
|
||
// 公开获取设备类型统计接口
|
||
publicRoutes.get('/stats/type', deviceController.getDeviceStatsByType);
|
||
|
||
// 公开获取所有设备数据
|
||
publicRoutes.get('/', deviceController.getAllDevices);
|
||
|
||
/**
|
||
* @swagger
|
||
* tags:
|
||
* name: Devices
|
||
* description: 设备管理API
|
||
*/
|
||
|
||
/**
|
||
* @swagger
|
||
* /api/devices:
|
||
* get:
|
||
* summary: 获取所有设备
|
||
* tags: [Devices]
|
||
* security:
|
||
* - bearerAuth: []
|
||
* responses:
|
||
* 200:
|
||
* description: 成功获取设备列表
|
||
* content:
|
||
* application/json:
|
||
* schema:
|
||
* type: object
|
||
* properties:
|
||
* success:
|
||
* type: boolean
|
||
* example: true
|
||
* data:
|
||
* type: array
|
||
* items:
|
||
* $ref: '#/components/schemas/Device'
|
||
* 401:
|
||
* description: 未授权
|
||
* 500:
|
||
* description: 服务器错误
|
||
*/
|
||
router.get('/', verifyToken, deviceController.getAllDevices);
|
||
|
||
/**
|
||
* @swagger
|
||
* /api/devices/{id}:
|
||
* get:
|
||
* summary: 获取单个设备
|
||
* tags: [Devices]
|
||
* security:
|
||
* - bearerAuth: []
|
||
* parameters:
|
||
* - in: path
|
||
* name: id
|
||
* schema:
|
||
* type: integer
|
||
* required: true
|
||
* description: 设备ID
|
||
* responses:
|
||
* 200:
|
||
* description: 成功获取设备详情
|
||
* content:
|
||
* application/json:
|
||
* schema:
|
||
* type: object
|
||
* properties:
|
||
* success:
|
||
* type: boolean
|
||
* example: true
|
||
* data:
|
||
* $ref: '#/components/schemas/Device'
|
||
* 401:
|
||
* description: 未授权
|
||
* 404:
|
||
* description: 设备不存在
|
||
* 500:
|
||
* description: 服务器错误
|
||
*/
|
||
router.get('/:id', verifyToken, deviceController.getDeviceById);
|
||
|
||
/**
|
||
* @swagger
|
||
* /api/devices:
|
||
* post:
|
||
* summary: 创建设备
|
||
* tags: [Devices]
|
||
* security:
|
||
* - bearerAuth: []
|
||
* requestBody:
|
||
* required: true
|
||
* content:
|
||
* application/json:
|
||
* schema:
|
||
* type: object
|
||
* required:
|
||
* - name
|
||
* - type
|
||
* - farmId
|
||
* properties:
|
||
* name:
|
||
* type: string
|
||
* description: 设备名称
|
||
* type:
|
||
* type: string
|
||
* description: 设备类型
|
||
* status:
|
||
* type: string
|
||
* enum: [online, offline, maintenance]
|
||
* description: 设备状态
|
||
* farmId:
|
||
* type: integer
|
||
* description: 所属养殖场ID
|
||
* last_maintenance:
|
||
* type: string
|
||
* format: date-time
|
||
* description: 最近维护时间
|
||
* installation_date:
|
||
* type: string
|
||
* format: date-time
|
||
* description: 安装日期
|
||
* metrics:
|
||
* type: object
|
||
* description: 设备指标数据
|
||
* responses:
|
||
* 201:
|
||
* description: 设备创建成功
|
||
* content:
|
||
* application/json:
|
||
* schema:
|
||
* type: object
|
||
* properties:
|
||
* success:
|
||
* type: boolean
|
||
* example: true
|
||
* message:
|
||
* type: string
|
||
* example: 设备创建成功
|
||
* data:
|
||
* $ref: '#/components/schemas/Device'
|
||
* 400:
|
||
* description: 请求参数错误
|
||
* 401:
|
||
* description: 未授权
|
||
* 404:
|
||
* description: 养殖场不存在
|
||
* 500:
|
||
* description: 服务器错误
|
||
*/
|
||
router.post('/', verifyToken, deviceController.createDevice);
|
||
|
||
/**
|
||
* @swagger
|
||
* /api/devices/{id}:
|
||
* put:
|
||
* summary: 更新设备
|
||
* tags: [Devices]
|
||
* security:
|
||
* - bearerAuth: []
|
||
* parameters:
|
||
* - in: path
|
||
* name: id
|
||
* schema:
|
||
* type: integer
|
||
* required: true
|
||
* description: 设备ID
|
||
* requestBody:
|
||
* required: true
|
||
* content:
|
||
* application/json:
|
||
* schema:
|
||
* type: object
|
||
* properties:
|
||
* name:
|
||
* type: string
|
||
* description: 设备名称
|
||
* type:
|
||
* type: string
|
||
* description: 设备类型
|
||
* status:
|
||
* type: string
|
||
* enum: [online, offline, maintenance]
|
||
* description: 设备状态
|
||
* farmId:
|
||
* type: integer
|
||
* description: 所属养殖场ID
|
||
* last_maintenance:
|
||
* type: string
|
||
* format: date-time
|
||
* description: 最近维护时间
|
||
* installation_date:
|
||
* type: string
|
||
* format: date-time
|
||
* description: 安装日期
|
||
* metrics:
|
||
* type: object
|
||
* description: 设备指标数据
|
||
* responses:
|
||
* 200:
|
||
* description: 设备更新成功
|
||
* content:
|
||
* application/json:
|
||
* schema:
|
||
* type: object
|
||
* properties:
|
||
* success:
|
||
* type: boolean
|
||
* example: true
|
||
* message:
|
||
* type: string
|
||
* example: 设备更新成功
|
||
* data:
|
||
* $ref: '#/components/schemas/Device'
|
||
* 400:
|
||
* description: 请求参数错误
|
||
* 401:
|
||
* description: 未授权
|
||
* 404:
|
||
* description: 设备不存在或养殖场不存在
|
||
* 500:
|
||
* description: 服务器错误
|
||
*/
|
||
router.put('/:id', verifyToken, deviceController.updateDevice);
|
||
|
||
/**
|
||
* @swagger
|
||
* /api/devices/{id}:
|
||
* delete:
|
||
* summary: 删除设备
|
||
* tags: [Devices]
|
||
* security:
|
||
* - bearerAuth: []
|
||
* parameters:
|
||
* - in: path
|
||
* name: id
|
||
* schema:
|
||
* type: integer
|
||
* required: true
|
||
* description: 设备ID
|
||
* responses:
|
||
* 200:
|
||
* description: 设备删除成功
|
||
* content:
|
||
* application/json:
|
||
* schema:
|
||
* type: object
|
||
* properties:
|
||
* success:
|
||
* type: boolean
|
||
* example: true
|
||
* message:
|
||
* type: string
|
||
* example: 设备删除成功
|
||
* 401:
|
||
* description: 未授权
|
||
* 404:
|
||
* description: 设备不存在
|
||
* 500:
|
||
* description: 服务器错误
|
||
*/
|
||
router.delete('/:id', verifyToken, deviceController.deleteDevice);
|
||
|
||
/**
|
||
* @swagger
|
||
* /api/devices/stats/status:
|
||
* get:
|
||
* summary: 按状态统计设备数量
|
||
* tags: [Devices]
|
||
* security:
|
||
* - bearerAuth: []
|
||
* responses:
|
||
* 200:
|
||
* description: 成功获取设备状态统计
|
||
* content:
|
||
* application/json:
|
||
* schema:
|
||
* type: object
|
||
* properties:
|
||
* success:
|
||
* type: boolean
|
||
* example: true
|
||
* data:
|
||
* type: array
|
||
* items:
|
||
* type: object
|
||
* properties:
|
||
* status:
|
||
* type: string
|
||
* example: online
|
||
* count:
|
||
* type: integer
|
||
* example: 25
|
||
* 401:
|
||
* description: 未授权
|
||
* 500:
|
||
* description: 服务器错误
|
||
*/
|
||
router.get('/stats/status', verifyToken, deviceController.getDeviceStatsByStatus);
|
||
|
||
/**
|
||
* @swagger
|
||
* /api/devices/stats/type:
|
||
* get:
|
||
* summary: 按类型统计设备数量
|
||
* tags: [Devices]
|
||
* security:
|
||
* - bearerAuth: []
|
||
* responses:
|
||
* 200:
|
||
* description: 成功获取设备类型统计
|
||
* content:
|
||
* application/json:
|
||
* schema:
|
||
* type: object
|
||
* properties:
|
||
* success:
|
||
* type: boolean
|
||
* example: true
|
||
* data:
|
||
* type: array
|
||
* items:
|
||
* type: object
|
||
* properties:
|
||
* type:
|
||
* type: string
|
||
* example: 温度传感器
|
||
* count:
|
||
* type: integer
|
||
* example: 15
|
||
* 401:
|
||
* description: 未授权
|
||
* 500:
|
||
* description: 服务器错误
|
||
*/
|
||
router.get('/stats/type', verifyToken, deviceController.getDeviceStatsByType);
|
||
|
||
module.exports = router; |