v2.5.1更新
This commit is contained in:
@@ -15,6 +15,7 @@ from datetime import datetime
|
||||
from models.student import StudentModel
|
||||
from models.conduct import ConductModel
|
||||
from models.user import UserModel
|
||||
from models.semester import SemesterModel
|
||||
from middleware.permission import PermissionChecker
|
||||
from config import settings
|
||||
from utils.logger import get_logger
|
||||
@@ -86,6 +87,10 @@ class ConductService:
|
||||
fail_count = 0
|
||||
details = []
|
||||
|
||||
# 自动获取当前活跃学期
|
||||
active_semester = await SemesterModel.get_active()
|
||||
semester_id = active_semester['semester_id'] if active_semester else None
|
||||
|
||||
for student_id in student_ids:
|
||||
try:
|
||||
# 检查学生是否存在
|
||||
@@ -104,6 +109,17 @@ class ConductService:
|
||||
related_type=related_type
|
||||
)
|
||||
|
||||
# 自动关联到当前学期
|
||||
if semester_id and record_id:
|
||||
try:
|
||||
from utils.database import execute_update as _exec_update
|
||||
await _exec_update(
|
||||
"UPDATE conduct_records SET semester_id = %s WHERE record_id = %s AND semester_id IS NULL",
|
||||
(semester_id, record_id)
|
||||
)
|
||||
except Exception:
|
||||
pass # 关联失败不影响主流程
|
||||
|
||||
# 更新学生总分
|
||||
await StudentModel.update_total_points(student_id, points_change)
|
||||
|
||||
@@ -242,7 +258,8 @@ class ConductService:
|
||||
related_type=related_type,
|
||||
reason_prefix=reason_prefix,
|
||||
page=page,
|
||||
page_size=page_size
|
||||
page_size=page_size,
|
||||
is_revoked=is_revoked
|
||||
)
|
||||
|
||||
records = await ConductModel.get_all_records(
|
||||
|
||||
@@ -30,10 +30,23 @@ class SemesterService:
|
||||
"""获取学期列表"""
|
||||
try:
|
||||
semesters = await SemesterModel.get_all()
|
||||
today = datetime.date.today()
|
||||
for sem in semesters:
|
||||
counts = await SemesterModel.count_records_by_semester(sem['semester_id'])
|
||||
sem['conduct_count'] = counts['conduct_count']
|
||||
sem['attendance_count'] = counts['attendance_count']
|
||||
# 计算当前周数(仅活跃学期且有开始日期时)
|
||||
sem['current_week'] = None
|
||||
if sem.get('is_active') and sem.get('start_date'):
|
||||
try:
|
||||
s_date = sem['start_date']
|
||||
if isinstance(s_date, str):
|
||||
s_date = datetime.datetime.strptime(s_date, '%Y-%m-%d').date()
|
||||
delta = (today - s_date).days
|
||||
if delta >= 0:
|
||||
sem['current_week'] = delta // 7 + 1
|
||||
except (ValueError, TypeError):
|
||||
pass
|
||||
return {
|
||||
"success": True,
|
||||
"semesters": semesters
|
||||
|
||||
Reference in New Issue
Block a user