const express = require('express'); const router = express.Router(); const StoryModel = require('../models/story'); // 获取故事列表 router.get('/', async (req, res) => { try { const { category, featured, limit, offset } = req.query; const stories = await StoryModel.getList({ category, featured: featured === 'true', limit: parseInt(limit) || 20, offset: parseInt(offset) || 0 }); res.json({ code: 0, data: stories }); } catch (err) { console.error('获取故事列表失败:', err); res.status(500).json({ code: 500, message: '获取故事列表失败' }); } }); // 获取热门故事 router.get('/hot', async (req, res) => { try { const { limit } = req.query; const stories = await StoryModel.getHotStories(parseInt(limit) || 10); res.json({ code: 0, data: stories }); } catch (err) { console.error('获取热门故事失败:', err); res.status(500).json({ code: 500, message: '获取热门故事失败' }); } }); // 获取分类列表 router.get('/categories', async (req, res) => { try { const categories = await StoryModel.getCategories(); res.json({ code: 0, data: categories }); } catch (err) { console.error('获取分类列表失败:', err); res.status(500).json({ code: 500, message: '获取分类列表失败' }); } }); // 获取故事详情 router.get('/:id', async (req, res) => { try { const storyId = parseInt(req.params.id); const story = await StoryModel.getDetail(storyId); if (!story) { return res.status(404).json({ code: 404, message: '故事不存在' }); } res.json({ code: 0, data: story }); } catch (err) { console.error('获取故事详情失败:', err); res.status(500).json({ code: 500, message: '获取故事详情失败' }); } }); // 记录游玩 router.post('/:id/play', async (req, res) => { try { const storyId = parseInt(req.params.id); await StoryModel.incrementPlayCount(storyId); res.json({ code: 0, message: '记录成功' }); } catch (err) { console.error('记录游玩失败:', err); res.status(500).json({ code: 500, message: '记录游玩失败' }); } }); // 点赞 router.post('/:id/like', async (req, res) => { try { const storyId = parseInt(req.params.id); const { like } = req.body; // true: 点赞, false: 取消点赞 await StoryModel.toggleLike(storyId, like); res.json({ code: 0, message: like ? '点赞成功' : '取消点赞成功' }); } catch (err) { console.error('点赞操作失败:', err); res.status(500).json({ code: 500, message: '点赞操作失败' }); } }); // AI改写结局 router.post('/:id/rewrite', async (req, res) => { try { const storyId = parseInt(req.params.id); const { ending_name, ending_content, prompt } = req.body; if (!prompt) { return res.status(400).json({ code: 400, message: '请输入改写指令' }); } // 调用AI服务生成新内容 const result = await StoryModel.aiRewriteEnding({ storyId, endingName: ending_name, endingContent: ending_content, prompt }); res.json({ code: 0, data: result }); } catch (err) { console.error('AI改写失败:', err); res.status(500).json({ code: 500, message: 'AI改写失败' }); } }); module.exports = router;