feat(grade): 添加年级列表及分页功能

- 前端新增年级列表展示表格和分页组件,同时支持加载状态显示
- 新增 grade.js 接口调用,支持分页查询年级数据
- 后端新增 GradeController 提供分页查询接口 /grade/list
- 实现 GradeService 新增分页查询和总数量统计方法
- 添加 GradeDOMapper 新增分页查询及计数 SQL 语句
- 定义请求与响应VO类用于年级分页查询接口数据传输
- 页面 onMounted 时同时请求班级列表和年级列表数据,提升数据展示完整性
This commit is contained in:
lbw
2025-12-15 10:45:15 +08:00
parent ef48923422
commit 857fa85c74
9 changed files with 159 additions and 8 deletions

View File

@@ -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<FindGradeListRspVO> findGradeList(@RequestBody FindGradeListReqVO findGradeListReqVO) {
Integer page = findGradeListReqVO.getPage();
Integer pageSize = findGradeListReqVO.getPageSize();
List<GradeDO> gradeList = gradeService.findGradeList(page, pageSize);
List<FindGradeListRspVO> 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);
}
}

View File

@@ -10,4 +10,8 @@ public interface GradeDOMapper {
GradeDO selectById(Integer id);
List<GradeDO> selectByGradeIds(@Param("gradeIds") List<Integer> gradeIds);
List<GradeDO> selectList(@Param("startIndex") Integer startIndex, @Param("pageSize") Integer pageSize);
Integer selectCount();
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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<GradeDO> findGradeList(Integer page, Integer PageSize);
Integer findGradeCount();
}

View File

@@ -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<GradeDO> findGradeList(Integer page, Integer PageSize) {
return gradeDOMapper.selectList((page - 1) * PageSize, PageSize);
}
@Override
public Integer findGradeCount() {
return gradeDOMapper.selectCount();
}
}

View File

@@ -12,6 +12,7 @@
from grade
where id = #{id}
</select>
<select id="selectByGradeIds" resultMap="BaseResultMap">
select *
from grade
@@ -21,4 +22,15 @@
</foreach>
</select>
<select id="selectList" resultMap="BaseResultMap">
select *
from grade
limit #{startIndex},#{pageSize}
</select>
<select id="selectCount" resultType="java.lang.Integer">
select count(1)
from grade
</select>
</mapper>