67 lines
1.8 KiB
JavaScript
67 lines
1.8 KiB
JavaScript
const express = require('express');
|
|
const router = express.Router();
|
|
const auth = require('../middleware/auth');
|
|
const { upload, getFileUrls } = require('../middleware/upload');
|
|
const { VenueImage } = require('../models');
|
|
|
|
// 获取场地图片列表
|
|
router.get('/venue-images', auth, async (req, res) => {
|
|
try {
|
|
const { activityId } = req.query;
|
|
const images = await VenueImage.findAll({
|
|
where: { activityId },
|
|
order: [['sortOrder', 'ASC'], ['id', 'ASC']],
|
|
raw: true
|
|
});
|
|
res.json(images);
|
|
} catch (error) {
|
|
res.status(500).json({ error: error.message });
|
|
}
|
|
});
|
|
|
|
// 上传场地图片
|
|
router.post('/venue-images', auth, upload.single('image'), async (req, res) => {
|
|
try {
|
|
const { activityId, sortOrder } = req.body;
|
|
|
|
if (!req.file) {
|
|
return res.status(400).json({ error: '请选择图片' });
|
|
}
|
|
|
|
const [uploaded] = getFileUrls([req.file]);
|
|
const image = await VenueImage.create({
|
|
activityId,
|
|
image: uploaded.url,
|
|
sortOrder: sortOrder || 0
|
|
});
|
|
|
|
res.json(image);
|
|
} catch (error) {
|
|
res.status(500).json({ error: error.message });
|
|
}
|
|
});
|
|
|
|
// 更新场地图片排序
|
|
router.put('/venue-images/:id', auth, async (req, res) => {
|
|
try {
|
|
const { sortOrder } = req.body;
|
|
await VenueImage.update({ sortOrder }, { where: { id: req.params.id } });
|
|
const image = await VenueImage.findByPk(req.params.id);
|
|
res.json(image);
|
|
} catch (error) {
|
|
res.status(500).json({ error: error.message });
|
|
}
|
|
});
|
|
|
|
// 删除场地图片
|
|
router.delete('/venue-images/:id', auth, async (req, res) => {
|
|
try {
|
|
await VenueImage.destroy({ where: { id: req.params.id } });
|
|
res.json({ message: '删除成功' });
|
|
} catch (error) {
|
|
res.status(500).json({ error: error.message });
|
|
}
|
|
});
|
|
|
|
module.exports = router;
|