From 432d0581b799a14c26387c511e4529a1e41adb9c 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 14:52:34 +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 --- .../service/impl/LevelServiceImpl.java | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) 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 31573a7..b0d51b7 100644 --- a/src/main/java/com/example/catchTheLetters/service/impl/LevelServiceImpl.java +++ b/src/main/java/com/example/catchTheLetters/service/impl/LevelServiceImpl.java @@ -3,6 +3,7 @@ package com.example.catchTheLetters.service.impl; import com.example.catchTheLetters.entity.Level; import com.example.catchTheLetters.entity.ScoreInfo; 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; @@ -27,6 +28,9 @@ public class LevelServiceImpl implements LevelService { @Resource private MongoTemplate mongoTemplate; + @Resource + private AuthService authService; + @Override public R levelDetail(String id) { Level level = mongoTemplate.findOne(new Query(Criteria.where("id").is(id)), Level.class); @@ -46,16 +50,23 @@ public class LevelServiceImpl implements LevelService { @Override public R settle(ScoreInfo scoreInfo, String token) { - var map = JwtUtil.getPayload(token); - String id = null; - if (map != null) { - id = map.get("id").asString().replaceAll("\"", ""); - } - if (id == null) { + var user = authService.verify(token); + if (user == null) { return R.fail("token解析失败"); } - if (id.equals(scoreInfo.getUserId())) { + if (user.getId().equals(scoreInfo.getUserId())) { + // 比对这一关是否是用户的最新进度,如果是,就更新用户的进度 + var levelRes = levelDetail(scoreInfo.getLevelId()); + if (levelRes.getCode() == R.FAIL) { + return R.fail("查询关卡失败,请重试"); + } + if (levelRes.getData().getOrder() > user.getProgress()) { + user.setProgress(levelRes.getData().getOrder()); + authService.update(user, token); + } + ScoreInfo insert = mongoTemplate.insert(scoreInfo); + return R.ok(insert); } return R.fail("添加失败,请重试");