更新学期功能
This commit is contained in:
@@ -18,7 +18,7 @@ from middleware.permission import (
|
||||
)
|
||||
from services.semester_service import SemesterService
|
||||
from services.log_service import LogService
|
||||
from schemas.semester import CreateSemesterRequest
|
||||
from schemas.semester import CreateSemesterRequest, UpdateSemesterRequest
|
||||
from utils.response import success_response, error_response
|
||||
from utils.logger import get_logger
|
||||
|
||||
@@ -103,8 +103,90 @@ async def activate_semester(request: Request, semester_id: int):
|
||||
return error_response(message=result["message"])
|
||||
|
||||
|
||||
@router.put("/update/{semester_id}")
|
||||
async def update_semester(request: Request, semester_id: int, req: UpdateSemesterRequest):
|
||||
"""编辑学期(班主任)"""
|
||||
user = await get_current_user(request)
|
||||
is_teacher = await PermissionChecker.check_is_teacher(user["user_id"])
|
||||
if not is_teacher:
|
||||
return error_response(message="仅班主任可编辑学期", code=403)
|
||||
|
||||
result = await SemesterService.update_semester(
|
||||
semester_id=semester_id,
|
||||
semester_name=req.semester_name,
|
||||
start_date=req.start_date,
|
||||
end_date=req.end_date,
|
||||
operator_id=user["user_id"]
|
||||
)
|
||||
if result["success"]:
|
||||
await LogService.write_operation_log(
|
||||
operator_id=user["user_id"], operator_name=user["username"],
|
||||
operator_role="班主任", operation_type="update_semester",
|
||||
target_type="semester", target_id=semester_id,
|
||||
details=f"编辑学期ID: {semester_id}",
|
||||
ip=request.client.host
|
||||
)
|
||||
return success_response(message=result["message"])
|
||||
else:
|
||||
return error_response(message=result["message"])
|
||||
|
||||
|
||||
@router.delete("/delete/{semester_id}")
|
||||
async def delete_semester(request: Request, semester_id: int):
|
||||
"""删除学期(班主任)"""
|
||||
user = await get_current_user(request)
|
||||
is_teacher = await PermissionChecker.check_is_teacher(user["user_id"])
|
||||
if not is_teacher:
|
||||
return error_response(message="仅班主任可删除学期", code=403)
|
||||
|
||||
result = await SemesterService.delete_semester(
|
||||
semester_id=semester_id,
|
||||
operator_id=user["user_id"]
|
||||
)
|
||||
if result["success"]:
|
||||
await LogService.write_operation_log(
|
||||
operator_id=user["user_id"], operator_name=user["username"],
|
||||
operator_role="班主任", operation_type="delete_semester",
|
||||
target_type="semester", target_id=semester_id,
|
||||
details=f"删除学期ID: {semester_id}",
|
||||
ip=request.client.host
|
||||
)
|
||||
return success_response(message=result["message"])
|
||||
else:
|
||||
return error_response(message=result["message"])
|
||||
|
||||
|
||||
@router.post("/{semester_id}/associate")
|
||||
async def associate_records(request: Request, semester_id: int):
|
||||
"""关联记录到学期(班主任)"""
|
||||
user = await get_current_user(request)
|
||||
is_teacher = await PermissionChecker.check_is_teacher(user["user_id"])
|
||||
if not is_teacher:
|
||||
return error_response(message="仅班主任可关联数据", code=403)
|
||||
|
||||
result = await SemesterService.associate_records(
|
||||
semester_id=semester_id,
|
||||
operator_id=user["user_id"]
|
||||
)
|
||||
if result["success"]:
|
||||
await LogService.write_operation_log(
|
||||
operator_id=user["user_id"], operator_name=user["username"],
|
||||
operator_role="班主任", operation_type="associate_records",
|
||||
target_type="semester", target_id=semester_id,
|
||||
details=f"关联数据到学期ID: {semester_id}, 结果: {result.get('data', {})}",
|
||||
ip=request.client.host
|
||||
)
|
||||
return success_response(data=result.get("data"), message=result["message"])
|
||||
else:
|
||||
return error_response(message=result["message"])
|
||||
|
||||
|
||||
@router.post("/archive/{semester_id}")
|
||||
async def archive_semester(request: Request, semester_id: int):
|
||||
async def archive_semester(
|
||||
request: Request,
|
||||
semester_id: int,
|
||||
reset_scores: bool = Query(False)
|
||||
):
|
||||
"""归档学期(班主任)"""
|
||||
user = await get_current_user(request)
|
||||
is_teacher = await PermissionChecker.check_is_teacher(user["user_id"])
|
||||
@@ -113,14 +195,18 @@ async def archive_semester(request: Request, semester_id: int):
|
||||
|
||||
result = await SemesterService.archive_semester(
|
||||
semester_id=semester_id,
|
||||
operator_id=user["user_id"]
|
||||
operator_id=user["user_id"],
|
||||
reset_scores=reset_scores
|
||||
)
|
||||
if result["success"]:
|
||||
log_detail = f"归档学期ID: {semester_id}"
|
||||
if reset_scores:
|
||||
log_detail += " 并重置学生操行分"
|
||||
await LogService.write_operation_log(
|
||||
operator_id=user["user_id"], operator_name=user["username"],
|
||||
operator_role="班主任", operation_type="archive_semester",
|
||||
target_type="semester", target_id=semester_id,
|
||||
details=f"归档学期ID: {semester_id}",
|
||||
details=log_detail,
|
||||
ip=request.client.host
|
||||
)
|
||||
return success_response(message=result["message"])
|
||||
|
||||
Reference in New Issue
Block a user