整合 dsAiTeachingModel 接口
This commit is contained in:
175
dsLightRag/Routes/TeachingModel/api/ThemeController.py
Normal file
175
dsLightRag/Routes/TeachingModel/api/ThemeController.py
Normal file
@@ -0,0 +1,175 @@
|
||||
# routes/ThemeController.py
|
||||
|
||||
from fastapi import APIRouter, Depends
|
||||
|
||||
from Util.Database import *
|
||||
from Util.ParseRequest import *
|
||||
from Routes.TeachingModel.auth.dependencies import *
|
||||
from Util.PageUtil import *
|
||||
from Util.TranslateUtil 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 like '%" + theme_name + "%'"
|
||||
select_theme_sql += " ORDER BY create_time DESC"
|
||||
|
||||
# 查询主题列表
|
||||
page = await get_page_data_by_sql(select_theme_sql, page_number, page_size)
|
||||
person_ids = ""
|
||||
for item in page["list"]:
|
||||
person_ids += "'" + item["person_id"] + "',"
|
||||
if person_ids != "":
|
||||
person_ids = person_ids[:-1]
|
||||
else:
|
||||
person_ids = "''"
|
||||
|
||||
person_map = await get_person_map(person_ids)
|
||||
stage_map = await get_stage_map()
|
||||
subject_map = await get_subject_map()
|
||||
for item in page["list"]:
|
||||
item["stage_name"] = stage_map.get(str(item["stage_id"]), "未知学段")
|
||||
item["subject_name"] = subject_map.get(str(item["subject_id"]), "未知学科")
|
||||
item["person_name"] = person_map.get(str(item["person_id"]), "未知姓名")
|
||||
|
||||
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)
|
||||
if len(theme_name) > 50:
|
||||
return {"success": False, "message": "主题名称不能超过50个字符!"}
|
||||
short_name = await get_request_str_param(request, "short_name", True, True)
|
||||
if len(short_name) > 50:
|
||||
return {"success": False, "message": "主题英文简称不能超过50个字符!"}
|
||||
theme_icon = await get_request_str_param(request, "theme_icon", False, True)
|
||||
if len(theme_name) > 200:
|
||||
return {"success": False, "message": "主题图标不能超过200个字符!"}
|
||||
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 <> " + str(id)
|
||||
print(check_theme_sql)
|
||||
check_theme_result = await find_by_sql(check_theme_sql,())
|
||||
if check_theme_result:
|
||||
return {"success": False, "message": "该主题名称已存在!"}
|
||||
if short_name.length > 50:
|
||||
return {"success": False, "message": "主题英文简称不能超过50个字符!"}
|
||||
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 <> " + str(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": "未查询到该主题信息!"}
|
||||
|
||||
stage_map = await get_stage_map()
|
||||
subject_map = await get_subject_map()
|
||||
theme_obj["stage_name"] = stage_map.get(str(theme_obj["stage_id"]), "未知学段")
|
||||
theme_obj["subject_name"] = subject_map.get(str(theme_obj["subject_id"]), "未知学科")
|
||||
theme_obj["person_name"] = await find_person_name_by_id(theme_obj["person_id"])
|
||||
|
||||
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": "删除成功!"}
|
||||
|
||||
|
||||
|
||||
# 功能:【Theme-5】根据学段学科获取主题列表
|
||||
# 作者:Kalman.CHENG ☆
|
||||
# 时间:2025-07-31
|
||||
# 备注:
|
||||
@router.get("/getListByStageSubject")
|
||||
async def get_list_by_stage_subject(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)
|
||||
|
||||
# 拼接查询SQL语句
|
||||
select_theme_sql: str = " select id as theme_id, theme_name 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)
|
||||
select_theme_result = await find_by_sql(select_theme_sql,())
|
||||
|
||||
return {"success": True, "message": "查询成功!", "data": {"theme_list": select_theme_result}}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user