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 |   86 +++++++++++++++++++++++++++++++++++++-----
 1 files changed, 75 insertions(+), 11 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 5a5c359..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
@@ -1,5 +1,6 @@
 package com.dsh.other.controller;
 
+import com.alibaba.nacos.api.config.filter.IFilterConfig;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.dsh.other.entity.*;
 import com.dsh.other.feignclient.model.AdvertisementChangeStateDTO;
@@ -12,10 +13,12 @@
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.models.auth.In;
+import org.omg.CORBA.PUBLIC_MEMBER;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.print.DocFlavor;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -33,6 +36,8 @@
     private GameService gameService;
     @Autowired
     private TGameRecordService gameRecordService;
+    @Autowired
+    private ISiteService siteService;
 
     // 数据统计
     @ResponseBody
@@ -40,26 +45,55 @@
     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<>();
+            }
             // 根据游戏ids查询智慧球场支付记录
             QueryWrapper<TGameRecord> wrapper = new QueryWrapper<TGameRecord>().eq("status", 1)
                     .ne("payType", 3)
                     .ne("payType", 4);
-            if(gameIds.size() > 0){
-                wrapper.in("gameId", gameIds);
+            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());
-            QueryWrapper wrapper = new QueryWrapper<TGameRecord>().eq("status", 1).eq("payType", 1).eq("payType", 2);
-            if(gameIds.size() > 0){
-                wrapper.in("gameId", gameIds);
+            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<>();
             }
+            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()));
+            }
         }
     }
 
@@ -82,7 +116,8 @@
             return new ArrayList<>();
         } else {
             // 根据游戏id获取游戏记录 获取用户Ids
-            List<Integer> userId = gameRecordService.list(new QueryWrapper<TGameRecord>().in("gameId", gamesId))
+            List<Integer> userId = gameRecordService.list(new QueryWrapper<TGameRecord>().in("gameId", gamesId)
+                            .eq("status",1))
                     .stream().map(TGameRecord::getUserId).collect(Collectors.toList());
             return userId;
         }
@@ -132,7 +167,36 @@
         return gameService.getById(id);
 //        return  game.getId();
     }
-
+    @ResponseBody
+    @PostMapping("/getSiteList")
+    // 查询未配置智慧球场的场地 智慧球场添加使用
+    public List<Site> getSiteList(@RequestParam("storeId") Integer storeId){
+        List<Integer> collect = gameService.list().stream().map(Game::getSiteId).collect(Collectors.toList());
+        if (collect.size() == 0 ){
+            collect.add(-1);
+        }
+        List<Site> list = siteService.list(new QueryWrapper<Site>().select("id","name")
+                .eq("storeId", storeId)
+                .eq("state", 1)
+                .notIn("id",collect)
+        );
+        return list;
+    }
+    // 查询未配置智慧球场的场地 包含当前配置的场地 智慧球场编辑使用
+    @ResponseBody
+    @PostMapping("/getSiteList1")
+    public List<Site> getSiteList1(@RequestParam Integer id) {
+        Game game = gameService.getById(id);
+        List<Integer> collect = gameService.list().stream().map(Game::getSiteId).collect(Collectors.toList());
+        Site byId = siteService.getById(game.getSiteId());
+        List<Site> list = siteService.list(new QueryWrapper<Site>().select("id","name")
+                .eq("state", 1)
+                .eq("storeId",game.getStoreId())
+                .notIn("id",collect)
+        );
+        list.add(byId);
+        return list;
+    }
     @ResponseBody
     @PostMapping("/listorder")
     public List<Map<String, Object>> listorder(@RequestBody BookingQuery bookingQuery) {

--
Gitblit v1.7.1