Explorar el Código

Merge remote-tracking branch 'refs/remotes/origin/refactor' into feat/ai_evaluation

baiqi hace 1 año
padre
commit
25bb4100c9

+ 1 - 1
application.yaml

@@ -55,7 +55,7 @@ aliyun:
     bucketName: eai-files
 
 logging:
-  config: classpath:log4j2-prod.xml
+  config: classpath:log4j2-dev.xml
 
 openai:
   chatgpt:

+ 1 - 1
pom.xml

@@ -172,7 +172,7 @@
         <dependency>
             <groupId>com.volcengine</groupId>
             <artifactId>volcengine-java-sdk-ark-runtime</artifactId>
-            <version>LATEST</version>
+            <version>0.2.9</version>
         </dependency>
         <!--   讯飞语音合成依赖     -->
         <dependency>

+ 1 - 0
src/main/java/com/njuzr/eaibackend/config/JWTAuthenticationFilter.java

@@ -54,6 +54,7 @@ public class JWTAuthenticationFilter extends OncePerRequestFilter {
         try {
             if(token == null) {
                 chain.doFilter(request, response);
+                return;
             }
 
             String phone = jwtTokenUtil.parseToken(token);

+ 1 - 1
src/main/java/com/njuzr/eaibackend/controller/AuthenticationController.java

@@ -52,6 +52,6 @@ public class AuthenticationController {
 
     @GetMapping("/token")
     public MyResponse authToken(@RequestParam("token") String token){
-        return authenticationService.authToken(token);
+        return authenticationService.loginByPortal(token);
     }
 }

+ 48 - 0
src/main/java/com/njuzr/eaibackend/controller/ClassController.java

@@ -0,0 +1,48 @@
+package com.njuzr.eaibackend.controller;
+
+import com.njuzr.eaibackend.dto.ClassDTO;
+import com.njuzr.eaibackend.po.Class;
+import com.njuzr.eaibackend.service.ClassService;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/api/class")
+public class ClassController {
+    private final ClassService classService;
+
+    public ClassController(ClassService classService) {
+        this.classService = classService;
+    }
+
+    @PostMapping("/create")
+    public MyResponse createClass(@RequestBody ClassDTO classDTO){
+        Class aClass = classService.createClass(classDTO);
+        return MyResponse.success(aClass);
+    }
+
+    @PutMapping("/update")
+    public MyResponse updateClass(@RequestBody ClassDTO classDTO){
+        return MyResponse.success(classService.updateClass(classDTO));
+    }
+
+    @GetMapping("/select")
+    public MyResponse selectClass(@RequestParam Long courseId){
+        List<Class> li= classService.select(courseId);
+        return MyResponse.success(li);
+    }
+
+    @DeleteMapping("/delete")
+    public MyResponse deleteClass(@RequestParam Long classId){
+        String result = classService.deleteClassWithCheck(classId);
+        switch (result) {
+            case "删除成功":
+                return MyResponse.success(result);
+            case "班级不存在":
+                return MyResponse.error(404, result);
+            default: // 包括 "班级中还有学生" 和 "删除失败"
+                return MyResponse.error(400, result);
+        }
+    }
+}

+ 18 - 0
src/main/java/com/njuzr/eaibackend/dto/ClassDTO.java

@@ -0,0 +1,18 @@
+package com.njuzr.eaibackend.dto;
+
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+@Data
+public class ClassDTO {
+    @NotNull(message = "班级名不能为空")
+    private String className;
+    @NotNull(message = "课程id不能缺失")
+    private Long courseId;
+
+    private Long classId;
+
+    private String classTime;
+
+    private Long teacherId;
+}

+ 9 - 0
src/main/java/com/njuzr/eaibackend/mapper/ClassMapper.java

@@ -0,0 +1,9 @@
+package com.njuzr.eaibackend.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.njuzr.eaibackend.po.Class;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ClassMapper extends BaseMapper<Class> {
+}

+ 21 - 0
src/main/java/com/njuzr/eaibackend/po/Class.java

@@ -0,0 +1,21 @@
+package com.njuzr.eaibackend.po;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+
+@Data
+@TableName("class")
+public class Class {
+    @TableId(type = IdType.AUTO)
+    private Long classId;
+
+    private String className;
+
+    private Long courseId;
+
+    private int stuNumber;
+
+    private String classTime;
+
+    private Long teacherId;
+}

+ 0 - 2
src/main/java/com/njuzr/eaibackend/service/AuthenticationService.java

@@ -11,6 +11,4 @@ public interface AuthenticationService {
     MyResponse loginByEmail(EmailLoginDTO emailLoginDTO);
 
     MyResponse loginByPortal(String token);
-
-    MyResponse authToken(String token);
 }

+ 21 - 0
src/main/java/com/njuzr/eaibackend/service/ClassService.java

@@ -0,0 +1,21 @@
+package com.njuzr.eaibackend.service;
+
+import com.njuzr.eaibackend.dto.ClassDTO;
+import com.njuzr.eaibackend.po.Class;
+
+import java.util.List;
+
+public interface ClassService {
+    Class createClass(ClassDTO classDTO);
+
+    Class updateClass(ClassDTO classDTO);
+
+    List<Class> select(Long courseId);
+
+    /**
+     * 删除班级(需检查学生数量)
+     * @param classId 班级ID
+     * @return 删除结果信息
+     */
+    String deleteClassWithCheck(Long classId);
+}

+ 1 - 13
src/main/java/com/njuzr/eaibackend/service/impl/AuthenticationServiceImpl.java

@@ -24,6 +24,7 @@ import org.springframework.security.authentication.BadCredentialsException;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.security.core.userdetails.UsernameNotFoundException;
 import org.springframework.stereotype.Service;
 
@@ -139,18 +140,5 @@ public class AuthenticationServiceImpl implements AuthenticationService {
         return MyResponse.success(userLoginVO);
     }
 
-    @Override
-    public MyResponse authToken(String token) {
-        String phone = jwtTokenUtil.parseToken(token);
-        System.out.println("official number :" + phone);
-        UserLoginVO userLoginVO = ModelMapperUtil.map(userMapper.selectByPhone(phone), UserLoginVO.class);
-        if(userLoginVO != null){
-            userLoginVO.setToken(token);
-            return MyResponse.success(userLoginVO);
-        } else {
-            return MyResponse.error(400,"登录失败");
-        }
-    }
-
 
 }

+ 96 - 0
src/main/java/com/njuzr/eaibackend/service/impl/ClassServiceImpl.java

@@ -0,0 +1,96 @@
+package com.njuzr.eaibackend.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.njuzr.eaibackend.dto.ClassDTO;
+import com.njuzr.eaibackend.exception.MyException;
+import com.njuzr.eaibackend.mapper.ClassMapper;
+import com.njuzr.eaibackend.po.Class;
+import com.njuzr.eaibackend.service.ClassService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.HttpStatus;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+@Slf4j
+@Service
+public class ClassServiceImpl implements ClassService {
+    private final ClassMapper classMapper;
+
+    public ClassServiceImpl(ClassMapper classMapper) {
+        this.classMapper = classMapper;
+    }
+
+    @Override
+    public Class createClass(ClassDTO classDTO) {
+        Class aClass =new Class();
+        aClass.setClassName(classDTO.getClassName());
+        aClass.setCourseId(classDTO.getCourseId());
+        aClass.setClassTime(classDTO.getClassTime());
+        aClass.setTeacherId(classDTO.getTeacherId());
+        int status = classMapper.insert(aClass);
+        if (status == 0) {
+            log.error("创建课程失败,数据库插入错误!");
+            throw new MyException(HttpStatus.INTERNAL_SERVER_ERROR.value(), HttpStatus.INTERNAL_SERVER_ERROR.getReasonPhrase()+":"+"创建班级错误");
+        }
+        return aClass;
+    }
+
+    @Override
+    public Class updateClass(ClassDTO classDTO) {
+        Class aClass=new Class();
+        aClass.setClassName(classDTO.getClassName());
+        aClass.setClassId(classDTO.getClassId());
+        aClass.setClassTime(classDTO.getClassTime());
+        try {
+            int code = classMapper.updateById(aClass);
+            if (code == 0) {
+                throw MyException.create(HttpStatus.INTERNAL_SERVER_ERROR, "更新班级失败");
+            }
+        } catch (Exception e) {
+            log.error(e.getMessage());
+            throw MyException.create(HttpStatus.INTERNAL_SERVER_ERROR, "更新班级失败");
+        }
+        aClass= classMapper.selectById(classDTO.getClassId());
+        return aClass;
+    }
+
+    @Override
+    public List<Class> select(Long courseId) {
+        QueryWrapper<Class> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("course_id", courseId); // 按course_id查询
+        List<Class> res= classMapper.selectList(queryWrapper);
+        return res;
+    }
+
+    @Override
+    @Transactional
+    public String deleteClassWithCheck(Long classId) {
+        // 1. 查询班级信息
+        Class cls = classMapper.selectById(classId);
+        if (cls == null) {
+            return "班级不存在";
+        }
+
+        // 2. 检查学生数量
+        if (cls.getStuNumber() > 0) {
+            return "班级中还有学生,无法删除";
+        }
+
+        // 3. 使用Mapper执行带条件的删除
+        QueryWrapper<Class> deleteWrapper = new QueryWrapper<>();
+        deleteWrapper.eq("class_id", classId)
+                .eq("stu_number", 0); // 双重检查
+
+        int affectedRows = classMapper.delete(deleteWrapper);
+
+        if (affectedRows == 0) {
+            return "删除失败(可能学生数量已变化)";
+        }
+
+        return "删除成功";
+    }
+
+
+}