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 index 2e22b5a..280e933 100644 --- 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 @@ -5,12 +5,14 @@ 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.FinishStudentPlanReqVO; 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 com.yinlihupo.framework.common.response.Response; import jakarta.annotation.Resource; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -74,4 +76,17 @@ public class StudentLessonPlansController { return PageResponse.success(findStudentPlansRspVOList, page, studentLessonPlanTotal, size); } + + @PostMapping("/finish") + @ApiOperationLog(description = "完成学案") + public Response finishStudentPlan(@RequestBody FinishStudentPlanReqVO finishStudentPlanReqVO) { + Integer studentId = finishStudentPlanReqVO.getStudentId(); + Integer planId = finishStudentPlanReqVO.getPlanId(); + int lessonPlan = studentLessonPlansService.finishStudentLessonPlan(studentId, planId); + + if (lessonPlan > 0) { + return Response.success("完成学案成功"); + } + return Response.fail("完成学案失败"); + } } 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 f3f33a6..3ca8299 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 @@ -12,4 +12,6 @@ public interface StudentLessonPlansDOMapper { List selectStudentLessonPlanList(@Param("startIndex") Integer startIndex, @Param("pageSize") Integer pageSize, @Param("name") String name); Integer selectStudentPlanTotal(); + + Integer finfishStudentPlan(@Param("studentId") Integer studentId, @Param("planId") Integer planId, @Param("count") Integer count, @Param("mastery") double mastery); } \ No newline at end of file diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/VocabularyBankDOMapper.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/VocabularyBankDOMapper.java index e70c69e..c51a82d 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/VocabularyBankDOMapper.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/VocabularyBankDOMapper.java @@ -20,4 +20,6 @@ public interface VocabularyBankDOMapper { List selectVocabularyBankListStudentNotMaster(@Param("gradeId") Integer gradeId, @Param("studentId") Integer studentId); List selectVocabularyBankListSelfCheck(@Param("gradeId") Integer gradeId, @Param("studentId") Integer studentId, @Param("ids") List ids, @Param("wordCount") Integer wordCount); + + Integer selectWordTotal(); } \ No newline at end of file diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/WordMasteryLogDOMapper.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/WordMasteryLogDOMapper.java index 3d1a85d..46eecc3 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/WordMasteryLogDOMapper.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/WordMasteryLogDOMapper.java @@ -14,4 +14,6 @@ public interface WordMasteryLogDOMapper { int batchInsertInitialization(@Param("wordIds") List wordIds, @Param("studentId") Integer studentId); int batchUpdateStudentMastery(@Param("wordMasteryLogDOs") List wordMasteryLogDOs); + + int selectStudentStrengthCount(@Param("studentId") Integer studentId); } \ No newline at end of file diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/plan/FinishStudentPlanReqVO.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/plan/FinishStudentPlanReqVO.java new file mode 100644 index 0000000..ab46ec5 --- /dev/null +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/plan/FinishStudentPlanReqVO.java @@ -0,0 +1,16 @@ +package com.yinlihupo.enlish.service.model.vo.plan; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Data +public class FinishStudentPlanReqVO { + + private Integer studentId; + private Integer planId; +} 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 index bae4bf2..b36fd69 100644 --- 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 @@ -9,4 +9,6 @@ public interface StudentLessonPlansService { List findStudentLessonPlansDOList(Integer page, Integer size, String name); Integer findStudentLessonPlanTotal(); + + int finishStudentLessonPlan(Integer studentId, Integer planId); } 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 index d3ad86c..b069fb9 100644 --- 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 @@ -2,6 +2,8 @@ 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.domain.mapper.VocabularyBankDOMapper; +import com.yinlihupo.enlish.service.domain.mapper.WordMasteryLogDOMapper; import com.yinlihupo.enlish.service.service.StudentLessonPlansService; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; @@ -15,6 +17,10 @@ public class StudentLessonPlansServiceImpl implements StudentLessonPlansService @Resource private StudentLessonPlansDOMapper studentLessonPlansDOMapper; + @Resource + private WordMasteryLogDOMapper wordMasteryLogDOMapper; + @Resource + private VocabularyBankDOMapper vocabularyBankDOMapper; @Override @@ -30,4 +36,12 @@ public class StudentLessonPlansServiceImpl implements StudentLessonPlansService public Integer findStudentLessonPlanTotal() { return studentLessonPlansDOMapper.selectStudentPlanTotal(); } + + @Override + public int finishStudentLessonPlan(Integer studentId, Integer planId) { + int wordStrengthCount = wordMasteryLogDOMapper.selectStudentStrengthCount(studentId); + Integer wordTotal = vocabularyBankDOMapper.selectWordTotal(); + + return studentLessonPlansDOMapper.finfishStudentPlan(studentId, planId, wordStrengthCount, (double) wordStrengthCount / wordTotal); + } } diff --git a/enlish-service/src/main/resources/mapper/StudentLessonPlansDOMapper.xml b/enlish-service/src/main/resources/mapper/StudentLessonPlansDOMapper.xml index f786628..d80d9bd 100644 --- a/enlish-service/src/main/resources/mapper/StudentLessonPlansDOMapper.xml +++ b/enlish-service/src/main/resources/mapper/StudentLessonPlansDOMapper.xml @@ -37,6 +37,7 @@ ORDER BY slp_in.student_id LIMIT #{startIndex}, #{pageSize} ) AS temp ON slp.student_id = temp.student_id + where slp.is_finished = 0 ORDER BY slp.id @@ -45,4 +46,12 @@ FROM student_lesson_plans; + + update student_lesson_plans + set is_finished = 1, + total_count = #{count}, + mastery_rat = #{mastery} + where student_id = #{studentId} + and plan_id = #{planId} + \ No newline at end of file diff --git a/enlish-service/src/main/resources/mapper/VocabularyBankDOMapper.xml b/enlish-service/src/main/resources/mapper/VocabularyBankDOMapper.xml index d2b8403..253d02a 100644 --- a/enlish-service/src/main/resources/mapper/VocabularyBankDOMapper.xml +++ b/enlish-service/src/main/resources/mapper/VocabularyBankDOMapper.xml @@ -117,5 +117,9 @@ limit #{wordCount} + \ No newline at end of file diff --git a/enlish-service/src/main/resources/mapper/WordMasteryLogDOMapper.xml b/enlish-service/src/main/resources/mapper/WordMasteryLogDOMapper.xml index 32d32ee..4961b70 100644 --- a/enlish-service/src/main/resources/mapper/WordMasteryLogDOMapper.xml +++ b/enlish-service/src/main/resources/mapper/WordMasteryLogDOMapper.xml @@ -22,6 +22,12 @@ order by memory_strength desc limit #{limit} + insert into word_mastery_log (student_id, word_id, update_time) diff --git a/enlish-vue/src/api/studentLessonPlans.js b/enlish-vue/src/api/studentLessonPlans.js index e86568e..b85368e 100644 --- a/enlish-vue/src/api/studentLessonPlans.js +++ b/enlish-vue/src/api/studentLessonPlans.js @@ -7,3 +7,10 @@ export function findStudentLessonPlans(page, size, name) { name: name ?? '' }) } + +export function finishLessonPlan(studentId, planId) { + return axios.post('/studentLessonPlans/finish', { + studentId: studentId, + planId: planId + }) +} diff --git a/enlish-vue/src/pages/LearningPlan.vue b/enlish-vue/src/pages/LearningPlan.vue index 0df84ce..4f625dc 100644 --- a/enlish-vue/src/pages/LearningPlan.vue +++ b/enlish-vue/src/pages/LearningPlan.vue @@ -28,7 +28,7 @@ - + @@ -62,7 +70,7 @@