修正了部分错误

main
mula.liu 2025-10-15 14:31:25 +08:00
parent f834f3a131
commit 7f9c9fb950
4 changed files with 26 additions and 7 deletions

BIN
.DS_Store vendored

Binary file not shown.

BIN
app.zip 100644

Binary file not shown.

View File

@ -42,8 +42,8 @@ def get_meetings(current_user: dict = Depends(get_current_user), user_id: Option
cursor = connection.cursor(dictionary=True) cursor = connection.cursor(dictionary=True)
base_query = ''' base_query = '''
SELECT m.meeting_id, m.title, m.meeting_time, m.summary, m.created_at, m.tags, SELECT m.meeting_id, m.title, m.meeting_time, m.summary, m.created_at, m.tags,
m.user_id as creator_id, u.caption as creator_username m.user_id as creator_id, u.caption as creator_username, af.file_path as audio_file_path
FROM meetings m JOIN users u ON m.user_id = u.user_id FROM meetings m JOIN users u ON m.user_id = u.user_id LEFT JOIN audio_files af ON m.meeting_id = af.meeting_id
''' '''
if user_id: if user_id:
query = f'{base_query} LEFT JOIN attendees a ON m.meeting_id = a.meeting_id WHERE m.user_id = %s OR a.user_id = %s GROUP BY m.meeting_id ORDER BY m.meeting_time DESC, m.created_at DESC' query = f'{base_query} LEFT JOIN attendees a ON m.meeting_id = a.meeting_id WHERE m.user_id = %s OR a.user_id = %s GROUP BY m.meeting_id ORDER BY m.meeting_time DESC, m.created_at DESC'
@ -61,8 +61,8 @@ def get_meetings(current_user: dict = Depends(get_current_user), user_id: Option
tags = _process_tags(cursor, meeting.get('tags')) tags = _process_tags(cursor, meeting.get('tags'))
meeting_list.append(Meeting( meeting_list.append(Meeting(
meeting_id=meeting['meeting_id'], title=meeting['title'], meeting_time=meeting['meeting_time'], meeting_id=meeting['meeting_id'], title=meeting['title'], meeting_time=meeting['meeting_time'],
summary=meeting['summary'], created_at=meeting['created_at'], attendees=attendees, summary=meeting['summary'], created_at=meeting['created_at'], audio_file_path=meeting['audio_file_path'],
creator_id=meeting['creator_id'], creator_username=meeting['creator_username'], tags=tags attendees=attendees, creator_id=meeting['creator_id'], creator_username=meeting['creator_username'], tags=tags
)) ))
return create_api_response(code="200", message="获取会议列表成功", data=meeting_list) return create_api_response(code="200", message="获取会议列表成功", data=meeting_list)

View File

@ -1,4 +1,5 @@
from fastapi import APIRouter, Depends from fastapi import APIRouter, Depends
from typing import Optional
from app.models.models import UserInfo, PasswordChangeRequest, UserListResponse, CreateUserRequest, UpdateUserRequest, RoleInfo from app.models.models import UserInfo, PasswordChangeRequest, UserListResponse, CreateUserRequest, UpdateUserRequest, RoleInfo
from app.core.database import get_db_connection from app.core.database import get_db_connection
from app.core.auth import get_current_user from app.core.auth import get_current_user
@ -146,14 +147,21 @@ def reset_password(user_id: int, current_user: dict = Depends(get_current_user))
return create_api_response(code="200", message=f"用户 {user_id} 的密码已重置") return create_api_response(code="200", message=f"用户 {user_id} 的密码已重置")
@router.get("/users") @router.get("/users")
def get_all_users(page: int = 1, size: int = 10, current_user: dict = Depends(get_current_user)): def get_all_users(page: int = 1, size: int = 10, role_id: Optional[int] = None, current_user: dict = Depends(get_current_user)):
with get_db_connection() as connection: with get_db_connection() as connection:
cursor = connection.cursor(dictionary=True) cursor = connection.cursor(dictionary=True)
cursor.execute("SELECT COUNT(*) as total FROM users") count_query = "SELECT COUNT(*) as total FROM users"
params = []
if role_id is not None:
count_query += " WHERE role_id = %s"
params.append(role_id)
cursor.execute(count_query, tuple(params))
total = cursor.fetchone()['total'] total = cursor.fetchone()['total']
offset = (page - 1) * size offset = (page - 1) * size
query = ''' query = '''
SELECT SELECT
u.user_id, u.username, u.caption, u.email, u.created_at, u.role_id, u.user_id, u.username, u.caption, u.email, u.created_at, u.role_id,
@ -162,10 +170,21 @@ def get_all_users(page: int = 1, size: int = 10, current_user: dict = Depends(ge
(SELECT COUNT(*) FROM attendees WHERE user_id = u.user_id) as meetings_attended (SELECT COUNT(*) FROM attendees WHERE user_id = u.user_id) as meetings_attended
FROM users u FROM users u
LEFT JOIN roles r ON u.role_id = r.role_id LEFT JOIN roles r ON u.role_id = r.role_id
'''
query_params = []
if role_id is not None:
query += " WHERE u.role_id = %s"
query_params.append(role_id)
query += '''
ORDER BY u.user_id ASC ORDER BY u.user_id ASC
LIMIT %s OFFSET %s LIMIT %s OFFSET %s
''' '''
cursor.execute(query, (size, offset))
query_params.extend([size, offset])
cursor.execute(query, tuple(query_params))
users = cursor.fetchall() users = cursor.fetchall()
user_list = [UserInfo(**user) for user in users] user_list = [UserInfo(**user) for user in users]