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("添加失败,请重试");