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