浏览代码

Merge branch 'package' of GameCenter/game-center into dev

zhimo 1 年之前
父节点
当前提交
b5f7937a14
共有 14 个文件被更改,包括 798 次插入460 次删除
  1. 0 4
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/AdsGameServerController.java
  2. 44 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/GameUserConfigController.java
  3. 8 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/RoleManageController.java
  4. 23 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/GameUserConfigListDTO.java
  5. 6 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GSGameServerDayVO.java
  6. 54 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GameUserConfigListVO.java
  7. 15 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/IGameUserConfigService.java
  8. 4 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/IRoleManageService.java
  9. 30 3
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/GameServerServiceImpl.java
  10. 129 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/GameUserConfigServiceImpl.java
  11. 472 451
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/RoleManageServiceImpl.java
  12. 1 1
      game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/SDKApplication.java
  13. 1 1
      game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/controller/PayController.java
  14. 11 0
      game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/controller/UserController.java

+ 0 - 4
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/AdsGameServerController.java

@@ -70,8 +70,4 @@ public class AdsGameServerController {
     public ResultVO<GSGameServerDayVO> getGSGameServerDataDayTotal(@RequestBody GSGameServerDayDTO dto) {
         return ResultVO.ok(gameServerService.getGSGameServerDataDayTotal(dto));
     }
-
-
-
-
 }

+ 44 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/GameUserConfigController.java

@@ -0,0 +1,44 @@
+package com.zanxiang.game.data.serve.controller;
+
+import com.zanxiang.erp.security.annotation.PreAuthorize;
+import com.zanxiang.game.data.serve.pojo.dto.GameUserConfigListDTO;
+import com.zanxiang.game.data.serve.pojo.vo.GameUserConfigListVO;
+import com.zanxiang.game.data.serve.service.IGameUserConfigService;
+import com.zanxiang.game.data.serve.utils.Page;
+import com.zanxiang.module.util.pojo.ResultVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * packageName com.zanxiang.game.data.serve.controller
+ *
+ * @author ZhangXianyu
+ * @date 2024/4/18
+ * @description 有效创角配置管理
+ */
+@Api(tags = "有效创角配置管理")
+@RestController
+@RequestMapping("/gameUserConfig")
+@Slf4j
+public class GameUserConfigController {
+
+    @Resource
+    private IGameUserConfigService gameUserConfigService;
+
+    @ApiOperation(value = "有效创角配置列表")
+    @PreAuthorize(permissionKey = "roleManage:validRoleConfig:list")
+    @PostMapping(value = "/list")
+    public ResultVO<Page<GameUserConfigListVO>> validRoleConfigList(@Validated @RequestBody GameUserConfigListDTO dto) {
+        return ResultVO.ok(gameUserConfigService.validRoleConfigList(dto));
+    }
+
+}

+ 8 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/RoleManageController.java

@@ -1,7 +1,9 @@
 package com.zanxiang.game.data.serve.controller;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.zanxiang.game.data.serve.annotation.Log;
 import com.zanxiang.game.data.serve.pojo.dto.*;
+import com.zanxiang.game.data.serve.pojo.vo.GameUserConfigListVO;
 import com.zanxiang.game.module.base.pojo.vo.SendMsgResultVO;
 import com.zanxiang.game.module.base.pojo.vo.SendMsgVO;
 import com.zanxiang.erp.security.annotation.PreAuthorize;
@@ -10,8 +12,11 @@ import com.zanxiang.game.data.serve.utils.Page;
 import com.zanxiang.module.util.pojo.ResultVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
@@ -70,4 +75,7 @@ public class RoleManageController {
     }
 
 
+
+
+
 }

+ 23 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/GameUserConfigListDTO.java

@@ -0,0 +1,23 @@
+package com.zanxiang.game.data.serve.pojo.dto;
+
+import com.zanxiang.game.data.serve.pojo.base.BasePage;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-09
+ * @description : 有效用户配置查询
+ */
+@Data
+public class GameUserConfigListDTO extends BasePage {
+
+    /**
+     * 游戏id
+     */
+    @ApiModelProperty(notes = "游戏id")
+    private Long gameId;
+
+    @ApiModelProperty(notes = "SDK")
+    private String sourceSystem;
+}

+ 6 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GSGameServerDayVO.java

