修正競賽團隊編輯、個人賽顯示、團體賽顯示 bug

This commit is contained in:
2025-09-20 22:44:21 +08:00
parent c5bbec5ca8
commit 049b53fa43
15 changed files with 480 additions and 85 deletions

View File

@@ -882,6 +882,7 @@ export class JudgeService extends DatabaseServiceBase {
const result = await db.queryOne<Judge>(sql, [id]);
if (result) {
result.expertise = this.parseExpertise(result.expertise as any);
result.is_active = Boolean(result.is_active); // 確保 is_active 是布爾值
}
return result;
}
@@ -892,7 +893,8 @@ export class JudgeService extends DatabaseServiceBase {
const results = await db.query<Judge>(sql);
return results.map(judge => ({
...judge,
expertise: this.parseExpertise(judge.expertise as any)
expertise: this.parseExpertise(judge.expertise as any),
is_active: Boolean(judge.is_active) // 確保 is_active 是布爾值
}));
}
@@ -1010,17 +1012,26 @@ export class TeamService extends DatabaseServiceBase {
SELECT t.*,
u.name as leader_name,
u.phone as leader_phone,
t.leader_id as leader,
COUNT(DISTINCT tm.id) as member_count,
COUNT(DISTINCT a.id) as app_count
COUNT(DISTINCT a.id) as app_count,
t.created_at as submissionDate
FROM teams t
LEFT JOIN users u ON t.leader_id = u.id
LEFT JOIN team_members tm ON t.id = tm.team_id
LEFT JOIN apps a ON t.id = a.team_id AND a.is_active = 1
WHERE t.is_active = 1
GROUP BY t.id
GROUP BY t.id, t.name, t.leader_id, t.department, t.contact_email, t.total_likes, t.is_active, t.created_at, t.updated_at, u.name, u.phone
ORDER BY t.created_at DESC
`;
const results = await DatabaseServiceBase.safeQuery(sql);
console.log('🔍 getAllTeams 查詢結果:', results.slice(0, 2).map(r => ({
id: r.id,
name: r.name,
leader_name: r.leader_name,
member_count: r.member_count,
submissionDate: r.submissionDate
})));
return results;
}
@@ -1104,9 +1115,11 @@ export class TeamService extends DatabaseServiceBase {
for (const member of updates.members) {
if (member.user_id && member.role) {
console.log(`添加成員: ${member.user_id} (${member.role})`);
// 生成唯一的 ID
const memberId = `tm_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
await DatabaseServiceBase.safeInsert(
'INSERT INTO team_members (team_id, user_id, role, joined_at) VALUES (?, ?, ?, NOW())',
[id, member.user_id, member.role]
'INSERT INTO team_members (id, team_id, user_id, role, joined_at) VALUES (?, ?, ?, ?, NOW())',
[memberId, id, member.user_id, member.role]
);
}
}