# =========================================== # 班级操行分管理系统 - 后端服务 # # 开发者: Canglan # 联系方式: admin@sea-studio.top # 版权归属: Sea Network Technology Studio # 许可证: MIT License # # 版权所有 © Sea Network Technology Studio # =========================================== from fastapi import APIRouter, Request from typing import Optional from middleware.permission import get_current_user, PermissionChecker from services.subject_service import SubjectService from schemas.subject import CreateSubjectRequest, UpdateSubjectRequest from utils.response import success_response, error_response from utils.logger import get_logger router = APIRouter() logger = get_logger(__name__) @router.get("/list") async def get_subjects(request: Request, is_active: Optional[bool] = None): try: user = await get_current_user(request) result = await SubjectService.get_subjects(is_active=is_active) return success_response(data=result) except Exception as e: logger.error(f"获取科目列表失败: {e}", exc_info=True) return error_response(message=f"获取科目列表失败: {str(e)}", code=500) @router.post("/create") async def create_subject(request: Request, req: CreateSubjectRequest): user = await get_current_user(request) if not await PermissionChecker.check_can_manage_subjects(user["user_id"]): return error_response(message="无权限", code=403) result = await SubjectService.create_subject(req.subject_name, req.subject_code, req.sort_order) return success_response(data=result, message="科目创建成功") if result["success"] else error_response(message=result["message"]) @router.put("/update/{subject_id}") async def update_subject(request: Request, subject_id: int, req: UpdateSubjectRequest): user = await get_current_user(request) if not await PermissionChecker.check_can_manage_subjects(user["user_id"]): return error_response(message="无权限", code=403) result = await SubjectService.update_subject(subject_id, **req.dict(exclude_none=True)) return success_response(message="科目更新成功") if result["success"] else error_response(message=result["message"]) @router.delete("/delete/{subject_id}") async def delete_subject(request: Request, subject_id: int): user = await get_current_user(request) if not await PermissionChecker.check_can_manage_subjects(user["user_id"]): return error_response(message="无权限", code=403) result = await SubjectService.delete_subject(subject_id) return success_response(message="科目已禁用") if result["success"] else error_response(message=result["message"])