@@ -39,9 +39,15 @@ public class GSGameServerDayVO implements Serializable {
     @ApiModelProperty(value = "开服时间")
     private LocalDate dt;
 
+    @ApiModelProperty(value = "开服天数")
+    private Integer days;
+
     @ApiModelProperty(value = "gsIds")
     private String gsIds;
 
+    @ApiModelProperty(value = "gs名称")
+    private String gsNames;
+
 
     @ApiModelProperty(value = "新用户人数")
     private Long totalRegNum;

+ 54 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GameUserConfigListVO.java

@@ -0,0 +1,54 @@
+package com.zanxiang.game.data.serve.pojo.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-09
+ * @description : 有效用户配置
+ */
+@Data
+public class GameUserConfigListVO {
+
+    @ApiModelProperty(notes = "来源系统")
+    private String sourceSystem;
+
+    /**
+     * 主键id
+     */
+    @ApiModelProperty(notes = "主键id")
+    private Long id;
+
+    /**
+     * 游戏id
+     */
+    @ApiModelProperty(notes = "游戏id")
+    private Long gameId;
+
+    /**
+     * 游戏名称
+     */
+    @ApiModelProperty(notes = "游戏名称")
+    private String gameName;
+
+    /**
+     * 游戏角色等级
+     */
+    @ApiModelProperty(notes = "游戏角色等级")
+    private Long roleLevel;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(notes = "创建时间")
+    private LocalDateTime createTime;
+
+    /**
+     * 更新时间
+     */
+    @ApiModelProperty(notes = "更新时间")
+    private LocalDateTime updateTime;
+}

+ 15 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/IGameUserConfigService.java

@@ -0,0 +1,15 @@
+package com.zanxiang.game.data.serve.service;
+
+import com.zanxiang.game.data.serve.pojo.dto.GameUserConfigListDTO;
+import com.zanxiang.game.data.serve.pojo.vo.GameUserConfigListVO;
+import com.zanxiang.game.data.serve.utils.Page;
+
+public interface IGameUserConfigService {
+
+    /**
+     * 有效创角配置列表
+     * @param dto
+     * @return
+     */
+    Page<GameUserConfigListVO> validRoleConfigList(GameUserConfigListDTO dto);
+}

+ 4 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/IRoleManageService.java

@@ -1,6 +1,8 @@
 package com.zanxiang.game.data.serve.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.zanxiang.game.data.serve.pojo.dto.*;
+import com.zanxiang.game.data.serve.pojo.vo.GameUserConfigListVO;
 import com.zanxiang.game.module.base.pojo.vo.SendMsgResultVO;
 import com.zanxiang.game.module.base.pojo.vo.SendMsgVO;
 import com.zanxiang.game.data.serve.utils.Page;
@@ -41,4 +43,6 @@ public interface IRoleManageService {
      * @return
      */
     Page<SendMsgResultVO> getSendMsgResultList(MsgTaskResultDTO msgTaskResultDto);
+
+
 }

+ 30 - 3
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/GameServerServiceImpl.java

@@ -1,6 +1,8 @@
 package com.zanxiang.game.data.serve.service.impl;
 
 import com.google.common.base.CaseFormat;
+import com.zanxiang.erp.base.ErpServer;
+import com.zanxiang.erp.base.rpc.ISysUserRpc;
 import com.zanxiang.game.data.serve.component.DataPowerComponent;
 import com.zanxiang.game.data.serve.pojo.dto.*;
 import com.zanxiang.game.data.serve.pojo.entity.AdsGameServerDay;
@@ -11,15 +13,19 @@ import com.zanxiang.game.data.serve.pojo.enums.OrderByEnum;
 import com.zanxiang.game.data.serve.pojo.vo.*;
 import com.zanxiang.game.data.serve.service.IGameServerService;
 import com.zanxiang.game.data.serve.utils.Page;
+import com.zanxiang.module.util.pojo.ResultVO;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.nutz.dao.Cnd;
 import org.nutz.dao.Dao;
 import org.nutz.dao.Sqls;
 import org.nutz.dao.pager.Pager;
 import org.nutz.dao.sql.Criteria;
 import org.nutz.dao.sql.Sql;
+import org.nutz.dao.util.cri.SqlExpression;
+import org.nutz.dao.util.cri.Static;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import reactor.util.function.Tuple2;
@@ -41,6 +47,9 @@ import java.util.stream.Collectors;
 @Service
 public class GameServerServiceImpl implements IGameServerService {
 
+    @DubboReference(providedBy = ErpServer.SERVER_DUBBO_NAME)
+    private ISysUserRpc sysUserRpc;
+
     //存储映射的List
     private static final List<Tuple2<Field, Field>> dayNFieldMapList;
     private static final List<Tuple2<Field, Field>> dayNTotalFieldMapList;
@@ -539,7 +548,15 @@ public class GameServerServiceImpl implements IGameServerService {
                 .filter(field -> field.getName().contains("daRetention"))
                 .peek(field -> field.setAccessible(true))
                 .toList();
-
+        //把所有gsIds取出来用,拼起来
+        String gsIds = vos.stream().map(GSGameServerDayVO::getGsIds).collect(Collectors.joining(","));
+        ResultVO<Map<Long, String>> userMap = null;
+        if(StringUtils.isNotEmpty(gsIds)){
+            //转换为Long类型
+            List<Long> userIds = Arrays.stream(gsIds.split(",")).map(Long::parseLong).toList();
+            //发送RPC接口查询所有用户
+             userMap = sysUserRpc.getUserNameByIds(userIds);
+        }
         for (GSGameServerDayVO vo : vos) {
             List<GSGameServerDayRVO> rDataList = collect.get(vo.getSourceSystem() + vo.getServerId() + vo.getParentGameId());
             for (int i = 0; i < fieldList.size(); i++) {
@@ -575,6 +592,12 @@ public class GameServerServiceImpl implements IGameServerService {
                     throw new RuntimeException(e);
                 }
             }
+            if(userMap != null && userMap.getData() != null&&StringUtils.isNotEmpty(vo.getGsIds())){
+                Map<Long, String> data = userMap.getData();
+                List<Long> userIds = Arrays.stream(vo.getGsIds().split(",")).map(Long::parseLong).toList();
+                String gsNames = userIds.stream().map(data::get).collect(Collectors.joining(","));
+                vo.setGsNames(gsNames);
+            }
 
         }
         return new Page<>(vos, pager);
@@ -793,6 +816,9 @@ public class GameServerServiceImpl implements IGameServerService {
         if (StringUtils.isNotEmpty(dto.getServerName())) {
             cri.where().andLike("a.server_name", dto.getServerName());
         }
+        if(dto.getGsId()!=null){
+            cri.where().and(new Static("find_in_set("+dto.getGsId()+",a.gs_ids)"));
+        }
         return cri;
     }
 
@@ -804,6 +830,7 @@ public class GameServerServiceImpl implements IGameServerService {
                 a.server_id,
                 a.server_name,
                 a.dt,
+                datediff(Date(now()),a.dt) as days,
                 a.parent_game_id,
                 a.parent_game_classify,
                 a.parent_game_name,
@@ -841,7 +868,7 @@ public class GameServerServiceImpl implements IGameServerService {
         StringBuilder sql = new StringBuilder(StringUtils.EMPTY);
         for (int i = 1; i <= 90; i++) {
             sql.append("""
-                    concat(ifnull(round(c.da%d_active_num / e.new_da%d_total_num,4),0),'/',round(ifnull((d.new_da%d_num + d.old_da%d_num) / d.new_da%d_total_num,0),4),'/',IFNULL(c.da%d_role_num,0),'/',IFNULL(c.da%d_num,0)) as da_str%d,
+                    concat(ifnull(round(c.da%d_active_num / e.new_da%d_total_num,4),0),'/',round(ifnull(d.new_da%d_total_num/(d.new_da%d_num + d.old_da%d_num) ,0),4),'/',IFNULL(c.da%d_role_num,0),'/',IFNULL(c.da%d_num,0)) as da_str%d,
                      """.formatted(i, i, i, i, i, i, i, i));
 
         }
@@ -855,7 +882,7 @@ public class GameServerServiceImpl implements IGameServerService {
         StringBuilder sql = new StringBuilder(StringUtils.EMPTY);
         for (int i = 1; i <= 90; i++) {
             sql.append("""
-                    concat(ifnull(round(SUM(c.da%d_active_num) / SUM(e.new_da%d_total_num) ,4),0),'/',ifnull(round(((SUM(d.new_da%d_num) + SUM(d.old_da%d_num)) / SUM(d.new_da%d_total_num)),4),0),'/',IFNULL(SUM(c.da%d_role_num),0),'/',IFNULL(SUM(c.da%d_num),0)) as da_str%d,
+                    concat(ifnull(round(SUM(c.da%d_active_num) / SUM(e.new_da%d_total_num) ,4),0),'/',ifnull(round(SUM(d.new_da%d_total_num)/((SUM(d.new_da%d_num) + SUM(d.old_da%d_num))),4),0),'/',IFNULL(SUM(c.da%d_role_num),0),'/',IFNULL(SUM(c.da%d_num),0)) as da_str%d,
                      """.formatted(i, i, i, i, i, i, i, i));
         }
         return sql.toString();

+ 129 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/GameUserConfigServiceImpl.java

@@ -0,0 +1,129 @@
+package com.zanxiang.game.data.serve.service.impl;
+
+import com.zanxiang.game.data.serve.pojo.dto.GameDTO;
+import com.zanxiang.game.data.serve.pojo.dto.GameUserConfigListDTO;
+import com.zanxiang.game.data.serve.pojo.vo.GameUserConfigListVO;
+import com.zanxiang.game.data.serve.service.IGameUserConfigService;
+import com.zanxiang.game.data.serve.utils.Page;
+import org.apache.commons.lang3.StringUtils;
+import org.nutz.dao.Cnd;
+import org.nutz.dao.Dao;
+import org.nutz.dao.Sqls;
+import org.nutz.dao.pager.Pager;
+import org.nutz.dao.sql.Criteria;
+import org.nutz.dao.sql.Sql;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+/**
+ * packageName com.zanxiang.game.data.serve.service.impl
+ *
+ * @author ZhangXianyu
+ * @date 2024/4/18
+ * @description TODO
+ */
+@Service
+public class GameUserConfigServiceImpl implements IGameUserConfigService {
+
+    @Autowired
+    private Dao dao;
+
+    @Override
+    public Page<GameUserConfigListVO> validRoleConfigList(GameUserConfigListDTO dto) {
+        Criteria criA = Cnd.cri();
+        if (dto.getGameId() != null) {
+            criA.where().andEquals("role_id", dto.getGameId());
+        }
+        if (StringUtils.isNotEmpty(dto.getSourceSystem())) {
+            criA.where().andEquals("source_system", dto.getSourceSystem());
+        }
+        //分页对象
+        Pager pager = dao.createPager(dto.getPageNum(), dto.getPageSize());
+        //查询总记录数
+        Sql countSql = Sqls.create(getGameUserConfigTotalSql() + criA);
+        countSql.setCallback(Sqls.callback.integer());
+        dao.execute(countSql);
+        pager.setRecordCount(countSql.getInt());
+
+        //创建sql
+        Sql sql = Sqls.create(getGameUserConfigSql(criA));
+        sql.setCallback(Sqls.callback.entities());
+        sql.setEntity(dao.getEntity(GameUserConfigListVO.class));
+        sql.setPager(pager);
+        dao.execute(sql);
+        //查询结果
+        List<GameUserConfigListVO> list = sql.getList(GameUserConfigListVO.class);
+        Map<Long, GameDTO> parentGameMap = getGameMap();
+        list.forEach(item -> {
+            GameDTO gameDTO = parentGameMap.get(item.getGameId());
+            if (gameDTO != null) {
+                item.setGameName(gameDTO.getGameName());
+            }
+        });
+        return new Page<>(list, pager);
+    }
+
+    public String getGameUserConfigSql(Criteria criA) {
+        String sql = """
+                select 
+                 source_system,
+                 id,
+                 game_id,
+                 role_level,
+                 create_time,
+                 update_time
+                 from 
+                 dm_game_order.t_game_user_config   
+                 """ + criA + """
+                    order by create_time desc
+                """;
+        return sql;
+    }
+
+
+    public String getGameUserConfigTotalSql() {
+        String sql = """
+                select count(*) from dm_game_order.t_game_user_config
+                """;
+        return sql;
+    }
+
+
+    /**
+     * 获取游戏列表
+     */
+    private Map<Long, GameDTO> getGameMap() {
+        Sql sql = Sqls.create(getGameSql());
+        sql.setCallback(Sqls.callback.entities());
+        sql.setEntity(dao.getEntity(GameDTO.class));
+        dao.execute(sql);
+        List<GameDTO> gameDtoList = sql.getList(GameDTO.class);
+        //将游戏拼成map key为游戏id,value为游戏名称
+        return gameDtoList.stream().collect(Collectors.toMap(GameDTO::getId, Function.identity()));
+    }
+
+    /**
+     * 查询游戏sql
+     *
+     * @return String
+     */
+    private String getGameSql() {
+        return """
+                 SELECT
+                            -- 游戏名称、游戏类型、父游戏id、超父游戏id
+                            source_system,
+                            id,
+                            game_name,
+                            classify,
+                            parent_id,
+                            super_game_id
+                        FROM dm_game_order.t_game
+                        where source_system = 'ZX_ONE'
+                """;
+    }
+}

文件差异内容过多而无法显示
+ 472 - 451
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/RoleManageServiceImpl.java


+ 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服务启动成功 <解决修仙游戏漏上报角色的问题03> ( ´・・)ノ(._.`) \n" +
+        System.out.println("赞象SDK服务启动成功 <添加日志, 定位CP方的问题> ( ´・・)ノ(._.`) \n" +
                 " ___________ _   __\n" +
                 "/  ___|  _  \\ | / /\n" +
                 "\\ `--.| | | | |/ / \n" +

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

@@ -60,7 +60,7 @@ public class PayController {
     @ApiOperation(value = "支付参数生成")
     @PostMapping(value = "/create")
     public ResultVO<Map> create(@Validated @RequestBody ProductPayParam product, @ValidLogin UserData userData) {
-        log.error("接收到支付请求, product : {}", JsonUtil.toString(product));
+        log.error("接收到支付请求, product : {}, userData : {}", JsonUtil.toString(product), JsonUtil.toString(userData));
         return ResultVO.ok(orderPayService.payCreate(product, userData));
     }
 

+ 11 - 0
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/controller/UserController.java

@@ -1,6 +1,7 @@
 package com.zanxiang.game.module.sdk.controller;
 
 
+import com.zanxiang.game.module.mybatis.entity.Game;
 import com.zanxiang.game.module.sdk.annotation.UnSignCheck;
 import com.zanxiang.game.module.sdk.annotation.ValidLogin;
 import com.zanxiang.game.module.sdk.enums.DataTypeEnum;
@@ -10,11 +11,13 @@ import com.zanxiang.game.module.sdk.pojo.vo.GameShareVO;
 import com.zanxiang.game.module.sdk.pojo.vo.UserLoginVO;
 import com.zanxiang.game.module.sdk.pojo.vo.UserVO;
 import com.zanxiang.game.module.sdk.service.*;
+import com.zanxiang.module.util.JsonUtil;
 import com.zanxiang.module.util.pojo.ResultVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -29,6 +32,7 @@ import java.util.Objects;
  */
 @Api(tags = "用户接口")
 @RestController
+@Slf4j
 @RequestMapping(value = "/api/user")
 public class UserController {
 
@@ -50,6 +54,9 @@ public class UserController {
     @Autowired
     private IMsgSceneCheckService msgSceneCheckService;
 
+    @Autowired
+    private IGameService gameService;
+
     @ApiOperation(value = "游戏分享信息")
     @GetMapping("/share/game")
     @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = GameShareVO.class)})
@@ -111,6 +118,10 @@ public class UserController {
     @PostMapping("/update/game/role")
     @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
     public ResultVO<Boolean> updateUserGameRole(@Validated @RequestBody GameUserRoleUpdateParam param, @ValidLogin UserData userData) {
+        Game game = gameService.getById(userData.getGameId());
+        if (game != null && Objects.equals(game.getSuperGameId(), 3L)) {
+            log.error("梦幻修仙游戏玩家角色信息上报, param : {}, userData : {}", JsonUtil.toString(param), JsonUtil.toString(userData));
+        }
         Boolean result = gameUserRoleService.updateUserGameRole(param, userData);
         //创建角色通知监听服务
         if (Objects.equals(param.getDataType(), DataTypeEnum.TYPE_CREATE_ROLE.getDateType())) {

部分文件因为文件数量过多而无法显示