ソースを参照

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

zhimo 1 年間 前
コミット
775f6f3323
25 ファイル変更155 行追加24 行削除
  1. 2 0
      game-back/game-back-base/src/main/java/com/zanxiang/game/back/base/pojo/dto/TtOrderRpcDTO.java
  2. 3 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/dto/GameOceanengineOrderLogDTO.java
  3. 3 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/dto/GameTencentMiniGameOrderDTO.java
  4. 3 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/dto/GameTencentOrderDTO.java
  5. 2 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/entity/GameOceanengineOrderLog.java
  6. 6 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/vo/GameOceanengineOrderLogVO.java
  7. 3 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/vo/GameTencentMiniGameOrderVO.java
  8. 3 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/vo/GameTencentOrderVO.java
  9. 1 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/rpc/impl/TtMiniGameBackRpcImpl.java
  10. 7 3
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameOceanengineOrderLogServiceImpl.java
  11. 6 3
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentMiniGameOrderServiceImpl.java
  12. 6 3
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentOrderServiceImpl.java
  13. 22 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/utils/OrderUtil.java
  14. 3 3
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/GameDataController.java
  15. 6 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GameDataDayVO.java
  16. 6 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GameDataTotalVO.java
  17. 14 11
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/GameDataServiceImpl.java
  18. 1 1
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/ManageApplication.java
  19. 6 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/GameUserListVO.java
  20. 6 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/UserListVO.java
  21. 11 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/UserWechatVO.java
  22. 10 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/IGameUserRoleService.java
  23. 9 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/GameUserRoleServiceImpl.java
  24. 8 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/GameUserServiceImpl.java
  25. 8 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/UserServiceImpl.java

+ 2 - 0
game-back/game-back-base/src/main/java/com/zanxiang/game/back/base/pojo/dto/TtOrderRpcDTO.java

@@ -54,6 +54,8 @@ public class TtOrderRpcDTO implements Serializable {
      * 支付状态,0 : 预下单, 1 : 待支付,2 : 支付成功,-1 : 已取消
      */
     private Integer orderStatus;
+
+    private LocalDateTime regTime;
     /**
      * 下单时间
      */

+ 3 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/dto/GameOceanengineOrderLogDTO.java

@@ -42,4 +42,7 @@ public class GameOceanengineOrderLogDTO extends BaseListDTO<GameOceanengineOrder
 
     @ApiModelProperty("回传状态")
     private Integer backStatus;
+
+    @ApiModelProperty("充值到支付的间隔时间(分)")
+    private Long regPayIntervalTime;
 }

+ 3 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/dto/GameTencentMiniGameOrderDTO.java

@@ -68,4 +68,7 @@ public class GameTencentMiniGameOrderDTO extends BaseListDTO<GameTencentMiniGame
      */
     @ApiModelProperty("支付状态,0 : 预下单, 1 : 待支付,2 : 支付成功,-1 : 已取消")
     private Integer orderStatus;
+
+    @ApiModelProperty("充值到支付的间隔时间(分)")
+    private Long regPayIntervalTime;
 }

+ 3 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/dto/GameTencentOrderDTO.java

@@ -74,4 +74,7 @@ public class GameTencentOrderDTO extends BaseListDTO<GameTencentOrder> {
      */
     @ApiModelProperty("数据源ID")
     private Long userActionSetId;
+
+    @ApiModelProperty("充值到支付的间隔时间(分)")
+    private Long regPayIntervalTime;
 }

+ 2 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/entity/GameOceanengineOrderLog.java

