diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/controller/StudentLessonPlansController.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/controller/StudentLessonPlansController.java new file mode 100644 index 0000000..2e22b5a --- /dev/null +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/controller/StudentLessonPlansController.java @@ -0,0 +1,77 @@ +package com.yinlihupo.enlish.service.controller; + +import com.yinlihupo.enlish.service.domain.dataobject.LessonPlansDO; +import com.yinlihupo.enlish.service.domain.dataobject.StudentLessonPlansDO; +import com.yinlihupo.enlish.service.model.bo.StudentDetail; +import com.yinlihupo.enlish.service.model.vo.plan.FindStudentPlansReqVO; +import com.yinlihupo.enlish.service.model.vo.plan.FindStudentPlansRspVO; +import com.yinlihupo.enlish.service.model.vo.plan.LessonPlanItem; +import com.yinlihupo.enlish.service.service.LessonPlansService; +import com.yinlihupo.enlish.service.service.StudentLessonPlansService; +import com.yinlihupo.enlish.service.service.StudentService; +import com.yinlihupo.framework.biz.operationlog.aspect.ApiOperationLog; +import com.yinlihupo.framework.common.response.PageResponse; +import jakarta.annotation.Resource; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@RequestMapping("/studentLessonPlans/") +@RestController +public class StudentLessonPlansController { + + @Resource + private StudentLessonPlansService studentLessonPlansService; + @Resource + private StudentService studentService; + @Resource + private LessonPlansService lessonPlansService; + + @PostMapping("/list") + @ApiOperationLog(description = "查询学生学案") + public PageResponse findStudentPlans(@RequestBody FindStudentPlansReqVO findStudentPlansReqVO) { + + Integer studentLessonPlanTotal = studentLessonPlansService.findStudentLessonPlanTotal(); + + String name = findStudentPlansReqVO.getName(); + Integer page = findStudentPlansReqVO.getPage(); + Integer size = findStudentPlansReqVO.getSize(); + + List studentLessonPlansDOListPageSize = studentLessonPlansService.findStudentLessonPlansDOList(page, size, name); + Map> studentId2StudentLessonPlansDOListMap = studentLessonPlansDOListPageSize.stream().collect( + Collectors.groupingBy(StudentLessonPlansDO::getStudentId) + ); + + List planIds = studentLessonPlansDOListPageSize.stream().map(StudentLessonPlansDO::getPlanId).toList(); + List lessonPlans = lessonPlansService.findLessonPlans(planIds); + Map id2LessonPlansDO = lessonPlans.stream().collect(Collectors.toMap( + LessonPlansDO::getId, + lessonPlansDO -> lessonPlansDO + )); + + List studentDetailList = studentService.getStudentDetailList(new ArrayList<>(studentId2StudentLessonPlansDOListMap.keySet())); + + List findStudentPlansRspVOList = studentDetailList.stream().map(studentDetail -> { + List studentLessonPlansDOList = studentId2StudentLessonPlansDOListMap.get(studentDetail.getId()); + return FindStudentPlansRspVO.builder() + .name(studentDetail.getName()) + .id(studentDetail.getId()) + .classId(studentDetail.getClassId()) + .gradeId(studentDetail.getGradeId()) + .gradeName(studentDetail.getGradeName()) + .className(studentDetail.getClassName()) + .plans(studentLessonPlansDOList.stream().map(studentLessonPlansDO -> + LessonPlanItem.builder().title(id2LessonPlansDO.get(studentLessonPlansDO.getPlanId()).getTitle()).id(studentLessonPlansDO.getPlanId()).isFinished(studentLessonPlansDO.getIsFinished()).build() + ).toList()) + .build(); + }).toList(); + + return PageResponse.success(findStudentPlansRspVOList, page, studentLessonPlanTotal, size); + } +} diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/dataobject/StudentLessonPlansDO.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/dataobject/StudentLessonPlansDO.java index 29bec11..f04d40b 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/dataobject/StudentLessonPlansDO.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/dataobject/StudentLessonPlansDO.java @@ -25,6 +25,8 @@ public class StudentLessonPlansDO { private Integer totalCount; + private Integer isFinished; + private String memorizedWordsJson; private String unmemorizedWordsJson; diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/LessonPlansDOMapper.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/LessonPlansDOMapper.java index d45a096..0593c62 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/LessonPlansDOMapper.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/LessonPlansDOMapper.java @@ -1,10 +1,15 @@ package com.yinlihupo.enlish.service.domain.mapper; import com.yinlihupo.enlish.service.domain.dataobject.LessonPlansDO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; public interface LessonPlansDOMapper { void insert(LessonPlansDO lessonPlansDO); LessonPlansDO selectById(Integer id); + + List findLessonPlansByStudentId(@Param("ids") List ids); } \ No newline at end of file diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/StudentLessonPlansDOMapper.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/StudentLessonPlansDOMapper.java index b706aeb..f3f33a6 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/StudentLessonPlansDOMapper.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/StudentLessonPlansDOMapper.java @@ -1,8 +1,15 @@ package com.yinlihupo.enlish.service.domain.mapper; import com.yinlihupo.enlish.service.domain.dataobject.StudentLessonPlansDO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; public interface StudentLessonPlansDOMapper { void insert(StudentLessonPlansDO studentLessonPlansDO); + + List selectStudentLessonPlanList(@Param("startIndex") Integer startIndex, @Param("pageSize") Integer pageSize, @Param("name") String name); + + Integer selectStudentPlanTotal(); } \ No newline at end of file diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/plan/FindStudentPlansReqVO.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/plan/FindStudentPlansReqVO.java new file mode 100644 index 0000000..1ccd78f --- /dev/null +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/plan/FindStudentPlansReqVO.java @@ -0,0 +1,17 @@ +package com.yinlihupo.enlish.service.model.vo.plan; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@AllArgsConstructor +@NoArgsConstructor +@Data +@Builder +public class FindStudentPlansReqVO { + + String name; + Integer page; + Integer size; +} diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/plan/FindStudentPlansRspVO.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/plan/FindStudentPlansRspVO.java new file mode 100644 index 0000000..aa415d8 --- /dev/null +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/plan/FindStudentPlansRspVO.java @@ -0,0 +1,24 @@ +package com.yinlihupo.enlish.service.model.vo.plan; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@AllArgsConstructor +@NoArgsConstructor +@Data +@Builder +public class FindStudentPlansRspVO { + + private Integer id; + private String name; + private Integer classId; + private String className; + private Integer gradeId; + private String gradeName; + + List plans; +} diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/plan/LessonPlanItem.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/plan/LessonPlanItem.java new file mode 100644 index 0000000..9264e12 --- /dev/null +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/plan/LessonPlanItem.java @@ -0,0 +1,19 @@ +package com.yinlihupo.enlish.service.model.vo.plan; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@AllArgsConstructor +@NoArgsConstructor +@Data +@Builder +public class LessonPlanItem { + + private Integer id; + + private String title; + + private Integer isFinished; +} diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/LessonPlansService.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/LessonPlansService.java index bf42577..9bdbcff 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/LessonPlansService.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/LessonPlansService.java @@ -1,5 +1,11 @@ package com.yinlihupo.enlish.service.service; +import com.yinlihupo.enlish.service.domain.dataobject.LessonPlansDO; + +import java.util.List; + public interface LessonPlansService { void generateLessonPlans(Integer studentId, Integer unitId); + + List findLessonPlans(List ids); } diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/StudentLessonPlansService.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/StudentLessonPlansService.java new file mode 100644 index 0000000..bae4bf2 --- /dev/null +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/StudentLessonPlansService.java @@ -0,0 +1,12 @@ +package com.yinlihupo.enlish.service.service; + +import com.yinlihupo.enlish.service.domain.dataobject.StudentLessonPlansDO; + +import java.util.List; + +public interface StudentLessonPlansService { + + List findStudentLessonPlansDOList(Integer page, Integer size, String name); + + Integer findStudentLessonPlanTotal(); +} diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/plan/LessonPlansServiceImpl.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/plan/LessonPlansServiceImpl.java index ae52a3d..6d44ad9 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/plan/LessonPlansServiceImpl.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/plan/LessonPlansServiceImpl.java @@ -8,7 +8,6 @@ import com.yinlihupo.enlish.service.utils.DifyArticleClient; import com.yinlihupo.enlish.service.utils.StringToPlanMapUtil; import com.yinlihupo.framework.common.util.JsonUtils; import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.checkerframework.checker.nullness.qual.NonNull; import org.springframework.beans.factory.annotation.Value; @@ -150,6 +149,10 @@ public class LessonPlansServiceImpl implements LessonPlansService { } } + @Override + public List findLessonPlans(List ids) { + return lessonPlansDOMapper.findLessonPlansByStudentId(ids); + } private Map generateWeekendPlans(List checkList, diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/plan/StudentLessonPlansServiceImpl.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/plan/StudentLessonPlansServiceImpl.java new file mode 100644 index 0000000..d3ad86c --- /dev/null +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/plan/StudentLessonPlansServiceImpl.java @@ -0,0 +1,33 @@ +package com.yinlihupo.enlish.service.service.plan; + +import com.yinlihupo.enlish.service.domain.dataobject.StudentLessonPlansDO; +import com.yinlihupo.enlish.service.domain.mapper.StudentLessonPlansDOMapper; +import com.yinlihupo.enlish.service.service.StudentLessonPlansService; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@Slf4j +public class StudentLessonPlansServiceImpl implements StudentLessonPlansService { + + @Resource + private StudentLessonPlansDOMapper studentLessonPlansDOMapper; + + + @Override + public List findStudentLessonPlansDOList(Integer page, Integer size, String name) { + log.info("查询学生学案"); + if (name.isEmpty()) { + return studentLessonPlansDOMapper.selectStudentLessonPlanList((page - 1) * size, size, null); + } + return studentLessonPlansDOMapper.selectStudentLessonPlanList((page - 1) * size, size, name); + } + + @Override + public Integer findStudentLessonPlanTotal() { + return studentLessonPlansDOMapper.selectStudentPlanTotal(); + } +} diff --git a/enlish-service/src/main/resources/mapper/LessonPlansDOMapper.xml b/enlish-service/src/main/resources/mapper/LessonPlansDOMapper.xml index 1ff8f9c..21c0b35 100644 --- a/enlish-service/src/main/resources/mapper/LessonPlansDOMapper.xml +++ b/enlish-service/src/main/resources/mapper/LessonPlansDOMapper.xml @@ -22,4 +22,15 @@ where id = #{id} + + \ No newline at end of file diff --git a/enlish-service/src/main/resources/mapper/StudentLessonPlansDOMapper.xml b/enlish-service/src/main/resources/mapper/StudentLessonPlansDOMapper.xml index 73def9a..f786628 100644 --- a/enlish-service/src/main/resources/mapper/StudentLessonPlansDOMapper.xml +++ b/enlish-service/src/main/resources/mapper/StudentLessonPlansDOMapper.xml @@ -8,6 +8,7 @@ + @@ -22,4 +23,26 @@ ) + + + + \ No newline at end of file diff --git a/enlish-service/src/test/java/com/yinlihupo/enlish/service/mapper/PlanTest.java b/enlish-service/src/test/java/com/yinlihupo/enlish/service/mapper/PlanTest.java index bf98d4a..e2b9108 100644 --- a/enlish-service/src/test/java/com/yinlihupo/enlish/service/mapper/PlanTest.java +++ b/enlish-service/src/test/java/com/yinlihupo/enlish/service/mapper/PlanTest.java @@ -17,7 +17,7 @@ public class PlanTest { @Test public void test() throws Exception { - LessonPlansDO lessonPlansDO = lessonPlansDOMapper.selectById(21); + LessonPlansDO lessonPlansDO = lessonPlansDOMapper.selectById(58); Map stringObjectMap = JsonUtils.parseMap(lessonPlansDO.getContentDetails(), String.class, Object.class); for (Map.Entry entry : stringObjectMap.entrySet()) { System.out.println(entry.getKey()); diff --git a/enlish-vue/src/api/studentLessonPlans.js b/enlish-vue/src/api/studentLessonPlans.js new file mode 100644 index 0000000..e86568e --- /dev/null +++ b/enlish-vue/src/api/studentLessonPlans.js @@ -0,0 +1,9 @@ +import axios from "@/axios"; + +export function findStudentLessonPlans(page, size, name) { + return axios.post('/studentLessonPlans/list', { + page: page, + size: size, + name: name ?? '' + }) +} diff --git a/enlish-vue/src/pages/LearningPlan.vue b/enlish-vue/src/pages/LearningPlan.vue index 811cae1..4ce58e2 100644 --- a/enlish-vue/src/pages/LearningPlan.vue +++ b/enlish-vue/src/pages/LearningPlan.vue @@ -6,10 +6,44 @@ - - 学习计划 - 学习记录 - +
+
学案查询
+
+ + 查询 + 重置 +
+ + + + + + + + + +
+ +
+
@@ -18,5 +52,52 @@