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);
+ }
}