You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
116 lines
5.2 KiB
116 lines
5.2 KiB
# routes/TeachingModelController.py
|
|
|
|
from fastapi import APIRouter, Depends
|
|
from auth.dependencies import *
|
|
from utils.PageUtil import *
|
|
from utils.ParseRequest import *
|
|
|
|
# 创建一个路由实例,需要依赖get_current_user,登录后才能访问
|
|
router = APIRouter(dependencies=[Depends(get_current_user)])
|
|
|
|
|
|
# 【TeachingModel-1】获取主题列表
|
|
@router.get("/getTrainedTheme")
|
|
async def get_trained_theme(request: Request):
|
|
# 获取参数
|
|
bureau_id = await get_request_str_param(request, "bureau_id", True, 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)
|
|
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)
|
|
|
|
# 数据库查询
|
|
select_trained_theme_sql: str = f"SELECT * FROM t_ai_teaching_model_theme WHERE is_deleted = 0 and search_flag = 1 AND bureau_id = '{bureau_id}' AND stage_id = {stage_id} AND subject_id = {subject_id}"
|
|
print(select_trained_theme_sql)
|
|
page = await get_page_data_by_sql(select_trained_theme_sql, page_number, page_size)
|
|
page = await translate_person_bureau_name(page)
|
|
# 结果返回
|
|
return {"success": True, "message": "查询成功!", "data": page}
|
|
|
|
|
|
# 【TeachingModel-2】获取热门主题列表
|
|
@router.get("/getHotTheme")
|
|
async def get_hot_theme(request: Request):
|
|
# 获取参数
|
|
bureau_id = await get_request_str_param(request, "bureau_id", True, True)
|
|
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, 3)
|
|
# 数据库查询
|
|
select_hot_theme_sql: str = f"SELECT * FROM t_ai_teaching_model_theme WHERE is_deleted = 0 and search_flag = 1 and bureau_id = '{bureau_id}' ORDER BY quote_count DESC"
|
|
print(select_hot_theme_sql)
|
|
page = await get_page_data_by_sql(select_hot_theme_sql, page_number, page_size)
|
|
page = await translate_person_bureau_name(page)
|
|
# 结果返回
|
|
return {"success": True, "message": "查询成功!", "data": page}
|
|
|
|
|
|
# 【TeachingModel-3】获取最新主题列表
|
|
@router.get("/getNewTheme")
|
|
async def get_new_theme(request: Request):
|
|
bureau_id = await get_request_str_param(request, "bureau_id", True, True)
|
|
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, 3)
|
|
# 数据库查询
|
|
select_new_theme_sql: str = f"SELECT * FROM t_ai_teaching_model_theme WHERE is_deleted = 0 and search_flag = 1 and bureau_id = '{bureau_id}' ORDER BY create_time DESC"
|
|
print(select_new_theme_sql)
|
|
page = await get_page_data_by_sql(select_new_theme_sql, page_number, page_size)
|
|
page = await translate_person_bureau_name(page)
|
|
# 结果返回
|
|
return {"success": True, "message": "查询成功!", "data": page}
|
|
|
|
|
|
# 【TeachingModel-4】获取问题列表
|
|
@router.get("/getQuestion")
|
|
async def get_question(request: Request):
|
|
# 获取参数
|
|
bureau_id = await get_request_str_param(request, "bureau_id", True, True)
|
|
person_id = await get_request_str_param(request, "person_id", True, True)
|
|
theme_id = await get_request_num_param(request, "theme_id", True, True, None)
|
|
question_type = await get_request_num_param(request, "question_type", True, True, None)
|
|
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)
|
|
|
|
person_sql = ""
|
|
if question_type == 2:
|
|
person_sql = f"AND person_id = '{person_id}'"
|
|
# 数据库查询
|
|
select_question_sql: str = f"SELECT * FROM t_ai_teaching_model_question WHERE is_deleted = 0 and bureau_id = '{bureau_id}' AND theme_id = {theme_id} AND question_type = {question_type} {person_sql}"
|
|
print(select_question_sql)
|
|
page = await get_page_data_by_sql(select_question_sql, page_number, page_size)
|
|
return {"success": True, "message": "查询成功!", "data": page}
|
|
|
|
|
|
|
|
# 【TeachingModel-5】提问
|
|
@router.post("/sendQuestion")
|
|
async def send_question(request: Request):
|
|
# 获取参数
|
|
bureau_id = await get_request_str_param(request, "bureau_id", True, True)
|
|
person_id = await get_request_str_param(request, "person_id", True, True)
|
|
theme_id = await get_request_num_param(request, "theme_id", True, True, None)
|
|
question = await get_request_str_param(request, "question_type", True, True)
|
|
|
|
theme_object = await find_by_id("t_ai_teaching_model_theme", "id", theme_id)
|
|
if theme_object is None:
|
|
return {"success": False, "message": "主题不存在!"}
|
|
|
|
# 保存个人历史问题
|
|
param = {}
|
|
param["stage_id"] = int(theme_object["stage_id"])
|
|
param["subject_id"] = int(theme_object["subject_id"])
|
|
param["theme_id"] = theme_id
|
|
param["question"] = question
|
|
param["question_type"] = 2
|
|
param["question_person_id"] = person_id
|
|
param["person_id"] = person_id
|
|
param["bureau_id"] = bureau_id
|
|
question_id = await insert("t_ai_teaching_model_question", param)
|
|
|
|
# 处理theme的调用次数
|
|
|
|
|
|
|
|
# 向rag提问
|
|
|
|
|