ソースを参照

feat : 消息推送补发以及游戏区服信息下载

bilingfeng 10 ヶ月 前
コミット
fd2e22fd5c

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

@@ -23,7 +23,7 @@ public class ManageApplication {
 
     public static void main(String[] args) {
         SpringApplication.run(ManageApplication.class, args);
-        System.out.println("赞象Manage服务启动成功 < (手动消息推送, 新增补发功能・・)ノ(._.`) \n" +
+        System.out.println("赞象Manage服务启动成功 < (消息推送补发以及游戏区服信息下载・・)ノ(._.`) \n" +
                 "___  ___  ___   _   _   ___  _____  _____ \n" +
                 "|  \\/  | / _ \\ | \\ | | / _ \\|  __ \\|  ___|\n" +
                 "| .  . |/ /_\\ \\|  \\| |/ /_\\ \\ |  \\/| |__  \n" +

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

@@ -23,6 +23,7 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
@@ -75,6 +76,14 @@ public class GameServerController {
         return ResultVO.ok(gameServerService.listOfPage(param));
     }
 
+    @ApiOperation(value = "游戏区服Excel下载")
+    @PostMapping(value = "/list/excel")
+    @PreAuthorize(permissionKey = "manage:gameServer:gameServerExcel")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功")})
+    public void getOrderExcel(@Validated @RequestBody GameServerListParam param, HttpServletResponse response) {
+        gameServerService.getGameServerExcel(param, response);
+    }
+
     @ApiOperation(value = "游戏区服删除")
     @DeleteMapping(value = "/delete")
     @PreAuthorize(permissionKey = "manage:gameServer:delete")

+ 63 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/GameServerExcelVO.java

@@ -0,0 +1,63 @@
+package com.zanxiang.game.module.manage.pojo.vo;
+
+import com.zanxiang.module.util.excel.ExcelAnno;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author : lingfeng
+ * @time : 2024-06-04
+ * @description : 区服表格
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class GameServerExcelVO {
+
+    /**
+     * 游戏id
+     */
+    @ExcelAnno(title = "游戏id")
+    private Long gameId;
+
+    /**
+     * 游戏名称
+     */
+    @ExcelAnno(title = "游戏名称")
+    private String gameName;
+
+    /**
+     * 区服id
+     */
+    @ExcelAnno(title = "区服id")
+    private String serverId;
+
+    /**
+     * 区服名称
+     */
+    @ExcelAnno(title = "区服名称")
+    private String serverName;
+
+    /**
+     * 区服冠名
+     */
+    @ExcelAnno(title = "区服冠名")
+    private String nickName;
+
+    /**
+     * 开服时间
+     */
+    @ExcelAnno(title = "开服时间")
+    private LocalDateTime startTime;
+
+    /**
+     * 是否原始服
+     */
+    @ExcelAnno(title = "是否原始服")
+    private Boolean isSourceServer;
+}

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

@@ -12,6 +12,7 @@ import com.zanxiang.game.module.manage.pojo.vo.GameServerVO;
 import com.zanxiang.game.module.mybatis.entity.GameServer;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
@@ -64,6 +65,14 @@ public interface IGameServerService extends IService<GameServer> {
      */
     IPage<GameServerListVO> listOfPage(GameServerListParam param);
 
+    /**
+     * 区服下载
+     *
+     * @param param    : 参数
+     * @param response : 返回数据流
+     */
+    void getGameServerExcel(GameServerListParam param, HttpServletResponse response);
+
     /**
      * 删除通过id
      *

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

@@ -19,6 +19,7 @@ import com.zanxiang.game.module.manage.pojo.params.GameMergeServerParam;
 import com.zanxiang.game.module.manage.pojo.params.GameServerAddUpdateParam;
 import com.zanxiang.game.module.manage.pojo.params.GameServerAssignParam;
 import com.zanxiang.game.module.manage.pojo.params.GameServerListParam;
+import com.zanxiang.game.module.manage.pojo.vo.GameServerExcelVO;
 import com.zanxiang.game.module.manage.pojo.vo.GameServerListVO;
 import com.zanxiang.game.module.manage.pojo.vo.GameServerVO;
 import com.zanxiang.game.module.manage.service.*;
@@ -29,6 +30,7 @@ import com.zanxiang.game.module.mybatis.mapper.GameServerMapper;
 import com.zanxiang.module.util.bean.BeanUtil;
 import com.zanxiang.module.util.excel.ExcelUtil;
 import com.zanxiang.module.util.exception.BaseException;
+import com.zanxiang.module.web.util.WebExcelUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.logging.log4j.util.Strings;
@@ -38,6 +40,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 import reactor.util.function.Tuple2;
 
+import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
@@ -301,6 +304,45 @@ public class GameServerServiceImpl extends ServiceImpl<GameServerMapper, GameSer
         ).convert(this::toVo);
     }
 
+    @Override
+    public void getGameServerExcel(GameServerListParam param, HttpServletResponse response) {
+        //游戏获取
+        Tuple2<String, List<Long>> gameTuple = gameAuthService.getUserGameList(null);
+        List<Long> gameIdList = gameTuple.getT2();
+        if (CollectionUtils.isEmpty(gameIdList)) {
+            return;
+        }
+        //不包含参数游戏
+        if (param.getGameId() != null && !gameIdList.contains(param.getGameId())) {
+            return;
+        }
+        Long gameId = null;
+        if (param.getGameId() != null) {
+            GameDTO gameDTO = gameService.getById(param.getGameId());
+            if (gameDTO == null || gameDTO.getSuperGameId() == null) {
+                return;
+            }
+            gameId = gameDTO.getSuperGameId();
+        }
+        final Long superGameId = gameId;
+        //excel下载
+        WebExcelUtil.httpExport(response, "游戏区服", GameServerExcelVO.class, ((pageNumber, pageSize) -> {
+            //查询订单
+            List<GameServer> gameServerList = page(new Page<>(pageNumber, pageSize),
+                    new QueryWrapper<GameServer>().lambda()
+                            .eq(Strings.isNotBlank(param.getServerId()), GameServer::getServerId, param.getServerId())
+                            .eq(superGameId != null, GameServer::getGameId, superGameId)
+                            .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))
+                            .eq(param.getIsSourceServer() != null, GameServer::getIsSourceServer, param.getIsSourceServer())
+                            .orderByDesc(GameServer::getCreateTime)).getRecords();
+            //excel字段赋值
+            return gameServerList.stream().map(gameServer -> BeanUtil.copy(gameServer, GameServerExcelVO.class)).collect(Collectors.toList());
+        }), ExcelUtil.DEFAULT_MAX_DATA_SIZE);
+    }
+
     private GameServerListVO toVo(GameServer gameServer) {
         if (Objects.isNull(gameServer)) {
             return null;