feat(student): 实现学生的新增与删除功能
- 新增AddStudentReqVO和DeleteStudentReqVO请求对象 - 在StudentController中添加新增和删除学生接口 - StudentService及其实现类增加新增和删除学生方法 - 通过StudentDOMapper新增插入和逻辑删除方法 - 新增AddStudentDialog组件,实现学生添加的表单及交互 - 在class.vue页面添加新增学生按钮及删除学生操作列 - API层新增addStudent和deleteStudent接口调用 - 删除学生时更新选中状态及重新加载学生列表 - 初始化新增学生时词汇掌握记录相关数据
This commit is contained in:
@@ -4,10 +4,7 @@ package com.yinlihupo.enlish.service.controller;
|
||||
import com.yinlihupo.enlish.service.domain.dataobject.ClassDO;
|
||||
import com.yinlihupo.enlish.service.domain.dataobject.GradeDO;
|
||||
import com.yinlihupo.enlish.service.domain.dataobject.StudentDO;
|
||||
import com.yinlihupo.enlish.service.model.vo.student.FindStudentDetailReqVO;
|
||||
import com.yinlihupo.enlish.service.model.vo.student.FindStudentDetailRspVO;
|
||||
import com.yinlihupo.enlish.service.model.vo.student.FindStudentsReqVO;
|
||||
import com.yinlihupo.enlish.service.model.vo.student.StudentItemRspVO;
|
||||
import com.yinlihupo.enlish.service.model.vo.student.*;
|
||||
import com.yinlihupo.enlish.service.service.ClassService;
|
||||
import com.yinlihupo.enlish.service.service.GradeService;
|
||||
import com.yinlihupo.enlish.service.service.StudentService;
|
||||
@@ -73,4 +70,18 @@ public class StudentController {
|
||||
|
||||
return Response.success(findStudentDetailRspVO);
|
||||
}
|
||||
|
||||
@PostMapping("add")
|
||||
@ApiOperationLog(description = "添加学生")
|
||||
public Response<Void> addStudent(@RequestBody AddStudentReqVO addStudentReqVO) {
|
||||
studentService.addStudent(addStudentReqVO);
|
||||
return Response.success();
|
||||
}
|
||||
|
||||
@PostMapping("delete")
|
||||
@ApiOperationLog(description = "删除学生")
|
||||
public Response<Void> deleteStudent(@RequestBody DeleteStudentReqVO deleteStudentReqVO) {
|
||||
studentService.deleteStudent(deleteStudentReqVO.getStudentId());
|
||||
return Response.success();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,4 +14,9 @@ public interface StudentDOMapper {
|
||||
StudentDO selectStudentById(Integer id);
|
||||
|
||||
List<StudentDO> selectStudentDOListByIds(@Param("ids") List<Integer> ids);
|
||||
|
||||
void insert(StudentDO studentDO);
|
||||
|
||||
// 逻辑删除
|
||||
void deleteById(Integer id);
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.yinlihupo.enlish.service.model.vo.student;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
@Builder
|
||||
public class AddStudentReqVO {
|
||||
|
||||
private String name;
|
||||
private Integer classId;
|
||||
private Integer gradeId;
|
||||
private LocalDateTime createTime;
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.yinlihupo.enlish.service.model.vo.student;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
@Builder
|
||||
public class DeleteStudentReqVO {
|
||||
|
||||
private Integer studentId;
|
||||
}
|
||||
@@ -3,6 +3,7 @@ package com.yinlihupo.enlish.service.service;
|
||||
|
||||
import com.yinlihupo.enlish.service.domain.dataobject.StudentDO;
|
||||
import com.yinlihupo.enlish.service.model.bo.StudentDetail;
|
||||
import com.yinlihupo.enlish.service.model.vo.student.AddStudentReqVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -15,4 +16,8 @@ public interface StudentService {
|
||||
StudentDO getStudentById(Integer studentId);
|
||||
|
||||
List<StudentDetail> getStudentDetailList(List<Integer> studentIdList);
|
||||
|
||||
void addStudent(AddStudentReqVO addStudentReqVO);
|
||||
|
||||
void deleteStudent(Integer studentId);
|
||||
}
|
||||
|
||||
@@ -4,14 +4,14 @@ package com.yinlihupo.enlish.service.service.student;
|
||||
import com.yinlihupo.enlish.service.domain.dataobject.ClassDO;
|
||||
import com.yinlihupo.enlish.service.domain.dataobject.GradeDO;
|
||||
import com.yinlihupo.enlish.service.domain.dataobject.StudentDO;
|
||||
import com.yinlihupo.enlish.service.domain.mapper.ClassDOMapper;
|
||||
import com.yinlihupo.enlish.service.domain.mapper.GradeDOMapper;
|
||||
import com.yinlihupo.enlish.service.domain.mapper.StudentDOMapper;
|
||||
import com.yinlihupo.enlish.service.domain.mapper.*;
|
||||
import com.yinlihupo.enlish.service.model.bo.StudentDetail;
|
||||
import com.yinlihupo.enlish.service.model.vo.student.AddStudentReqVO;
|
||||
import com.yinlihupo.enlish.service.service.StudentService;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -25,6 +25,10 @@ public class StudentServiceImpl implements StudentService {
|
||||
private GradeDOMapper gradeDOMapper;
|
||||
@Resource
|
||||
private ClassDOMapper classDOMapper;
|
||||
@Resource
|
||||
private VocabularyBankDOMapper vocabularyBankMapper;
|
||||
@Resource
|
||||
private WordMasteryLogDOMapper wordMasteryLogDOMapper;
|
||||
|
||||
@Override
|
||||
public List<StudentDO> getStudentsByClassIdAndGradeId(Integer classId, Integer gradeId, String name, Integer pageNo, Integer pageSize) {
|
||||
@@ -66,4 +70,27 @@ public class StudentServiceImpl implements StudentService {
|
||||
).toList();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addStudent(AddStudentReqVO addStudentReqVO) {
|
||||
String name = addStudentReqVO.getName();
|
||||
Integer classId = addStudentReqVO.getClassId();
|
||||
Integer gradeId = addStudentReqVO.getGradeId();
|
||||
LocalDateTime createTime = addStudentReqVO.getCreateTime();
|
||||
StudentDO studentDO = StudentDO.builder()
|
||||
.name(name)
|
||||
.classId(classId)
|
||||
.gradeId(gradeId)
|
||||
.startTime(createTime)
|
||||
.build();
|
||||
studentDOMapper.insert(studentDO);
|
||||
|
||||
List<Integer> integers = vocabularyBankMapper.selectAllIds();
|
||||
wordMasteryLogDOMapper.batchInsertInitialization(integers, studentDO.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteStudent(Integer studentId) {
|
||||
studentDOMapper.deleteById(studentId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,6 +25,8 @@
|
||||
<if test="name != null">
|
||||
AND name like concat('%', #{name}, '%')
|
||||
</if>
|
||||
and is_deleted = 0
|
||||
order by start_time desc
|
||||
LIMIT #{startIndex}, #{pageSize}
|
||||
</select>
|
||||
|
||||
@@ -47,4 +49,16 @@
|
||||
#{id}
|
||||
</foreach>
|
||||
</select>
|
||||
|
||||
<insert id="insert" useGeneratedKeys="true" keyProperty="id">
|
||||
insert into student
|
||||
(name, class_id, grade_id, is_deleted, start_time)
|
||||
values (#{name}, #{classId}, #{gradeId}, 0, #{startTime})
|
||||
</insert>
|
||||
|
||||
<update id="deleteById">
|
||||
update student
|
||||
set is_deleted = 1
|
||||
where id = #{id}
|
||||
</update>
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user