Forráskód Böngészése

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

zhimo 1 éve
szülő
commit
50c9964f06
20 módosított fájl, 647 hozzáadás és 45 törlés
  1. 57 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/controller/GameServerController.java
  2. 57 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/GameServerAddUpdateParam.java
  3. 48 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/GameServerListParam.java
  4. 1 1
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/OrderParam.java
  5. 12 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/UserNameAuthListParam.java
  6. 9 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/GameRemitLogVO.java
  7. 75 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/GameServerListVO.java
  8. 6 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/GameUserRoleListVO.java
  9. 7 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/OrderExcelVO.java
  10. 6 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/OrderVO.java
  11. 12 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/UserCardVO.java
  12. 12 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/IGameRemitLogService.java
  13. 51 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/IGameServerService.java
  14. 19 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/GameRemitLogServiceImpl.java
  15. 111 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/GameServerServiceImpl.java
  16. 33 26
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/GameUserRoleServiceImpl.java
  17. 35 18
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/OrderServiceImpl.java
  18. 13 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/UserServiceImpl.java
  19. 71 0
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/GameServer.java
  20. 12 0
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/mapper/GameServerMapper.java

+ 57 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/controller/GameServerController.java

@@ -0,0 +1,57 @@
+package com.zanxiang.game.module.manage.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.zanxiang.erp.security.annotation.PreAuthorize;
+import com.zanxiang.game.module.manage.pojo.params.GameServerAddUpdateParam;
+import com.zanxiang.game.module.manage.pojo.params.GameServerListParam;
+import com.zanxiang.game.module.manage.pojo.vo.GameServerListVO;
+import com.zanxiang.game.module.manage.service.IGameServerService;
+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.*;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-07
+ * @description : 游戏区服接口
+ */
+@Api(tags = {"游戏区服接口"})
+@RestController
+@RequestMapping("/gameServer")
+@Slf4j
+public class GameServerController {
+
+    @Autowired
+    private IGameServerService gameServerService;
+
+    @ApiOperation(value = "新增或修改游戏区服")
+    @PostMapping(value = "/add/or/update")
+    @PreAuthorize(permissionKey = "manage:gameServer:addOrUpdate")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
+    public ResultVO<Boolean> addOrUpdate(@Validated @RequestBody GameServerAddUpdateParam param) {
+        return ResultVO.ok(gameServerService.addOrUpdate(param));
+    }
+
+    @ApiOperation(value = "游戏区服列表查询")
+    @PostMapping(value = "/list")
+    @PreAuthorize(permissionKey = "manage:gameServer:list")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = GameServerListVO.class)})
+    public ResultVO<IPage<GameServerListVO>> listOfPage(@Validated @RequestBody GameServerListParam param) {
+        return ResultVO.ok(gameServerService.listOfPage(param));
+    }
+
+    @ApiOperation(value = "游戏区服删除")
+    @DeleteMapping(value = "/delete")
+    @PreAuthorize(permissionKey = "manage:gameServer:delete")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
+    public ResultVO<Boolean> deleteById(@RequestParam Long id) {
+        return ResultVO.ok(gameServerService.deleteById(id));
+    }
+
+}

+ 57 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/GameServerAddUpdateParam.java

@@ -0,0 +1,57 @@
+package com.zanxiang.game.module.manage.pojo.params;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.time.LocalDateTime;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-07
+ * @description : 游戏区服添加更新参数
+ */
+@Data
+public class GameServerAddUpdateParam {
+
+    /**
+     * 主键id
+     */
+    @ApiModelProperty(notes = "主键id, 传则是更新, 不传则是添加, 非必传")
+    private Long id;
+
+    /**
+     * 游戏id
+     */
+    @NotNull(message = "游戏id不可为空")
+    @ApiModelProperty(notes = "游戏id, 必传")
+    private Long gameId;
+
+    /**
+     * 区服id
+     */
+    @NotBlank(message = "区服id不可为空")
+    @ApiModelProperty(notes = "区服id, 必传")
+    private String serverId;
+
+    /**
+     * 区服名称
+     */
+    @NotBlank(message = "区服名称不可为空")
+    @ApiModelProperty(notes = "区服名称, 必传")
+    private String serverName;
+
+    /**
+     * 区服冠名
+     */
+    @ApiModelProperty(notes = "区服冠名, 非必传")
+    private String nickName;
+
+    /**
+     * 开服时间
+     */
+    @NotNull(message = "开服时间不可为空")
+    @ApiModelProperty(notes = "开服时间, 必传")
+    private LocalDateTime startTime;
+}

