| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- package com.njuzr.eaibackend.controller;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.njuzr.eaibackend.dto.AssignmentDTO;
- import com.njuzr.eaibackend.dto.AssignmentQueryDTO;
- import com.njuzr.eaibackend.dto.AssignmentUpdateDTO;
- import com.njuzr.eaibackend.dto.CorrectDTO;
- import com.njuzr.eaibackend.enums.AssignmentCompletionStatus;
- import com.njuzr.eaibackend.po.Assignment;
- import com.njuzr.eaibackend.po.MyUserDetails;
- import com.njuzr.eaibackend.service.AIDialogueService;
- import com.njuzr.eaibackend.service.AssignmentService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.security.access.prepost.PreAuthorize;
- import org.springframework.security.core.annotation.AuthenticationPrincipal;
- import org.springframework.validation.annotation.Validated;
- import org.springframework.web.bind.annotation.*;
- /**
- * @author: Leonezhurui
- * @Date: 2024/3/5 - 20:01
- * @Package: EAI-Backend
- */
- @RestController
- @RequestMapping("/api/assignment")
- public class AssignmentController {
- private final AssignmentService assignmentService;
- private final AIDialogueService aiDialogueService;
- @Autowired
- public AssignmentController(AssignmentService assignmentService, AIDialogueService aiDialogueService) {
- this.assignmentService = assignmentService;
- this.aiDialogueService = aiDialogueService;
- }
- /**
- * 创建作业,在某一个课程下创建作业
- * @param courseId
- * @param assignmentDTO
- * @return
- */
- @PreAuthorize("hasRole('TEACHER')")
- @PostMapping
- public MyResponse createAssignment(
- @AuthenticationPrincipal MyUserDetails user,
- @RequestParam Long courseId,
- @Validated @RequestBody AssignmentDTO assignmentDTO
- ) {
- return MyResponse.success(assignmentService.createAssignment(user, courseId, assignmentDTO));
- }
- @GetMapping
- public MyResponse findAssignmentPage(
- @RequestParam(value = "page", defaultValue = "1") int currentPage,
- @RequestParam(value = "size", defaultValue = "10") int pageSize,
- @RequestBody AssignmentQueryDTO assignmentQueryDTO
- ) {
- Page<Assignment> page = new Page<>(currentPage, pageSize);
- return MyResponse.success(assignmentService.findAssignmentPage(page, assignmentQueryDTO));
- }
- @GetMapping("/byCourse/{courseId}")
- public MyResponse getAssignmentsByCourseId(
- @RequestParam(value = "page", defaultValue = "1") int currentPage,
- @RequestParam(value = "size", defaultValue = "10") int pageSize,
- @PathVariable Long courseId
- ) {
- Page<Assignment> page = new Page<>(currentPage, pageSize);
- AssignmentQueryDTO assignmentQueryDTO = new AssignmentQueryDTO();
- assignmentQueryDTO.setCourseId(courseId);
- return MyResponse.success(assignmentService.findAssignmentPage(page, assignmentQueryDTO));
- }
- @GetMapping("/byAssignment/{assignmentId}")
- public MyResponse getAssignmentById(
- @PathVariable Long assignmentId
- ) {
- return MyResponse.success(assignmentService.findAssignmentById(assignmentId));
- }
- @PreAuthorize("hasRole('TEACHER')")
- @PutMapping
- public MyResponse updateAssignment(
- @AuthenticationPrincipal MyUserDetails user,
- @RequestParam Long assignmentId,
- @RequestBody AssignmentUpdateDTO assignmentDTO
- ) {
- return MyResponse.success(assignmentService.updateAssignment(user, assignmentId, assignmentDTO));
- }
- /**
- * 根据id删除某个作业
- * @param teacherId
- * @param assignmentId
- * @return
- */
- @PreAuthorize("hasRole('TEACHER')")
- @DeleteMapping
- public MyResponse deleteAssignment(
- @AuthenticationPrincipal(expression = "id") Long teacherId,
- @RequestParam Long assignmentId
- ) {
- assignmentService.deleteById(teacherId, assignmentId);
- return MyResponse.success("删除作业成功");
- }
- @PreAuthorize("hasRole('STUDENT')")
- @PostMapping("/engage")
- public MyResponse engageAssignment(
- @AuthenticationPrincipal(expression = "id") Long studentId,
- @RequestParam Long assignmentId
- ) {
- assignmentService.engageAssignment(studentId, assignmentId);
- aiDialogueService.createAIDialogue(assignmentId, studentId);
- return MyResponse.success("参加作业成功");
- }
- @GetMapping("/engage")
- public MyResponse getEngagement(
- @RequestParam Long studentId,
- @RequestParam Long assignmentId
- ) {
- return MyResponse.success(assignmentService.getEngagement(studentId, assignmentId));
- }
- @GetMapping("/engage/detail")
- public MyResponse getDetailEngagement(
- @RequestParam Long studentId,
- @RequestParam Long assignmentId
- ) {
- return MyResponse.success(assignmentService.getDetailEngagement(studentId, assignmentId));
- }
- @PutMapping("/engage/submit")
- public MyResponse engagementSubmit(
- @RequestParam Long studentId,
- @RequestParam Long assignmentId
- ) {
- assignmentService.engagementSubmit(studentId, assignmentId);
- return MyResponse.success("作业提交成功");
- }
- @PutMapping("/engage/stage")
- public MyResponse engagementStage(
- @RequestParam Long studentId,
- @RequestParam Long assignmentId
- ) {
- assignmentService.engagementStage(studentId, assignmentId);
- return MyResponse.success("作业暂存成功");
- }
- @PreAuthorize("hasRole('TEACHER')")
- @PutMapping("/engage/correct")
- public MyResponse engagementCorrect(
- @AuthenticationPrincipal(expression = "id") Long teacherId,
- @RequestParam Long studentId,
- @RequestParam Long assignmentId,
- @RequestBody CorrectDTO correctDTO
- ) {
- assignmentService.engagementCorrect(teacherId, studentId, assignmentId, correctDTO);
- return MyResponse.success("批改成功");
- }
- /**
- * 更新状态(需要多种情况讨论)
- * @param assignmentId
- * @param status
- * @return
- */
- @PutMapping("/updateStatus")
- public MyResponse updateStatus(
- @RequestParam Long assignmentId,
- @RequestParam AssignmentCompletionStatus status) {
- return MyResponse.success("");
- }
- }
|