42 lines
1.2 KiB
JavaScript
42 lines
1.2 KiB
JavaScript
const express = require('express');
|
|
const ArtworkService = require('../services/artwork');
|
|
const ResponseUtil = require('../utils/response');
|
|
|
|
const router = express.Router();
|
|
|
|
/**
|
|
* 获取排行榜数据
|
|
* GET /api/ranking
|
|
* 参数: mode (day/week/month), type (art/manga/novel), offset, limit
|
|
*/
|
|
router.get('/', async (req, res) => {
|
|
try {
|
|
const { mode = 'day', type = 'art', offset = 0, limit = 30 } = req.query;
|
|
|
|
// 验证参数
|
|
if (!['day', 'week', 'month'].includes(mode)) {
|
|
return res.status(400).json(ResponseUtil.error('无效的时间模式'));
|
|
}
|
|
|
|
if (!['art', 'manga', 'novel'].includes(type)) {
|
|
return res.status(400).json(ResponseUtil.error('无效的作品类型'));
|
|
}
|
|
|
|
// 创建作品服务实例,传入认证信息
|
|
const artworkService = new ArtworkService(req.backend.auth);
|
|
|
|
const result = await artworkService.getRankingArtworks({
|
|
mode,
|
|
content: type,
|
|
offset: parseInt(offset),
|
|
limit: parseInt(limit)
|
|
});
|
|
|
|
res.json(ResponseUtil.success(result));
|
|
} catch (error) {
|
|
console.error('获取排行榜失败:', error);
|
|
res.status(500).json(ResponseUtil.error(error.message));
|
|
}
|
|
});
|
|
|
|
module.exports = router;
|