# routes/ThemeController.py
from fastapi import APIRouter , Depends
from utils . ParseRequest import *
from auth . dependencies import *
from utils . PageUtil import *
# 创建一个路由实例,需要依赖get_current_user,登录后才能访问
router = APIRouter ( dependencies = [ Depends ( get_current_user ) ] )
# 功能: 【Theme-1】主题管理列表
# 作者: Kalman.CHENG ☆
# 时间: 2025-07-14
# 备注:
@router . get ( " /list " )
async def list ( request : Request ) :
# 获取参数
person_id = await get_request_str_param ( request , " person_id " , True , True )
stage_id = await get_request_num_param ( request , " stage_id " , False , True , - 1 )
subject_id = await get_request_num_param ( request , " subject_id " , False , True , - 1 )
page_number = await get_request_num_param ( request , " page_number " , False , True , 1 )
page_size = await get_request_num_param ( request , " page_size " , False , True , 10 )
theme_name = await get_request_str_param ( request , " theme_name " , False , True )
print ( stage_id , person_id , subject_id , page_number , page_size , theme_name )
# 拼接查询SQL语句
select_theme_sql : str = " SELECT * FROM t_ai_teaching_model_theme WHERE is_deleted = 0 and person_id = ' " + person_id + " ' "
if stage_id != - 1 :
select_theme_sql + = " and stage_id = " + str ( stage_id )
if subject_id != - 1 :
select_theme_sql + = " and subject_id = " + str ( subject_id )
if theme_name != " " :
select_theme_sql + = " and theme_name = ' " + theme_name + " ' "
select_theme_sql + = " ORDER BY create_time DESC "
# 查询主题列表
page = await get_page_data_by_sql ( select_theme_sql , page_number , page_size )
return { " success " : True , " message " : " 查询成功! " , " data " : page }
# 功能: 【Theme-2】保存主题管理
# 作者: Kalman.CHENG ☆
# 时间: 2025-07-14
# 备注:
@router . post ( " /save " )
async def save ( request : Request ) :
# 获取参数
id = await get_request_num_param ( request , " id " , False , True , 0 )
theme_name = await get_request_str_param ( request , " theme_name " , True , True )
short_name = await get_request_str_param ( request , " short_name " , True , True )
theme_icon = await get_request_str_param ( request , " theme_icon " , False , True )
stage_id = await get_request_num_param ( request , " stage_id " , True , True , None )
subject_id = await get_request_num_param ( request , " subject_id " , True , True , None )
person_id = await get_request_str_param ( request , " person_id " , True , True )
bureau_id = await get_request_str_param ( request , " bureau_id " , True , True )
# 校验参数
check_theme_sql = " SELECT theme_name FROM t_ai_teaching_model_theme WHERE is_deleted = 0 and bureau_id = ' " + bureau_id + " ' and theme_name = ' " + theme_name + " ' "
if id != 0 :
check_theme_sql + = " and id <> " + id
print ( check_theme_sql )
check_theme_result = await find_by_sql ( check_theme_sql , ( ) )
if check_theme_result :
return { " success " : False , " message " : " 该主题名称已存在! " }
check_short_name_sql = " SELECT short_name FROM t_ai_teaching_model_theme WHERE is_deleted = 0 and bureau_id = ' " + bureau_id + " ' and short_name = ' " + short_name + " ' "
if id != 0 :
check_short_name_sql + = " and id <> " + id
print ( check_short_name_sql )
check_short_name_result = await find_by_sql ( check_short_name_sql , ( ) )
if check_short_name_result :
return { " success " : False , " message " : " 该主题英文简称已存在! " }
# 组装参数
param = { " theme_name " : theme_name , " short_name " : short_name , " theme_icon " : theme_icon , " stage_id " : stage_id , " subject_id " : subject_id , " person_id " : person_id , " bureau_id " : bureau_id }
# 保存数据
if id == 0 :
param [ " search_flag " ] = 0
param [ " train_flag " ] = 0
param [ " quote_count " ] = 0
# 插入数据
id = await insert ( " t_ai_teaching_model_theme " , param , False )
return { " success " : True , " message " : " 保存成功! " , " data " : { " insert_id " : id } }
else :
# 更新数据
await update ( " t_ai_teaching_model_theme " , param , " id " , id , False )
return { " success " : True , " message " : " 更新成功! " , " data " : { " update_id " : id } }
# 功能: 【Theme-3】获取主题信息
# 作者: Kalman.CHENG ☆
# 时间: 2025-07-14
# 备注:
@router . get ( " /get " )
async def get ( request : Request ) :
# 获取参数
id = await get_request_num_param ( request , " id " , True , True , None )
theme_obj = await find_by_id ( " t_ai_teaching_model_theme " , " id " , id )
if theme_obj is None :
return { " success " : False , " message " : " 未查询到该主题信息! " }
return { " success " : True , " message " : " 查询成功! " , " data " : { " theme " : theme_obj } }
@router . post ( " /delete " )
async def delete ( request : Request ) :
# 获取参数
id = await get_request_num_param ( request , " id " , True , True , None )
result = await delete_by_id ( " t_ai_teaching_model_theme " , " id " , id )
if not result :
return { " success " : False , " message " : " 删除失败! " }
return { " success " : True , " message " : " 删除成功! " }