82 lines
2.7 KiB
Python
82 lines
2.7 KiB
Python
# ===========================================
|
|
# 班级操行分管理系统 - 后端服务
|
|
#
|
|
# 开发者: Canglan
|
|
# 联系方式: admin@sea-studio.top
|
|
# 版权归属: Sea Network Technology Studio
|
|
# 许可证: MIT License
|
|
#
|
|
# 版权所有 © Sea Network Technology Studio
|
|
# ===========================================
|
|
|
|
from typing import Dict, Any, Optional
|
|
|
|
from models.user import UserModel
|
|
from models.student import StudentModel
|
|
from models.conduct import ConductModel
|
|
from models.homework import HomeworkModel
|
|
from models.attendance import AttendanceModel
|
|
from utils.logger import get_logger
|
|
|
|
logger = get_logger(__name__)
|
|
|
|
|
|
class ParentService:
|
|
"""家长服务"""
|
|
|
|
@staticmethod
|
|
async def get_child_conduct(parent_id: int) -> Dict[str, Any]:
|
|
"""获取子女操行分(仅总分,家长端不显示详细记录)"""
|
|
# 获取家长关联的学生
|
|
user = await UserModel.get_by_user_id(parent_id)
|
|
if not user or not user["student_id"]:
|
|
return {"error": "未关联学生"}
|
|
|
|
student = await StudentModel.get_by_id(user["student_id"])
|
|
if not student:
|
|
return {"error": "学生不存在"}
|
|
|
|
return {
|
|
"student_id": student["student_id"],
|
|
"student_name": student["name"],
|
|
"student_no": student["student_no"],
|
|
"total_points": student["total_points"]
|
|
}
|
|
|
|
@staticmethod
|
|
async def get_child_homework(parent_id: int) -> Dict[str, Any]:
|
|
"""获取子女作业情况"""
|
|
user = await UserModel.get_by_user_id(parent_id)
|
|
if not user or not user["student_id"]:
|
|
return {"error": "未关联学生"}
|
|
|
|
student = await StudentModel.get_by_id(user["student_id"])
|
|
if not student:
|
|
return {"error": "学生不存在"}
|
|
|
|
homework = await HomeworkModel.get_student_homework(user["student_id"])
|
|
|
|
return {
|
|
"student_id": student["student_id"],
|
|
"student_name": student["name"],
|
|
"homework": homework
|
|
}
|
|
|
|
@staticmethod
|
|
async def get_child_attendance(parent_id: int) -> Dict[str, Any]:
|
|
"""获取子女考勤记录"""
|
|
user = await UserModel.get_by_user_id(parent_id)
|
|
if not user or not user["student_id"]:
|
|
return {"error": "未关联学生"}
|
|
|
|
student = await StudentModel.get_by_id(user["student_id"])
|
|
if not student:
|
|
return {"error": "学生不存在"}
|
|
|
|
records = await AttendanceModel.get_student_records(user["student_id"])
|
|
|
|
return {
|
|
"student_id": student["student_id"],
|
|
"student_name": student["name"],
|
|
"records": records
|
|
} |