修正了部分错误
parent
f834f3a131
commit
7f9c9fb950
|
|
@ -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)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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]
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue