Administrator 22f073d8e7 feat: 运动会记分板系统核心功能
- 前后端分离架构 (Nuxt 3 + Element Plus)
- SQLite 数据库 (better-sqlite3)
- 比赛项目管理 (田赛/径赛/团体赛)
- 队伍管理 (5 个组别)
- 成绩录入与积分统计
- 记分板展示 (排名/奖牌榜)
- 移动端响应式适配
- 侧边栏布局 + 抽屉菜单
- 自动生成初始化数据接口
2026-03-17 22:29:18 +08:00

57 lines
1.2 KiB
TypeScript

import db from '../../db'
export default defineEventHandler(async (event) => {
const body = await readBody(event)
const { event_id, team_id, score, rank } = body
if (!event_id || !team_id || !score) {
throw createError({
statusCode: 400,
message: '缺少必要参数'
})
}
const stmt = db.prepare(
'INSERT INTO results (event_id, team_id, score, rank) VALUES (?, ?, ?, ?)'
)
const result = stmt.run(event_id, team_id, score, rank || null)
// 更新团队积分
if (rank) {
let points = 0
let medalType = ''
if (rank === 1) {
points = 7
medalType = 'gold'
} else if (rank === 2) {
points = 5
medalType = 'silver'
} else if (rank === 3) {
points = 3
medalType = 'bronze'
}
if (points > 0) {
const updateStmt = db.prepare(`
UPDATE team_scores
SET total_score = total_score + ?,
${medalType}_count = ${medalType}_count + 1
WHERE team_id = ?
`)
updateStmt.run(points, team_id)
}
}
return {
success: true,
data: {
id: result.lastInsertRowid,
event_id,
team_id,
score,
rank
}
}
})