From 3f45e8fdfa31d7b764d60a7c0cb5dd11944ed418 Mon Sep 17 00:00:00 2001
From: 刘帅 <rr.iii@qq.com>
Date: 星期一, 21 九月 2026 23:38:59 +0800
Subject: [PATCH] bug:统计数据修正

---
 cloud-server-other/src/main/java/com/dsh/other/controller/BallController.java |   31 +++++++++++++++++++++++++++----
 1 files changed, 27 insertions(+), 4 deletions(-)

diff --git a/cloud-server-other/src/main/java/com/dsh/other/controller/BallController.java b/cloud-server-other/src/main/java/com/dsh/other/controller/BallController.java
index cf2faf8..2d9357a 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/controller/BallController.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/controller/BallController.java
@@ -45,8 +45,8 @@
     public List<TGameRecord> getData(@RequestBody GameDataQuery query){
         if (query.getStoreId()==null){
             // 获取到游戏ids
-            List<Integer> gameIds = gameService.list(new QueryWrapper<Game>().eq("operationId", query.getObjectId()))
-                    .stream().map(Game::getId).collect(Collectors.toList());
+            List<Game> games = gameService.list(new QueryWrapper<Game>().eq("operationId", query.getObjectId()));
+            List<Integer> gameIds = games.stream().map(Game::getId).collect(Collectors.toList());
             // 运营商下没有智慧球场时,不能省略 gameId 条件后查询全部支付记录。
             if (gameIds.isEmpty()) {
                 return new ArrayList<>();
@@ -55,12 +55,16 @@
             QueryWrapper<TGameRecord> wrapper = new QueryWrapper<TGameRecord>().eq("status", 1)
                     .ne("payType", 3)
                     .ne("payType", 4);
+            if (query.getStartTime() != null && query.getEndTime() != null) {
+                wrapper.between("time", query.getStartTime(), query.getEndTime());
+            }
             wrapper.in("gameId", gameIds);
             List<TGameRecord> list = gameRecordService.list(wrapper);
+            fillMissingSiteId(list, games);
             return list;
         }else{
-            List<Integer> gameIds = gameService.list(new QueryWrapper<Game>().eq("storeId", query.getStoreId()))
-                    .stream().map(Game::getId).collect(Collectors.toList());
+            List<Game> games = gameService.list(new QueryWrapper<Game>().eq("storeId", query.getStoreId()));
+            List<Integer> gameIds = games.stream().map(Game::getId).collect(Collectors.toList());
             // 门店下没有智慧球场时,不能省略 gameId 条件后查询全部支付记录。
             if (gameIds.isEmpty()) {
                 return new ArrayList<>();
@@ -68,12 +72,31 @@
             QueryWrapper<TGameRecord> wrapper = new QueryWrapper<TGameRecord>()
                     .eq("status", 1)
                     .in("payType", 1, 2);
+            if (query.getStartTime() != null && query.getEndTime() != null) {
+                wrapper.between("time", query.getStartTime(), query.getEndTime());
+            }
             wrapper.in("gameId", gameIds);
             List<TGameRecord> list = gameRecordService.list(wrapper);
+            fillMissingSiteId(list, games);
             return list;
         }
     }
 
+    /**
+     * 旧游戏支付记录可能没有写入 t_game_record.siteId,场地归属以 t_game.siteId 为准补齐,
+     * 让调用方能够按场地类型做收入统计。
+     */
+    private void fillMissingSiteId(List<TGameRecord> records, List<Game> games) {
+        Map<Integer, Integer> gameSiteIds = games.stream()
+                .filter(game -> game.getId() != null && game.getSiteId() != null)
+                .collect(Collectors.toMap(Game::getId, Game::getSiteId, (first, ignored) -> first));
+        for (TGameRecord record : records) {
+            if (record.getSiteId() == null) {
+                record.setSiteId(gameSiteIds.get(record.getGameId()));
+            }
+        }
+    }
+
 
     @ResponseBody
     @PostMapping("/student/webStudentList")

--
Gitblit v1.7.1