From 1b61e9acf6e4d98be2e419412aae9f912fc81fe1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=9A=AE=E5=B9=BC=E9=B8=9F?= <2960474346@qq.com> Date: Sun, 14 Apr 2024 15:33:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=94=A8=E6=88=B7=E8=BF=9B?= =?UTF-8?q?=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../catchTheLetters/entity/ScoreInfo.java | 4 ++++ .../service/impl/LevelServiceImpl.java | 18 +++++++++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/example/catchTheLetters/entity/ScoreInfo.java b/src/main/java/com/example/catchTheLetters/entity/ScoreInfo.java index 37b7466..cd2df07 100644 --- a/src/main/java/com/example/catchTheLetters/entity/ScoreInfo.java +++ b/src/main/java/com/example/catchTheLetters/entity/ScoreInfo.java @@ -11,6 +11,10 @@ import java.io.Serializable; */ @Data public class ScoreInfo implements Serializable { + /** + * ID + */ + private String id; /** * 用户ID */ 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 b0d51b7..2afa42d 100644 --- a/src/main/java/com/example/catchTheLetters/service/impl/LevelServiceImpl.java +++ b/src/main/java/com/example/catchTheLetters/service/impl/LevelServiceImpl.java @@ -60,12 +60,24 @@ public class LevelServiceImpl implements LevelService { if (levelRes.getCode() == R.FAIL) { return R.fail("查询关卡失败,请重试"); } - if (levelRes.getData().getOrder() > user.getProgress()) { + if (user.getProgress() == null || levelRes.getData().getOrder() > user.getProgress()) { user.setProgress(levelRes.getData().getOrder()); - authService.update(user, token); + // 这里要直接存,因为authService的update方法没有修改progress字段 + mongoTemplate.save(user); } - ScoreInfo insert = mongoTemplate.insert(scoreInfo); + // 先获取数据库中的分数,如果有则比较,如果没有则直接插入 + var score = mongoTemplate.findOne(new Query(Criteria.where("userId").is(scoreInfo.getUserId()).and("levelId").is(scoreInfo.getLevelId())), ScoreInfo.class); + ScoreInfo insert = new ScoreInfo(); + if (score != null) { + if (score.getScore() < scoreInfo.getScore()) { + score.setScore(scoreInfo.getScore()); + score.setTime(scoreInfo.getTime()); + insert = mongoTemplate.save(score); + } + } else { + insert = mongoTemplate.save(scoreInfo); + } return R.ok(insert); }