刘帅
2026-09-23 2d1510060f55ac012cb862363203313744c0432f
cloud-server-other/src/main/java/com/dsh/other/controller/BallController.java
@@ -1,27 +1,29 @@
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;
import com.dsh.other.feignclient.model.AdvertisementQuery;
import com.dsh.other.model.BannerVo;
import com.dsh.other.service.GameService;
import com.dsh.other.service.IBannerService;
import com.dsh.other.service.IRegionService;
import com.dsh.other.service.TGameConfigService;
import com.dsh.other.model.dto.siteDto.GameDataQuery;
import com.dsh.other.service.*;
import com.dsh.other.util.ResultUtil;
import io.swagger.annotations.ApiImplicitParam;
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;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * @author zhibing.pu
@@ -32,12 +34,95 @@
public class BallController {
    @Autowired
    private GameService gameService;
    @Autowired
    private TGameRecordService gameRecordService;
    @Autowired
    private ISiteService siteService;
    // 数据统计
    @ResponseBody
    @PostMapping("/student/getData")
    public List<TGameRecord> getData(@RequestBody GameDataQuery query){
        if (query.getStoreId()==null){
            // 获取到游戏ids
            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 (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<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()));
            }
        }
    }
    @ResponseBody
    @PostMapping("/student/webStudentList")
    public List<Game> list(@RequestBody BallQueryDto ballQueryDto){
        List<Game> games =   gameService.queryAll(ballQueryDto);
    public List<Game> list(@RequestBody BallQueryDto ballQueryDto) {
        List<Game> games = gameService.queryAll(ballQueryDto);
        return games;
    }
    // 根据门店ids 获取游戏记录
    @ResponseBody
    @PostMapping("/game/getGameByStoreIds")
    public List<Integer> getGameByStoreIds(@RequestBody List<Integer> storeIds) {
        // 游戏id
        List<Integer> gamesId = gameService.list(new QueryWrapper<Game>().in("storeId", storeIds))
                .stream().map(Game::getId).collect(Collectors.toList());
        if (gamesId.size() == 0) {
            return new ArrayList<>();
        } else {
            // 根据游戏id获取游戏记录 获取用户Ids
            List<Integer> userId = gameRecordService.list(new QueryWrapper<TGameRecord>().in("gameId", gamesId)
                            .eq("status",1))
                    .stream().map(TGameRecord::getUserId).collect(Collectors.toList());
            return userId;
        }
    }
    @Autowired
@@ -45,50 +130,79 @@
    @ResponseBody
    @PostMapping("/save")
    public Integer save(@RequestBody Game game){
        Region city = regionService.getOne(new QueryWrapper<Region>().eq("code", game.getCityCode()));
        game.setCity(city.getName());
    public Integer save(@RequestBody Game game) {
        Region province = regionService.getOne(new QueryWrapper<Region>().eq("code", game.getProvinceCode()));
        game.setProvince(province.getName());
        if (game.getCityCode() != null) {
            Region city = regionService.getOne(new QueryWrapper<Region>().eq("code", game.getCityCode()));
            game.setCity(city.getName());
            Region province = regionService.getOne(new QueryWrapper<Region>().eq("code", game.getProvinceCode()));
            game.setProvince(province.getName());
        }
        gameService.saveOrUpdate(game);
         System.out.println("==========="+game);
         return  game.getId();
        System.out.println("===========" + game);
        return game.getId();
    }
    @Autowired
    private TGameConfigService config;
    @ResponseBody
    @PostMapping("/saveConfig")
    public void saveConfig(@RequestBody List<TGameConfig> gameConfigList){
        System.out.println("=======gameConfigList===="+gameConfigList);
    public void saveConfig(@RequestBody List<TGameConfig> gameConfigList) {
        System.out.println("=======gameConfigList====" + gameConfigList);
        config.saveOrUpdateBatch(gameConfigList);
//        return  game.getId();
    }
    @ResponseBody
    @PostMapping("/queryGame")
    public Game queryGame(@RequestParam Integer id){
       return gameService.getById(id);
    public Game queryGame(@RequestParam Integer id) {
        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){
        System.out.println("===bookingQuery===="+bookingQuery);
    public List<Map<String, Object>> listorder(@RequestBody BookingQuery bookingQuery) {
        System.out.println("===bookingQuery====" + bookingQuery);
        return gameService.orderlist(bookingQuery);
//        return  game.getId();
    }
}