From eac9e40b38770d31fc30c4661523f6060cf80e7e Mon Sep 17 00:00:00 2001 From: "Kalman.CHENG" <123204464@qq.com> Date: Wed, 16 Jul 2025 11:40:02 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=95=99=E8=82=B2=E5=9E=82=E7=9B=B4?= =?UTF-8?q?=E9=A2=86=E5=9F=9F=E5=A4=A7=E6=A8=A1=E5=9E=8B=E5=B9=B3=E5=8F=B0?= =?UTF-8?q?=20modify=20by=20Kalman.CHENG=20=E2=98=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/controller/TeachingModelController.py | 57 +++++++++++++++++-- .../api/controller/ThemeController.py | 2 +- dsAiTeachingModel/utils/Database.py | 23 +++++++- dsAiTeachingModel/utils/PageUtil.py | 20 +++++++ 4 files changed, 96 insertions(+), 6 deletions(-) diff --git a/dsAiTeachingModel/api/controller/TeachingModelController.py b/dsAiTeachingModel/api/controller/TeachingModelController.py index 881472e5..2ea6576c 100644 --- a/dsAiTeachingModel/api/controller/TeachingModelController.py +++ b/dsAiTeachingModel/api/controller/TeachingModelController.py @@ -1,12 +1,61 @@ # routes/TeachingModelController.py -from fastapi import APIRouter, Request, Response, Depends +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)]) -@router.get("/") -async def test(request: Request, response: Response): - return {"success": True, "message": "成功!"} +# 【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} + + diff --git a/dsAiTeachingModel/api/controller/ThemeController.py b/dsAiTeachingModel/api/controller/ThemeController.py index 2020d98c..c583c7c0 100644 --- a/dsAiTeachingModel/api/controller/ThemeController.py +++ b/dsAiTeachingModel/api/controller/ThemeController.py @@ -80,7 +80,7 @@ async def save(request: Request): if id == 0: param["search_flag"] = 0 param["train_flag"] = 0 - param["quote_num"] = 0 + param["quote_count"] = 0 # 插入数据 id = await insert("t_ai_teaching_model_theme", param, False) return {"success": True, "message": "保存成功!", "data": {"insert_id" : id}} diff --git a/dsAiTeachingModel/utils/Database.py b/dsAiTeachingModel/utils/Database.py index 4010390d..7c5a981c 100644 --- a/dsAiTeachingModel/utils/Database.py +++ b/dsAiTeachingModel/utils/Database.py @@ -216,4 +216,25 @@ async def execute_sql(sql): except Exception as e: logging.error(f"数据库查询错误: {e}") logging.error(f"执行的SQL语句: {sql}") - raise Exception(f"执行SQL失败: {e}") \ No newline at end of file + raise Exception(f"执行SQL失败: {e}") + + + +async def find_person_name_by_id(person_id): + sql = f"SELECT person_name FROM t_sys_loginperson WHERE person_id = $1 and b_use = 1" + logging.debug(sql) + person_list = await find_by_sql(sql, (person_id,)) + if person_list: + return person_list[0]['person_name'] + else: + return None + +async def find_bureau_name_by_id(org_id): + sql = f"SELECT org_name FROM t_base_organization WHERE org_id = $1 and b_use = 1" + logging.debug(sql) + org_list = await find_by_sql(sql, (org_id,)) + if org_list: + return org_list[0]['org_name'] + else: + return None + diff --git a/dsAiTeachingModel/utils/PageUtil.py b/dsAiTeachingModel/utils/PageUtil.py index ae84601e..19577d68 100644 --- a/dsAiTeachingModel/utils/PageUtil.py +++ b/dsAiTeachingModel/utils/PageUtil.py @@ -46,3 +46,23 @@ async def get_page_data_by_sql(total_data_sql: str, page_number: int, page_size: return {"page_number": page_number, "page_size": page_size, "total_row": total_row, "total_page": total_page, "list": page_data} else: return {"page_number": page_number, "page_size": page_size, "total_row": 0, "total_page": 0, "list": []} + + +# 翻译person_name, bureau_id +async def translate_person_bureau_name(page): + for item in page["list"]: + if item["person_id"] is not None: + person_id = str(item["person_id"]) + person_name = await find_person_name_by_id(person_id) + if person_name: + item["person_name"] = person_name + else: + item["person_name"] = "" + if item["bureau_id"] is not None: + bureau_id = str(item["bureau_id"]) + bureau_name = await find_bureau_name_by_id(bureau_id) + if bureau_name: + item["bureau_name"] = bureau_name + else: + item["bureau_name"] = "" + return page \ No newline at end of file From 0a33cccdd400cab1288660bf7e2cbc4d95519626 Mon Sep 17 00:00:00 2001 From: "Kalman.CHENG" <123204464@qq.com> Date: Wed, 16 Jul 2025 13:06:18 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=95=99=E8=82=B2=E5=9E=82=E7=9B=B4?= =?UTF-8?q?=E9=A2=86=E5=9F=9F=E5=A4=A7=E6=A8=A1=E5=9E=8B=E5=B9=B3=E5=8F=B0?= =?UTF-8?q?=20modify=20by=20Kalman.CHENG=20=E2=98=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/controller/TeachingModelController.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/dsAiTeachingModel/api/controller/TeachingModelController.py b/dsAiTeachingModel/api/controller/TeachingModelController.py index 2ea6576c..ec7ec3fb 100644 --- a/dsAiTeachingModel/api/controller/TeachingModelController.py +++ b/dsAiTeachingModel/api/controller/TeachingModelController.py @@ -59,3 +59,22 @@ async def get_new_theme(request: Request): 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} \ No newline at end of file