Files
nxxmdata/backend/routes/cattle-pens.js
2025-09-12 20:08:42 +08:00

249 lines
6.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const express = require('express');
const router = express.Router();
const cattlePenController = require('../controllers/cattlePenController');
const { verifyToken } = require('../middleware/auth');
const { requirePermission } = require('../middleware/permission');
// 公开API路由不需要验证token
const publicRoutes = express.Router();
router.use('/public', publicRoutes);
// 公开获取栏舍列表
publicRoutes.get('/', cattlePenController.getPens);
// 公开获取栏舍详情
publicRoutes.get('/:id', cattlePenController.getPenById);
// 所有其他路由都需要认证
router.use(verifyToken);
/**
* @swagger
* /api/cattle-pens:
* get:
* summary: 获取栏舍列表
* tags: [栏舍管理]
* security:
* - bearerAuth: []
* 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: status
* schema:
* type: string
* enum: [启用, 停用]
* description: 状态筛选
* - in: query
* name: type
* schema:
* type: string
* enum: [育成栏, 产房, 配种栏, 隔离栏, 治疗栏]
* description: 类型筛选
* responses:
* 200:
* description: 成功获取栏舍列表
* content:
* application/json:
* schema:
* type: object
* properties:
* success:
* type: boolean
* data:
* type: object
* properties:
* list:
* type: array
* items:
* $ref: '#/components/schemas/CattlePen'
* total:
* type: integer
* page:
* type: integer
* pageSize:
* type: integer
* message:
* type: string
*/
router.get('/', requirePermission('cattle:pens:view'), cattlePenController.getPens);
/**
* @swagger
* /api/cattle-pens/{id}:
* get:
* summary: 获取栏舍详情
* tags: [栏舍管理]
* security:
* - bearerAuth: []
* parameters:
* - in: path
* name: id
* required: true
* schema:
* type: integer
* description: 栏舍ID
* responses:
* 200:
* description: 成功获取栏舍详情
* 404:
* description: 栏舍不存在
*/
router.get('/:id', requirePermission('cattle:pens:view'), cattlePenController.getPenById);
/**
* @swagger
* /api/cattle-pens:
* post:
* summary: 创建栏舍
* tags: [栏舍管理]
* security:
* - bearerAuth: []
* requestBody:
* required: true
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/CattlePenInput'
* responses:
* 201:
* description: 成功创建栏舍
* 400:
* description: 请求参数错误
*/
router.post('/', requirePermission('cattle:pens:create'), cattlePenController.createPen);
/**
* @swagger
* /api/cattle-pens/{id}:
* put:
* summary: 更新栏舍
* tags: [栏舍管理]
* security:
* - bearerAuth: []
* parameters:
* - in: path
* name: id
* required: true
* schema:
* type: integer
* description: 栏舍ID
* requestBody:
* required: true
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/CattlePenInput'
* responses:
* 200:
* description: 成功更新栏舍
* 404:
* description: 栏舍不存在
*/
router.put('/:id', requirePermission('cattle:pens:update'), cattlePenController.updatePen);
/**
* @swagger
* /api/cattle-pens/{id}:
* delete:
* summary: 删除栏舍
* tags: [栏舍管理]
* security:
* - bearerAuth: []
* parameters:
* - in: path
* name: id
* required: true
* schema:
* type: integer
* description: 栏舍ID
* responses:
* 200:
* description: 成功删除栏舍
* 404:
* description: 栏舍不存在
* 400:
* description: 栏舍中还有牛只,无法删除
*/
router.delete('/:id', requirePermission('cattle:pens:delete'), cattlePenController.deletePen);
/**
* @swagger
* /api/cattle-pens/batch-delete:
* post:
* summary: 批量删除栏舍
* tags: [栏舍管理]
* 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: 请求参数错误或栏舍中还有牛只
*/
router.post('/batch-delete', requirePermission('cattle:pens:delete'), cattlePenController.batchDeletePens);
/**
* @swagger
* /api/cattle-pens/{id}/animals:
* get:
* summary: 获取栏舍中的牛只
* tags: [栏舍管理]
* security:
* - bearerAuth: []
* parameters:
* - in: path
* name: id
* required: true
* schema:
* type: integer
* description: 栏舍ID
* - in: query
* name: page
* schema:
* type: integer
* default: 1
* description: 页码
* - in: query
* name: pageSize
* schema:
* type: integer
* default: 10
* description: 每页数量
* responses:
* 200:
* description: 成功获取栏舍牛只
* 404:
* description: 栏舍不存在
*/
router.get('/:id/animals', requirePermission('cattle:pens:view'), cattlePenController.getPenAnimals);
module.exports = router;