添加媒体统计接口 /api/media/stats
All checks were successful
Deploy to Server / deploy (push) Successful in 5s
All checks were successful
Deploy to Server / deploy (push) Successful in 5s
- 返回媒体总数、满分作品数、平均评分 - 按类型统计各类型作品数量 - 返回最新添加的5部作品 - 便于前端展示数据统计信息
This commit is contained in:
@@ -200,4 +200,68 @@ media.get("/page", async (c) => {
|
||||
}
|
||||
});
|
||||
|
||||
// 获取媒体统计信息
|
||||
media.get("/stats", async (c) => {
|
||||
try {
|
||||
// 获取总数
|
||||
const totalResult = await db
|
||||
.prepare("SELECT COUNT(*) as total FROM media")
|
||||
.get();
|
||||
const total = totalResult?.total || 0;
|
||||
|
||||
// 获取满分作品数
|
||||
const perfectResult = await db
|
||||
.prepare("SELECT COUNT(*) as count FROM media WHERE rating = 10")
|
||||
.get();
|
||||
const perfectCount = perfectResult?.count || 0;
|
||||
|
||||
// 按类型统计
|
||||
const typeStats = await db
|
||||
.prepare(
|
||||
"SELECT type, COUNT(*) as count FROM media GROUP BY type ORDER BY count DESC"
|
||||
)
|
||||
.all();
|
||||
|
||||
// 获取平均评分
|
||||
const avgRatingResult = await db
|
||||
.prepare("SELECT AVG(rating) as avg FROM media WHERE rating IS NOT NULL")
|
||||
.get();
|
||||
const avgRating = avgRatingResult?.avg
|
||||
? parseFloat(avgRatingResult.avg).toFixed(2)
|
||||
: "0.00";
|
||||
|
||||
// 获取最新添加的作品
|
||||
const latestResult = await db
|
||||
.prepare(
|
||||
"SELECT title, type, rating, date FROM media ORDER BY created_at DESC LIMIT 5"
|
||||
)
|
||||
.all();
|
||||
|
||||
// 格式化最新作品的日期
|
||||
const latest = latestResult.map((item: any) => {
|
||||
if (item.date) {
|
||||
const date = new Date(item.date);
|
||||
if (!isNaN(date.getTime())) {
|
||||
item.date = date.toISOString().split("T")[0];
|
||||
}
|
||||
}
|
||||
return item;
|
||||
});
|
||||
|
||||
return c.json({
|
||||
code: 0,
|
||||
data: {
|
||||
total,
|
||||
perfectCount,
|
||||
avgRating,
|
||||
typeStats,
|
||||
latest,
|
||||
},
|
||||
message: "Success",
|
||||
});
|
||||
} catch (error: any) {
|
||||
return c.json({ code: 1, data: {}, message: error.message }, 500);
|
||||
}
|
||||
});
|
||||
|
||||
export default media;
|
||||
|
||||
Reference in New Issue
Block a user