95 lines
3.2 KiB
JavaScript
95 lines
3.2 KiB
JavaScript
/**
|
||
* 牛只档案路由 - 基于iot_cattle表
|
||
*/
|
||
const express = require('express');
|
||
const multer = require('multer');
|
||
const router = express.Router();
|
||
const iotCattleController = require('../controllers/iotCattleController');
|
||
const { verifyToken, checkRole } = require('../middleware/auth');
|
||
|
||
// 配置文件上传
|
||
const storage = multer.diskStorage({
|
||
destination: function (req, file, cb) {
|
||
cb(null, 'uploads/') // 上传文件保存目录
|
||
},
|
||
filename: function (req, file, cb) {
|
||
// 生成唯一文件名
|
||
const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9);
|
||
cb(null, file.fieldname + '-' + uniqueSuffix + '.' + file.originalname.split('.').pop());
|
||
}
|
||
});
|
||
|
||
const upload = multer({
|
||
storage: storage,
|
||
limits: {
|
||
fileSize: 10 * 1024 * 1024 // 限制文件大小为10MB
|
||
},
|
||
fileFilter: function (req, file, cb) {
|
||
// 只允许Excel文件
|
||
const allowedTypes = [
|
||
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
||
'application/vnd.ms-excel'
|
||
];
|
||
|
||
if (allowedTypes.includes(file.mimetype)) {
|
||
cb(null, true);
|
||
} else {
|
||
cb(new Error('只允许上传Excel文件(.xlsx或.xls格式)'), false);
|
||
}
|
||
}
|
||
});
|
||
|
||
// 公开API路由,不需要验证token
|
||
const publicRoutes = express.Router();
|
||
router.use('/public', publicRoutes);
|
||
|
||
// 公开获取牛只档案列表
|
||
publicRoutes.get('/', iotCattleController.getCattleArchives);
|
||
|
||
// 公开获取单个牛只档案详情
|
||
publicRoutes.get('/:id', iotCattleController.getCattleArchiveById);
|
||
|
||
// 公开下载导入模板
|
||
publicRoutes.get('/import/template', iotCattleController.downloadImportTemplate);
|
||
|
||
// 公开获取栏舍列表
|
||
publicRoutes.get('/pens/list', iotCattleController.getPens);
|
||
|
||
// 公开获取批次列表
|
||
publicRoutes.get('/batches/list', iotCattleController.getBatches);
|
||
|
||
// 获取牛只档案列表
|
||
router.get('/', verifyToken, iotCattleController.getCattleArchives);
|
||
|
||
// 获取单个牛只档案详情
|
||
router.get('/:id', verifyToken, iotCattleController.getCattleArchiveById);
|
||
|
||
// 创建牛只档案
|
||
router.post('/', verifyToken, checkRole(['admin', 'manager']), iotCattleController.createCattleArchive);
|
||
|
||
// 更新牛只档案
|
||
router.put('/:id', verifyToken, checkRole(['admin', 'manager']), iotCattleController.updateCattleArchive);
|
||
|
||
// 删除牛只档案
|
||
router.delete('/:id', verifyToken, checkRole(['admin', 'manager']), iotCattleController.deleteCattleArchive);
|
||
|
||
// 批量删除牛只档案
|
||
router.delete('/', verifyToken, checkRole(['admin', 'manager']), iotCattleController.batchDeleteCattleArchives);
|
||
|
||
// 获取农场列表
|
||
router.get('/farms/list', verifyToken, iotCattleController.getFarms);
|
||
|
||
// 获取栏舍列表
|
||
router.get('/pens/list', verifyToken, iotCattleController.getPens);
|
||
|
||
// 获取批次列表
|
||
router.get('/batches/list', verifyToken, iotCattleController.getBatches);
|
||
|
||
// 导入牛只档案数据
|
||
router.post('/import', verifyToken, checkRole(['admin', 'manager']), upload.single('file'), iotCattleController.importCattleArchives);
|
||
|
||
// 下载导入模板
|
||
router.get('/import/template', verifyToken, iotCattleController.downloadImportTemplate);
|
||
|
||
module.exports = router;
|