From 157894a8a69e08ea708f1cb31cc45dab327989d4 Mon Sep 17 00:00:00 2001 From: ETHEREAL <1498117283@qq.com> Date: Sat, 8 Jun 2024 20:23:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=88=86=E9=A1=B5=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E6=8E=92=E8=A1=8C=E6=A6=9C=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 5 +++++ .../controller/LevelController.java | 7 +++++++ .../example/catchTheLetters/entity/Page.java | 14 ++++++++++++++ .../catchTheLetters/entity/ScoreInfoPage.java | 15 +++++++++++++++ .../catchTheLetters/service/LevelService.java | 9 +++++++++ .../service/impl/LevelServiceImpl.java | 11 +++++++++++ .../catchTheLetters/TestInsertLevel.java | 17 +++++++++++++++++ 7 files changed, 78 insertions(+) create mode 100644 src/main/java/com/example/catchTheLetters/entity/Page.java create mode 100644 src/main/java/com/example/catchTheLetters/entity/ScoreInfoPage.java diff --git a/pom.xml b/pom.xml index 9977e8e..4474b9a 100644 --- a/pom.xml +++ b/pom.xml @@ -147,6 +147,11 @@ poi-ooxml 5.0.0 + + + org.springframework.boot + spring-boot-starter-mail + diff --git a/src/main/java/com/example/catchTheLetters/controller/LevelController.java b/src/main/java/com/example/catchTheLetters/controller/LevelController.java index 0adf7e0..ef9e905 100644 --- a/src/main/java/com/example/catchTheLetters/controller/LevelController.java +++ b/src/main/java/com/example/catchTheLetters/controller/LevelController.java @@ -1,6 +1,8 @@ package com.example.catchTheLetters.controller; import com.example.catchTheLetters.entity.Level; +import com.example.catchTheLetters.entity.Page; +import com.example.catchTheLetters.entity.ScoreInfoPage; import com.example.catchTheLetters.model.vo.RankVo; import com.example.catchTheLetters.entity.ScoreInfo; import com.example.catchTheLetters.service.LevelService; @@ -100,4 +102,9 @@ public class LevelController { return R.ok(versionService.getVersion("level")); } + @ApiOperation(value = "分页获取某个排行榜排名") + @GetMapping("/rank-page") + public R getScores(@RequestBody Page page) { + return R.ok(levelService.getScoreInfo( page.getLevelId(),page.getPage(), page.getSize())); + } } diff --git a/src/main/java/com/example/catchTheLetters/entity/Page.java b/src/main/java/com/example/catchTheLetters/entity/Page.java new file mode 100644 index 0000000..66d68fb --- /dev/null +++ b/src/main/java/com/example/catchTheLetters/entity/Page.java @@ -0,0 +1,14 @@ +package com.example.catchTheLetters.entity; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class Page { + private Integer page; + private Integer size; + private String levelId; +} diff --git a/src/main/java/com/example/catchTheLetters/entity/ScoreInfoPage.java b/src/main/java/com/example/catchTheLetters/entity/ScoreInfoPage.java new file mode 100644 index 0000000..14158d1 --- /dev/null +++ b/src/main/java/com/example/catchTheLetters/entity/ScoreInfoPage.java @@ -0,0 +1,15 @@ +package com.example.catchTheLetters.entity; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ScoreInfoPage { + private List scores; + private Long total; +} diff --git a/src/main/java/com/example/catchTheLetters/service/LevelService.java b/src/main/java/com/example/catchTheLetters/service/LevelService.java index 1012378..f7fde05 100644 --- a/src/main/java/com/example/catchTheLetters/service/LevelService.java +++ b/src/main/java/com/example/catchTheLetters/service/LevelService.java @@ -2,6 +2,7 @@ package com.example.catchTheLetters.service; import com.example.catchTheLetters.entity.Level; import com.example.catchTheLetters.entity.ScoreInfo; +import com.example.catchTheLetters.entity.ScoreInfoPage; import com.example.catchTheLetters.model.vo.RankVo; import com.example.catchTheLetters.utils.R; @@ -70,6 +71,14 @@ public interface LevelService { */ boolean update(Level level); + /** + * 分页获取某个关卡的排行榜 + * @param levelId 关卡id + * @param page 页数 + * @param size 大小 + * @return 集合 + */ + ScoreInfoPage getScoreInfo(String levelId, Integer page, Integer size); } diff --git a/src/main/java/com/example/catchTheLetters/service/impl/LevelServiceImpl.java b/src/main/java/com/example/catchTheLetters/service/impl/LevelServiceImpl.java index 2afa42d..626002e 100644 --- a/src/main/java/com/example/catchTheLetters/service/impl/LevelServiceImpl.java +++ b/src/main/java/com/example/catchTheLetters/service/impl/LevelServiceImpl.java @@ -2,12 +2,15 @@ package com.example.catchTheLetters.service.impl; import com.example.catchTheLetters.entity.Level; import com.example.catchTheLetters.entity.ScoreInfo; +import com.example.catchTheLetters.entity.ScoreInfoPage; import com.example.catchTheLetters.model.vo.RankVo; import com.example.catchTheLetters.service.AuthService; import com.example.catchTheLetters.service.LevelService; import com.example.catchTheLetters.utils.JwtUtil; import com.example.catchTheLetters.utils.R; import jakarta.annotation.Resource; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; @@ -128,4 +131,12 @@ public class LevelServiceImpl implements LevelService { var save = mongoTemplate.save(level); return save.getId() != null; } + + @Override + public ScoreInfoPage getScoreInfo(String levelId, Integer page, Integer size) { + long total = mongoTemplate.count(new Query(),ScoreInfo.class)/size; + Pageable pageable = PageRequest.of(page - 1, size); + List scores = mongoTemplate.find(new Query(Criteria.where("levelId").is(levelId)).with(pageable), ScoreInfo.class); + return new ScoreInfoPage(scores,total); + } } diff --git a/src/test/java/com/example/catchTheLetters/TestInsertLevel.java b/src/test/java/com/example/catchTheLetters/TestInsertLevel.java index f192caa..796b357 100644 --- a/src/test/java/com/example/catchTheLetters/TestInsertLevel.java +++ b/src/test/java/com/example/catchTheLetters/TestInsertLevel.java @@ -2,10 +2,16 @@ package com.example.catchTheLetters; import com.example.catchTheLetters.controller.LevelController; import com.example.catchTheLetters.entity.Level; +import com.example.catchTheLetters.entity.ScoreInfo; import jakarta.annotation.Resource; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; import java.util.ArrayList; import java.util.List; @@ -17,6 +23,9 @@ class TestInsertLevel { @Resource private LevelController levelController; + @Resource + private MongoTemplate mongoTemplate; + private final List words = new ArrayList<>() { { add("apple"); @@ -84,4 +93,12 @@ class TestInsertLevel { levelController.create(level); } + + @Test + @Disabled + void pageTest(){ + Pageable pageable = PageRequest.of(0, 1); + List scores = mongoTemplate.find(new Query(Criteria.where("levelId").is("0")).with(pageable), ScoreInfo.class); + System.out.println(scores); + } }