@@ -80,6 +80,8 @@ public class GameOceanengineOrderLog implements Serializable {
      * 支付时间
      */
     private LocalDateTime payTime;
+
+    private LocalDateTime regTime;
     /**
      * 回传状态
      */

+ 6 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/vo/GameOceanengineOrderLogVO.java

@@ -61,6 +61,12 @@ public class GameOceanengineOrderLogVO {
     @ApiModelProperty("支付时间")
     private LocalDateTime payTime;
 
+    @ApiModelProperty("注册时间")
+    private LocalDateTime regTime;
+
     @ApiModelProperty("回传状态 -1:回传失败;0:未回传;1:回传")
     private Integer backStatus;
+
+    @ApiModelProperty("注册到付费的间隔时间")
+    private String regPayIntervalTime;
 }

+ 3 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/vo/GameTencentMiniGameOrderVO.java

@@ -106,4 +106,7 @@ public class GameTencentMiniGameOrderVO {
 
     @ApiModelProperty("创建时间")
     private LocalDateTime createTime;
+
+    @ApiModelProperty("注册到付费的间隔时间")
+    private String regPayIntervalTime;
 }

+ 3 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/vo/GameTencentOrderVO.java

@@ -122,4 +122,7 @@ public class GameTencentOrderVO {
      */
     @ApiModelProperty("回传日志")
     private String backLog;
+
+    @ApiModelProperty("注册到付费的间隔时间")
+    private String regPayIntervalTime;
 }

+ 1 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/rpc/impl/TtMiniGameBackRpcImpl.java

@@ -61,6 +61,7 @@ public class TtMiniGameBackRpcImpl implements ITtMiniGameBackRpc {
                 .accountReportToken(dto.getAccountReport().getReportToken())
                 .accountReportUrl(dto.getAccountReport().getReportUrl())
                 .agentKey(dto.getAgentKey())
+                .regTime(dto.getRegTime())
                 .orderNo(dto.getOrderId())
                 .amount(dto.getRechargeMoney())
                 .orderStatus(dto.getOrderStatus())

+ 7 - 3
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameOceanengineOrderLogServiceImpl.java

@@ -18,6 +18,7 @@ import com.zanxiang.game.back.serve.service.IGameOceanengineBackLogService;
 import com.zanxiang.game.back.serve.service.IGameOceanengineOrderLogService;
 import com.zanxiang.game.back.serve.service.IGameOceanengineUserLogService;
 import com.zanxiang.game.back.serve.utils.BackPolicyUtil;
+import com.zanxiang.game.back.serve.utils.OrderUtil;
 import com.zanxiang.game.module.base.ServerInfo;
 import com.zanxiang.game.module.base.pojo.vo.AgentRpcVO;
 import com.zanxiang.game.module.base.rpc.IAgentRpc;
@@ -72,14 +73,14 @@ public class GameOceanengineOrderLogServiceImpl extends ServiceImpl<GameOceaneng
             } else {
                 GameBackPolicy gameBackPolicy = gameBackPolicyService.getById(orderLog.getBackPolicyId());
                 doBack = BackPolicyUtil.backOrder(orderLog.getOrderNo(), gameBackPolicy, orderLog.getAmount(),
-                        () -> count(new LambdaQueryWrapper<GameOceanengineOrderLog>()
+                        () -> getOne(new LambdaQueryWrapper<GameOceanengineOrderLog>()
                                 .eq(GameOceanengineOrderLog::getGameId, orderLog.getGameId())
                                 .eq(GameOceanengineOrderLog::getAppId, orderLog.getAppId())
                                 .eq(GameOceanengineOrderLog::getAccountId, orderLog.getAccountId())
                                 .eq(GameOceanengineOrderLog::getOrderStatus, OrderStatusEnum.SUCCESS_PAY.getValue())
                                 .eq(GameOceanengineOrderLog::getOpenId, orderLog.getOpenId())
                                 .last("limit 1")
-                        ) < 1,
+                        ) == null,
                         backUnit -> Long.valueOf(list(new LambdaQueryWrapper<GameOceanengineOrderLog>()
                                         .eq(GameOceanengineOrderLog::getGameId, orderLog.getGameId())
                                         .eq(GameOceanengineOrderLog::getAppId, orderLog.getAppId())
@@ -115,6 +116,7 @@ public class GameOceanengineOrderLogServiceImpl extends ServiceImpl<GameOceaneng
                 .eq(StringUtils.isNotBlank(dto.getOrderNo()), GameOceanengineOrderLog::getOrderNo, dto.getOrderNo())
                 .eq(null != dto.getBackStatus(), GameOceanengineOrderLog::getBackStatus, dto.getBackStatus())
                 .eq(null != dto.getOrderStatus(), GameOceanengineOrderLog::getOrderStatus, dto.getOrderStatus())
+                .apply(dto.getRegPayIntervalTime() != null && dto.getRegPayIntervalTime() > 0, "if(pay_time is not null, TIMESTAMPDIFF(minute, register_time, pay_time), null) > {0}", dto.getRegPayIntervalTime())
                 .orderByDesc(GameOceanengineOrderLog::getCreateTime)
         );
         IPage<GameOceanengineOrderLogVO> result = new Page<>(page.getCurrent(), page.getSize(), page.getTotal());
@@ -149,7 +151,9 @@ public class GameOceanengineOrderLogServiceImpl extends ServiceImpl<GameOceaneng
         if (log == null) {
             return null;
         }
-        return BeanUtil.copy(log, GameOceanengineOrderLogVO.class);
+        GameOceanengineOrderLogVO vo = BeanUtil.copy(log, GameOceanengineOrderLogVO.class);
+        vo.setRegPayIntervalTime(OrderUtil.regPayIntervalTime(log.getPayTime(), log.getRegTime()));
+        return vo;
     }
 
     @Override

+ 6 - 3
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentMiniGameOrderServiceImpl.java

@@ -22,6 +22,7 @@ import com.zanxiang.game.back.serve.service.IGameBackPolicyService;
 import com.zanxiang.game.back.serve.service.IGameTencentMiniGameBackLogService;
 import com.zanxiang.game.back.serve.service.IGameTencentMiniGameOrderService;
 import com.zanxiang.game.back.serve.utils.BackPolicyUtil;
+import com.zanxiang.game.back.serve.utils.OrderUtil;
 import com.zanxiang.game.module.base.ServerInfo;
 import com.zanxiang.game.module.base.pojo.vo.AgentRpcVO;
 import com.zanxiang.game.module.base.rpc.IAgentRpc;
@@ -80,14 +81,14 @@ public class GameTencentMiniGameOrderServiceImpl extends ServiceImpl<GameTencent
             } else {
                 GameBackPolicy gameBackPolicy = gameBackPolicyService.getById(orderLog.getBackPolicyId());
                 doBack = BackPolicyUtil.backOrder(orderLog.getOrderId(), gameBackPolicy, orderLog.getRechargeMoney(),
-                        () -> count(new LambdaQueryWrapper<GameTencentMiniGameOrder>()
+                        () -> getOne(new LambdaQueryWrapper<GameTencentMiniGameOrder>()
                                 .eq(GameTencentMiniGameOrder::getGameId, orderLog.getGameId())
                                 .eq(GameTencentMiniGameOrder::getWechatAppId, orderLog.getWechatAppId())
                                 .eq(GameTencentMiniGameOrder::getAdAccountId, orderLog.getAdAccountId())
                                 .eq(GameTencentMiniGameOrder::getOrderStatus, OrderStatusEnum.SUCCESS_PAY.getValue())
                                 .eq(GameTencentMiniGameOrder::getWechatOpenid, orderLog.getWechatOpenid())
                                 .last("limit 1")
-                        ) < 1, backUnit -> Long.valueOf(list(new LambdaQueryWrapper<GameTencentMiniGameOrder>()
+                        ) == null, backUnit -> Long.valueOf(list(new LambdaQueryWrapper<GameTencentMiniGameOrder>()
                                         .eq(GameTencentMiniGameOrder::getGameId, orderLog.getGameId())
                                         .eq(GameTencentMiniGameOrder::getWechatAppId, orderLog.getWechatAppId())
                                         .eq(GameTencentMiniGameOrder::getAdAccountId, orderLog.getAdAccountId())
@@ -165,6 +166,8 @@ public class GameTencentMiniGameOrderServiceImpl extends ServiceImpl<GameTencent
     }
 
     private GameTencentMiniGameOrderVO toVOSimple(GameTencentMiniGameOrder orderLog) {
-        return BeanUtil.copy(orderLog, GameTencentMiniGameOrderVO.class);
+        GameTencentMiniGameOrderVO vo = BeanUtil.copy(orderLog, GameTencentMiniGameOrderVO.class);
+        vo.setRegPayIntervalTime(OrderUtil.regPayIntervalTime(orderLog.getPayTime(), orderLog.getRegisterTime()));
+        return vo;
     }
 }

+ 6 - 3
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentOrderServiceImpl.java

@@ -26,6 +26,7 @@ import com.zanxiang.game.back.serve.service.IGameTencentBackLogService;
 import com.zanxiang.game.back.serve.service.IGameTencentOrderService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.zanxiang.game.back.serve.utils.BackPolicyUtil;
+import com.zanxiang.game.back.serve.utils.OrderUtil;
 import com.zanxiang.game.module.base.ServerInfo;
 import com.zanxiang.game.module.base.pojo.vo.AgentRpcVO;
 import com.zanxiang.game.module.base.rpc.IAgentRpc;
@@ -89,14 +90,14 @@ public class GameTencentOrderServiceImpl extends ServiceImpl<GameTencentOrderMap
             } else {
                 GameBackPolicy gameBackPolicy = gameBackPolicyService.getById(orderLog.getBackPolicyId());
                 doBack = BackPolicyUtil.backOrder(orderLog.getOrderId(), gameBackPolicy, orderLog.getRechargeMoney(),
-                        () -> count(new LambdaQueryWrapper<GameTencentOrder>()
+                        () -> getOne(new LambdaQueryWrapper<GameTencentOrder>()
                                 .eq(GameTencentOrder::getGameId, orderLog.getGameId())
                                 .eq(GameTencentOrder::getWechatAppId, orderLog.getWechatAppId())
                                 .eq(GameTencentOrder::getAdAccountId, orderLog.getAdAccountId())
                                 .eq(GameTencentOrder::getOrderStatus, OrderStatusEnum.SUCCESS_PAY.getValue())
                                 .eq(GameTencentOrder::getWechatOpenid, orderLog.getWechatOpenid())
                                 .last("limit 1")
-                        ) < 1, backUnit -> Long.valueOf(list(new LambdaQueryWrapper<GameTencentOrder>()
+                        ) == null, backUnit -> Long.valueOf(list(new LambdaQueryWrapper<GameTencentOrder>()
                                         .eq(GameTencentOrder::getGameId, orderLog.getGameId())
                                         .eq(GameTencentOrder::getWechatAppId, orderLog.getWechatAppId())
                                         .eq(GameTencentOrder::getAdAccountId, orderLog.getAdAccountId())
@@ -165,7 +166,9 @@ public class GameTencentOrderServiceImpl extends ServiceImpl<GameTencentOrderMap
         if (log == null) {
             return null;
         }
-        return BeanUtil.copy(log, GameTencentOrderVO.class);
+        GameTencentOrderVO vo = BeanUtil.copy(log, GameTencentOrderVO.class);
+        vo.setRegPayIntervalTime(OrderUtil.regPayIntervalTime(log.getPayTime(), log.getRegisterTime()));
+        return vo;
     }
 
     @Override

+ 22 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/utils/OrderUtil.java

@@ -0,0 +1,22 @@
+package com.zanxiang.game.back.serve.utils;
+
+import com.zanxiang.module.util.DateUtil;
+
+import java.time.LocalDateTime;
+
+public class OrderUtil {
+
+    public static String regPayIntervalTime(LocalDateTime payTime, LocalDateTime regTime) {
+        if (payTime == null || regTime == null) {
+            return "--";
+        }
+        // 间隔分钟数
+        long intervalMinute = (DateUtil.localDateTimeToSecond(payTime) - DateUtil.localDateTimeToSecond(regTime)) / 60;
+        long hour = intervalMinute / 60;
+        if (intervalMinute % 60 > 0) {
+            return hour + "小时" + (intervalMinute % 60) + "分";
+        } else {
+            return hour + "小时";
+        }
+    }
+}

+ 3 - 3
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/GameDataController.java

@@ -36,7 +36,7 @@ public class GameDataController {
     private IGameDataService gameDataService;
 
     @ApiOperation(value = "游戏每日数据")
-    @PreAuthorize(permissionKey = "gameData:adsGameDay:day")
+    //@PreAuthorize(permissionKey = "gameData:adsGameDay:day")
     @PostMapping("/day")
     @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = GameDataDayVO.class)})
     public ResultVO<Page<GameDataDayVO>> getGameDataDay(@RequestBody GameDataDayDTO dto) {
@@ -50,7 +50,7 @@ public class GameDataController {
         return ResultVO.ok(gameDataService.getH5Recharge(dto));
     }
     @ApiOperation(value = "游戏总数据")
-    @PreAuthorize(permissionKey = "gameData:adsGameDay:total")
+    //@PreAuthorize(permissionKey = "gameData:adsGameDay:total")
     @PostMapping("/total")
     @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = GameDataTotalVO.class)})
     public ResultVO<Page<GameDataTotalVO>> getGameDataTotal(@RequestBody GameDataTotalDTO dto) {
@@ -65,7 +65,7 @@ public class GameDataController {
     }
 
     @ApiOperation(value = "游戏每日复充数据")
-    @PreAuthorize(permissionKey = "gameData:adsGameDay:again")
+    //@PreAuthorize(permissionKey = "gameData:adsGameDay:again")
     @PostMapping("/again")
     public ResultVO<Map<LocalDate, List<GameDataAgainDayVO>>> getGameDataAgainDay(@RequestBody GameDataAgainDayDTO dto) throws Exception {
         return ResultVO.ok(gameDataService.getGameDataAgainDay(dto));

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

@@ -51,6 +51,12 @@ public class GameDataDayVO {
     @ApiModelProperty(value = "注册时间(消耗时间)")
     private LocalDate costDate;
 
+    /**
+     * 消耗
+     */
+    @ApiModelProperty(value = "消耗")
+    private BigDecimal cost;
+
     /**
      * 买量注册人数
      */

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

@@ -37,6 +37,12 @@ public class GameDataTotalVO {
     @ApiModelProperty(value = "游戏类型")
     private Long gameClassify;
 
+    /**
+     * 消耗
+     */
+    @ApiModelProperty(value = "消耗")
+    private BigDecimal cost;
+
     /**
      * 买量注册人数
      */

+ 14 - 11
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/GameDataServiceImpl.java

@@ -115,7 +115,7 @@ public class GameDataServiceImpl implements IGameDataService {
         //得到结果集list
         List<GameDataDayVO> list = sql.getList(GameDataDayVO.class);
         //设置查询总数
-        pager.setRecordCount(dao.count(AdsGameDay.class,cri));
+        pager.setRecordCount(dao.count(AdsGameDay.class, cri));
 
         List<GameDataDayVO> gameDataDayVOList = list.stream().map(vo -> {
             //买量数据
@@ -409,12 +409,12 @@ public class GameDataServiceImpl implements IGameDataService {
 
         //如果注册时间参数为空,默认设置查询当天数据
         if (dto.getRegisteredBeginDate() == null || dto.getRegisteredEndDate() == null) {
-            dto.setRegisteredBeginDate(LocalDate.now().minusDays(30));
+            dto.setRegisteredBeginDate(LocalDate.now());
             dto.setRegisteredEndDate(LocalDate.now());
         }
         //如果充值时间参数为空,默认设置查询当天数据
         if (dto.getRechargeBeginDate() == null || dto.getRechargeEndDate() == null) {
-            dto.setRechargeBeginDate(LocalDate.now().minusDays(30));
+            dto.setRechargeBeginDate(LocalDate.now());
             dto.setRechargeEndDate(LocalDate.now());
         }
         //如果没有排序条件给默认值
@@ -766,7 +766,7 @@ public class GameDataServiceImpl implements IGameDataService {
         //记录查询出的记录条数
         int count = list.size();
         //如果总复充list长度为0返回空结果
-        if (count == 0){
+        if (count == 0) {
             return map;
         }
         //初始化tempList
@@ -1103,19 +1103,20 @@ public class GameDataServiceImpl implements IGameDataService {
 
     /**
      * 补全缺少的日期数据
-     * @param list 查询到的复充趋势总量原始数据
-     * @param listBuy 查询到的复充趋势买量量原始数据
+     *
+     * @param list       查询到的复充趋势总量原始数据
+     * @param listBuy    查询到的复充趋势买量量原始数据
      * @param listNature 查询到的复充趋势自然量原始数据
      * @return 返回处理好的结果list
      */
-    private List findMissDateAgainData(List<AdsGameDayAgain> list,List<AdsGameDayAgainBuy> listBuy, List<AdsGameDayAgainNature> listNature){
+    private List findMissDateAgainData(List<AdsGameDayAgain> list, List<AdsGameDayAgainBuy> listBuy, List<AdsGameDayAgainNature> listNature) {
         //初始化买量和自然量复充数据list
         int count = list.size();
         List<AdsGameDayAgainBuy> listBuyFinal = new ArrayList<>();
         List<AdsGameDayAgainNature> listNatureFinal = new ArrayList<>();
 
         //先判断三个list的数据量是否相同
-        if (count == listBuy.size() && count == listNature.size()){
+        if (count == listBuy.size() && count == listNature.size()) {
             //不少数据
             List resList = new ArrayList();
             resList.add(listBuy);
@@ -1124,7 +1125,7 @@ public class GameDataServiceImpl implements IGameDataService {
         }
 
         //循环赋初值
-        for (int i = 0; i< count ; i++){
+        for (int i = 0; i < count; i++) {
             listBuyFinal.add(i, AdsGameDayAgainBuy.builder()
                     .dt(list.get(i).getDt())
                     .ddf(list.get(i).getDdf())
@@ -1163,11 +1164,11 @@ public class GameDataServiceImpl implements IGameDataService {
         int tempBuy = 0;
         int tempNature = 0;
         for (int i = 0; i < count; i++) {
-            if (tempBuy < listBuy.size() && listBuyFinal.get(i).getDdf().equals(listBuy.get(tempBuy).getDdf())){
+            if (tempBuy < listBuy.size() && listBuyFinal.get(i).getDdf().equals(listBuy.get(tempBuy).getDdf())) {
                 listBuyFinal.set(i, listBuy.get(tempBuy));
                 tempBuy++;
             }
-            if (tempNature < listNature.size() && listNatureFinal.get(i).getDdf().equals(listNature.get(tempNature).getDdf())){
+            if (tempNature < listNature.size() && listNatureFinal.get(i).getDdf().equals(listNature.get(tempNature).getDdf())) {
                 listNatureFinal.set(i, listNature.get(tempNature));
                 tempNature++;
             }
@@ -1237,6 +1238,7 @@ public class GameDataServiceImpl implements IGameDataService {
                     game_id,
                     game_classify,
                     source_system,
+                    cost,
                                     
                     buy_reg_num,
                     nature_reg_num,
@@ -1364,6 +1366,7 @@ public class GameDataServiceImpl implements IGameDataService {
                     sum(a.buy_reg_num) buy_reg_num,
                     sum(a.nature_reg_num) nature_reg_num,
                     sum(a.reg_num) reg_num,
+                    sum(a.cost) cost,
                     
                     sum(a.buy_first_new_user_amount_count) buy_first_new_user_amount_count,
                     sum(a.buy_first_new_user_amount_num) buy_first_new_user_amount_num,

+ 1 - 1
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/ManageApplication.java

@@ -21,7 +21,7 @@ public class ManageApplication {
 
     public static void main(String[] args) {
         SpringApplication.run(ManageApplication.class, args);
-        System.out.println("赞象Manage服务启动成功 <dubbo升级3.0, 依赖修改1> ( ´・・)ノ(._.`) \n" +
+        System.out.println("赞象Manage服务启动成功 <dubbo升级3.0, 用户列表昵称改成角色名称> ( ´・・)ノ(._.`) \n" +
                 "___  ___  ___   _   _   ___  _____  _____ \n" +
                 "|  \\/  | / _ \\ | \\ | | / _ \\|  __ \\|  ___|\n" +
                 "| .  . |/ /_\\ \\|  \\| |/ /_\\ \\ |  \\/| |__  \n" +

+ 6 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/GameUserListVO.java

@@ -170,4 +170,10 @@ public class GameUserListVO {
     @ApiModelProperty(notes = "最近充值时间")
     private LocalDateTime lastRechargeTime;
 
+    /**
+     * 最新游戏角色名称
+     */
+    @ApiModelProperty(notes = "最新游戏角色名称")
+    private String lastGameRoleName;
+
 }

+ 6 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/UserListVO.java

@@ -182,4 +182,10 @@ public class UserListVO {
     @ApiModelProperty(notes = "玩家状态, -1 为冻结状态, 1 为试玩状态 2为正常状态")
     private Integer status;
 
+    /**
+     * 最新游戏角色名称
+     */
+    @ApiModelProperty(notes = "最新游戏角色名称")
+    private String lastGameRoleName;
+
 }

+ 11 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/UserWechatVO.java

@@ -0,0 +1,11 @@
+package com.zanxiang.game.module.manage.pojo.vo;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-07-26
+ * @description : 用户微信信息
+ */
+public class UserWechatVO {
+
+
+}

+ 10 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/IGameUserRoleService.java

@@ -5,6 +5,7 @@ import com.zanxiang.game.module.manage.pojo.dto.GameUserRoleDTO;
 import com.zanxiang.game.module.manage.pojo.params.GameUserRoleListParam;
 import com.zanxiang.game.module.manage.pojo.vo.GameUserRoleListVO;
 import com.zanxiang.game.module.manage.pojo.vo.GameUserRoleVO;
+import com.zanxiang.game.module.mybatis.entity.GameUserRole;
 
 import java.util.List;
 
@@ -15,6 +16,15 @@ import java.util.List;
  */
 public interface IGameUserRoleService {
 
+    /**
+     * 获取用户最近的游戏角色
+     *
+     * @param userId 用户id
+     * @param gameId 游戏id
+     * @return {@link GameUserRole}
+     */
+    GameUserRole getLastGameUserRoleName(Long userId, Long gameId);
+
     /**
      * 根据角色id查询
      *

+ 9 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/GameUserRoleServiceImpl.java

@@ -53,6 +53,15 @@ public class GameUserRoleServiceImpl extends ServiceImpl<GameUserRoleMapper, Gam
     @Autowired
     private IAgentService agentService;
 
+    @Override
+    public GameUserRole getLastGameUserRoleName(Long userId, Long gameId) {
+        return super.getOne(new LambdaQueryWrapper<GameUserRole>()
+                .eq(GameUserRole::getUserId, userId)
+                .eq(GameUserRole::getGameId, gameId)
+                .orderByDesc(GameUserRole::getUpdateTime)
+                .last("limit 1"));
+    }
+
     @Override
     public GameUserRoleDTO getByRoleId(String roleId) {
         GameUserRole gameUserRole = super.getOne(new LambdaQueryWrapper<GameUserRole>().eq(GameUserRole::getRoleId, roleId));

+ 8 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/GameUserServiceImpl.java

@@ -16,6 +16,7 @@ import com.zanxiang.game.module.manage.pojo.vo.GameUserVO;
 import com.zanxiang.game.module.manage.service.*;
 import com.zanxiang.game.module.mybatis.entity.Agent;
 import com.zanxiang.game.module.mybatis.entity.GameUser;
+import com.zanxiang.game.module.mybatis.entity.GameUserRole;
 import com.zanxiang.game.module.mybatis.mapper.GameUserMapper;
 import com.zanxiang.module.util.bean.BeanUtil;
 import lombok.extern.slf4j.Slf4j;
@@ -53,6 +54,9 @@ public class GameUserServiceImpl extends ServiceImpl<GameUserMapper, GameUser> i
     @Autowired
     private IAgentService agentService;
 
+    @Autowired
+    private IGameUserRoleService gameUserRoleService;
+
     @Override
     public IPage<GameUserListVO> gameUserList(GameUserListParam param) {
         //游戏条件处理
@@ -131,6 +135,10 @@ public class GameUserServiceImpl extends ServiceImpl<GameUserMapper, GameUser> i
             gameUserListVO.setCpName(cpMap.get(gameDTO.getCpId()) == null ? null : cpMap.get(gameDTO.getCpId()).getCpName());
             gameUserListVO.setGameCategoryName(GameCategoryEnum.getNameByCategory(gameDTO.getCategory()));
         }
+        //最近角色
+        GameUserRole gameUserRole = gameUserRoleService.getLastGameUserRoleName(gameUser.getUserId(), gameUser.getGameId());
+        gameUserListVO.setLastGameRoleName(gameUserRole == null ? null : gameUserRole.getRoleName());
+        //返回
         return gameUserListVO;
     }
 

+ 8 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/UserServiceImpl.java

@@ -19,6 +19,7 @@ import com.zanxiang.game.module.manage.pojo.vo.UserListVO;
 import com.zanxiang.game.module.manage.pojo.vo.UserVO;
 import com.zanxiang.game.module.manage.service.*;
 import com.zanxiang.game.module.mybatis.entity.Agent;
+import com.zanxiang.game.module.mybatis.entity.GameUserRole;
 import com.zanxiang.game.module.mybatis.entity.User;
 import com.zanxiang.game.module.mybatis.mapper.UserMapper;
 import com.zanxiang.module.util.bean.BeanUtil;
@@ -61,6 +62,9 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
     @Autowired
     private IAgentService agentService;
 
+    @Autowired
+    private IGameUserRoleService gameUserRoleService;
+
     @Override
     public IPage<UserListVO> list(UserListParam param) {
         //游戏条件处理
@@ -131,6 +135,10 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
             userListVO.setCpId(gameDTO.getCpId());
             userListVO.setCpName(cpMap.get(gameDTO.getCpId()) == null ? null : cpMap.get(gameDTO.getCpId()).getCpName());
         }
+        //最近角色
+        GameUserRole gameUserRole = gameUserRoleService.getLastGameUserRoleName(user.getId(), user.getGameId());
+        userListVO.setLastGameRoleName(gameUserRole == null ? null : gameUserRole.getRoleName());
+        //返回
         return userListVO;
     }