From 857fa85c7411db4268e652e55ce475f0ea739ffe Mon Sep 17 00:00:00 2001 From: lbw <1192299468@qq.com> Date: Mon, 15 Dec 2025 10:45:15 +0800 Subject: [PATCH] =?UTF-8?q?feat(grade):=20=E6=B7=BB=E5=8A=A0=E5=B9=B4?= =?UTF-8?q?=E7=BA=A7=E5=88=97=E8=A1=A8=E5=8F=8A=E5=88=86=E9=A1=B5=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 前端新增年级列表展示表格和分页组件,同时支持加载状态显示 - 新增 grade.js 接口调用,支持分页查询年级数据 - 后端新增 GradeController 提供分页查询接口 /grade/list - 实现 GradeService 新增分页查询和总数量统计方法 - 添加 GradeDOMapper 新增分页查询及计数 SQL 语句 - 定义请求与响应VO类用于年级分页查询接口数据传输 - 页面 onMounted 时同时请求班级列表和年级列表数据,提升数据展示完整性 --- .../service/controller/GradeController.java | 41 +++++++++++++++ .../service/domain/mapper/GradeDOMapper.java | 4 ++ .../model/vo/grade/FindGradeListReqVO.java | 16 ++++++ .../model/vo/grade/FindGradeListRspVO.java | 16 ++++++ .../enlish/service/service/GradeService.java | 6 +++ .../service/grade/GradeServiceImpl.java | 12 +++++ .../main/resources/mapper/GradeDOMapper.xml | 12 +++++ enlish-vue/src/api/grade.js | 8 +++ enlish-vue/src/pages/class.vue | 52 ++++++++++++++++--- 9 files changed, 159 insertions(+), 8 deletions(-) create mode 100644 enlish-service/src/main/java/com/yinlihupo/enlish/service/controller/GradeController.java create mode 100644 enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/grade/FindGradeListReqVO.java create mode 100644 enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/grade/FindGradeListRspVO.java create mode 100644 enlish-vue/src/api/grade.js diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/controller/GradeController.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/controller/GradeController.java new file mode 100644 index 0000000..db7105e --- /dev/null +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/controller/GradeController.java @@ -0,0 +1,41 @@ +package com.yinlihupo.enlish.service.controller; + + +import com.yinlihupo.enlish.service.domain.dataobject.GradeDO; +import com.yinlihupo.enlish.service.model.vo.grade.FindGradeListReqVO; +import com.yinlihupo.enlish.service.model.vo.grade.FindGradeListRspVO; +import com.yinlihupo.enlish.service.service.GradeService; +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.List; + +@RestController +@RequestMapping("/grade") +public class GradeController { + + @Resource + private GradeService gradeService; + + @PostMapping("/list") + @ApiOperationLog(description = "查询年级列表") + public PageResponse findGradeList(@RequestBody FindGradeListReqVO findGradeListReqVO) { + Integer page = findGradeListReqVO.getPage(); + Integer pageSize = findGradeListReqVO.getPageSize(); + List gradeList = gradeService.findGradeList(page, pageSize); + + List list = gradeList.stream().map(gradeDO -> FindGradeListRspVO.builder() + .id(gradeDO.getId()) + .title(gradeDO.getTitle()) + .build() + ).toList(); + Integer gradeCount = gradeService.findGradeCount(); + + return PageResponse.success(list, page, gradeCount, pageSize); + } +} diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/GradeDOMapper.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/GradeDOMapper.java index 49e3525..74a4821 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/GradeDOMapper.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/GradeDOMapper.java @@ -10,4 +10,8 @@ public interface GradeDOMapper { GradeDO selectById(Integer id); List selectByGradeIds(@Param("gradeIds") List gradeIds); + + List selectList(@Param("startIndex") Integer startIndex, @Param("pageSize") Integer pageSize); + + Integer selectCount(); } \ No newline at end of file diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/grade/FindGradeListReqVO.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/grade/FindGradeListReqVO.java new file mode 100644 index 0000000..df11160 --- /dev/null +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/grade/FindGradeListReqVO.java @@ -0,0 +1,16 @@ +package com.yinlihupo.enlish.service.model.vo.grade; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@AllArgsConstructor +@NoArgsConstructor +@Data +@Builder +public class FindGradeListReqVO { + + Integer page; + Integer pageSize; +} diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/grade/FindGradeListRspVO.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/grade/FindGradeListRspVO.java new file mode 100644 index 0000000..e08cbdd --- /dev/null +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/grade/FindGradeListRspVO.java @@ -0,0 +1,16 @@ +package com.yinlihupo.enlish.service.model.vo.grade; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@AllArgsConstructor +@NoArgsConstructor +@Data +@Builder +public class FindGradeListRspVO { + + private Integer id; + private String title; +} diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/GradeService.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/GradeService.java index af8afac..fdaa5de 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/GradeService.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/GradeService.java @@ -2,7 +2,13 @@ package com.yinlihupo.enlish.service.service; import com.yinlihupo.enlish.service.domain.dataobject.GradeDO; +import java.util.List; + public interface GradeService { GradeDO findByClassId(Integer classId); + + List findGradeList(Integer page, Integer PageSize); + + Integer findGradeCount(); } diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/grade/GradeServiceImpl.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/grade/GradeServiceImpl.java index 4baf4e7..0aba5bd 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/grade/GradeServiceImpl.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/grade/GradeServiceImpl.java @@ -6,6 +6,8 @@ import com.yinlihupo.enlish.service.service.GradeService; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; +import java.util.List; + @Service public class GradeServiceImpl implements GradeService { @@ -16,4 +18,14 @@ public class GradeServiceImpl implements GradeService { public GradeDO findByClassId(Integer classId) { return gradeDOMapper.selectById(classId); } + + @Override + public List findGradeList(Integer page, Integer PageSize) { + return gradeDOMapper.selectList((page - 1) * PageSize, PageSize); + } + + @Override + public Integer findGradeCount() { + return gradeDOMapper.selectCount(); + } } diff --git a/enlish-service/src/main/resources/mapper/GradeDOMapper.xml b/enlish-service/src/main/resources/mapper/GradeDOMapper.xml index b73ddef..b27b294 100644 --- a/enlish-service/src/main/resources/mapper/GradeDOMapper.xml +++ b/enlish-service/src/main/resources/mapper/GradeDOMapper.xml @@ -12,6 +12,7 @@ from grade where id = #{id} + + + + + \ No newline at end of file diff --git a/enlish-vue/src/api/grade.js b/enlish-vue/src/api/grade.js new file mode 100644 index 0000000..4435307 --- /dev/null +++ b/enlish-vue/src/api/grade.js @@ -0,0 +1,8 @@ +import axios from "@/axios"; + +export function getGradeList(page, size) { + return axios.post('/grade/list', { + page: page, + pageSize: size + }) +} \ No newline at end of file diff --git a/enlish-vue/src/pages/class.vue b/enlish-vue/src/pages/class.vue index 8a8720b..e3e2c9d 100644 --- a/enlish-vue/src/pages/class.vue +++ b/enlish-vue/src/pages/class.vue @@ -7,24 +7,21 @@
+
班级列表
- -
-
-
@@ -32,11 +29,19 @@
内容待完善
-
-
左下卡片
-
内容待完善
+
+
年级列表
+ + + + +
+ +
- +
@@ -48,12 +53,18 @@ import Header from '@/layouts/components/Header.vue' import { ref, onMounted } from 'vue' import { getClassList } from '@/api/class' +import { getGradeList } from '@/api/grade' const classes = ref([]) const pageNo = ref(1) const pageSize = ref(10) const totalCount = ref(0) const loading = ref(false) +const grades = ref([]) +const gradePageNo = ref(1) +const gradePageSize = ref(10) +const gradeTotalCount = ref(0) +const gradeLoading = ref(false) async function fetchClasses() { loading.value = true @@ -69,6 +80,20 @@ async function fetchClasses() { } } +async function fetchGrades() { + gradeLoading.value = true + try { + const res = await getGradeList(gradePageNo.value, gradePageSize.value) + const d = res.data + grades.value = Array.isArray(d.data) ? d.data : [] + gradeTotalCount.value = d.totalCount || 0 + gradePageNo.value = d.pageNo || gradePageNo.value + gradePageSize.value = d.pageSize || gradePageSize.value + } finally { + gradeLoading.value = false + } +} + function handlePageChange(p) { pageNo.value = p fetchClasses() @@ -79,7 +104,18 @@ function handleSizeChange(s) { fetchClasses() } +function handleGradePageChange(p) { + gradePageNo.value = p + fetchGrades() +} +function handleGradeSizeChange(s) { + gradePageSize.value = s + gradePageNo.value = 1 + fetchGrades() +} + onMounted(() => { fetchClasses() + fetchGrades() })