瀏覽代碼

fix : 解决修仙游戏漏上报角色的问题03

bilingfeng 1 年之前
父節點
當前提交
ec8ee2bc2e

+ 1 - 1
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/SDKApplication.java

@@ -23,7 +23,7 @@ public class SDKApplication {
 
     public static void main(String[] args) {
         SpringApplication.run(SDKApplication.class, args);
-        System.out.println("赞象SDK服务启动成功 <解决修仙游戏漏上报角色的问题02> ( ´・・)ノ(._.`) \n" +
+        System.out.println("赞象SDK服务启动成功 <解决修仙游戏漏上报角色的问题03> ( ´・・)ノ(._.`) \n" +
                 " ___________ _   __\n" +
                 "/  ___|  _  \\ | / /\n" +
                 "\\ `--.| | | | |/ / \n" +

+ 22 - 19
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/impl/GameUserRoleServiceImpl.java

@@ -87,11 +87,11 @@ public class GameUserRoleServiceImpl extends ServiceImpl<GameUserRoleMapper, Gam
         Tuple2<String, String> tuple2 = userTokenService.getMySign(gameExt, param.getUserId(), param.getToken());
         if (!Objects.equals(tuple2.getT2(), param.getSign())) {
             log.error("参数错误 , str : {}, mySign : {}, sign : {}", tuple2.getT1(), tuple2.getT2(), param.getSign());
-            throw new BaseException("参数错误, sign验证失败, str : " + tuple2.getT1() + ", mySign : " + tuple2.getT2());
+            throw new BaseException("参数错误, sign验证失败");
         }
         //提交的角色信息
         GameUserRoleUpdateParam gameUserRoleParam = param.getGameUserRoleParam();
-        //查询玩家信息
+        //查询玩家信息, 调用方的userId不准确, 可能是导量的小程序userId
         User user = userService.getById(userToken.getUserId());
         //构建 userData
         UserData userData = new UserData();
@@ -186,7 +186,7 @@ public class GameUserRoleServiceImpl extends ServiceImpl<GameUserRoleMapper, Gam
         if (param.getRolePower() != null) {
             gameUserRole.setRolePower(param.getRolePower());
         }
-        if (param.getExtra() != null) {
+        if (param.getExtra() != null && Strings.isNotBlank(JsonUtil.toString(param.getExtra()))) {
             gameUserRole.setExtra(JsonUtil.toString(param.getExtra()));
         }
         if (gameUser != null) {
@@ -217,27 +217,30 @@ public class GameUserRoleServiceImpl extends ServiceImpl<GameUserRoleMapper, Gam
             return;
         }
         //查询玩家信息
-        User user = userService.getById(userData.getUserId());
+        User user = userService.getOne(new LambdaQueryWrapper<User>()
+                .eq(User::getId, userData.getUserId())
+                .eq(User::getGameId, userData.getGameId()));
         GameUser gameUser = gameUserService.getOne(new LambdaQueryWrapper<GameUser>()
                 .eq(GameUser::getGameId, userData.getGameId())
                 .eq(GameUser::getUserId, userData.getUserId()));
+        //参数不匹配
+        if (user == null || gameUser == null) {
+            log.error("上报参数不匹配,玩家信息为空! param : {}, userData : {}", JsonUtil.toString(param), JsonUtil.toString(userData));
+            return;
+        }
         //创建角色
         userRole = this.transform(param, userData, gameUser, user);
         super.save(userRole);
         //更新玩家创角数
-        if (gameUser != null) {
-            gameUserService.update(new LambdaUpdateWrapper<GameUser>()
-                    .setSql("role_count=role_count+" + 1)
-                    .set(GameUser::getUpdateTime, LocalDateTime.now())
-                    .eq(GameUser::getId, gameUser.getId()));
-        }
+        gameUserService.update(new LambdaUpdateWrapper<GameUser>()
+                .setSql("role_count=role_count+" + 1)
+                .set(GameUser::getUpdateTime, LocalDateTime.now())
+                .eq(GameUser::getId, gameUser.getId()));
         //更新用户创角数
-        if (user != null) {
-            userService.update(new LambdaUpdateWrapper<User>()
-                    .setSql("role_count=role_count+" + 1)
-                    .set(User::getUpdateTime, LocalDateTime.now())
-                    .eq(User::getId, user.getId()));
-        }
+        userService.update(new LambdaUpdateWrapper<User>()
+                .setSql("role_count=role_count+" + 1)
+                .set(User::getUpdateTime, LocalDateTime.now())
+                .eq(User::getId, user.getId()));
         //用户创角回传
         callBackService.roleCallBack(userRole, userData);
         //用户创角埋点数据发送到卡夫卡
@@ -247,7 +250,7 @@ public class GameUserRoleServiceImpl extends ServiceImpl<GameUserRoleMapper, Gam
     private GameUserRole transform(GameUserRoleUpdateParam param, UserData userData, GameUser gameUser, User user) {
         return GameUserRole.builder()
                 .userId(userData.getUserId())
-                .gameUserId(gameUser == null ? 0 : gameUser.getId())
+                .gameUserId(gameUser.getId())
                 .gameId(userData.getGameId())
                 .serverId(param.getServerId())
                 .serverName(param.getServerName())
@@ -257,11 +260,11 @@ public class GameUserRoleServiceImpl extends ServiceImpl<GameUserRoleMapper, Gam
                 .roleVipLevel(param.getRoleVipLevel())
                 .rolePower(param.getRolePower())
                 .os(userData.getDeviceSystem())
-                .regTime(user == null ? null : user.getCreateTime())
+                .regTime(user.getCreateTime())
                 .createTime(LocalDateTime.now())
                 .updateTime(LocalDateTime.now())
                 .lastLoginTime(LocalDateTime.now())
-                .extra(param.getExtra() == null ? null : JsonUtil.toString(param.getExtra()))
+                .extra(param.getExtra() == null || Strings.isBlank(JsonUtil.toString(param.getExtra())) ? null : JsonUtil.toString(param.getExtra()))
                 .build();
     }