소스 검색

优化游戏排序bug

hurixing 1 년 전
부모
커밋
4289133b99

+ 14 - 0
hcp-core/src/main/java/com/yingyangfly/core/service/impl/GameServiceImpl.java

@@ -143,6 +143,12 @@ public class GameServiceImpl extends ServiceImpl<GameMapper, Game> implements Ga
     @Override
     public boolean saveGame(Game game) {
         if(game.getId() == null){
+            LambdaQueryWrapper<Game> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+            lambdaQueryWrapper.eq(Game::getOrderNum,game.getOrderNum());
+            Long count = gameMapper.selectCount(lambdaQueryWrapper);
+            if (count > 0){
+                throw new RuntimeException("显示顺序不能重复");
+            }
             game.setId(IdWorker.getId());
             Game gameDb = gameMapper.selectMaxGameCode();
             Integer gamecode = Integer.parseInt(gameDb.getGameCode())+1;
@@ -156,6 +162,14 @@ public class GameServiceImpl extends ServiceImpl<GameMapper, Game> implements Ga
         }
         Game gameUpdate = this.getById(game.getId());
         if (ObjectUtils.isNotNull(gameUpdate)){
+            if (game.getOrderNum() != gameUpdate.getOrderNum()){
+                LambdaQueryWrapper<Game> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+                lambdaQueryWrapper.eq(Game::getOrderNum,game.getOrderNum());
+                Long count = gameMapper.selectCount(lambdaQueryWrapper);
+                if (count > 0){
+                    throw new RuntimeException("显示顺序不能重复");
+                }
+            }
             // 修改游戏 同步数据给用户游戏
             GameUser gameUser = new GameUser();
             gameUser.setTotalNum(game.getTotalNum());

+ 13 - 0
hcp-platform/src/test/java/com/yingyangfly/core/recommend/RecommendFacadeTest.java

@@ -51,4 +51,17 @@ class RecommendFacadeTest {
             gameUserService.update(gameUser,gameUserLambdaQueryWrapper);
         }
     }
+
+    @Test
+    void test1() {
+        LambdaQueryWrapper<Game> gameLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        gameLambdaQueryWrapper.orderByAsc(Game::getOrderNum);
+        List<Game> list = gameService.list(gameLambdaQueryWrapper);
+        Integer num = -9;
+        for (Game game : list) {
+            num = num +10;
+            game.setOrderNum(num);
+        }
+        gameService.updateBatchById(list);
+    }
 }