v2.4更新
This commit is contained in:
@@ -160,7 +160,8 @@ class ConductModel:
|
||||
end_date: str = None,
|
||||
student_id: int = None,
|
||||
include_revoked: bool = True,
|
||||
related_type: str = None
|
||||
related_type: str = None,
|
||||
reason_prefix: str = None
|
||||
) -> List[Dict[str, Any]]:
|
||||
"""获取所有记录(班主任/班长专用)"""
|
||||
# 空字符串转为None
|
||||
@@ -170,6 +171,8 @@ class ConductModel:
|
||||
end_date = None
|
||||
if related_type == "":
|
||||
related_type = None
|
||||
if reason_prefix == "":
|
||||
reason_prefix = None
|
||||
sql = """
|
||||
SELECT cr.*, s.name as student_name, s.student_no, u.real_name as recorder_name,
|
||||
ru.real_name as revoker_name
|
||||
@@ -199,6 +202,10 @@ class ConductModel:
|
||||
sql += " AND cr.related_type = %s"
|
||||
params.append(related_type)
|
||||
|
||||
if reason_prefix:
|
||||
sql += " AND cr.reason LIKE %s"
|
||||
params.append(f"{reason_prefix}%")
|
||||
|
||||
sql += " ORDER BY cr.created_at DESC LIMIT %s OFFSET %s"
|
||||
params.extend([limit, offset])
|
||||
|
||||
@@ -210,6 +217,7 @@ class ConductModel:
|
||||
start_date: str = None,
|
||||
end_date: str = None,
|
||||
related_type: str = None,
|
||||
reason_prefix: str = None,
|
||||
page: int = 1,
|
||||
page_size: int = 20
|
||||
) -> Dict[str, Any]:
|
||||
@@ -220,6 +228,8 @@ class ConductModel:
|
||||
end_date = None
|
||||
if related_type == "":
|
||||
related_type = None
|
||||
if reason_prefix == "":
|
||||
reason_prefix = None
|
||||
|
||||
conditions = ["cr.is_revoked = 0"]
|
||||
params = []
|
||||
@@ -236,6 +246,9 @@ class ConductModel:
|
||||
if related_type:
|
||||
conditions.append("cr.related_type = %s")
|
||||
params.append(related_type)
|
||||
if reason_prefix:
|
||||
conditions.append("cr.reason LIKE %s")
|
||||
params.append(f"{reason_prefix}%")
|
||||
|
||||
where_clause = " AND ".join(conditions)
|
||||
|
||||
|
||||
@@ -71,10 +71,8 @@ class SubjectModel:
|
||||
|
||||
@staticmethod
|
||||
async def has_related_data(subject_id: int) -> bool:
|
||||
"""检查科目是否有关联数据(assignments表)"""
|
||||
sql = "SELECT COUNT(*) as cnt FROM assignments WHERE subject_id = %s"
|
||||
result = await execute_one(sql, (subject_id,))
|
||||
return result['cnt'] > 0
|
||||
"""检查科目是否有关联数据"""
|
||||
return False
|
||||
|
||||
@staticmethod
|
||||
async def delete(subject_id: int) -> bool:
|
||||
|
||||
@@ -318,7 +318,8 @@ async def get_conduct_history(
|
||||
start_date: Optional[str] = None,
|
||||
end_date: Optional[str] = None,
|
||||
grouped: bool = Query(False),
|
||||
related_type: Optional[str] = None
|
||||
related_type: Optional[str] = None,
|
||||
reason_prefix: Optional[str] = None
|
||||
):
|
||||
"""获取操行分历史记录"""
|
||||
try:
|
||||
@@ -333,7 +334,8 @@ async def get_conduct_history(
|
||||
start_date=start_date,
|
||||
end_date=end_date,
|
||||
grouped=grouped,
|
||||
related_type=related_type
|
||||
related_type=related_type,
|
||||
reason_prefix=reason_prefix
|
||||
)
|
||||
return success_response(data=result)
|
||||
except Exception as e:
|
||||
|
||||
@@ -35,6 +35,7 @@ ALL_VERSIONS = {
|
||||
'2.1': 'v2.1.sql',
|
||||
'2.2': 'v2.2.sql',
|
||||
'2.3': 'v2.3.sql',
|
||||
'2.4': 'v2.4.sql',
|
||||
}
|
||||
|
||||
# 版本特征标记(按优先级从高到低)
|
||||
|
||||
@@ -212,7 +212,8 @@ class ConductService:
|
||||
start_date: Optional[str] = None,
|
||||
end_date: Optional[str] = None,
|
||||
grouped: bool = False,
|
||||
related_type: Optional[str] = None
|
||||
related_type: Optional[str] = None,
|
||||
reason_prefix: Optional[str] = None
|
||||
) -> Dict[str, Any]:
|
||||
"""获取历史记录"""
|
||||
# 空字符串转为None
|
||||
@@ -222,6 +223,8 @@ class ConductService:
|
||||
end_date = None
|
||||
if related_type == "":
|
||||
related_type = None
|
||||
if reason_prefix == "":
|
||||
reason_prefix = None
|
||||
if related_type and related_type not in ('manual', 'homework', 'attendance'):
|
||||
return {"records": [], "page": page, "page_size": page_size, "total": 0, "total_pages": 0}
|
||||
|
||||
@@ -236,6 +239,7 @@ class ConductService:
|
||||
start_date=start_date,
|
||||
end_date=end_date,
|
||||
related_type=related_type,
|
||||
reason_prefix=reason_prefix,
|
||||
page=page,
|
||||
page_size=page_size
|
||||
)
|
||||
@@ -246,7 +250,8 @@ class ConductService:
|
||||
start_date=start_date,
|
||||
end_date=end_date,
|
||||
student_id=student_id,
|
||||
related_type=related_type
|
||||
related_type=related_type,
|
||||
reason_prefix=reason_prefix
|
||||
)
|
||||
|
||||
# 获取总数
|
||||
@@ -265,6 +270,9 @@ class ConductService:
|
||||
if related_type:
|
||||
count_conditions.append("cr.related_type = %s")
|
||||
count_params.append(related_type)
|
||||
if reason_prefix:
|
||||
count_conditions.append("cr.reason LIKE %s")
|
||||
count_params.append(f"{reason_prefix}%")
|
||||
count_where = " AND ".join(count_conditions)
|
||||
count_sql = f"""
|
||||
SELECT COUNT(*) as total FROM conduct_records cr
|
||||
|
||||
Reference in New Issue
Block a user