Jelajahi Sumber

Merge branch 'lll_refctor' of FanYanPeng/EAI-Backend into refactor

LiuLuLin 7 bulan lalu
induk
melakukan
eaeed19541

+ 1 - 1
application.yaml

@@ -100,4 +100,4 @@ springdoc:
   swagger-ui:
     enabled: true
     path: /doc/swagger/swagger-ui.html
-    packagesToScan: com.njuzr.eaibackend.controller
+    packagesToScan: com.njuzr.eaibackend.controller

+ 12 - 0
src/main/java/com/njuzr/eaibackend/mapper/CourseStudentMapper.java

@@ -1,5 +1,6 @@
 package com.njuzr.eaibackend.mapper;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.njuzr.eaibackend.po.Course;
@@ -24,4 +25,15 @@ public interface CourseStudentMapper extends BaseMapper<Enrollment> {
     Page<Course> selectCoursesByStudentId(Page<Course> page, Long studentId);
 
     int dropCourse(Long studentId, Long courseId);
+
+    default int deleteByStudentIds(List<Long> studentIds, Long courseId) {
+        if (studentIds == null || studentIds.isEmpty()) {
+            return 0;
+        }
+
+        QueryWrapper<Enrollment> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("course_id", courseId);
+        queryWrapper.in("student_id", studentIds);
+        return this.delete(queryWrapper);
+    }
 }

+ 11 - 4
src/main/java/com/njuzr/eaibackend/service/impl/ClassServiceImpl.java

@@ -4,9 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.njuzr.eaibackend.dto.ClassDTO;
 import com.njuzr.eaibackend.enums.ClassStudentState;
 import com.njuzr.eaibackend.exception.MyException;
-import com.njuzr.eaibackend.mapper.ClassMapper;
-import com.njuzr.eaibackend.mapper.ClassStudentMapper;
-import com.njuzr.eaibackend.mapper.UserMapper;
+import com.njuzr.eaibackend.mapper.*;
 import com.njuzr.eaibackend.po.Class;
 import com.njuzr.eaibackend.po.ClassStudent;
 import com.njuzr.eaibackend.po.User;
@@ -38,11 +36,13 @@ public class ClassServiceImpl implements ClassService {
     private final ClassMapper classMapper;
     private final ClassStudentMapper classStudentMapper;
     private final UserMapper userMapper;
+    private final CourseStudentMapper courseStudentMapper;
 
-    public ClassServiceImpl(ClassMapper classMapper, ClassStudentMapper classStudentMapper, UserMapper userMapper) {
+    public ClassServiceImpl(ClassMapper classMapper, ClassStudentMapper classStudentMapper, UserMapper userMapper, CourseStudentMapper courseStudentMapper) {
         this.classMapper = classMapper;
         this.classStudentMapper = classStudentMapper;
         this.userMapper = userMapper;
+        this.courseStudentMapper = courseStudentMapper;
     }
 
     @Override
@@ -287,6 +287,13 @@ public class ClassServiceImpl implements ClassService {
                 .filter(number -> !existingNumbers.contains(number))
                 .collect(Collectors.toList());
 
+        List<Long> studentIds = students.stream().map(student ->{
+            User user = userMapper.selectByOfficialNumber(student.getOfficialNumber());
+            return user.getId();
+        }).toList();
+        // 8. 删除课程,学生表中的记录
+        Class aClass = classMapper.selectById(classId);
+        courseStudentMapper.deleteByStudentIds(studentIds,aClass.getCourseId());
         String successMsg = "成功删除 " + deleteCount + " 名学生";
         if (!notFoundNumbers.isEmpty()) {
             String notFoundMsg = ",但以下学号未在班级中找到: " + String.join(", ", notFoundNumbers);

+ 13 - 5
src/main/java/com/njuzr/eaibackend/service/impl/DoubaoServiceImpl.java

@@ -299,11 +299,19 @@ public class DoubaoServiceImpl implements DoubaoService {
     }
 
     private String getSystemMessageContent() {
-        return "请你扮演一位经验丰富的英文外教,当用户发出 “开始对话” " +
-                "的指令时,在第一次时需使用固定开场话术:“Hello! Glad to have a conversation with you about [用户指定主题词]. " +
-                "Let us get started!” 对话过程中,全程使用自然、地道的英语表达,注重语音语调的模仿,通过提问、分享观点等方式积极引导对话深入进行,\n" +
-                "但绝对不能在对话中给出任何反馈、错误指正、建议或分析影响用户体验和对你的评价,只进行对话内容。当用户发出 “结束对话” 的指令时," +
-                "必须回复:“Okay, our conversation about [用户指定主题词] ends here. I hope it was helpful to you.”\n" ;
+        return "请你扮演一位经验丰富的英文外教,专注提高用户的英语对话能力。\n\n" +
+                "**关键指导原则:**\n" +
+                "1. **平衡对话:** 你的每次回复控制在2-3句话,确保用户有足够的发言机会。避免长篇大论或罗列信息。\n" +
+                "2. **自然表达:** 使用地道的英语口语表达,避免数字分条(如1、2、3)或项目符号(*)。使用自然过渡词如'First','Additionally','Another aspect','Also'等。\n" +
+                "3. **简洁格式:** 避免使用任何可能影响语音转文字的符号(如*、#、- 等列表标记)。\n" +
+                "4. **对话引导:** 通过开放式问题、分享简短观点或提出反问来推动对话,但不要给出反馈、纠正或建议。\n\n" +
+                "**对话流程要求:**\n" +
+                "- 当用户说「开始对话」时,使用固定开场白:\"Hello! Glad to have a conversation with you about [主题]. Let us get started!\"\n" +
+                "- 对话中:保持回复简洁,每次最多3-4句话,然后通过问题将话题交还给用户。\n" +
+                "- 当用户说「结束对话」时,回复:\"Okay, our conversation about [主题] ends here. I hope it was helpful to you.\"\n\n" +
+                "**优化示例:**\n" +
+                "❌ 避免:\"1. Reduce energy... 2. Conserve water... 3. Use renewable...\"\n" +
+                "✅ 改为:\"There are quite a few things we can do. For starters, reducing energy usage by turning off unused devices helps a lot. Another practical step is conserving water with shorter showers. What do you think about these approaches?\"\n";
     }
 
     @Override