/** * 栏舍管理路由 * @file pens.js * @description 定义栏舍管理相关的API路由 */ const express = require('express'); const router = express.Router(); const penController = require('../controllers/penController'); const { verifyToken } = require('../middleware/auth'); // 公开API路由,不需要验证token const publicRoutes = express.Router(); router.use('/public', publicRoutes); // 公开获取栏舍列表 publicRoutes.get('/', penController.getPens); // 公开获取栏舍详情 publicRoutes.get('/:id', penController.getPenById); // 公开获取栏舍统计信息 publicRoutes.get('/stats/summary', penController.getPenStats); // 需要认证的路由 router.use(verifyToken); // 创建栏舍 router.post('/', penController.createPen); // 更新栏舍 router.put('/:id', penController.updatePen); // 删除栏舍 router.delete('/:id', penController.deletePen); // 批量删除栏舍 router.delete('/batch', penController.batchDeletePens); /** * @swagger * tags: * name: Pens * description: 栏舍管理API */ /** * @swagger * /api/pens/public: * get: * summary: 获取栏舍列表 * tags: [Pens] * parameters: * - in: query * name: page * schema: * type: integer * default: 1 * description: 页码 * - in: query * name: pageSize * schema: * type: integer * default: 10 * description: 每页数量 * - in: query * name: search * schema: * type: string * description: 搜索关键词 * - in: query * name: animalType * schema: * type: string * enum: [马, 牛, 羊, 家禽, 猪] * description: 动物类型 * - in: query * name: status * schema: * type: string * enum: [true, false] * description: 状态 * - in: query * name: farmId * schema: * type: integer * description: 农场ID * responses: * 200: * description: 成功获取栏舍列表 * content: * application/json: * schema: * type: object * properties: * success: * type: boolean * data: * type: object * properties: * list: * type: array * items: * $ref: '#/components/schemas/Pen' * pagination: * $ref: '#/components/schemas/Pagination' */ /** * @swagger * /api/pens/public/{id}: * get: * summary: 获取栏舍详情 * tags: [Pens] * parameters: * - in: path * name: id * required: true * schema: * type: integer * description: 栏舍ID * responses: * 200: * description: 成功获取栏舍详情 * content: * application/json: * schema: * type: object * properties: * success: * type: boolean * data: * $ref: '#/components/schemas/Pen' * 404: * description: 栏舍不存在 */ /** * @swagger * /api/pens: * post: * summary: 创建栏舍 * tags: [Pens] * security: * - bearerAuth: [] * requestBody: * required: true * content: * application/json: * schema: * type: object * required: * - name * - animal_type * - responsible * - capacity * properties: * name: * type: string * description: 栏舍名称 * animal_type: * type: string * enum: [马, 牛, 羊, 家禽, 猪] * description: 动物类型 * pen_type: * type: string * description: 栏舍类型 * responsible: * type: string * description: 负责人 * capacity: * type: integer * description: 容量 * status: * type: boolean * default: true * description: 状态 * description: * type: string * description: 备注信息 * farm_id: * type: integer * description: 所属农场ID * responses: * 201: * description: 栏舍创建成功 * 400: * description: 请求参数错误 * 500: * description: 服务器内部错误 */ /** * @swagger * /api/pens/{id}: * put: * summary: 更新栏舍 * tags: [Pens] * security: * - bearerAuth: [] * parameters: * - in: path * name: id * required: true * schema: * type: integer * description: 栏舍ID * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * name: * type: string * description: 栏舍名称 * animal_type: * type: string * enum: [马, 牛, 羊, 家禽, 猪] * description: 动物类型 * pen_type: * type: string * description: 栏舍类型 * responsible: * type: string * description: 负责人 * capacity: * type: integer * description: 容量 * status: * type: boolean * description: 状态 * description: * type: string * description: 备注信息 * farm_id: * type: integer * description: 所属农场ID * responses: * 200: * description: 栏舍更新成功 * 404: * description: 栏舍不存在 * 500: * description: 服务器内部错误 */ /** * @swagger * /api/pens/{id}: * delete: * summary: 删除栏舍 * tags: [Pens] * security: * - bearerAuth: [] * parameters: * - in: path * name: id * required: true * schema: * type: integer * description: 栏舍ID * responses: * 200: * description: 栏舍删除成功 * 404: * description: 栏舍不存在 * 500: * description: 服务器内部错误 */ /** * @swagger * /api/pens/batch: * delete: * summary: 批量删除栏舍 * tags: [Pens] * security: * - bearerAuth: [] * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * ids: * type: array * items: * type: integer * description: 栏舍ID数组 * responses: * 200: * description: 批量删除成功 * 400: * description: 请求参数错误 * 500: * description: 服务器内部错误 */ /** * @swagger * components: * schemas: * Pen: * type: object * properties: * id: * type: integer * description: 栏舍ID * name: * type: string * description: 栏舍名称 * animal_type: * type: string * enum: [马, 牛, 羊, 家禽, 猪] * description: 动物类型 * pen_type: * type: string * description: 栏舍类型 * responsible: * type: string * description: 负责人 * capacity: * type: integer * description: 容量 * status: * type: boolean * description: 状态 * description: * type: string * description: 备注信息 * farm_id: * type: integer * description: 所属农场ID * creator: * type: string * description: 创建人 * created_at: * type: string * format: date-time * description: 创建时间 * updated_at: * type: string * format: date-time * description: 更新时间 * farm: * $ref: '#/components/schemas/Farm' */ module.exports = router;