|
|
@@ -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 "删除成功";
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|