修正了部分错误

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)
base_query = '''
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
FROM meetings m JOIN users u ON m.user_id = u.user_id
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 LEFT JOIN audio_files af ON m.meeting_id = af.meeting_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'
@ -61,8 +61,8 @@ def get_meetings(current_user: dict = Depends(get_current_user), user_id: Option
tags = _process_tags(cursor, meeting.get('tags'))
meeting_list.append(Meeting(
meeting_id=meeting['meeting_id'], title=meeting['title'], meeting_time=meeting['meeting_time'],
summary=meeting['summary'], created_at=meeting['created_at'], attendees=attendees,
creator_id=meeting['creator_id'], creator_username=meeting['creator_username'], tags=tags
summary=meeting['summary'], created_at=meeting['created_at'], audio_file_path=meeting['audio_file_path'],
attendees=attendees, creator_id=meeting['creator_id'], creator_username=meeting['creator_username'], tags=tags
))
return create_api_response(code="200", message="获取会议列表成功", data=meeting_list)

View File

@ -1,4 +1,5 @@
from fastapi import APIRouter, Depends
from typing import Optional
from app.models.models import UserInfo, PasswordChangeRequest, UserListResponse, CreateUserRequest, UpdateUserRequest, RoleInfo
from app.core.database import get_db_connection
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} 的密码已重置")
@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:
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']
offset = (page - 1) * size
query = '''
SELECT
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
FROM users u
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
LIMIT %s OFFSET %s
'''
cursor.execute(query, (size, offset))
query_params.extend([size, offset])
cursor.execute(query, tuple(query_params))
users = cursor.fetchall()
user_list = [UserInfo(**user) for user in users]