+ 48 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/GameServerListParam.java

@@ -0,0 +1,48 @@
+package com.zanxiang.game.module.manage.pojo.params;
+
+import com.zanxiang.game.module.mybatis.entity.GameServer;
+import com.zanxiang.module.web.pojo.BaseListDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.time.LocalDate;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-07
+ * @description : 游戏区服查询提交
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class GameServerListParam extends BaseListDTO<GameServer> {
+
+    /**
+     * 游戏id
+     */
+    private Long gameId;
+
+    /**
+     * 区服id
+     */
+    private String serverId;
+
+    /**
+     * 区服名称
+     */
+    private String serverName;
+
+    /**
+     * 区服冠名
+     */
+    private String nickName;
+
+    /**
+     * 开服时间区间-开始
+     */
+    private LocalDate startTime;
+
+    /**
+     * 开服时间区间-结束
+     */
+    private LocalDate endTime;
+}

+ 1 - 1
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/OrderParam.java

@@ -42,7 +42,7 @@ public class OrderParam extends BaseListDTO<Order> {
     private String cpId;
 
     @ApiModelProperty(notes = "充值游戏id")
-    private String gameId;
+    private Long gameId;
 
     @ApiModelProperty(notes = "注册渠道对应的id")
     private Long channelId;

+ 12 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/UserNameAuthListParam.java

@@ -58,4 +58,16 @@ public class UserNameAuthListParam extends BaseListDTO<UserCard> {
     @DateTimeFormat(pattern = "yyyy-MM-dd")
     @ApiModelProperty(value = "结束时间")
     private LocalDate endDate;
+
+    /**
+     * 游戏id
+     */
+    @ApiModelProperty(notes = "最近游戏角色名称")
+    private Long gameId;
+
+    /**
+     * 最近游戏角色名称
+     */
+    @ApiModelProperty(notes = "最近游戏角色名称")
+    private String lastGameRoleName;
 }

+ 9 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/GameRemitLogVO.java

@@ -0,0 +1,9 @@
+package com.zanxiang.game.module.manage.pojo.vo;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-08
+ * @description : 提现记录
+ */
+public class GameRemitLogVO {
+}

+ 75 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/GameServerListVO.java

@@ -0,0 +1,75 @@
+package com.zanxiang.game.module.manage.pojo.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-07
+ * @description : 游戏区服
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class GameServerListVO {
+
+    /**
+     * 主键id
+     */
+    @ApiModelProperty(notes = "主键id")
+    private Long id;
+
+    /**
+     * 游戏id
+     */
+    @ApiModelProperty(notes = "游戏id")
+    private Long gameId;
+
+    /**
+     * 游戏名称
+     */
+    @ApiModelProperty(notes = "游戏名称")
+    private String gameName;
+
+    /**
+     * 区服id
+     */
+    @ApiModelProperty(notes = "区服id")
+    private String serverId;
+
+    /**
+     * 区服名称
+     */
+    @ApiModelProperty(notes = "区服名称")
+    private String serverName;
+
+    /**
+     * 区服冠名
+     */
+    @ApiModelProperty(notes = "区服冠名")
+    private String nickName;
+
+    /**
+     * 开服时间
+     */
+    @ApiModelProperty(notes = "开服时间")
+    private LocalDateTime startTime;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(notes = "创建时间")
+    private LocalDateTime createTime;
+
+    /**
+     * 更新时间
+     */
+    @ApiModelProperty(notes = "更新时间")
+    private LocalDateTime updateTime;
+}

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

@@ -100,6 +100,12 @@ public class GameUserRoleListVO {
     @ApiModelProperty(notes = "游戏应用类型名称")
     private String gameCategoryName;
 
+    /**
+     * 原始服务器名称
+     */
+    @ApiModelProperty(notes = "原始服务器名称")
+    private String sourceServerName;
+
     /**
      * 游戏区服
      */

+ 7 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/OrderExcelVO.java

@@ -1,6 +1,7 @@
 package com.zanxiang.game.module.manage.pojo.vo;
 
 import com.zanxiang.module.util.excel.ExcelAnno;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
@@ -147,6 +148,12 @@ public class OrderExcelVO {
     @ExcelAnno(title = "商户名称")
     private String merchantName;
 
+    /**
+     * 原始服务器名称
+     */
+    @ApiModelProperty(notes = "原始服务器名称")
+    private String sourceServerName;
+
     /**
      * 所在服务器名称
      */

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

@@ -195,6 +195,12 @@ public class OrderVO {
     @ApiModelProperty(notes = "商户名称")
     private String merchantName;
 
+    /**
+     * 原始服务器名称
+     */
+    @ApiModelProperty(notes = "原始服务器名称")
+    private String sourceServerName;
+
     /**
      * 所在服务器名称
      */

+ 12 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/UserCardVO.java

@@ -85,6 +85,18 @@ public class UserCardVO {
     @ApiModelProperty(notes = "更新时间")
     private LocalDateTime updateTime;
 
+    /**
+     * 游戏id
+     */
+    @ApiModelProperty(notes = "游戏id")
+    private Long gameId;
+
+    /**
+     * 游戏名称
+     */
+    @ApiModelProperty(notes = "游戏名称")
+    private String gameName;
+
     /**
      * 最近游戏角色名称
      */

+ 12 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/IGameRemitLogService.java

@@ -0,0 +1,12 @@
+package com.zanxiang.game.module.manage.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zanxiang.game.module.mybatis.entity.GameRemitLog;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-07-17
+ * @description : 游戏提现记录
+ */
+public interface IGameRemitLogService extends IService<GameRemitLog> {
+}

+ 51 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/IGameServerService.java

@@ -0,0 +1,51 @@
+package com.zanxiang.game.module.manage.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zanxiang.game.module.manage.pojo.params.GameServerAddUpdateParam;
+import com.zanxiang.game.module.manage.pojo.params.GameServerListParam;
+import com.zanxiang.game.module.manage.pojo.vo.GameServerListVO;
+import com.zanxiang.game.module.mybatis.entity.GameServer;
+
+import java.util.List;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-07
+ * @description : 游戏区服
+ */
+public interface IGameServerService extends IService<GameServer> {
+
+    /**
+     * 列表名字
+     *
+     * @param gameId     游戏id
+     * @param serverName 服务器名称
+     * @return {@link List}<{@link String}>
+     */
+    List<String> listServerId(Long gameId, String serverName);
+
+    /**
+     * 添加或更新
+     *
+     * @param param 参数
+     * @return boolean
+     */
+    boolean addOrUpdate(GameServerAddUpdateParam param);
+
+    /**
+     * 列表页面
+     *
+     * @param param 参数
+     * @return {@link IPage}<{@link GameServerListVO}>
+     */
+    IPage<GameServerListVO> listOfPage(GameServerListParam param);
+
+    /**
+     * 删除通过id
+     *
+     * @param id id
+     * @return boolean
+     */
+    boolean deleteById(Long id);
+}

+ 19 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/GameRemitLogServiceImpl.java

@@ -0,0 +1,19 @@
+package com.zanxiang.game.module.manage.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zanxiang.game.module.manage.service.IGameRemitLogService;
+import com.zanxiang.game.module.mybatis.entity.GameRemitLog;
+import com.zanxiang.game.module.mybatis.mapper.GameRemitLogMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-07-17
+ * @description : 游戏提现记录
+ */
+@Slf4j
+@Service
+public class GameRemitLogServiceImpl extends ServiceImpl<GameRemitLogMapper, GameRemitLog> implements IGameRemitLogService {
+
+}

+ 111 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/GameServerServiceImpl.java

@@ -0,0 +1,111 @@
+package com.zanxiang.game.module.manage.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zanxiang.game.module.base.pojo.enums.DeleteEnum;
+import com.zanxiang.game.module.manage.pojo.dto.GameDTO;
+import com.zanxiang.game.module.manage.pojo.params.GameServerAddUpdateParam;
+import com.zanxiang.game.module.manage.pojo.params.GameServerListParam;
+import com.zanxiang.game.module.manage.pojo.vo.GameServerListVO;
+import com.zanxiang.game.module.manage.service.IGameServerService;
+import com.zanxiang.game.module.manage.service.IGameService;
+import com.zanxiang.game.module.mybatis.entity.GameServer;
+import com.zanxiang.game.module.mybatis.mapper.GameServerMapper;
+import com.zanxiang.module.util.bean.BeanUtil;
+import com.zanxiang.module.util.exception.BaseException;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.logging.log4j.util.Strings;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.util.Collections;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-07
+ * @description : 游戏区服
+ */
+@Slf4j
+@Service
+public class GameServerServiceImpl extends ServiceImpl<GameServerMapper, GameServer> implements IGameServerService {
+
+    @Autowired
+    private IGameService gameService;
+
+    @Override
+    public List<String> listServerId(Long gameId, String serverName) {
+        if (gameId == null && Strings.isBlank(serverName)) {
+            return Collections.emptyList();
+        }
+        return super.list(new LambdaQueryWrapper<GameServer>()
+                .eq(gameId != null, GameServer::getGameId, gameId)
+                .like(Strings.isNotBlank(serverName), GameServer::getServerName, serverName)
+        ).stream().map(GameServer::getServerId).collect(Collectors.toList());
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean addOrUpdate(GameServerAddUpdateParam param) {
+        //判断单游戏内区服id不可重复
+        if (super.count(new LambdaQueryWrapper<GameServer>()
+                .eq(GameServer::getGameId, param.getGameId())
+                .eq(GameServer::getServerId, param.getServerId())
+                .ne(param.getId() != null, GameServer::getId, param.getId())
+        ) > 0) {
+            throw new BaseException("该游戏区服id已存在, 禁止添加或者修改");
+        }
+        //添加或者更新
+        return super.saveOrUpdate(this.transform(param));
+    }
+
+    private GameServer transform(GameServerAddUpdateParam param) {
+        return GameServer.builder()
+                .id(param.getId())
+                .gameId(param.getGameId())
+                .serverId(param.getServerId())
+                .serverName(param.getServerName())
+                .nickName(param.getNickName())
+                .startTime(param.getStartTime())
+                .isDelete(DeleteEnum.NO.getCode())
+                .createTime(param.getId() == null ? LocalDateTime.now() : null)
+                .updateTime(LocalDateTime.now())
+                .build();
+    }
+
+    @Override
+    public IPage<GameServerListVO> listOfPage(GameServerListParam param) {
+        return page(param.toPage(), new QueryWrapper<GameServer>().lambda()
+                .eq(param.getGameId() != null, GameServer::getGameId, param.getGameId())
+                .eq(param.getServerId() != null, GameServer::getServerId, param.getServerId())
+                .like(Strings.isNotBlank(param.getServerName()), GameServer::getServerName, param.getServerName())
+                .like(Strings.isNotBlank(param.getNickName()), GameServer::getNickName, param.getNickName())
+                .ge(param.getStartTime() != null, GameServer::getStartTime, param.getStartTime() == null ? null : LocalDateTime.of(param.getStartTime(), LocalTime.MIN))
+                .le(param.getEndTime() != null, GameServer::getStartTime, param.getEndTime() == null ? null : LocalDateTime.of(param.getEndTime(), LocalTime.MAX))
+                .orderByDesc(GameServer::getUpdateTime)
+        ).convert(this::toVo);
+    }
+
+    private GameServerListVO toVo(GameServer gameServer) {
+        if (Objects.isNull(gameServer)) {
+            return null;
+        }
+        GameServerListVO gameServerListVO = BeanUtil.copy(gameServer, GameServerListVO.class);
+        GameDTO gameDTO = gameService.getById(gameServer.getGameId());
+        gameServerListVO.setGameName(gameDTO == null ? null : gameDTO.getName());
+        return gameServerListVO;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean deleteById(Long id) {
+        return super.removeById(id);
+    }
+}

+ 33 - 26
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/GameUserRoleServiceImpl.java

@@ -12,9 +12,9 @@ import com.zanxiang.game.module.manage.pojo.dto.*;
 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.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.GameServer;
 import com.zanxiang.game.module.mybatis.entity.GameUserRole;
 import com.zanxiang.game.module.mybatis.mapper.GameUserRoleMapper;
 import com.zanxiang.module.util.bean.BeanUtil;
@@ -45,15 +45,15 @@ public class GameUserRoleServiceImpl extends ServiceImpl<GameUserRoleMapper, Gam
     @Autowired
     private IGameService gameService;
 
-    @Autowired
-    private IGameUserService gameUserService;
-
     @Autowired
     private ICpService cpService;
 
     @Autowired
     private IAgentService agentService;
 
+    @Autowired
+    private IGameServerService gameServerService;
+
     @Override
     public GameUserRole getLastGameUserRoleName(Long userId, Long gameId) {
         return super.getOne(new LambdaQueryWrapper<GameUserRole>()
@@ -78,29 +78,27 @@ public class GameUserRoleServiceImpl extends ServiceImpl<GameUserRoleMapper, Gam
         if (CollectionUtils.isEmpty(gameUserRoleList)) {
             return Collections.emptyList();
         }
-        List<GameUserRoleVO> list = new ArrayList<>();
-        gameUserRoleList.forEach(role -> {
+        //玩家信息
+        UserDTO userDTO = userService.getById(userId);
+        //游戏信息
+        GameDTO gameDTO = gameService.getById(userDTO.getGameId());
+        //渠道信息
+        String agentName;
+        if (Objects.equals(userDTO.getAgentId(), Agent.DEFAULT_AGENT)) {
+            agentName = Agent.DEFAULT_AGENT_NAME;
+        } else {
+            Agent agent = agentService.getById(userDTO.getAgentId());
+            agentName = agent.getAgentName();
+        }
+        return gameUserRoleList.stream().map(role -> {
             GameUserRoleVO gameUserRoleVO = BeanUtil.copy(role, GameUserRoleVO.class);
-            if (gameUserRoleVO == null) {
-                return;
-            }
             //设置游戏名称
-            GameDTO gameDTO = gameService.getById(role.getGameId());
-            if (gameDTO != null) {
-                gameUserRoleVO.setGameName(gameDTO.getName());
-                gameUserRoleVO.setGameCategoryName(GameCategoryEnum.getNameByCategory(gameDTO.getCategory()));
-            }
-            //玩家游戏信息
-            GameUserVO gameUserVO = gameUserService.getById(role.getGameUserId());
-            if (gameUserVO != null) {
-                Agent agent = agentService.getById(gameUserVO.getAgentId());
-                if (agent != null) {
-                    gameUserRoleVO.setAgentName(agent.getAgentName());
-                }
-            }
-            list.add(gameUserRoleVO);
-        });
-        return list;
+            gameUserRoleVO.setGameName(gameDTO.getName());
+            gameUserRoleVO.setGameCategoryName(GameCategoryEnum.getNameByCategory(gameDTO.getCategory()));
+            //设置渠道信息
+            gameUserRoleVO.setAgentName(agentName);
+            return gameUserRoleVO;
+        }).collect(Collectors.toList());
     }
 
     @Override
@@ -125,6 +123,8 @@ public class GameUserRoleServiceImpl extends ServiceImpl<GameUserRoleMapper, Gam
         if (userMap != null && userMap.isEmpty()) {
             return new Page<>();
         }
+        //区服筛选
+        List<String> serverIdList = gameServerService.listServerId(param.getGameId(), param.getServerName());
         //相关用户id
         Set<Long> userIdSet = userMap == null ? null : userMap.keySet();
         Map<Long, CpDTO> cpMap = cpService.cpMap();
@@ -132,7 +132,7 @@ public class GameUserRoleServiceImpl extends ServiceImpl<GameUserRoleMapper, Gam
         //执行查询
         return page(param.toPage(), new QueryWrapper<GameUserRole>().lambda()
                 .in(CollectionUtils.isNotEmpty(userIdSet), GameUserRole::getUserId, userIdSet)
-                .like(Strings.isNotBlank(param.getServerName()), GameUserRole::getServerName, param.getServerName())
+                .in(CollectionUtils.isNotEmpty(serverIdList), GameUserRole::getServerId, serverIdList)
                 .like(Strings.isNotBlank(param.getRoleName()), GameUserRole::getRoleName, param.getRoleName())
                 .in(gameMap != null, GameUserRole::getGameId, gameMap != null ? gameMap.keySet() : null)
                 .eq(Strings.isNotBlank(param.getOs()), GameUserRole::getOs, param.getOs())
@@ -193,6 +193,13 @@ public class GameUserRoleServiceImpl extends ServiceImpl<GameUserRoleMapper, Gam
         }
         //注册充值时间差
         gameUserRoleListVO.setRegPayTimeDiff(DateUtils.getRegPayTimeDiff(gameUserRoleListVO.getRegTime(), gameUserRoleListVO.getLastRechargeTime()));
+        //设置源服务器名称
+        GameServer gameServer = gameServerService.getOne(new LambdaQueryWrapper<GameServer>()
+                .eq(GameServer::getGameId, gameUserRole.getGameId())
+                .eq(GameServer::getServerId, gameUserRole.getServerId()));
+        if (gameServer != null) {
+            gameUserRoleListVO.setSourceServerName(gameServer.getServerName());
+        }
         return gameUserRoleListVO;
     }
 }

+ 35 - 18
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/OrderServiceImpl.java

@@ -20,6 +20,7 @@ import com.zanxiang.game.module.manage.pojo.vo.OrderVO;
 import com.zanxiang.game.module.manage.pojo.vo.UserOrderListVO;
 import com.zanxiang.game.module.manage.service.*;
 import com.zanxiang.game.module.mybatis.entity.Agent;
+import com.zanxiang.game.module.mybatis.entity.GameServer;
 import com.zanxiang.game.module.mybatis.entity.Order;
 import com.zanxiang.game.module.mybatis.entity.User;
 import com.zanxiang.game.module.mybatis.mapper.OrderMapper;
@@ -69,6 +70,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
     @Autowired
     private IPayMerchantService payMerchantService;
 
+    @Autowired
+    private IGameServerService gameServerService;
+
     @Override
     public IPage<UserOrderListVO> orderList(UserOrderListParam param) {
         //执行查询
@@ -115,13 +119,15 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                     .like(User::getUsername, param.getUsername())
             ).stream().map(User::getId).collect(Collectors.toList());
         }
+        //区服筛选
+        List<String> serverIdList = gameServerService.listServerId(param.getGameId(), param.getServerName());
         //查询订单列表
-        IPage<OrderVO> page = page(param.toPage(), getListWrapper(param, agentIds, userIds, "*")).convert(this::orderToVo);
+        IPage<OrderVO> page = page(param.toPage(), getListWrapper(param, agentIds, userIds, serverIdList, "*")).convert(this::toVO);
         if (page.getTotal() == 0) {
             return new OrderListVO(param.toPage().getSize());
         }
         //统计:订单金额与实付金额
-        Order total = super.getOne(getListWrapper(param, agentIds, userIds, "IFNULL(SUM(amount),0) amount, IFNULL(SUM(real_amount),0) realAmount"));
+        Order total = super.getOne(getListWrapper(param, agentIds, userIds, serverIdList, "IFNULL(SUM(amount),0) amount, IFNULL(SUM(real_amount),0) realAmount"));
         HashMap<String, BigDecimal> totalData = new HashMap<>(2);
         if (total == null) {
             totalData.put("totalOrderAmount", new BigDecimal("0.00"));
@@ -157,6 +163,27 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         return orderListVO;
     }
 
+    private OrderVO toVO(Order order) {
+        if (Objects.isNull(order)) {
+            return null;
+        }
+        OrderVO orderVO = BeanUtil.copy(order, OrderVO.class);
+        //原始区服名称
+        GameServer gameServer = gameServerService.getOne(new LambdaQueryWrapper<GameServer>()
+                .eq(GameServer::getGameId, order.getGameId())
+                .eq(GameServer::getServerId, order.getServerId()));
+        if (gameServer != null) {
+            orderVO.setSourceServerName(gameServer.getServerName());
+        }
+        //支付渠道, 场景
+        orderVO.setPayWayName(PayWayEnum.getNameByPayWayId(orderVO.getPayWayId()));
+        orderVO.setPayDeviceName(PayDeviceEnum.getByPayWayId(orderVO.getPayDeviceId()));
+        //注册充值时间差
+        orderVO.setRegPayTimeDiff(DateUtils.getRegPayTimeDiff(orderVO.getRegTime(), orderVO.getPayTime()));
+        //返回
+        return orderVO;
+    }
+
     private void toVO(OrderVO orderVO, Map<Long, UserDTO> userMap, Map<Long, GameDTO> gameMap, Map<Long, CpDTO> cpMap,
                       Map<Long, AgentDTO> agentMap, Map<String, PayMerchantDTO> payMerchantMap) {
         orderVO.setDateTime(orderVO.getCreateTime().toLocalDate());
@@ -194,21 +221,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             orderVO.setGameCategoryId(gameCategoryEnum == null ? null : gameCategoryEnum.getId());
             orderVO.setGameCategoryName(gameCategoryEnum == null ? null : gameCategoryEnum.getName());
         }
-        //支付渠道, 场景
-        orderVO.setPayWayName(PayWayEnum.getNameByPayWayId(orderVO.getPayWayId()));
-        orderVO.setPayDeviceName(PayDeviceEnum.getByPayWayId(orderVO.getPayDeviceId()));
-        //注册充值时间差
-        orderVO.setRegPayTimeDiff(DateUtils.getRegPayTimeDiff(orderVO.getRegTime(), orderVO.getPayTime()));
     }
 
-    private LambdaQueryWrapper<Order> getListWrapper(OrderParam param, List<Long> agentIdList, List<Long> userIdList, String select) {
+    private LambdaQueryWrapper<Order> getListWrapper(OrderParam param, List<Long> agentIdList, List<Long> userIdList,
+                                                     List<String> serverIdList, String select) {
         return new QueryWrapper<Order>().select(select).lambda()
                 .eq(Strings.isNotBlank(param.getOrderId()), Order::getOrderId, param.getOrderId())
                 .eq(Strings.isNotBlank(param.getCpOrderId()), Order::getCpOrderId, param.getCpOrderId())
                 .eq(Strings.isNotBlank(param.getMerchantOrderNo()), Order::getMerchantOrderNo, param.getMerchantOrderNo())
                 .eq(Strings.isNotBlank(param.getUserId()), Order::getUserId, param.getUserId())
                 .in(CollectionUtils.isNotEmpty(userIdList), Order::getUserId, userIdList)
-                .like(Strings.isNotBlank(param.getServerName()), Order::getServerName, param.getServerName())
+                .in(CollectionUtils.isNotEmpty(serverIdList), Order::getServerId, serverIdList)
                 .like(Strings.isNotBlank(param.getRoleName()), Order::getRoleName, param.getRoleName())
                 .eq(param.getCpId() != null, Order::getCpId, param.getCpId())
                 .eq(param.getGameId() != null, Order::getGameId, param.getGameId())
@@ -233,13 +256,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 .orderByDesc(Order::getCreateTime);
     }
 
-    private OrderVO orderToVo(Order order) {
-        if (Objects.isNull(order)) {
-            return null;
-        }
-        return BeanUtil.copy(order, OrderVO.class);
-    }
-
     @Override
     public void getOrderExcel(OrderParam param, HttpServletResponse response) {
         if (!SecurityUtil.isAdmin()) {
@@ -256,11 +272,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                     .like(User::getUsername, param.getUsername()));
         }
         final List<Long> userIds = userList.stream().map(User::getId).collect(Collectors.toList());
+        List<String> serverIdList = gameServerService.listServerId(param.getGameId(), param.getServerName());
         //excel下载
         WebExcelUtil.httpExport(response, "游戏订单", OrderExcelVO.class, ((pageNumber, pageSize) -> {
             //查询订单
-            List<OrderVO> orderVOList = page(new Page<>(pageNumber, pageSize), this.getListWrapper(param, agentIds, userIds, "*"))
-                    .convert(this::orderToVo).getRecords();
+            List<OrderVO> orderVOList = page(new Page<>(pageNumber, pageSize), this.getListWrapper(param, agentIds, userIds, serverIdList, "*"))
+                    .convert(this::toVO).getRecords();
             //商户列表
             Map<String, PayMerchantDTO> payMerchantMap = payMerchantService.payMerchantMap();
             //cp信息

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

@@ -39,6 +39,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import reactor.util.function.Tuple2;
 
+import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
@@ -106,6 +107,11 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
         h5User.setMobile(mobile);
         h5User.setRelationUserId(user.getId());
         h5User.setRelationCreateTime(LocalDateTime.now());
+        //充值统计数据归零设置
+        h5User.setSessionKey(null);
+        h5User.setRechargeCount(0);
+        h5User.setRechargeMoney(BigDecimal.ZERO);
+        h5User.setLastRechargeTime(null);
         super.save(h5User);
         //复制玩家信息
         GameUser gameUser = gameUserService.getOne(new LambdaQueryWrapper<GameUser>()
@@ -250,6 +256,13 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
         userListVO.setLastGameRoleName(gameUserRole == null ? null : gameUserRole.getRoleName());
         //注册充值时间差
         userListVO.setRegPayTimeDiff(DateUtils.getRegPayTimeDiff(userListVO.getCreateTime(), userListVO.getLastRechargeTime()));
+        //设置关联游戏名称
+        if (userListVO.getRelationUserId() != null) {
+            User relationUser = super.getById(userListVO.getRelationUserId());
+            GameDTO relationGame = gameService.getById(relationUser.getGameId());
+            userListVO.setRelationGameId(relationGame.getId());
+            userListVO.setRelationGameName(relationGame.getName());
+        }
         //返回
         return userListVO;
     }

+ 71 - 0
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/GameServer.java

@@ -0,0 +1,71 @@
+package com.zanxiang.game.module.mybatis.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.*;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-07
+ * @description : 游戏区服
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@ToString
+@Builder
+@TableName("t_game_server")
+public class GameServer implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 游戏id
+     */
+    private Long gameId;
+
+    /**
+     * 区服id
+     */
+    private String serverId;
+
+    /**
+     * 区服名称
+     */
+    private String serverName;
+
+    /**
+     * 区服冠名
+     */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private String nickName;
+
+    /**
+     * 开服时间
+     */
+    private LocalDateTime startTime;
+
+    /**
+     * 1 删除  0 正常
+     */
+    @TableLogic
+    private Integer isDelete;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+}

+ 12 - 0
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/mapper/GameServerMapper.java

@@ -0,0 +1,12 @@
+package com.zanxiang.game.module.mybatis.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zanxiang.game.module.mybatis.entity.GameServer;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-07
+ * @description : 游戏区服
+ */
+public interface GameServerMapper extends BaseMapper<GameServer> {
+}