Compare commits

...

9 Commits

Author SHA1 Message Date
shi d6141bb716 Merge branch 'main-meitian' into main-pgt 2025-04-07 15:25:55 +08:00
liaoyong f35179c8bc refactor(ff-game): 重构游戏模块代码
- 移除了 GameName、GamePlatform 和 GameSecretKey 相关的实体类、Mapper 和 Service
- 优化了 ApiGameController 中的代码结构
- 更新了 GameBalanceExchange 类的继承关系
- 调整了 GamesAEServiceImpl 和 GamesDGServiceImpl 中的方法实现
2025-04-07 15:22:12 +08:00
liaoyong 947d54590a refactor(ff-game): 重构游戏模块代码
- 移除了 GameName、GamePlatform 和 GameSecretKey 相关的实体类、Mapper 和 Service
- 优化了 ApiGameController 中的代码结构
- 更新了 GameBalanceExchange 类的继承关系
- 调整了 GamesAEServiceImpl 和 GamesDGServiceImpl 中的方法实现
2025-04-07 15:22:04 +08:00
shi 22de0fc207 Merge branch 'main-meitian' into main-pgt 2025-04-07 14:45:02 +08:00
shi 905893df96 feat(game): 添加 PGT 游戏接口实现
- 新增 PGT 游戏列表获取功能- 实现 PGT 投注记录获取和处理
- 添加 PGT 成员踢出功能
- 优化 PGT 客户端接口定义
- 新增相关枚举类和数据传输对象
2025-04-07 14:44:55 +08:00
liaoyong b35fad13d1 refactor(ff-game): 重构游戏平台相关代码
- 移除了 GameSecretKeyCurrency 相关的使用
- 优化了货币转换逻辑
- 简化了游戏平台和货币信息的处理- 调整了批量插入逻辑,使其更加通用
2025-04-07 11:22:47 +08:00
shi 4e5fb79858 Merge branch 'main-meitian' into main-pgt 2025-04-07 10:54:02 +08:00
shi 2013a12aee feat(game): 添加 PGT 游戏平台支持
- 新增 PGT 游戏平台的 API接口和实现类
- 添加 PGT 游戏平台的会员账户生成逻辑
- 实现 PGT 游戏平台的余额查询、转账等功能
- 添加 PGT 游戏平台的错误响应和数据模型类
2025-04-07 10:53:56 +08:00
liaoyong 40208aab98 feat(game): 新增游戏平台支持
- 添加 AE 和 DG 游戏平台的接口实现
- 新增游戏列表、兑换转账、投注记录等功能
- 优化游戏数据构建和处理逻辑
- 移除不必要的服务和缓存操作
2025-04-07 10:15:35 +08:00
79 changed files with 1850 additions and 3897 deletions

View File

@ -68,6 +68,11 @@ public class CacheConstants {
*/ */
public static final String PG_GAMES = "pg_games:"; public static final String PG_GAMES = "pg_games:";
/**
* pgt
*/
public static final String PGT_GAMES = "pgt_games:";
/** /**
* fc * fc
@ -89,6 +94,12 @@ public class CacheConstants {
*/ */
public static final String PG_GAMES_BET_CURRENCY = "pg_games:bet:currency"; public static final String PG_GAMES_BET_CURRENCY = "pg_games:bet:currency";
/**
* pgtid
*/
public static final String PGT_NEXT_ID = "pgt_next:id:";
/** /**
* ae * ae
*/ */

View File

@ -0,0 +1,24 @@
package com.ff.base.enums;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
/**
*
*
* @author shi
* @date 2025/04/07
*/
@Getter
@AllArgsConstructor
public enum PGTBetStatus {
OPEN(1, "打开 或 未结算", "OPEN"),
SETTLED(2, "已结算", "SETTLED"),
UNSETTLED(1, "未结算", "UNSETTLED"),
VOID(3, "作废 或 无效", "VOID");
private final int code;
private final String description;
private final String type;
}

View File

@ -0,0 +1,43 @@
package com.ff.base.enums;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import java.util.Optional;
import java.util.stream.Stream;
/**
* pgt
*
* @author shi
* @date 2025/04/07
*/
@Getter
@AllArgsConstructor
public enum PGTGameType {
EGAMES("EGAMES",1, "游戏老虎机"),
LIVECASINO("LIVECASINO",2, "现场赌场"),
SPORT("SPORT",8, "体育"),
POKER("POKER",2, "扑克"),
TRADING("TRADING",1, "贸易");
// 枚举字段
private final String code;
private final Integer systemCode;
private final String description;
/**
*
*
* @param code
* @return {@link Integer }
*/
public static Integer findSystemByCode(String code) {
Optional<Integer> system = Stream.of(PGTGameType.values())
.filter(gameType -> gameType.getCode().equals(code))
.map(PGTGameType::getSystemCode)
.findFirst();
return system.orElse(null);
}
}

View File

@ -0,0 +1,35 @@
package com.ff.base.enums;
import com.dtflys.forest.annotation.Get;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
/**
* pgtplayout
*
* @author shi
* @date 2025/04/07
*/
@Getter
@AllArgsConstructor
public enum PGTPayoutStatus {
LOSE("LOSE", 2, "输"),
WIN("WIN",1, "赢"),
DRAW("DRAW",3, "平"),
UNKNOWN("UNKNOWN",4, "未知");
private final String code;
private final Integer systemCode;
private final String description;
public static PGTPayoutStatus getByCode(String code) {
for (PGTPayoutStatus status : PGTPayoutStatus.values()) {
if (status.getCode().equals(code)) {
return status;
}
}
return UNKNOWN;
}
}

View File

@ -40,6 +40,11 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
public static final String ISO_8601_FORMAT= "yyyy-MM-dd'T'HH:mm:ss"; public static final String ISO_8601_FORMAT= "yyyy-MM-dd'T'HH:mm:ss";
public static final String ISO_8601_FORMAT_Z= "yyyy-MM-dd'T'HH:mm:ss'Z'";
/** /**
* Date * Date
* *

View File

@ -1,7 +1,6 @@
package com.ff.api.controller; package com.ff.api.controller;
import cn.hutool.core.util.NumberUtil;
import com.ff.annotation.CheckHeader; import com.ff.annotation.CheckHeader;
import com.ff.api.request.*; import com.ff.api.request.*;
import com.ff.api.response.*; import com.ff.api.response.*;
@ -10,10 +9,7 @@ import com.ff.base.core.controller.BaseController;
import com.ff.base.core.domain.AjaxResult; import com.ff.base.core.domain.AjaxResult;
import com.ff.base.core.page.TableDataInfo; import com.ff.base.core.page.TableDataInfo;
import com.ff.base.enums.ErrorCode; import com.ff.base.enums.ErrorCode;
import com.ff.base.enums.GamePlatforms;
import com.ff.base.enums.TransferType;
import com.ff.base.exception.base.ApiException; import com.ff.base.exception.base.ApiException;
import com.ff.base.exception.base.BaseException;
import com.ff.base.system.domain.TenantSecretKey; import com.ff.base.system.domain.TenantSecretKey;
import com.ff.base.utils.StringUtils; import com.ff.base.utils.StringUtils;
import com.ff.base.utils.bean.BeanUtils; import com.ff.base.utils.bean.BeanUtils;
@ -46,11 +42,8 @@ import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Future;
/** /**
* api * api
@ -191,6 +184,8 @@ public class ApiGameController extends BaseController {
.lang(/*gameSecretKeyLangDTO.getLang()*/ targetLang) .lang(/*gameSecretKeyLangDTO.getLang()*/ targetLang)
.vendor(platform) .vendor(platform)
.keyInfo(keyInfo) .keyInfo(keyInfo)
.systemCurrency(loginRequest.getCurrencyCode())
.build(); .build();
String login = iGamesService.loginWithoutRedirect(gamesLogin); String login = iGamesService.loginWithoutRedirect(gamesLogin);
@ -241,10 +236,15 @@ public class ApiGameController extends BaseController {
.platformCode(gameExchangeBalanceRequest.getPlatformCode()) .platformCode(gameExchangeBalanceRequest.getPlatformCode())
.sourceId(gameExchangeBalanceRequest.getOrderId()) .sourceId(gameExchangeBalanceRequest.getOrderId())
.currencyCode(gameExchangeBalanceRequest.getCurrencyCode()) .currencyCode(gameExchangeBalanceRequest.getCurrencyCode())
.currency(targetCurrency)
.transferType(gameExchangeBalanceRequest.getTransferType()) .transferType(gameExchangeBalanceRequest.getTransferType())
.amount(gameExchangeBalanceRequest.getAmount()) .amount(gameExchangeBalanceRequest.getAmount())
.account(gameExchangeBalanceRequest.getAccount()) .account(gameExchangeBalanceRequest.getAccount())
.tenantKey(tenantSecretKey.getTenantKey()) .tenantKey(tenantSecretKey.getTenantKey())
.systemCurrency(gameExchangeBalanceRequest.getCurrencyCode())
.agentId(keyInfo.getCode())
.agentKey(keyInfo.getKey())
.build()); .build());
// 获取用户信息 // 获取用户信息
@ -265,6 +265,8 @@ public class ApiGameController extends BaseController {
.transferType(gameExchangeBalanceRequest.getTransferType()) .transferType(gameExchangeBalanceRequest.getTransferType())
.vendor(platform) .vendor(platform)
.keyInfo(keyInfo) .keyInfo(keyInfo)
.systemCurrency(gameExchangeBalanceRequest.getCurrencyCode())
.build(); .build();
Long exchangeTransferId = iGamesService.exchangeTransferByAgentId(exchangeTransferMoneyRequestDTO); Long exchangeTransferId = iGamesService.exchangeTransferByAgentId(exchangeTransferMoneyRequestDTO);
GameExchangeMoney gameExchangeMoney = gameExchangeMoneyService.selectGameExchangeMoneyById(exchangeTransferId); GameExchangeMoney gameExchangeMoney = gameExchangeMoneyService.selectGameExchangeMoneyById(exchangeTransferId);
@ -349,6 +351,7 @@ public class ApiGameController extends BaseController {
.startTime(gameCreateFreeSpinRequest.getStartTime()) .startTime(gameCreateFreeSpinRequest.getStartTime())
.vendor(platform) .vendor(platform)
.keyInfo(keyInfo) .keyInfo(keyInfo)
.systemCurrency(gameCreateFreeSpinRequest.getCurrencyCode())
.build(); .build();
@ -447,6 +450,7 @@ public class ApiGameController extends BaseController {
.agentKey(keyInfo.getKey()) .agentKey(keyInfo.getKey())
.vendor(platform) .vendor(platform)
.keyInfo(keyInfo) .keyInfo(keyInfo)
.systemCurrency(gameGetDetailRequest.getCurrencyCode())
.build()); .build());
return AjaxResult.success(gameDetail); return AjaxResult.success(gameDetail);
} }
@ -496,6 +500,7 @@ public class ApiGameController extends BaseController {
.agentKey(keyInfo.getKey()) .agentKey(keyInfo.getKey())
.vendor(platform) .vendor(platform)
.keyInfo(keyInfo) .keyInfo(keyInfo)
.systemCurrency(gameKickMemeberRequest.getCurrencyCode())
.build())); .build()));
} }
@ -533,6 +538,7 @@ public class ApiGameController extends BaseController {
.currency(/*gameSecretKey.getCurrency()*/targetCurrency) .currency(/*gameSecretKey.getCurrency()*/targetCurrency)
.vendor(platform) .vendor(platform)
.keyInfo(keyInfo) .keyInfo(keyInfo)
.systemCurrency(gameKickMemeberAllRequest.getCurrencyCode())
.build(); .build();
if (!ObjectUtils.isEmpty(gameKickMemeberAllRequest.getGameId())) { if (!ObjectUtils.isEmpty(gameKickMemeberAllRequest.getGameId())) {
Game game = gameService.selectGameById(gameKickMemeberAllRequest.getGameId()); Game game = gameService.selectGameById(gameKickMemeberAllRequest.getGameId());
@ -617,6 +623,7 @@ public class ApiGameController extends BaseController {
.referenceId(request.getReferenceId()) .referenceId(request.getReferenceId())
.vendor(platform) .vendor(platform)
.keyInfo(keyInfo) .keyInfo(keyInfo)
.systemCurrency(request.getCurrencyCode())
.build()); .build());
return AjaxResult.success(cancelFreeSpin); return AjaxResult.success(cancelFreeSpin);
} }
@ -626,13 +633,12 @@ public class ApiGameController extends BaseController {
* *
* @param request api * @param request api
* @return {@link AjaxResult } * @return {@link AjaxResult }
*/ *//*
@PostMapping("/exchange/balance/all") @PostMapping("/exchange/balance/all")
public AjaxResult exchangeBalanceAll(@Validated @RequestBody GameExchangeBalanceAllRequest request) { public AjaxResult exchangeBalanceAll(@Validated @RequestBody GameExchangeBalanceAllRequest request) {
TenantSecretKey tenantSecretKey = keyConfig.get(); TenantSecretKey tenantSecretKey = keyConfig.get();
// List<GameSecretKeyCurrencyDTO> gameSecretKeys = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTOList(GameSecretKeyCurrencyDTO.builder() // List<GameSecretKeyCurrencyDTO> gameSecretKeys = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTOList(GameSecretKeyCurrencyDTO.builder()
// .systemCurrency(gameExchangeBalanceAllRequest.getCurrencyCode()).build()); // .systemCurrency(gameExchangeBalanceAllRequest.getCurrencyCode()).build());
@ -665,6 +671,7 @@ public class ApiGameController extends BaseController {
key.setCurrency(targetCurrency); key.setCurrency(targetCurrency);
key.setPlatform(platform); key.setPlatform(platform);
key.setKeyInfo(keyInfo); key.setKeyInfo(keyInfo);
key.setSystemCurrency(request.getCurrencyCode());
keys.add(key); keys.add(key);
} }
@ -692,11 +699,12 @@ public class ApiGameController extends BaseController {
.agentKey(key.getKey()) .agentKey(key.getKey())
.orderId(request.getOrderId()) .orderId(request.getOrderId())
.amount(BigDecimal.ONE) .amount(BigDecimal.ONE)
.currency(/*gameSecretKeyCurrencyDTO.getCurrency()*/key.currency) .currency(*//*gameSecretKeyCurrencyDTO.getCurrency()*//*key.currency)
.tenantKey(tenantSecretKey.getTenantKey()) .tenantKey(tenantSecretKey.getTenantKey())
.account(member.getGameAccount()) .account(member.getGameAccount())
.vendor(key.getPlatform()) .vendor(key.getPlatform())
.keyInfo(key.getKeyInfo()) .keyInfo(key.getKeyInfo())
.systemCurrency(key.systemCurrency)
.transferType(TransferType.ALL.getCode()) .transferType(TransferType.ALL.getCode())
.build(); .build();
return iGamesService.exchangeTransferByAgentId(exchangeTransferMoneyRequestDTO); return iGamesService.exchangeTransferByAgentId(exchangeTransferMoneyRequestDTO);
@ -736,6 +744,10 @@ public class ApiGameController extends BaseController {
.amount(gameExchangeMoney.getBalance()) .amount(gameExchangeMoney.getBalance())
.account(member.getMemberAccount()) .account(member.getMemberAccount())
.tenantKey(tenantSecretKey.getTenantKey()) .tenantKey(tenantSecretKey.getTenantKey())
.currency()
.systemCurrency(gameExchangeMoney.getCurrencyCode())
.agentId()
.agentKey()
.build()); .build());
} }
@ -747,7 +759,7 @@ public class ApiGameController extends BaseController {
return AjaxResult.success(balanceMap); return AjaxResult.success(balanceMap);
} }*/
/** /**
@ -801,6 +813,7 @@ public class ApiGameController extends BaseController {
.lang(/*gameSecretKeyLangDTO.getLang()*/targetLang) .lang(/*gameSecretKeyLangDTO.getLang()*/targetLang)
.vendor(platform) .vendor(platform)
.keyInfo(keyInfo) .keyInfo(keyInfo)
.systemCurrency(request.getCurrencyCode())
.build(); .build();
GameDemoLoginResponseDTO gameDemoLoginResponseDTO = iGamesService.gameDemoLogin(gamesLogin); GameDemoLoginResponseDTO gameDemoLoginResponseDTO = iGamesService.gameDemoLogin(gamesLogin);
@ -817,5 +830,6 @@ public class ApiGameController extends BaseController {
private String key; private String key;
private Platform platform; private Platform platform;
private KeyInfo keyInfo; private KeyInfo keyInfo;
private String systemCurrency;
} }
} }

View File

@ -145,6 +145,7 @@ public class ApiMemberController extends BaseController {
.currency(targetCurrency) .currency(targetCurrency)
.vendor(platform) .vendor(platform)
.keyInfo(keyInfo) .keyInfo(keyInfo)
.systemCurrency(memberCreateApiRequest.getCurrencyCode())
.build(); .build();
Boolean result = iGamesService.createMember(gamesBaseRequestDTO); Boolean result = iGamesService.createMember(gamesBaseRequestDTO);
Assert.isTrue(result, "建立游戏账号失败"); Assert.isTrue(result, "建立游戏账号失败");
@ -201,6 +202,7 @@ public class ApiMemberController extends BaseController {
.agentKey(keyInfo.getKey()) .agentKey(keyInfo.getKey())
.vendor(platform) .vendor(platform)
.keyInfo(keyInfo) .keyInfo(keyInfo)
.systemCurrency(request.getCurrencyCode())
.build(); .build();
MemberInfoResponseDTO memberInfo = iGamesService.getMemberInfo(gamesBaseRequestDTO); MemberInfoResponseDTO memberInfo = iGamesService.getMemberInfo(gamesBaseRequestDTO);
MemberInfoResponse memberInfoResponse = new MemberInfoResponse(); MemberInfoResponse memberInfoResponse = new MemberInfoResponse();
@ -248,6 +250,7 @@ public class ApiMemberController extends BaseController {
key.setCode(keyInfo.getCode()); key.setCode(keyInfo.getCode());
key.setKey(keyInfo.getKey()); key.setKey(keyInfo.getKey());
key.setCurrency(targetCurrency); key.setCurrency(targetCurrency);
key.setSystemCurrency(memberInfoAllApiRequest.getCurrencyCode());
keys.add(key); keys.add(key);
} }
// 创建线程池 // 创建线程池
@ -274,6 +277,7 @@ public class ApiMemberController extends BaseController {
.accounts(member.getGameAccount()) .accounts(member.getGameAccount())
.agentId(gameSecretKey.getCode()) .agentId(gameSecretKey.getCode())
.currency(gameSecretKey.getCurrency()) .currency(gameSecretKey.getCurrency())
.systemCurrency(gameSecretKey.getSystemCurrency())
.agentKey(gameSecretKey.getKey()) .agentKey(gameSecretKey.getKey())
.build(); .build();
//查询余额 //查询余额
@ -315,6 +319,7 @@ public class ApiMemberController extends BaseController {
private String code; private String code;
private String currency; private String currency;
private String key; private String key;
private String systemCurrency;
} }
} }

View File

@ -1,5 +1,6 @@
package com.ff.common.dto; package com.ff.common.dto;
import com.ff.game.api.request.GamesBaseRequestDTO;
import io.swagger.models.auth.In; import io.swagger.models.auth.In;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
@ -21,7 +22,7 @@ import java.math.BigDecimal;
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@SuperBuilder @SuperBuilder
public class GameBalanceExchange implements Serializable { public class GameBalanceExchange extends GamesBaseRequestDTO implements Serializable {
private final static long serialVersionUID = 3452954102791311247L; private final static long serialVersionUID = 3452954102791311247L;

View File

@ -26,13 +26,8 @@ import com.ff.common.service.ITenantQuotaExchangeService;
import com.ff.base.system.service.ITenantSecretKeyService; import com.ff.base.system.service.ITenantSecretKeyService;
import com.ff.game.api.IGamesService; import com.ff.game.api.IGamesService;
import com.ff.game.api.request.MemberInfoRequestDTO; import com.ff.game.api.request.MemberInfoRequestDTO;
import com.ff.game.domain.GameSecretKey;
import com.ff.game.dto.GameSecretKeyCurrencyDTO;
import com.ff.game.service.IGameSecretKeyCurrencyService;
import com.ff.game.service.IGameSecretKeyService;
import com.ff.member.domain.Member; import com.ff.member.domain.Member;
import com.ff.member.service.IMemberService; import com.ff.member.service.IMemberService;
import nonapi.io.github.classgraph.json.Id;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.ff.common.mapper.TenantGameQuotaMapper; import com.ff.common.mapper.TenantGameQuotaMapper;
@ -61,30 +56,18 @@ public class TenantGameQuotaServiceImpl implements ITenantGameQuotaService {
@Resource @Resource
private ITenantSecretKeyService tenantSecretKeyService; private ITenantSecretKeyService tenantSecretKeyService;
@Resource @Resource
private IMemberService memberService; private IMemberService memberService;
@Resource
private IGameSecretKeyService gameSecretKeyService;
@Autowired @Autowired
private Map<String, IGamesService> gamesService; private Map<String, IGamesService> gamesService;
@Resource @Resource
private ITenantQuotaExchangeService tenantQuotaExchangeService; private ITenantQuotaExchangeService tenantQuotaExchangeService;
@Resource @Resource
private ITenantPlatformService tenantPlatformService; private ITenantPlatformService tenantPlatformService;
@Resource
private IGameSecretKeyCurrencyService gameSecretKeyCurrencyService;
/** /**
* *
* *
@ -289,12 +272,12 @@ public class TenantGameQuotaServiceImpl implements ITenantGameQuotaService {
@Override @Override
public BigDecimal gameBalanceExchange(GameBalanceExchange gameBalanceExchange) { public BigDecimal gameBalanceExchange(GameBalanceExchange gameBalanceExchange) {
// 获取平台接口密钥 // 获取平台接口密钥
GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder() // GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(gameBalanceExchange.getPlatformCode()) // .platformCode(gameBalanceExchange.getPlatformCode())
.systemCurrency(gameBalanceExchange.getCurrencyCode()).build()); // .systemCurrency(gameBalanceExchange.getCurrencyCode()).build());
// 检查平台密钥是否存在,否则抛出异常 // 检查平台密钥是否存在,否则抛出异常
ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode()); // ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode());
TenantQuotaExchange tenantQuotaExchange = tenantQuotaExchangeService.getTenantQuotaExchange(Constants.USDT, gameBalanceExchange.getCurrencyCode()); TenantQuotaExchange tenantQuotaExchange = tenantQuotaExchangeService.getTenantQuotaExchange(Constants.USDT, gameBalanceExchange.getCurrencyCode());
ApiException.notNull(tenantQuotaExchange, ErrorCode.CURRENCY_EXCHANGE.getCode()); ApiException.notNull(tenantQuotaExchange, ErrorCode.CURRENCY_EXCHANGE.getCode());
@ -344,9 +327,9 @@ public class TenantGameQuotaServiceImpl implements ITenantGameQuotaService {
// 获取第三方钱包余额 // 获取第三方钱包余额
MemberInfoRequestDTO gamesBaseRequestDTO = MemberInfoRequestDTO.builder() MemberInfoRequestDTO gamesBaseRequestDTO = MemberInfoRequestDTO.builder()
.accounts(member.getGameAccount()) .accounts(member.getGameAccount())
.agentId(gameSecretKey.getCode()) .agentId(gameBalanceExchange.getAgentId())
.currency(gameSecretKey.getCurrency()) .currency(gameBalanceExchange.getCurrency())
.agentKey(gameSecretKey.getKey()) .agentKey(gameBalanceExchange.getAgentKey())
.build(); .build();
balanceRequestAmount = iGamesService.getMemberInfo(gamesBaseRequestDTO).getBalance(); balanceRequestAmount = iGamesService.getMemberInfo(gamesBaseRequestDTO).getBalance();
balanceRequestAmount = NumberUtil.add(balanceRequestAmount, NumberUtil.mul(balanceRequestAmount, NumberUtil.div(tenantPlatform.getUseCost(), Constants.HUNDRED))); balanceRequestAmount = NumberUtil.add(balanceRequestAmount, NumberUtil.mul(balanceRequestAmount, NumberUtil.div(tenantPlatform.getUseCost(), Constants.HUNDRED)));

View File

@ -12,23 +12,19 @@ import com.ff.base.system.service.ISysConfigService;
import com.ff.base.utils.DateUtils; import com.ff.base.utils.DateUtils;
import com.ff.base.utils.JsonUtil; import com.ff.base.utils.JsonUtil;
import com.ff.base.utils.StringUtils; import com.ff.base.utils.StringUtils;
import com.ff.base.utils.TenantUtils;
import com.ff.base.utils.uuid.IdUtils; import com.ff.base.utils.uuid.IdUtils;
import com.ff.common.dto.GameBalanceExchange; import com.ff.common.dto.GameBalanceExchange;
import com.ff.common.service.ITenantGameQuotaFlowService;
import com.ff.common.service.ITenantGameQuotaService; import com.ff.common.service.ITenantGameQuotaService;
import com.ff.config.KeyConfig; import com.ff.config.KeyConfig;
import com.ff.game.api.IGamesService; import com.ff.game.api.IGamesService;
import com.ff.game.api.ae.client.AEClient; import com.ff.game.api.ae.client.AEClient;
import com.ff.game.api.ae.dto.*; import com.ff.game.api.ae.dto.*;
import com.ff.game.api.ng.dto.ApiExchangeTransferStatusResponseDTO;
import com.ff.game.api.ng.dto.ApiNGResponseDTO;
import com.ff.game.api.request.*; import com.ff.game.api.request.*;
import com.ff.game.api.xk.dto.XKGamesDTO;
import com.ff.game.api.xk.dto.XKKickMemberDTO; import com.ff.game.api.xk.dto.XKKickMemberDTO;
import com.ff.game.domain.*; import com.ff.game.domain.*;
import com.ff.game.dto.GameSecretKeyCurrencyDTO; import com.ff.game.service.IGameBettingDetailsService;
import com.ff.game.service.*; import com.ff.game.service.IGameExchangeMoneyService;
import com.ff.game.service.IGameService;
import com.ff.member.domain.Member; import com.ff.member.domain.Member;
import com.ff.member.service.IMemberService; import com.ff.member.service.IMemberService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -65,10 +61,6 @@ public class GamesAEServiceImpl implements IGamesService {
private IGameExchangeMoneyService gameExchangeMoneyService; private IGameExchangeMoneyService gameExchangeMoneyService;
@Resource
private IGamePlatformService gamePlatformService;
@Resource @Resource
private IGameService gameService; private IGameService gameService;
@Resource @Resource
@ -77,14 +69,6 @@ public class GamesAEServiceImpl implements IGamesService {
@Resource @Resource
private IMemberService memberService; private IMemberService memberService;
@Resource
private IGameFreeRecordService gameFreeRecordService;
@Resource
private IGameSecretKeyService gameSecretKeyService;
@Resource
private IGameSecretKeyCurrencyService gameSecretKeyCurrencyService;
@Resource @Resource
private AEClient AEClient; private AEClient AEClient;
@ -95,10 +79,6 @@ public class GamesAEServiceImpl implements IGamesService {
@Resource @Resource
private IGameBettingDetailsService gameBettingDetailsService; private IGameBettingDetailsService gameBettingDetailsService;
@Resource
private IGameNameService gameNameService;
/** /**
* id * id
*/ */
@ -222,32 +202,39 @@ public class GamesAEServiceImpl implements IGamesService {
@Transactional @Transactional
@Override @Override
public String getGameList(GamesBaseRequestDTO gamesBaseRequestDTO) { public String getGameList(GamesBaseRequestDTO gamesBaseRequestDTO) {
GamePlatform gamePlatform = gamePlatformService.selectGamePlatformById(PLATFORM_ID); // GamePlatform gamePlatform = gamePlatformService.selectGamePlatformById(PLATFORM_ID);
//没有此平台就新增一个平台 //没有此平台就新增一个平台
if (ObjectUtils.isEmpty(gamePlatform)) { // if (ObjectUtils.isEmpty(gamePlatform)) {
gamePlatform = new GamePlatform(); // gamePlatform = new GamePlatform();
gamePlatform.setId(PLATFORM_ID); // gamePlatform.setId(PLATFORM_ID);
gamePlatform.setPlatformCode(GamePlatforms.AE.getInfo()); // gamePlatform.setPlatformCode(GamePlatforms.AE.getInfo());
gamePlatform.setPlatformType(PlatformType.GAME_HALL.getCode()); // gamePlatform.setPlatformType(PlatformType.GAME_HALL.getCode());
gamePlatform.setPlatformName(GamePlatforms.AE.getInfo() + PlatformType.GAME_HALL.getName()); // gamePlatform.setPlatformName(GamePlatforms.AE.getInfo() + PlatformType.GAME_HALL.getName());
gamePlatform.setSortNo(gamePlatformService.selectMaxSortNo() + 1); // gamePlatform.setSortNo(gamePlatformService.selectMaxSortNo() + 1);
gamePlatform.setCreateBy(Constants.SYSTEM); // gamePlatform.setCreateBy(Constants.SYSTEM);
gamePlatformService.insertGamePlatform(gamePlatform); // gamePlatformService.insertGamePlatform(gamePlatform);
} // }
Platform platform = gamesBaseRequestDTO.getVendor();
Game game = gameService.selectGameById(GAME_ID); Game game = gameService.selectGameById(GAME_ID);
//不存在这个游戏 //不存在这个游戏
if (ObjectUtils.isEmpty(game)) { if (ObjectUtils.isEmpty(game)) {
game = new Game(); game = new Game();
game.setId(GAME_ID); game.setId(GAME_ID);
game.setSortNo(gameService.selectMaxSortNoByPlatformId(gamePlatform.getId()) + 1); game.setSortNo(gameService.selectMaxSortNo(PlatformType.GAME_HALL.getCode(), GamePlatforms.AE.getCode()) + 1);
game.setPlatformId(gamePlatform.getId()); //game.setPlatformId(gamePlatform.getId());
game.setPlatformCode(platform.getPlatformCode());
game.setPlatformType(PlatformType.GAME_HALL.getCode());
game.setGameCode("1"); game.setGameCode("1");
game.setGameSourceType(String.valueOf(1)); game.setGameSourceType(String.valueOf(1));
game.setGameName("AE大厅"); game.setGameName("AE大厅");
game.setCreateBy(Constants.SYSTEM); game.setCreateBy(Constants.SYSTEM);
NameInfo nameInfo = new NameInfo();
nameInfo.setLang("zh-CN");
nameInfo.setName("AE大厅");
game.setNameInfo(Collections.singletonList(nameInfo));
gameService.insertGame(game); gameService.insertGame(game);
} }
GameName gameName = gameNameService.selectGameNameById(GAME_NAME_ID); /*GameName gameName = gameNameService.selectGameNameById(GAME_NAME_ID);
if (ObjectUtils.isEmpty(gameName)) { if (ObjectUtils.isEmpty(gameName)) {
gameNameService.insertGameName(GameName.builder() gameNameService.insertGameName(GameName.builder()
.id(GAME_NAME_ID) .id(GAME_NAME_ID)
@ -256,7 +243,7 @@ public class GamesAEServiceImpl implements IGamesService {
.langCode("zh-CN") .langCode("zh-CN")
.createBy(Constants.SYSTEM) .createBy(Constants.SYSTEM)
.build()); .build());
} }*/
return CacheConstants.XK_GAMES; return CacheConstants.XK_GAMES;
} }
@ -271,10 +258,10 @@ public class GamesAEServiceImpl implements IGamesService {
@Transactional @Transactional
public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) { public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) {
log.info("GamesAEServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO); log.info("GamesAEServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO);
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder() // GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(GamePlatforms.AE.getInfo()) // .platformCode(GamePlatforms.AE.getInfo())
.code(exchangeTransferMoneyRequestDTO.getAgentId()) // .code(exchangeTransferMoneyRequestDTO.getAgentId())
.build()); // .build());
Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount()); Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount());
String transactionId = GamePlatforms.AE.getCode() + IdUtils.simpleUUID(); String transactionId = GamePlatforms.AE.getCode() + IdUtils.simpleUUID();
@ -294,7 +281,7 @@ public class GamesAEServiceImpl implements IGamesService {
.quota(exchangeTransferMoneyRequestDTO.getQuota()) .quota(exchangeTransferMoneyRequestDTO.getQuota())
.balance(exchangeTransferMoneyRequestDTO.getAmount()) .balance(exchangeTransferMoneyRequestDTO.getAmount())
.exchangeType(exchangeTransferMoneyRequestDTO.getTransferType()) .exchangeType(exchangeTransferMoneyRequestDTO.getTransferType())
.currencyCode(currencyDTO.getSystemCurrency()) .currencyCode(exchangeTransferMoneyRequestDTO.getSystemCurrency())
.memberId(member.getId()) .memberId(member.getId())
.transactionId(transactionId) .transactionId(transactionId)
.platformCode(GamePlatforms.AE.getInfo()) .platformCode(GamePlatforms.AE.getInfo())
@ -378,6 +365,10 @@ public class GamesAEServiceImpl implements IGamesService {
.amount(exchangeMoney.getBalance()) .amount(exchangeMoney.getBalance())
.account(member.getMemberAccount()) .account(member.getMemberAccount())
.tenantKey(exchangeMoney.getTenantKey()) .tenantKey(exchangeMoney.getTenantKey())
.currency(exchangeTransferMoneyRequestDTO.getCurrency())
.systemCurrency(exchangeTransferMoneyRequestDTO.getSystemCurrency())
.agentKey(exchangeTransferMoneyRequestDTO.getAgentKey())
.agentId(exchangeTransferMoneyRequestDTO.getAgentId())
.build()); .build());
} }
exchangeMoney.setStatus(status); exchangeMoney.setStatus(status);
@ -402,20 +393,20 @@ public class GamesAEServiceImpl implements IGamesService {
Map<String, Object> params = this.getKey(betRecordByTimeDTO); Map<String, Object> params = this.getKey(betRecordByTimeDTO);
String timeFrom = redisCache.getCacheObject(CacheConstants.AE_TIME_FROM); String timeFrom = redisCache.getCacheObject(CacheConstants.AE_TIME_FROM);
if (StringUtils.isEmpty(timeFrom)){ if (StringUtils.isEmpty(timeFrom)) {
timeFrom = DateUtils.convertTimestampToFormattedDate(betRecordByTimeDTO.getEndTime(), DateUtils.ISO_8601_FORMAT, "GMT+8")+"+08:00"; timeFrom = DateUtils.convertTimestampToFormattedDate(betRecordByTimeDTO.getEndTime(), DateUtils.ISO_8601_FORMAT, "GMT+8") + "+08:00";
} }
params.put("timeFrom", timeFrom); params.put("timeFrom", timeFrom);
params.put("platform", "SEXYBCRT"); params.put("platform", "SEXYBCRT");
params.put("delayTime",10000); params.put("delayTime", 10000);
AEBetRecordResponse aeBetRecordResponse = AEClient.getBetRecordByTime(params); AEBetRecordResponse aeBetRecordResponse = AEClient.getBetRecordByTime(params);
//判断是否获取成功 //判断是否获取成功
if (this.getIsSuccess(aeBetRecordResponse.getStatus())) { if (this.getIsSuccess(aeBetRecordResponse.getStatus())) {
//数据组装 //数据组装
this.batchInsert(aeBetRecordResponse); this.batchInsert(aeBetRecordResponse, betRecordByTimeDTO);
return Boolean.TRUE; return Boolean.TRUE;
} else { } else {
log.error("GamesAEServiceImpl [getBetRecordByTime] 获取投注记录失败,错误代码{},错误信息{}", aeBetRecordResponse.getStatus(), aeBetRecordResponse.getDesc()); log.error("GamesAEServiceImpl [getBetRecordByTime] 获取投注记录失败,错误代码{},错误信息{}", aeBetRecordResponse.getStatus(), aeBetRecordResponse.getDesc());
@ -436,19 +427,19 @@ public class GamesAEServiceImpl implements IGamesService {
Map<String, Object> params = this.getKey(betRecordByTimeDTO); Map<String, Object> params = this.getKey(betRecordByTimeDTO);
long startTimeLong = DateUtils.addOrSubtractMinutes(betRecordByTimeDTO.getStartTime(), -40); long startTimeLong = DateUtils.addOrSubtractMinutes(betRecordByTimeDTO.getStartTime(), -40);
String startTime = DateUtils.convertTimestampToFormattedDate(startTimeLong, DateUtils.ISO_8601_FORMAT, "GMT+8")+"+08:00"; String startTime = DateUtils.convertTimestampToFormattedDate(startTimeLong, DateUtils.ISO_8601_FORMAT, "GMT+8") + "+08:00";
String endTime = DateUtils.convertTimestampToFormattedDate(betRecordByTimeDTO.getEndTime(), DateUtils.ISO_8601_FORMAT, "GMT+8")+"+08:00"; String endTime = DateUtils.convertTimestampToFormattedDate(betRecordByTimeDTO.getEndTime(), DateUtils.ISO_8601_FORMAT, "GMT+8") + "+08:00";
params.put("startTime", startTime); params.put("startTime", startTime);
params.put("endTime", endTime); params.put("endTime", endTime);
params.put("platform","SEXYBCRT"); params.put("platform", "SEXYBCRT");
AEBetRecordResponse aeBetRecordResponse = AEClient.getBetHistoryRecordByTime(params); AEBetRecordResponse aeBetRecordResponse = AEClient.getBetHistoryRecordByTime(params);
//判断是否获取成功 //判断是否获取成功
if (this.getIsSuccess(aeBetRecordResponse.getStatus())) { if (this.getIsSuccess(aeBetRecordResponse.getStatus())) {
//数据组装 //数据组装
this.batchInsert(aeBetRecordResponse); this.batchInsert(aeBetRecordResponse, betRecordByTimeDTO);
return Boolean.TRUE; return Boolean.TRUE;
} else { } else {
log.error("GamesAEServiceImpl [getBetRecordByHistoryTime] 获取投注记录失败,错误代码{},错误信息{}", aeBetRecordResponse.getStatus(), aeBetRecordResponse.getDesc()); log.error("GamesAEServiceImpl [getBetRecordByHistoryTime] 获取投注记录失败,错误代码{},错误信息{}", aeBetRecordResponse.getStatus(), aeBetRecordResponse.getDesc());
@ -548,22 +539,24 @@ public class GamesAEServiceImpl implements IGamesService {
* *
* @param aeBetRecordResponse aedto * @param aeBetRecordResponse aedto
*/ */
private void batchInsert(AEBetRecordResponse aeBetRecordResponse) { private void batchInsert(AEBetRecordResponse aeBetRecordResponse, BetRecordByTimeDTO betRecordByTimeDTO) {
List<GameBettingDetails> gameBettingDetails = new ArrayList<>(); List<GameBettingDetails> gameBettingDetails = new ArrayList<>();
List<String> wagersIds = new ArrayList<>(); List<String> wagersIds = new ArrayList<>();
//数据组装 //数据组装
List<AEBetRecordResponse.Transaction> dataBean = aeBetRecordResponse.getTransactions(); List<AEBetRecordResponse.Transaction> dataBean = aeBetRecordResponse.getTransactions();
String timeFrom=null ; String timeFrom = null;
//数据转化 //数据转化
for (AEBetRecordResponse.Transaction bean : dataBean) { for (AEBetRecordResponse.Transaction bean : dataBean) {
GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder().data(bean).build()); GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder()
.platform(betRecordByTimeDTO.getVendor())
.data(bean).build());
if (!ObjectUtils.isEmpty(bettingDetails)) { if (!ObjectUtils.isEmpty(bettingDetails)) {
bettingDetails.setId(IdUtil.getSnowflakeNextId()); bettingDetails.setId(IdUtil.getSnowflakeNextId());
gameBettingDetails.add(bettingDetails); gameBettingDetails.add(bettingDetails);
} }
wagersIds.add(bean.getPlatform() + bean.getPlatformTxId()); wagersIds.add(bean.getPlatform() + bean.getPlatformTxId());
timeFrom=bean.getUpdateTime(); timeFrom = bean.getUpdateTime();
} }
if (!CollectionUtils.isEmpty(gameBettingDetails)) { if (!CollectionUtils.isEmpty(gameBettingDetails)) {
//查询重复数据id //查询重复数据id
@ -576,8 +569,8 @@ public class GamesAEServiceImpl implements IGamesService {
gameBettingDetailsService.batchInsert(gameBettingDetails); gameBettingDetailsService.batchInsert(gameBettingDetails);
} }
} }
if (StringUtils.isEmpty(timeFrom)){ if (StringUtils.isEmpty(timeFrom)) {
timeFrom = DateUtils.convertTimestampToFormattedDate(DateUtils.getNowDate(), DateUtils.ISO_8601_FORMAT, "UTC+8")+"+08:00"; timeFrom = DateUtils.convertTimestampToFormattedDate(DateUtils.getNowDate(), DateUtils.ISO_8601_FORMAT, "UTC+8") + "+08:00";
} }
redisCache.setCacheObject(CacheConstants.AE_TIME_FROM, timeFrom); redisCache.setCacheObject(CacheConstants.AE_TIME_FROM, timeFrom);
} }
@ -593,10 +586,10 @@ public class GamesAEServiceImpl implements IGamesService {
//转化类 //转化类
AEBetRecordResponse.Transaction resultBean = (AEBetRecordResponse.Transaction) gamesDataBuildDTO.getData(); AEBetRecordResponse.Transaction resultBean = (AEBetRecordResponse.Transaction) gamesDataBuildDTO.getData();
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder() /*GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(GamePlatforms.AE.getInfo()) .platformCode(GamePlatforms.AE.getInfo())
.currency(resultBean.getCurrency()) .currency(resultBean.getCurrency())
.build()); .build());*/
Member member = memberService.selectMemberByGameAccount(resultBean.getUserId()); Member member = memberService.selectMemberByGameAccount(resultBean.getUserId());
if (ObjectUtils.isEmpty(member)) { if (ObjectUtils.isEmpty(member)) {
@ -606,26 +599,26 @@ public class GamesAEServiceImpl implements IGamesService {
// 判断输赢 // 判断输赢
Integer gameStatus = GameStatus.FLAT.getCode(); Integer gameStatus = GameStatus.FLAT.getCode();
BigDecimal payoffAmount=BigDecimal.ZERO; BigDecimal payoffAmount = BigDecimal.ZERO;
if (resultBean.getRealWinAmount().compareTo(resultBean.getRealBetAmount()) > 0) { if (resultBean.getRealWinAmount().compareTo(resultBean.getRealBetAmount()) > 0) {
gameStatus = GameStatus.WIN.getCode(); gameStatus = GameStatus.WIN.getCode();
payoffAmount=resultBean.getRealWinAmount().subtract(resultBean.getRealBetAmount()); payoffAmount = resultBean.getRealWinAmount().subtract(resultBean.getRealBetAmount());
} else if (resultBean.getRealWinAmount().compareTo(resultBean.getRealBetAmount()) < 0) { } else if (resultBean.getRealWinAmount().compareTo(resultBean.getRealBetAmount()) < 0) {
gameStatus = GameStatus.FAIL.getCode(); gameStatus = GameStatus.FAIL.getCode();
payoffAmount=resultBean.getRealWinAmount().subtract(resultBean.getRealBetAmount()).abs(); payoffAmount = resultBean.getRealWinAmount().subtract(resultBean.getRealBetAmount()).abs();
} }
//结算状态 //结算状态
int settlementStatus=SettlementStatusEnum.REVOKED.getCode(); int settlementStatus = SettlementStatusEnum.REVOKED.getCode();
if (resultBean.getTxStatus() == 1){ if (resultBean.getTxStatus() == 1) {
settlementStatus=SettlementStatusEnum.COMPLETED.getCode(); settlementStatus = SettlementStatusEnum.COMPLETED.getCode();
} }
//数据构造 //数据构造
GameBettingDetails gameBettingDetails = GameBettingDetails.builder() GameBettingDetails gameBettingDetails = GameBettingDetails.builder()
.tenantKey(member.getTenantKey()) .tenantKey(member.getTenantKey())
//保存我们的币种id //保存我们的币种id
.currencyCode(currencyDTO.getSystemCurrency()) .currencyCode(gamesDataBuildDTO.getPlatform().getOurCurrency(resultBean.getCurrency()))
.memberId(member.getId()) .memberId(member.getId())
.gameCode(resultBean.getGameCode()) .gameCode(resultBean.getGameCode())
.gameType(PlatformType.GAME_HALL.getCode()) .gameType(PlatformType.GAME_HALL.getCode())
@ -636,7 +629,7 @@ public class GamesAEServiceImpl implements IGamesService {
.gameStatusType(resultBean.getSettleStatus()) .gameStatusType(resultBean.getSettleStatus())
.gameCurrencyCode(resultBean.getCurrency()) .gameCurrencyCode(resultBean.getCurrency())
.account(resultBean.getUserId()) .account(resultBean.getUserId())
.wagersId(resultBean.getPlatform()+resultBean.getPlatformTxId()) .wagersId(resultBean.getPlatform() + resultBean.getPlatformTxId())
.wagersTime(resultBean.getBetTime().getTime()) .wagersTime(resultBean.getBetTime().getTime())
.betAmount(resultBean.getRealBetAmount()) .betAmount(resultBean.getRealBetAmount())
.payoffTime(resultBean.getTxTime().getTime()) .payoffTime(resultBean.getTxTime().getTime())

View File

@ -4,14 +4,10 @@ import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.NumberUtil;
import com.ff.base.constant.CacheConstants; import com.ff.base.constant.CacheConstants;
import com.ff.base.constant.Constants; import com.ff.base.constant.Constants;
import com.ff.base.core.redis.RedisCache;
import com.ff.base.enums.*; import com.ff.base.enums.*;
import com.ff.base.exception.base.ApiException; import com.ff.base.exception.base.ApiException;
import com.ff.base.exception.base.BaseException; import com.ff.base.exception.base.BaseException;
import com.ff.base.system.service.ISysConfigService;
import com.ff.base.utils.DateUtils; import com.ff.base.utils.DateUtils;
import com.ff.base.utils.JsonUtil;
import com.ff.base.utils.SleepUtil;
import com.ff.base.utils.StringUtils; import com.ff.base.utils.StringUtils;
import com.ff.base.utils.sign.Md5Utils; import com.ff.base.utils.sign.Md5Utils;
import com.ff.base.utils.uuid.IdUtils; import com.ff.base.utils.uuid.IdUtils;
@ -19,15 +15,11 @@ import com.ff.config.KeyConfig;
import com.ff.game.api.IGamesService; import com.ff.game.api.IGamesService;
import com.ff.game.api.dg.client.DGClient; import com.ff.game.api.dg.client.DGClient;
import com.ff.game.api.dg.dto.*; import com.ff.game.api.dg.dto.*;
import com.ff.game.api.ng.dto.ApiLoginResponseDTO;
import com.ff.game.api.ng.dto.ApiMemberInfoResponseDTO;
import com.ff.game.api.ng.dto.ApiNGResponseDTO;
import com.ff.game.api.request.*; import com.ff.game.api.request.*;
import com.ff.game.api.xk.client.XKClient;
import com.ff.game.api.xk.dto.*;
import com.ff.game.domain.*; import com.ff.game.domain.*;
import com.ff.game.dto.GameSecretKeyCurrencyDTO; import com.ff.game.service.IGameBettingDetailsService;
import com.ff.game.service.*; import com.ff.game.service.IGameExchangeMoneyService;
import com.ff.game.service.IGameService;
import com.ff.member.domain.Member; import com.ff.member.domain.Member;
import com.ff.member.service.IMemberService; import com.ff.member.service.IMemberService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -40,7 +32,6 @@ import org.springframework.util.ObjectUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -54,21 +45,9 @@ import java.util.stream.Collectors;
@Slf4j @Slf4j
public class GamesDGServiceImpl implements IGamesService { public class GamesDGServiceImpl implements IGamesService {
@Resource
private ISysConfigService configService;
@Resource
private RedisCache redisCache;
@Resource @Resource
private IGameExchangeMoneyService gameExchangeMoneyService; private IGameExchangeMoneyService gameExchangeMoneyService;
@Resource
private IGamePlatformService gamePlatformService;
@Resource @Resource
private IGameService gameService; private IGameService gameService;
@ -76,28 +55,15 @@ public class GamesDGServiceImpl implements IGamesService {
@Resource @Resource
private IMemberService memberService; private IMemberService memberService;
@Resource
private IGameFreeRecordService gameFreeRecordService;
@Resource
private IGameSecretKeyService gameSecretKeyService;
@Resource
private IGameSecretKeyCurrencyService gameSecretKeyCurrencyService;
@Resource @Resource
private DGClient DGClient; private DGClient DGClient;
@Resource @Resource
private KeyConfig keyConfig; private KeyConfig keyConfig;
@Resource @Resource
private IGameBettingDetailsService gameBettingDetailsService; private IGameBettingDetailsService gameBettingDetailsService;
@Resource
private IGameNameService gameNameService;
/** /**
* id * id
*/ */
@ -229,9 +195,9 @@ public class GamesDGServiceImpl implements IGamesService {
@Transactional @Transactional
@Override @Override
public String getGameList(GamesBaseRequestDTO gamesBaseRequestDTO) { public String getGameList(GamesBaseRequestDTO gamesBaseRequestDTO) {
GamePlatform gamePlatform = gamePlatformService.selectGamePlatformById(PLATFORM_ID); //GamePlatform gamePlatform = gamePlatformService.selectGamePlatformById(PLATFORM_ID);
//没有此平台就新增一个平台 //没有此平台就新增一个平台
if (ObjectUtils.isEmpty(gamePlatform)) { /*if (ObjectUtils.isEmpty(gamePlatform)) {
gamePlatform = new GamePlatform(); gamePlatform = new GamePlatform();
gamePlatform.setId(PLATFORM_ID); gamePlatform.setId(PLATFORM_ID);
gamePlatform.setPlatformCode(GamePlatforms.DG.getInfo()); gamePlatform.setPlatformCode(GamePlatforms.DG.getInfo());
@ -240,21 +206,24 @@ public class GamesDGServiceImpl implements IGamesService {
gamePlatform.setSortNo(gamePlatformService.selectMaxSortNo() + 1); gamePlatform.setSortNo(gamePlatformService.selectMaxSortNo() + 1);
gamePlatform.setCreateBy(Constants.SYSTEM); gamePlatform.setCreateBy(Constants.SYSTEM);
gamePlatformService.insertGamePlatform(gamePlatform); gamePlatformService.insertGamePlatform(gamePlatform);
} }*/
Game game = gameService.selectGameById(GAME_ID); Game game = gameService.selectGameById(GAME_ID);
//不存在这个游戏 //不存在这个游戏
if (ObjectUtils.isEmpty(game)) { if (ObjectUtils.isEmpty(game)) {
game = new Game(); game = new Game();
game.setId(GAME_ID); game.setId(GAME_ID);
game.setSortNo(gameService.selectMaxSortNoByPlatformId(gamePlatform.getId()) + 1); game.setSortNo(1);
game.setPlatformId(gamePlatform.getId()); //game.setPlatformId(gamePlatform.getId());
game.setPlatformCode(GamePlatforms.DG.getCode());
game.setPlatformType(PlatformType.GAME_HALL.getCode());
game.setGameCode("1"); game.setGameCode("1");
game.setGameSourceType(String.valueOf(1)); game.setGameSourceType(String.valueOf(1));
game.setGameName("真人棋牌"); game.setGameName("真人棋牌");
game.setCreateBy(Constants.SYSTEM); game.setCreateBy(Constants.SYSTEM);
game.setNameInfo(Collections.singletonList(new NameInfo("真人棋牌", "zh-CN")));
gameService.insertGame(game); gameService.insertGame(game);
} }
GameName gameName = gameNameService.selectGameNameById(GAME_NAME_ID); /*GameName gameName = gameNameService.selectGameNameById(GAME_NAME_ID);
if (ObjectUtils.isEmpty(gameName)) { if (ObjectUtils.isEmpty(gameName)) {
gameNameService.insertGameName(GameName.builder() gameNameService.insertGameName(GameName.builder()
.id(GAME_NAME_ID) .id(GAME_NAME_ID)
@ -263,7 +232,7 @@ public class GamesDGServiceImpl implements IGamesService {
.langCode("zh-CN") .langCode("zh-CN")
.createBy(Constants.SYSTEM) .createBy(Constants.SYSTEM)
.build()); .build());
} }*/
return CacheConstants.DG_GAMES; return CacheConstants.DG_GAMES;
} }
@ -277,10 +246,10 @@ public class GamesDGServiceImpl implements IGamesService {
@Transactional @Transactional
public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) { public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) {
log.info("GamesDGServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO); log.info("GamesDGServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO);
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder() // GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(GamePlatforms.DG.getInfo()) // .platformCode(GamePlatforms.DG.getInfo())
.code(exchangeTransferMoneyRequestDTO.getAgentId()) // .code(exchangeTransferMoneyRequestDTO.getAgentId())
.build()); // .build());
Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount()); Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount());
String transactionId = GamePlatforms.DG.getInfo() + IdUtils.simpleUUID(); String transactionId = GamePlatforms.DG.getInfo() + IdUtils.simpleUUID();
@ -300,7 +269,7 @@ public class GamesDGServiceImpl implements IGamesService {
.quota(exchangeTransferMoneyRequestDTO.getQuota()) .quota(exchangeTransferMoneyRequestDTO.getQuota())
.balance(exchangeTransferMoneyRequestDTO.getAmount()) .balance(exchangeTransferMoneyRequestDTO.getAmount())
.exchangeType(exchangeTransferMoneyRequestDTO.getTransferType()) .exchangeType(exchangeTransferMoneyRequestDTO.getTransferType())
.currencyCode(currencyDTO.getSystemCurrency()) .currencyCode(exchangeTransferMoneyRequestDTO.getSystemCurrency())
.memberId(member.getId()) .memberId(member.getId())
.transactionId(transactionId) .transactionId(transactionId)
.platformCode(GamePlatforms.DG.getInfo()) .platformCode(GamePlatforms.DG.getInfo())
@ -373,9 +342,7 @@ public class GamesDGServiceImpl implements IGamesService {
DGBetRecordResponseDTO betRecordByTime = DGClient.getBetRecordByTime(key); DGBetRecordResponseDTO betRecordByTime = DGClient.getBetRecordByTime(key);
if (this.getIsSuccess(betRecordByTime.getCodeId())) { if (this.getIsSuccess(betRecordByTime.getCodeId())) {
this.batchInsert(betRecordByTime,betRecordByTimeDTO); this.batchInsert(betRecordByTime, betRecordByTimeDTO);
return Boolean.TRUE; return Boolean.TRUE;
} else { } else {
log.error("GamesDGServiceImpl [getBetRecordByTime] 获取投注记录失败,错误代码{},错误信息{}", betRecordByTime.getCodeId(), betRecordByTime.getMsg()); log.error("GamesDGServiceImpl [getBetRecordByTime] 获取投注记录失败,错误代码{},错误信息{}", betRecordByTime.getCodeId(), betRecordByTime.getMsg());
@ -432,14 +399,14 @@ public class GamesDGServiceImpl implements IGamesService {
if (!this.getIsSuccess(userListResponseDTO.getCodeId())) { if (!this.getIsSuccess(userListResponseDTO.getCodeId())) {
throw new ApiException(ErrorCode.KICK_OUT_AILED.getCode()); throw new ApiException(ErrorCode.KICK_OUT_AILED.getCode());
} }
if (CollectionUtils.isEmpty(userListResponseDTO.getList())){ if (CollectionUtils.isEmpty(userListResponseDTO.getList())) {
return Boolean.TRUE; return Boolean.TRUE;
} }
DGUserListResponseDTO.UserDTO userDTO = userListResponseDTO.getList().stream() DGUserListResponseDTO.UserDTO userDTO = userListResponseDTO.getList().stream()
.filter(user -> user.getUsername().equals(kickMemberRequestDTO.getAccount())) .filter(user -> user.getUsername().equals(kickMemberRequestDTO.getAccount()))
.findFirst() .findFirst()
.orElse(null); .orElse(null);
if (Objects.isNull(userDTO)){ if (Objects.isNull(userDTO)) {
return Boolean.TRUE; return Boolean.TRUE;
} }
@ -447,7 +414,7 @@ public class GamesDGServiceImpl implements IGamesService {
List<Long> memberIds = new ArrayList<>(); List<Long> memberIds = new ArrayList<>();
memberIds.add(userDTO.getMemberId()); memberIds.add(userDTO.getMemberId());
Map<String, Object> params = new LinkedHashMap<>(); Map<String, Object> params = new LinkedHashMap<>();
params.put("list",memberIds); params.put("list", memberIds);
DGResponse dgResponse = DGClient.kickMember(params, key); DGResponse dgResponse = DGClient.kickMember(params, key);
//判断是否获取成功 //判断是否获取成功
if (this.getIsSuccess(dgResponse.getCodeId())) { if (this.getIsSuccess(dgResponse.getCodeId())) {
@ -472,7 +439,7 @@ public class GamesDGServiceImpl implements IGamesService {
throw new ApiException(ErrorCode.KICK_OUT_AILED.getCode()); throw new ApiException(ErrorCode.KICK_OUT_AILED.getCode());
} }
if (CollectionUtils.isEmpty(userListResponseDTO.getList())){ if (CollectionUtils.isEmpty(userListResponseDTO.getList())) {
return Boolean.TRUE; return Boolean.TRUE;
} }
@ -480,7 +447,7 @@ public class GamesDGServiceImpl implements IGamesService {
Map<String, Object> params = new LinkedHashMap<>(); Map<String, Object> params = new LinkedHashMap<>();
params.put("list",memberIds); params.put("list", memberIds);
DGResponse dgResponse = DGClient.kickMember(params, key); DGResponse dgResponse = DGClient.kickMember(params, key);
//判断是否获取成功 //判断是否获取成功
if (this.getIsSuccess(dgResponse.getCodeId())) { if (this.getIsSuccess(dgResponse.getCodeId())) {
@ -513,7 +480,6 @@ public class GamesDGServiceImpl implements IGamesService {
} }
/** /**
* *
* *
@ -531,14 +497,16 @@ public class GamesDGServiceImpl implements IGamesService {
* *
* @param dgBetRecordResponseDTO dgdto * @param dgBetRecordResponseDTO dgdto
*/ */
private void batchInsert(DGBetRecordResponseDTO dgBetRecordResponseDTO,GamesBaseRequestDTO gamesBaseRequestDTO) { private void batchInsert(DGBetRecordResponseDTO dgBetRecordResponseDTO, GamesBaseRequestDTO gamesBaseRequestDTO) {
List<GameBettingDetails> gameBettingDetails = new ArrayList<>(); List<GameBettingDetails> gameBettingDetails = new ArrayList<>();
List<String> wagersIds = new ArrayList<>(); List<String> wagersIds = new ArrayList<>();
//数据组装 //数据组装
List<DGBetRecordResponseDTO.ReportDTO> report = dgBetRecordResponseDTO.getList(); List<DGBetRecordResponseDTO.ReportDTO> report = dgBetRecordResponseDTO.getList();
//数据转化 //数据转化
for (DGBetRecordResponseDTO.ReportDTO bean : report) { for (DGBetRecordResponseDTO.ReportDTO bean : report) {
GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder().data(bean).build()); GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder()
.platform(gamesBaseRequestDTO.getVendor())
.data(bean).build());
if (!ObjectUtils.isEmpty(bettingDetails)) { if (!ObjectUtils.isEmpty(bettingDetails)) {
bettingDetails.setId(IdUtil.getSnowflakeNextId()); bettingDetails.setId(IdUtil.getSnowflakeNextId());
gameBettingDetails.add(bettingDetails); gameBettingDetails.add(bettingDetails);
@ -547,7 +515,7 @@ public class GamesDGServiceImpl implements IGamesService {
} }
if (!CollectionUtils.isEmpty(gameBettingDetails)) { if (!CollectionUtils.isEmpty(gameBettingDetails)) {
//查询重复数据id //查询重复数据id
List<String> removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds,GamePlatforms.DG.getInfo()); List<String> removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds, GamePlatforms.DG.getInfo());
//用steam流清除list中与wagersIds集合相同的数据 //用steam流清除list中与wagersIds集合相同的数据
gameBettingDetails = gameBettingDetails.stream() gameBettingDetails = gameBettingDetails.stream()
.filter(detail -> !removeWagersIds.contains(detail.getWagersId())) .filter(detail -> !removeWagersIds.contains(detail.getWagersId()))
@ -557,7 +525,7 @@ public class GamesDGServiceImpl implements IGamesService {
Map<String, Object> key = this.getKey(gamesBaseRequestDTO); Map<String, Object> key = this.getKey(gamesBaseRequestDTO);
Map<String, Object> params = new HashMap<>(); Map<String, Object> params = new HashMap<>();
params.put("list", wagersIds); params.put("list", wagersIds);
DGClient.markReport(params,key); DGClient.markReport(params, key);
} }
} }
@ -575,10 +543,10 @@ public class GamesDGServiceImpl implements IGamesService {
DGBetRecordResponseDTO.ReportDTO resultBean = (DGBetRecordResponseDTO.ReportDTO) gamesDataBuildDTO.getData(); DGBetRecordResponseDTO.ReportDTO resultBean = (DGBetRecordResponseDTO.ReportDTO) gamesDataBuildDTO.getData();
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder() // GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(GamePlatforms.DG.getInfo()) // .platformCode(GamePlatforms.DG.getInfo())
.currencyId(String.valueOf(resultBean.getCurrencyId())) // .currencyId(String.valueOf(resultBean.getCurrencyId()))
.build()); // .build());
Member member = memberService.selectMemberByGameAccount(resultBean.getUserName()); Member member = memberService.selectMemberByGameAccount(resultBean.getUserName());
@ -608,16 +576,16 @@ public class GamesDGServiceImpl implements IGamesService {
GameBettingDetails gameBettingDetails = GameBettingDetails.builder() GameBettingDetails gameBettingDetails = GameBettingDetails.builder()
.tenantKey(member.getTenantKey()) .tenantKey(member.getTenantKey())
//保存我们的币种id //保存我们的币种id
.currencyCode(currencyDTO.getSystemCurrency()) .currencyCode(gamesDataBuildDTO.getPlatform().getExtInfo().getOurCurrency(String.valueOf(resultBean.getCurrencyId())))
.memberId(member.getId()) .memberId(member.getId())
.gameCode(String.valueOf(resultBean.getGameId())) .gameCode(String.valueOf(resultBean.getGameId()))
.gameType(PlatformType.CARD_GAME.getCode()) .gameType(PlatformType.CARD_GAME.getCode())
.platformCode(GamePlatforms.DG.getInfo()) .platformCode(GamePlatforms.DG.getCode())
.gameId(GAME_ID) .gameId(GAME_ID)
.gameName(game.getGameName()) .gameName(game.getGameName())
.gameStatus(gameStatus) .gameStatus(gameStatus)
.gameStatusType(resultBean.getGameType()) .gameStatusType(resultBean.getGameType())
.gameCurrencyCode(currencyDTO.getCurrency()) .gameCurrencyCode(/*gamesDataBuildDTO.getCurrencyCode()*/String.valueOf(resultBean.getCurrencyId()))
.account(String.valueOf(resultBean.getUserName())) .account(String.valueOf(resultBean.getUserName()))
.wagersId(String.valueOf(resultBean.getId())) .wagersId(String.valueOf(resultBean.getId()))
.wagersTime(resultBean.getBetTime().getTime()) .wagersTime(resultBean.getBetTime().getTime())

View File

@ -9,19 +9,19 @@ import com.ff.base.core.redis.RedisCache;
import com.ff.base.enums.*; import com.ff.base.enums.*;
import com.ff.base.exception.base.ApiException; import com.ff.base.exception.base.ApiException;
import com.ff.base.exception.base.BaseException; import com.ff.base.exception.base.BaseException;
import com.ff.base.system.service.ISysConfigService;
import com.ff.base.utils.DateUtils; import com.ff.base.utils.DateUtils;
import com.ff.base.utils.StringUtils;
import com.ff.base.utils.sign.Md5Utils; import com.ff.base.utils.sign.Md5Utils;
import com.ff.config.KeyConfig; import com.ff.config.KeyConfig;
import com.ff.game.api.IGamesService; import com.ff.game.api.IGamesService;
import com.ff.game.api.fc.dto.*;
import com.ff.game.api.fc.client.FCClient; import com.ff.game.api.fc.client.FCClient;
import com.ff.game.api.ng.client.NGClient; import com.ff.game.api.fc.dto.*;
import com.ff.game.api.request.*; import com.ff.game.api.request.*;
import com.ff.game.domain.*; import com.ff.game.domain.*;
import com.ff.game.dto.GameBettingDetailsDTO; import com.ff.game.service.IGameBettingDetailsService;
import com.ff.game.dto.GameSecretKeyCurrencyDTO; import com.ff.game.service.IGameExchangeMoneyService;
import com.ff.game.service.*; import com.ff.game.service.IGameService;
import com.ff.game.service.IPlatformService;
import com.ff.member.domain.Member; import com.ff.member.domain.Member;
import com.ff.member.service.IMemberService; import com.ff.member.service.IMemberService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -54,21 +54,12 @@ import java.util.stream.Collectors;
@Slf4j @Slf4j
public class GamesFCServiceImpl implements IGamesService { public class GamesFCServiceImpl implements IGamesService {
@Resource
private ISysConfigService configService;
@Resource @Resource
private RedisCache redisCache; private RedisCache redisCache;
@Resource @Resource
private IGameExchangeMoneyService gameExchangeMoneyService; private IGameExchangeMoneyService gameExchangeMoneyService;
@Resource
private IGamePlatformService gamePlatformService;
@Resource @Resource
private IGameService gameService; private IGameService gameService;
@ -76,37 +67,22 @@ public class GamesFCServiceImpl implements IGamesService {
@Resource @Resource
private IMemberService memberService; private IMemberService memberService;
@Resource
private IGameFreeRecordService gameFreeRecordService;
@Resource
private IGameSecretKeyService gameSecretKeyService;
@Resource @Resource
private FCClient FCClient; private FCClient FCClient;
@Resource @Resource
private KeyConfig keyConfig; private KeyConfig keyConfig;
@Resource @Resource
private IGameBettingDetailsService gameBettingDetailsService; private IGameBettingDetailsService gameBettingDetailsService;
@Resource
private IGameSecretKeyCurrencyService gameSecretKeyCurrencyService;
@Resource
private IGameNameService gameNameService;
@Resource
private IGameSecretKeyLangService gameSecretKeyLangService;
@Autowired @Autowired
@Qualifier("threadPoolTaskExecutor") @Qualifier("threadPoolTaskExecutor")
private ThreadPoolTaskExecutor threadPoolTaskExecutor; private ThreadPoolTaskExecutor threadPoolTaskExecutor;
@Autowired
private IPlatformService platformService;
/** /**
* *
* *
@ -276,45 +252,40 @@ public class GamesFCServiceImpl implements IGamesService {
for (String gameTypeKey : gameList.getGetGameIconList().keySet()) { for (String gameTypeKey : gameList.getGetGameIconList().keySet()) {
Map<String, ApiFCGameListResponseDTO.GameDetails> integerGameDetailsMap = gameList.getGetGameIconList().get(gameTypeKey); Map<String, ApiFCGameListResponseDTO.GameDetails> integerGameDetailsMap = gameList.getGetGameIconList().get(gameTypeKey);
GamePlatform gamePlatform = GamePlatform.builder()
.platformType(FCGameType.findSystemByCode(gameTypeKey))
.platformCode(GamePlatforms.FC.getInfo())
.build();
List<GamePlatform> gamePlatforms = gamePlatformService.selectGamePlatformList(gamePlatform);
//没有此平台就新增一个平台
if (CollectionUtils.isEmpty(gamePlatforms)) {
gamePlatform.setPlatformName(GamePlatforms.FC.getInfo() + FCGameType.findInfoByCode(gameTypeKey));
gamePlatform.setSortNo(gamePlatformService.selectMaxSortNo() + 1);
gamePlatform.setCreateBy(Constants.SYSTEM);
gamePlatformService.insertGamePlatform(gamePlatform);
} else {
gamePlatform = gamePlatforms.get(0);
}
//新增游戏 //新增游戏
for (String gameIdKey : integerGameDetailsMap.keySet()) { for (String gameIdKey : integerGameDetailsMap.keySet()) {
ApiFCGameListResponseDTO.GameDetails gameDetails = integerGameDetailsMap.get(gameIdKey); ApiFCGameListResponseDTO.GameDetails gameDetails = integerGameDetailsMap.get(gameIdKey);
Game game = Game.builder() Game game = Game.builder()
.platformId(gamePlatform.getId()) //.platformId(gamePlatform.getId())
.platformCode(GamePlatforms.FC.getCode())
.gameCode(gameIdKey) .gameCode(gameIdKey)
.build(); .build();
List<Game> games = gameService.selectGameList(game); List<Game> games = gameService.selectGameList(game);
int platformType = FCGameType.findSystemByCode(gameTypeKey);
//不存在这个游戏 //不存在这个游戏
if (CollectionUtils.isEmpty(games)) { if (CollectionUtils.isEmpty(games)) {
game.setGameSourceType(String.valueOf(PlatformType.ELECTRONIC.getCode())); game.setGameSourceType(String.valueOf(PlatformType.ELECTRONIC.getCode()));
game.setFreespin(Boolean.FALSE); game.setFreespin(Boolean.FALSE);
game.setDemoStatus(Boolean.TRUE); game.setDemoStatus(Boolean.TRUE);
game.setSortNo(gameService.selectMaxSortNoByPlatformId(gamePlatform.getId()) + 1); game.setPlatformCode(GamePlatforms.FC.getCode());
game.setPlatformType(platformType);
game.setSortNo(gameService.selectMaxSortNo(platformType, GamePlatforms.FC.getCode()) + 1);
game.setGameName(gameDetails.getGameNameOfChinese()); game.setGameName(gameDetails.getGameNameOfChinese());
game.setCreateBy(Constants.SYSTEM); game.setCreateBy(Constants.SYSTEM);
List<NameInfo> nameInfos = new ArrayList<>();
nameInfos.add(NameInfo.builder().lang("zh-CN").name(gameDetails.getGameNameOfChinese()).build());
nameInfos.add(NameInfo.builder().lang("en-US").name(gameDetails.getGameNameOfEnglish()).build());
game.setNameInfo(nameInfos);
gameService.insertGame(game); gameService.insertGame(game);
} else { } else {
game = games.get(0); game = games.get(0);
} }
gameDetails.setSystemGameId(game.getId()); gameDetails.setSystemGameId(game.getId());
List<GameName> gameNames = gameNameService.selectGameNameList(GameName.builder().gameId(game.getId()).gameName(gameDetails.getGameNameOfChinese()).build()); /*List<GameName> gameNames = gameNameService.selectGameNameList(GameName.builder().gameId(game.getId()).gameName(gameDetails.getGameNameOfChinese()).build());
if (CollectionUtils.isEmpty(gameNames)) { if (CollectionUtils.isEmpty(gameNames)) {
gameNameService.insertGameName(GameName.builder() gameNameService.insertGameName(GameName.builder()
.gameId(game.getId()) .gameId(game.getId())
@ -331,7 +302,7 @@ public class GamesFCServiceImpl implements IGamesService {
.langCode("en-US") .langCode("en-US")
.createBy(Constants.SYSTEM) .createBy(Constants.SYSTEM)
.build()); .build());
} }*/
gameDetails.setGameId(gameIdKey); gameDetails.setGameId(gameIdKey);
gameDetailsList.add(gameDetails); gameDetailsList.add(gameDetails);
@ -359,11 +330,11 @@ public class GamesFCServiceImpl implements IGamesService {
public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) { public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) {
log.info("GamesFCServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO); log.info("GamesFCServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO);
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder() // GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(GamePlatforms.FC.getInfo()) // .platformCode(GamePlatforms.FC.getInfo())
.code(exchangeTransferMoneyRequestDTO.getAgentId()) // .code(exchangeTransferMoneyRequestDTO.getAgentId())
.currency(exchangeTransferMoneyRequestDTO.getCurrency()) // .currency(exchangeTransferMoneyRequestDTO.getCurrency())
.build()); // .build());
Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount()); Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount());
String transactionId = gameExchangeMoneyService.getTransactionId(GamePlatforms.FC.getInfo(), 30); String transactionId = gameExchangeMoneyService.getTransactionId(GamePlatforms.FC.getInfo(), 30);
@ -383,7 +354,7 @@ public class GamesFCServiceImpl implements IGamesService {
.quota(exchangeTransferMoneyRequestDTO.getQuota()) .quota(exchangeTransferMoneyRequestDTO.getQuota())
.balance(exchangeTransferMoneyRequestDTO.getAmount()) .balance(exchangeTransferMoneyRequestDTO.getAmount())
.exchangeType(exchangeTransferMoneyRequestDTO.getTransferType()) .exchangeType(exchangeTransferMoneyRequestDTO.getTransferType())
.currencyCode(currencyDTO.getSystemCurrency()) .currencyCode(exchangeTransferMoneyRequestDTO.getSystemCurrency())
.memberId(member.getId()) .memberId(member.getId())
.transactionId(transactionId) .transactionId(transactionId)
.platformCode(GamePlatforms.FC.getInfo()) .platformCode(GamePlatforms.FC.getInfo())
@ -402,7 +373,7 @@ public class GamesFCServiceImpl implements IGamesService {
.accounts(member.getGameAccount()) .accounts(member.getGameAccount())
.agentId(exchangeTransferMoneyRequestDTO.getAgentId()) .agentId(exchangeTransferMoneyRequestDTO.getAgentId())
.agentKey(exchangeTransferMoneyRequestDTO.getAgentKey()) .agentKey(exchangeTransferMoneyRequestDTO.getAgentKey())
.currency(currencyDTO.getCurrency()) .currency(exchangeTransferMoneyRequestDTO.getCurrency())
.build(); .build();
MemberInfoResponseDTO memberInfo = this.getMemberInfo(gamesBaseRequestDTO); MemberInfoResponseDTO memberInfo = this.getMemberInfo(gamesBaseRequestDTO);
//判断是不是转出 //判断是不是转出
@ -459,29 +430,37 @@ public class GamesFCServiceImpl implements IGamesService {
@Override @Override
public Boolean getBetRecordByTime(BetRecordByTimeDTO betRecordByTimeDTO) { public Boolean getBetRecordByTime(BetRecordByTimeDTO betRecordByTimeDTO) {
// List<GameSecretKeyCurrencyDTO> gameSecretKeyCurrencies = gameSecretKeyCurrencyService
// .findByGameSecretKeyCurrencyDTOList(GameSecretKeyCurrencyDTO.builder()
// .platformCode(GamePlatforms.FC.getInfo())
// .build());
List<GameSecretKeyCurrencyDTO> gameSecretKeyCurrencies = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTOList(GameSecretKeyCurrencyDTO.builder() Platform platform = betRecordByTimeDTO.getVendor();
.platformCode(GamePlatforms.FC.getInfo()) //for (KeyInfo keyInfo : platform.getKeyInfo()) {
.build()); // for (GameSecretKeyCurrency gameSecretKeyCurrency : gameSecretKeyCurrencies) {
for (GameSecretKeyCurrency gameSecretKeyCurrency : gameSecretKeyCurrencies) {
String startTime = DateUtils.convertTimeZone(betRecordByTimeDTO.getStartTime(), "America/New_York", DateUtils.YYYY_MM_DD_HH_MM_SS); String startTime = DateUtils.convertTimeZone(betRecordByTimeDTO.getStartTime(), "America/New_York", DateUtils.YYYY_MM_DD_HH_MM_SS);
String endTime = DateUtils.convertTimeZone(betRecordByTimeDTO.getEndTime(), "America/New_York", DateUtils.YYYY_MM_DD_HH_MM_SS); String endTime = DateUtils.convertTimeZone(betRecordByTimeDTO.getEndTime(), "America/New_York", DateUtils.YYYY_MM_DD_HH_MM_SS);
Map<String, Object> paramsMap = new HashMap<>(); Map<String, Object> paramsMap = new HashMap<>();
paramsMap.put("StartDate", startTime); paramsMap.put("StartDate", startTime);
paramsMap.put("EndDate", endTime); paramsMap.put("EndDate", endTime);
paramsMap.putAll(getKeyMap(paramsMap, betRecordByTimeDTO.getAgentKey(), gameSecretKeyCurrency.getCurrency(), betRecordByTimeDTO.getAgentId())); KeyInfo keyInfo = betRecordByTimeDTO.getKeyInfo();
String currency = keyInfo.getCurrency();
String targetCurrency = platform.getCurrencyInfo().get(currency);
if (StringUtils.isEmpty(targetCurrency)) {
log.error("获取不到币种,platformCode:{},{}->{}", platform.getPlatformCode(), currency, targetCurrency);
//continue;
return Boolean.FALSE;
}
paramsMap.putAll(getKeyMap(paramsMap, betRecordByTimeDTO.getAgentKey(), keyInfo.getCurrency(), betRecordByTimeDTO.getAgentId()));
ApiFCBetRecordResponseDTO betRecordByTime = FCClient.getBetRecordByTime(paramsMap); ApiFCBetRecordResponseDTO betRecordByTime = FCClient.getBetRecordByTime(paramsMap);
if (this.getIsSuccess(betRecordByTime.getResult())) { if (this.getIsSuccess(betRecordByTime.getResult())) {
//数据组装 //数据组装
this.batchInsert(betRecordByTime, gameSecretKeyCurrency.getSystemCurrency(), gameSecretKeyCurrency.getCurrency()); this.batchInsert(betRecordByTime, currency, targetCurrency);
} }
//}
}
return Boolean.TRUE; return Boolean.TRUE;
} }
@ -493,15 +472,20 @@ public class GamesFCServiceImpl implements IGamesService {
*/ */
@Override @Override
public Boolean getBetRecordByHistoryTime(BetRecordByTimeDTO betRecordByTimeDTO) { public Boolean getBetRecordByHistoryTime(BetRecordByTimeDTO betRecordByTimeDTO) {
List<GameSecretKeyCurrencyDTO> gameSecretKeyCurrencies = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTOList(GameSecretKeyCurrencyDTO.builder()
.platformCode(GamePlatforms.FC.getInfo())
.build());
for (GameSecretKeyCurrency gameSecretKeyCurrency : gameSecretKeyCurrencies) { Platform platform = betRecordByTimeDTO.getVendor();
for (KeyInfo keyInfo : platform.getKeyInfo()) {
// for (GameSecretKeyCurrency gameSecretKeyCurrency : gameSecretKeyCurrencies) {
//必须两个小时之前的数据 //必须两个小时之前的数据
long startTimeLong = DateUtils.addOrSubtractMinutes(betRecordByTimeDTO.getStartTime(), -120); long startTimeLong = DateUtils.addOrSubtractMinutes(betRecordByTimeDTO.getStartTime(), -120);
long endTimeLong = DateUtils.addOrSubtractMinutes(betRecordByTimeDTO.getEndTime(), -120); long endTimeLong = DateUtils.addOrSubtractMinutes(betRecordByTimeDTO.getEndTime(), -120);
String currency = keyInfo.getCurrency();
String targetCurrency = platform.getCurrencyInfo().get(currency);
if (StringUtils.isEmpty(targetCurrency)) {
log.error("获取不到币种,platformCode:{},{}->{}", platform.getPlatformCode(), currency, targetCurrency);
continue;
}
//查询一个小时内的数据一次最多15分钟 //查询一个小时内的数据一次最多15分钟
int timeWheel = 60; int timeWheel = 60;
while (timeWheel > 0) { while (timeWheel > 0) {
@ -510,18 +494,16 @@ public class GamesFCServiceImpl implements IGamesService {
Map<String, Object> paramsMap = new HashMap<>(); Map<String, Object> paramsMap = new HashMap<>();
paramsMap.put("StartDate", startTime); paramsMap.put("StartDate", startTime);
paramsMap.put("EndDate", endTime); paramsMap.put("EndDate", endTime);
paramsMap.putAll(getKeyMap(paramsMap, betRecordByTimeDTO.getAgentKey(), gameSecretKeyCurrency.getCurrency(), betRecordByTimeDTO.getAgentId())); paramsMap.putAll(getKeyMap(paramsMap, betRecordByTimeDTO.getAgentKey(), targetCurrency, betRecordByTimeDTO.getAgentId()));
ApiFCBetRecordResponseDTO betRecordByTime = FCClient.getBetRecordByHistoryTime(paramsMap); ApiFCBetRecordResponseDTO betRecordByTime = FCClient.getBetRecordByHistoryTime(paramsMap);
if (this.getIsSuccess(betRecordByTime.getResult())) { if (this.getIsSuccess(betRecordByTime.getResult())) {
//数据组装 //数据组装
this.batchInsert(betRecordByTime, gameSecretKeyCurrency.getSystemCurrency(), gameSecretKeyCurrency.getCurrency()); this.batchInsert(betRecordByTime, currency, targetCurrency);
} }
timeWheel -= 15; timeWheel -= 15;
} }
} }
return Boolean.TRUE; return Boolean.TRUE;
} }
@ -660,7 +642,7 @@ public class GamesFCServiceImpl implements IGamesService {
.memberId(member.getId()) .memberId(member.getId())
.gameCode(resultBean.getGameID()) .gameCode(resultBean.getGameID())
.gameType(FCGameType.findSystemByCode(resultBean.getGametype())) .gameType(FCGameType.findSystemByCode(resultBean.getGametype()))
.platformCode(GamePlatforms.FC.getInfo()) .platformCode(GamePlatforms.FC.getCode())
.gameId(gamesDataDTO.getSystemGameId()) .gameId(gamesDataDTO.getSystemGameId())
.gameName(gamesDataDTO.getGameNameOfChinese()) .gameName(gamesDataDTO.getGameNameOfChinese())
.gameStatus(gameStatus) .gameStatus(gameStatus)
@ -694,7 +676,9 @@ public class GamesFCServiceImpl implements IGamesService {
List<String> wagersIds = new ArrayList<>(); List<String> wagersIds = new ArrayList<>();
//数据转化 //数据转化
for (ApiFCBetRecordResponseDTO.BetRecord bean : data.getRecords()) { for (ApiFCBetRecordResponseDTO.BetRecord bean : data.getRecords()) {
GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder().data(bean).currencyCode(currencyCode).systemCurrencyCode(systemCurrencyCode).build()); GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder().data(bean)
.currencyCode(currencyCode)
.systemCurrencyCode(systemCurrencyCode).build());
if (!ObjectUtils.isEmpty(bettingDetails)) { if (!ObjectUtils.isEmpty(bettingDetails)) {
bettingDetails.setId(IdUtil.getSnowflakeNextId()); bettingDetails.setId(IdUtil.getSnowflakeNextId());
gameBettingDetails.add(bettingDetails); gameBettingDetails.add(bettingDetails);
@ -703,7 +687,7 @@ public class GamesFCServiceImpl implements IGamesService {
} }
if (!CollectionUtils.isEmpty(gameBettingDetails)) { if (!CollectionUtils.isEmpty(gameBettingDetails)) {
//查询重复数据id //查询重复数据id
List<String> removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds,GamePlatforms.FC.getInfo()); List<String> removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds, GamePlatforms.FC.getInfo());
//用steam流清除list中与wagersIds集合相同的数据 //用steam流清除list中与wagersIds集合相同的数据
gameBettingDetails = gameBettingDetails.stream() gameBettingDetails = gameBettingDetails.stream()
.filter(detail -> !removeWagersIds.contains(detail.getWagersId())) .filter(detail -> !removeWagersIds.contains(detail.getWagersId()))

View File

@ -19,8 +19,10 @@ import com.ff.game.api.jili.client.JILIClient;
import com.ff.game.api.jili.dto.*; import com.ff.game.api.jili.dto.*;
import com.ff.game.api.request.*; import com.ff.game.api.request.*;
import com.ff.game.domain.*; import com.ff.game.domain.*;
import com.ff.game.dto.GameSecretKeyCurrencyDTO; import com.ff.game.service.IGameBettingDetailsService;
import com.ff.game.service.*; import com.ff.game.service.IGameExchangeMoneyService;
import com.ff.game.service.IGameFreeRecordService;
import com.ff.game.service.IGameService;
import com.ff.member.domain.Member; import com.ff.member.domain.Member;
import com.ff.member.service.IMemberService; import com.ff.member.service.IMemberService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -58,10 +60,6 @@ public class GamesJILIServiceImpl implements IGamesService {
private IGameExchangeMoneyService gameExchangeMoneyService; private IGameExchangeMoneyService gameExchangeMoneyService;
@Resource
private IGamePlatformService gamePlatformService;
@Resource @Resource
private IGameService gameService; private IGameService gameService;
@ -72,8 +70,6 @@ public class GamesJILIServiceImpl implements IGamesService {
@Resource @Resource
private IGameFreeRecordService gameFreeRecordService; private IGameFreeRecordService gameFreeRecordService;
@Resource
private IGameSecretKeyService gameSecretKeyService;
@Resource @Resource
private JILIClient jiliClient; private JILIClient jiliClient;
@ -85,11 +81,6 @@ public class GamesJILIServiceImpl implements IGamesService {
@Resource @Resource
private IGameBettingDetailsService gameBettingDetailsService; private IGameBettingDetailsService gameBettingDetailsService;
@Resource
private IGameSecretKeyCurrencyService gameSecretKeyCurrencyService;
@Resource
private IGameNameService gameNameService;
/** /**
* *
* *
@ -138,10 +129,10 @@ public class GamesJILIServiceImpl implements IGamesService {
String key = this.getKey(createMemberRequestDTO); String key = this.getKey(createMemberRequestDTO);
JILICreateMemberResponseDTO createMemberResponseDTO = jiliClient.createMember(query + "&Key=" + key); JILICreateMemberResponseDTO createMemberResponseDTO = jiliClient.createMember(query + "&Key=" + key);
int errorCode = createMemberResponseDTO.getErrorCode(); int errorCode = createMemberResponseDTO.getErrorCode();
if (0 == errorCode){ if (0 == errorCode) {
return Boolean.TRUE; return Boolean.TRUE;
} }
if (101 == errorCode){ if (101 == errorCode) {
throw new ApiException(ErrorCode.GAME_ACCOUNT_CREATION_FAILED.getCode()); throw new ApiException(ErrorCode.GAME_ACCOUNT_CREATION_FAILED.getCode());
} }
//判断是否获取成功 //判断是否获取成功
@ -235,7 +226,7 @@ public class GamesJILIServiceImpl implements IGamesService {
if (this.getIsSuccess(jiliGames.getErrorCode())) { if (this.getIsSuccess(jiliGames.getErrorCode())) {
for (JILIGamesDataDTO gamesDataDTO : jiliGames.getData()) { for (JILIGamesDataDTO gamesDataDTO : jiliGames.getData()) {
GamePlatform gamePlatform = GamePlatform.builder() /*GamePlatform gamePlatform = GamePlatform.builder()
.platformType(JILIGameType.findSystemByCode(gamesDataDTO.getGameCategoryId())) .platformType(JILIGameType.findSystemByCode(gamesDataDTO.getGameCategoryId()))
.platformCode(GamePlatforms.JILI.getInfo()) .platformCode(GamePlatforms.JILI.getInfo())
.build(); .build();
@ -248,9 +239,12 @@ public class GamesJILIServiceImpl implements IGamesService {
gamePlatformService.insertGamePlatform(gamePlatform); gamePlatformService.insertGamePlatform(gamePlatform);
} else { } else {
gamePlatform = gamePlatforms.get(0); gamePlatform = gamePlatforms.get(0);
} }*/
Integer platformType = JILIGameType.findSystemByCode(gamesDataDTO.getGameCategoryId());
Game game = Game.builder() Game game = Game.builder()
.platformId(gamePlatform.getId()) //.platformId(gamePlatform.getId())
.platformCode(GamePlatforms.JILI.getCode())
.platformType(platformType)
.gameCode(String.valueOf(gamesDataDTO.getGameId())) .gameCode(String.valueOf(gamesDataDTO.getGameId()))
.build(); .build();
List<Game> games = gameService.selectGameList(game); List<Game> games = gameService.selectGameList(game);
@ -258,17 +252,29 @@ public class GamesJILIServiceImpl implements IGamesService {
if (CollectionUtils.isEmpty(games)) { if (CollectionUtils.isEmpty(games)) {
game.setGameSourceType(String.valueOf(gamesDataDTO.getGameCategoryId())); game.setGameSourceType(String.valueOf(gamesDataDTO.getGameCategoryId()));
game.setFreespin(gamesDataDTO.isFreespin()); game.setFreespin(gamesDataDTO.isFreespin());
game.setSortNo(gameService.selectMaxSortNoByPlatformId(gamePlatform.getId()) + 1); game.setSortNo(gameService.selectMaxSortNo(platformType, GamePlatforms.JILI.getCode()) + 1);
game.setGameName(gamesDataDTO.getName().getZhCN()); game.setGameName(gamesDataDTO.getName().getZhCN());
game.setCreateBy(Constants.SYSTEM); game.setCreateBy(Constants.SYSTEM);
game.setPlatformType(platformType);
game.setPlatformCode(GamePlatforms.JILI.getCode());
List<NameInfo> nameInfos = new ArrayList<>();
nameInfos.add(new NameInfo(gamesDataDTO.getName().getZhCN(), "zh-CN"));
nameInfos.add(new NameInfo(gamesDataDTO.getName().getEnUS(), "en-US"));
game.setNameInfo(nameInfos);
gameService.insertGame(game); gameService.insertGame(game);
} else { } else {
game = games.get(0); game = games.get(0);
} }
gamesDataDTO.setSystemGameId(game.getId()); gamesDataDTO.setSystemGameId(game.getId());
List<GameName> gameNames = gameNameService.selectGameNameList(GameName.builder().gameId(game.getId()).gameName(game.getGameName()).build());
if (CollectionUtils.isEmpty(gameNames)){ /*List<GameName> gameNames = gameNameService.selectGameNameList(GameName
.builder()
.gameId(game.getId())
.gameName(game.getGameName()).build());
if (CollectionUtils.isEmpty(gameNames)) {
gameNameService.insertGameName(GameName.builder() gameNameService.insertGameName(GameName.builder()
.gameId(game.getId()) .gameId(game.getId())
.gameName(game.getGameName()) .gameName(game.getGameName())
@ -282,8 +288,7 @@ public class GamesJILIServiceImpl implements IGamesService {
.langCode("en-US") .langCode("en-US")
.createBy(Constants.SYSTEM) .createBy(Constants.SYSTEM)
.build()); .build());
} }*/
} }
@ -308,9 +313,9 @@ public class GamesJILIServiceImpl implements IGamesService {
@Override @Override
@Transactional @Transactional
public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) { public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) {
GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder() // GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.code(exchangeTransferMoneyRequestDTO.getAgentId()) // .code(exchangeTransferMoneyRequestDTO.getAgentId())
.currency(exchangeTransferMoneyRequestDTO.getCurrency()).build()); // .currency(exchangeTransferMoneyRequestDTO.getCurrency()).build());
Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount()); Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount());
String transactionId = GamePlatforms.JILI.getInfo() + IdUtils.simpleUUID(); String transactionId = GamePlatforms.JILI.getInfo() + IdUtils.simpleUUID();
@ -332,7 +337,7 @@ public class GamesJILIServiceImpl implements IGamesService {
.quota(exchangeTransferMoneyRequestDTO.getQuota()) .quota(exchangeTransferMoneyRequestDTO.getQuota())
.balance(exchangeTransferMoneyRequestDTO.getAmount()) .balance(exchangeTransferMoneyRequestDTO.getAmount())
.exchangeType(exchangeTransferMoneyRequestDTO.getTransferType()) .exchangeType(exchangeTransferMoneyRequestDTO.getTransferType())
.currencyCode(gameSecretKey.getSystemCurrency()) .currencyCode(exchangeTransferMoneyRequestDTO.getSystemCurrency())
.memberId(member.getId()) .memberId(member.getId())
.transactionId(transactionId) .transactionId(transactionId)
.platformCode(GamePlatforms.JILI.getInfo()) .platformCode(GamePlatforms.JILI.getInfo())
@ -410,8 +415,9 @@ public class GamesJILIServiceImpl implements IGamesService {
//判断是否获取成功 //判断是否获取成功
if (this.getIsSuccess(betRecordJILIResponse.getErrorCode())) { if (this.getIsSuccess(betRecordJILIResponse.getErrorCode())) {
//数据插入 //数据插入
this.batchInsert(betRecordJILIResponse); this.batchInsert(betRecordJILIResponse, betRecordByTimeDTO);
JILIBetRecordResponseDTO.DataBean dataBean = betRecordJILIResponse.getData(); JILIBetRecordResponseDTO.DataBean dataBean = betRecordJILIResponse.getData();
//获取下一页数据 //获取下一页数据
while (dataBean.getPagination().getCurrentPage() != dataBean.getPagination().getTotalPages() && dataBean.getPagination().getTotalPages() > 0) { while (dataBean.getPagination().getCurrentPage() != dataBean.getPagination().getTotalPages() && dataBean.getPagination().getTotalPages() > 0) {
@ -425,7 +431,7 @@ public class GamesJILIServiceImpl implements IGamesService {
dataBean = betRecordJILIResponse.getData(); dataBean = betRecordJILIResponse.getData();
if (this.getIsSuccess(betRecordJILIResponse.getErrorCode())) { if (this.getIsSuccess(betRecordJILIResponse.getErrorCode())) {
//数据插入 //数据插入
this.batchInsert(betRecordJILIResponse); this.batchInsert(betRecordJILIResponse, betRecordByTimeDTO);
} else { } else {
log.error("GameBettingDataJILIServiceImpl [getBetRecordByTime] 获取投注记录失败,错误代码{},错误信息{}", betRecordJILIResponse.getErrorCode(), betRecordJILIResponse.getMessage()); log.error("GameBettingDataJILIServiceImpl [getBetRecordByTime] 获取投注记录失败,错误代码{},错误信息{}", betRecordJILIResponse.getErrorCode(), betRecordJILIResponse.getMessage());
} }
@ -461,9 +467,9 @@ public class GamesJILIServiceImpl implements IGamesService {
String freeSpinValidity = DateUtils.formatDateToGMT4(new Date(createFreeSpinRequest.getFreeSpinValidity())); String freeSpinValidity = DateUtils.formatDateToGMT4(new Date(createFreeSpinRequest.getFreeSpinValidity()));
GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder() // GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.code(createFreeSpinRequest.getAgentId()) // .code(createFreeSpinRequest.getAgentId())
.currency(createFreeSpinRequest.getCurrency()).build()); // .currency(createFreeSpinRequest.getCurrency()).build());
List<Long> gameIds = createFreeSpinRequest.getGameIds(); List<Long> gameIds = createFreeSpinRequest.getGameIds();
GameUniqueDTO gameUniqueDTO = new GameUniqueDTO(); GameUniqueDTO gameUniqueDTO = new GameUniqueDTO();
@ -473,7 +479,7 @@ public class GamesJILIServiceImpl implements IGamesService {
.map(Game::getGameCode) .map(Game::getGameCode)
.map(String::valueOf) .map(String::valueOf)
.collect(Collectors.joining(",")); .collect(Collectors.joining(","));
String referenceId = GamePlatforms.JILI.getInfo() + IdUtils.simpleUUID(); String referenceId = GamePlatforms.JILI.getCode() + IdUtils.simpleUUID();
//请求参数 //请求参数
String query = "Account=" + createFreeSpinRequest.getAccount() String query = "Account=" + createFreeSpinRequest.getAccount()
+ "&Currency=" + createFreeSpinRequest.getCurrency() + "&Currency=" + createFreeSpinRequest.getCurrency()
@ -514,7 +520,7 @@ public class GamesJILIServiceImpl implements IGamesService {
GameFreeRecord gameFreeRecord = GameFreeRecord.builder() GameFreeRecord gameFreeRecord = GameFreeRecord.builder()
.currencyCode(gameSecretKey.getSystemCurrency()) .currencyCode(createFreeSpinRequest.getSystemCurrency())
.referenceId(referenceId) .referenceId(referenceId)
.platformCode(GamePlatforms.JILI.getInfo()) .platformCode(GamePlatforms.JILI.getInfo())
.memberId(member.getId()) .memberId(member.getId())
@ -677,7 +683,7 @@ public class GamesJILIServiceImpl implements IGamesService {
cancelFreeSpinRequestDTO.setQuery(query); cancelFreeSpinRequestDTO.setQuery(query);
//获取key //获取key
String key = this.getKey(cancelFreeSpinRequestDTO); String key = this.getKey(cancelFreeSpinRequestDTO);
JILICancelFreeSpinResponseDTO cancelFreeSpinResponseDTO = jiliClient.cancelFreeSpin(query + "&Key=" + key); JILICancelFreeSpinResponseDTO cancelFreeSpinResponseDTO = jiliClient.cancelFreeSpin(query + "&Key=" + key);
//判断是否获取成功 //判断是否获取成功
if (this.getIsSuccess(cancelFreeSpinResponseDTO.getErrorCode())) { if (this.getIsSuccess(cancelFreeSpinResponseDTO.getErrorCode())) {
List<GameFreeRecord> gameFreeRecords = gameFreeRecordService.selectGameFreeRecordList(GameFreeRecord.builder() List<GameFreeRecord> gameFreeRecords = gameFreeRecordService.selectGameFreeRecordList(GameFreeRecord.builder()
@ -692,6 +698,7 @@ public class GamesJILIServiceImpl implements IGamesService {
throw new BaseException(cancelFreeSpinResponseDTO.getMessage()); throw new BaseException(cancelFreeSpinResponseDTO.getMessage());
} }
} }
/** /**
* *
* *
@ -704,21 +711,25 @@ public class GamesJILIServiceImpl implements IGamesService {
} }
/** /**
* *
* *
* @param betRecordJILIResponse jiliresponse * @param betRecordJILIResponse jiliresponse
* @return {@link Integer } * @return {@link Integer }
*/ */
private void batchInsert(JILIBetRecordResponseDTO betRecordJILIResponse) { private void batchInsert(JILIBetRecordResponseDTO betRecordJILIResponse, BetRecordByTimeDTO betRecordByTimeDTO) {
List<GameBettingDetails> gameBettingDetails = new ArrayList<>(); List<GameBettingDetails> gameBettingDetails = new ArrayList<>();
List<String> wagersIds = new ArrayList<>(); List<String> wagersIds = new ArrayList<>();
//数据组装 //数据组装
JILIBetRecordResponseDTO.DataBean dataBean = betRecordJILIResponse.getData(); JILIBetRecordResponseDTO.DataBean dataBean = betRecordJILIResponse.getData();
//数据转化 //数据转化
for (JILIBetRecordDataResponseDTO jiliBetRecordDataResponseDTO : dataBean.getResult()) { for (JILIBetRecordDataResponseDTO jiliBetRecordDataResponseDTO : dataBean.getResult()) {
GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder().data(jiliBetRecordDataResponseDTO).build()); GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder()
.systemCurrencyCode(betRecordByTimeDTO.getSystemCurrency())
.platform(betRecordByTimeDTO.getVendor())
.currencyCode(betRecordByTimeDTO.getCurrency())
.platform(betRecordByTimeDTO.getVendor())
.data(jiliBetRecordDataResponseDTO).build());
if (!ObjectUtils.isEmpty(bettingDetails)) { if (!ObjectUtils.isEmpty(bettingDetails)) {
bettingDetails.setId(IdUtil.getSnowflakeNextId()); bettingDetails.setId(IdUtil.getSnowflakeNextId());
gameBettingDetails.add(bettingDetails); gameBettingDetails.add(bettingDetails);
@ -727,7 +738,7 @@ public class GamesJILIServiceImpl implements IGamesService {
} }
if (!CollectionUtils.isEmpty(gameBettingDetails)) { if (!CollectionUtils.isEmpty(gameBettingDetails)) {
//查询重复数据id //查询重复数据id
List<String> removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds,GamePlatforms.JILI.getInfo()); List<String> removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds, GamePlatforms.JILI.getInfo());
//用steam流清除list中与wagersIds集合相同的数据 //用steam流清除list中与wagersIds集合相同的数据
gameBettingDetails = gameBettingDetails.stream() gameBettingDetails = gameBettingDetails.stream()
.filter(detail -> !removeWagersIds.contains(detail.getWagersId())) .filter(detail -> !removeWagersIds.contains(detail.getWagersId()))
@ -750,9 +761,9 @@ public class GamesJILIServiceImpl implements IGamesService {
//转化类 //转化类
JILIBetRecordDataResponseDTO jiliBetRecordDataResponseDTO = (JILIBetRecordDataResponseDTO) gamesDataBuildDTO.getData(); JILIBetRecordDataResponseDTO jiliBetRecordDataResponseDTO = (JILIBetRecordDataResponseDTO) gamesDataBuildDTO.getData();
GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder() // GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.code(jiliBetRecordDataResponseDTO.getAgentId()) // .code(jiliBetRecordDataResponseDTO.getAgentId())
.platformCode(GamePlatforms.JILI.getInfo()).build()); // .platformCode(GamePlatforms.JILI.getInfo()).build());
Member member = memberService.selectMemberByGameAccount(jiliBetRecordDataResponseDTO.getAccount()); Member member = memberService.selectMemberByGameAccount(jiliBetRecordDataResponseDTO.getAccount());
@ -773,7 +784,7 @@ public class GamesJILIServiceImpl implements IGamesService {
GameBettingDetails gameBettingDetails = GameBettingDetails.builder() GameBettingDetails gameBettingDetails = GameBettingDetails.builder()
.tenantKey(member.getTenantKey()) .tenantKey(member.getTenantKey())
//保存我们的币种id //保存我们的币种id
.currencyCode(gameSecretKey.getSystemCurrency()) .currencyCode(/*gameSecretKey.getSystemCurrency()*/gamesDataBuildDTO.getSystemCurrencyCode())
.memberId(member.getId()) .memberId(member.getId())
.gameCode(jiliBetRecordDataResponseDTO.getGameId()) .gameCode(jiliBetRecordDataResponseDTO.getGameId())
.gameType(JILIGameType.findSystemByCode(jiliBetRecordDataResponseDTO.getGameCategoryId())) .gameType(JILIGameType.findSystemByCode(jiliBetRecordDataResponseDTO.getGameCategoryId()))

View File

@ -8,7 +8,6 @@ import com.ff.base.core.redis.RedisCache;
import com.ff.base.enums.*; import com.ff.base.enums.*;
import com.ff.base.exception.base.ApiException; import com.ff.base.exception.base.ApiException;
import com.ff.base.exception.base.BaseException; import com.ff.base.exception.base.BaseException;
import com.ff.base.system.service.ISysConfigService;
import com.ff.base.utils.DateUtils; import com.ff.base.utils.DateUtils;
import com.ff.base.utils.JsonUtil; import com.ff.base.utils.JsonUtil;
import com.ff.base.utils.StringUtils; import com.ff.base.utils.StringUtils;
@ -21,8 +20,10 @@ import com.ff.game.api.km.dto.*;
import com.ff.game.api.request.*; import com.ff.game.api.request.*;
import com.ff.game.api.xk.dto.XKGamesDTO; import com.ff.game.api.xk.dto.XKGamesDTO;
import com.ff.game.domain.*; import com.ff.game.domain.*;
import com.ff.game.dto.GameSecretKeyCurrencyDTO; import com.ff.game.service.IGameBettingDetailsService;
import com.ff.game.service.*; import com.ff.game.service.IGameExchangeMoneyService;
import com.ff.game.service.IGameService;
import com.ff.game.service.IPlatformService;
import com.ff.member.domain.Member; import com.ff.member.domain.Member;
import com.ff.member.service.IMemberService; import com.ff.member.service.IMemberService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -53,20 +54,12 @@ public class GamesKMServiceImpl implements IGamesService {
@Resource @Resource
private IPlatformService platformService; private IPlatformService platformService;
@Resource
private ISysConfigService configService;
@Resource @Resource
private RedisCache redisCache; private RedisCache redisCache;
@Resource @Resource
private IGameExchangeMoneyService gameExchangeMoneyService; private IGameExchangeMoneyService gameExchangeMoneyService;
@Resource
private IGamePlatformService gamePlatformService;
@Resource @Resource
private IGameService gameService; private IGameService gameService;
@ -74,14 +67,6 @@ public class GamesKMServiceImpl implements IGamesService {
@Resource @Resource
private IMemberService memberService; private IMemberService memberService;
@Resource
private IGameFreeRecordService gameFreeRecordService;
@Resource
private IGameSecretKeyService gameSecretKeyService;
@Resource
private IGameSecretKeyCurrencyService gameSecretKeyCurrencyService;
@Resource @Resource
private KMClient KMClient; private KMClient KMClient;
@ -92,9 +77,6 @@ public class GamesKMServiceImpl implements IGamesService {
@Resource @Resource
private IGameBettingDetailsService gameBettingDetailsService; private IGameBettingDetailsService gameBettingDetailsService;
@Resource
private IGameNameService gameNameService;
/** /**
* id * id
@ -186,14 +168,14 @@ public class GamesKMServiceImpl implements IGamesService {
public MemberInfoResponseDTO getMemberInfo(MemberInfoRequestDTO memberInfoRequestDTO) { public MemberInfoResponseDTO getMemberInfo(MemberInfoRequestDTO memberInfoRequestDTO) {
log.info("GamesDGServiceImpl [getMemberInfo] 请求参数 {}", memberInfoRequestDTO); log.info("GamesDGServiceImpl [getMemberInfo] 请求参数 {}", memberInfoRequestDTO);
Map<String, Object> paramsMap = new HashMap<>(); Map<String, Object> paramsMap = new HashMap<>();
Member member = memberService.selectMemberByGameAccount(memberInfoRequestDTO.getAccounts()); // Member member = memberService.selectMemberByGameAccount(memberInfoRequestDTO.getAccounts());
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder() // GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(GamePlatforms.KM.getInfo()) // .platformCode(GamePlatforms.KM.getInfo())
.currency(member.getCurrencyCode()) // .currency(member.getCurrencyCode())
.build()); // .build());
paramsMap.put("userid", memberInfoRequestDTO.getAccounts()); paramsMap.put("userid", memberInfoRequestDTO.getAccounts());
paramsMap.put("cur", currencyDTO.getCurrency()); paramsMap.put("cur", memberInfoRequestDTO.getCurrency());
Map<String, Object> headerMap = this.getKey(memberInfoRequestDTO); Map<String, Object> headerMap = this.getKey(memberInfoRequestDTO);
KMBalanceResponse memberInfo = KMClient.getMemberInfo(JsonUtil.mapToQueryString(paramsMap), headerMap); KMBalanceResponse memberInfo = KMClient.getMemberInfo(JsonUtil.mapToQueryString(paramsMap), headerMap);
if (ObjectUtils.isEmpty(memberInfo.getErrorCode()) || this.getIsSuccess(memberInfo.getErrorCode())) { if (ObjectUtils.isEmpty(memberInfo.getErrorCode()) || this.getIsSuccess(memberInfo.getErrorCode())) {
@ -214,17 +196,17 @@ public class GamesKMServiceImpl implements IGamesService {
log.info("GamesKMServiceImpl [loginWithoutRedirect] 请求参数 {}", gamesLogin); log.info("GamesKMServiceImpl [loginWithoutRedirect] 请求参数 {}", gamesLogin);
String kmUserToken = redisCache.getCacheObject(CacheConstants.KM_USER_TOKEN + gamesLogin.getAccount()); String kmUserToken = redisCache.getCacheObject(CacheConstants.KM_USER_TOKEN + gamesLogin.getAccount());
if (StringUtils.isEmpty(kmUserToken)) { if (StringUtils.isEmpty(kmUserToken)) {
Member member = memberService.selectMemberByGameAccount(gamesLogin.getAccount()); // Member member = memberService.selectMemberByGameAccount(gamesLogin.getAccount());
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder() // GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(GamePlatforms.KM.getInfo()) // .platformCode(GamePlatforms.KM.getInfo())
.currency(member.getCurrencyCode()) // .currency(member.getCurrencyCode())
.build()); // .build());
CreateMemberRequestDTO gamesBaseRequestDTO = CreateMemberRequestDTO.builder() CreateMemberRequestDTO gamesBaseRequestDTO = CreateMemberRequestDTO.builder()
.account(gamesLogin.getAccount()) .account(gamesLogin.getAccount())
.agentId(gamesLogin.getAgentId()) .agentId(gamesLogin.getAgentId())
.agentKey(gamesLogin.getAgentKey()) .agentKey(gamesLogin.getAgentKey())
.currency(currencyDTO.getCurrency()) .currency(gamesLogin.getCurrency())
.build(); .build();
this.createMember(gamesBaseRequestDTO); this.createMember(gamesBaseRequestDTO);
kmUserToken = redisCache.getCacheObject(CacheConstants.KM_USER_TOKEN + gamesLogin.getAccount()); kmUserToken = redisCache.getCacheObject(CacheConstants.KM_USER_TOKEN + gamesLogin.getAccount());
@ -287,11 +269,11 @@ public class GamesKMServiceImpl implements IGamesService {
.anyMatch(pc -> pc.getCode().equals(mobile.getCode()))) .anyMatch(pc -> pc.getCode().equals(mobile.getCode())))
.collect(Collectors.toList()); .collect(Collectors.toList());
for (KMGameResponse.Game game : games) { for (KMGameResponse.Game game : games) {
GamePlatform gamePlatform = GamePlatform.builder() // GamePlatform gamePlatform = GamePlatform.builder()
.platformType(KMGameType.findSystemByCode(game.getProviderCode())) // .platformType(KMGameType.findSystemByCode(game.getProviderCode()))
.platformCode(GamePlatforms.KM.getCode()) // .platformCode(GamePlatforms.KM.getCode())
.build(); // .build();
List<GamePlatform> gamePlatforms = gamePlatformService.selectGamePlatformList(gamePlatform); /*List<GamePlatform> gamePlatforms = gamePlatformService.selectGamePlatformList(gamePlatform);
//没有此平台就新增一个平台 //没有此平台就新增一个平台
if (CollectionUtils.isEmpty(gamePlatforms)) { if (CollectionUtils.isEmpty(gamePlatforms)) {
gamePlatform.setPlatformName(GamePlatforms.KM.getInfo() + KMGameType.findInfoByCode(game.getProviderCode())); gamePlatform.setPlatformName(GamePlatforms.KM.getInfo() + KMGameType.findInfoByCode(game.getProviderCode()));
@ -300,9 +282,12 @@ public class GamesKMServiceImpl implements IGamesService {
gamePlatformService.insertGamePlatform(gamePlatform); gamePlatformService.insertGamePlatform(gamePlatform);
} else { } else {
gamePlatform = gamePlatforms.get(0); gamePlatform = gamePlatforms.get(0);
} }*/
Integer platformType = KMGameType.findSystemByCode(game.getProviderCode());
Game gameOne = Game.builder() Game gameOne = Game.builder()
.platformId(gamePlatform.getId()) //.platformId(gamePlatform.getId())
.platformCode(GamePlatforms.KM.getCode())
.platformType(platformType)
.gameCode(game.getCode()) .gameCode(game.getCode())
.build(); .build();
List<Game> gameOnes = gameService.selectGameList(gameOne); List<Game> gameOnes = gameService.selectGameList(gameOne);
@ -327,11 +312,11 @@ public class GamesKMServiceImpl implements IGamesService {
*/ */
private List<KMGameResponse.Game> gameList(KMGameResponse gameList, Integer ingress) { private List<KMGameResponse.Game> gameList(KMGameResponse gameList, Integer ingress) {
for (KMGameResponse.Game gamesDataDTO : gameList.getGames()) { for (KMGameResponse.Game gamesDataDTO : gameList.getGames()) {
GamePlatform gamePlatform = GamePlatform.builder() // GamePlatform gamePlatform = GamePlatform.builder()
.platformType(KMGameType.findSystemByCode(gamesDataDTO.getProviderCode())) // .platformType(KMGameType.findSystemByCode(gamesDataDTO.getProviderCode()))
.platformCode(GamePlatforms.KM.getCode()) // .platformCode(GamePlatforms.KM.getCode())
.build(); // .build();
List<GamePlatform> gamePlatforms = gamePlatformService.selectGamePlatformList(gamePlatform); /*List<GamePlatform> gamePlatforms = gamePlatformService.selectGamePlatformList(gamePlatform);
//没有此平台就新增一个平台 //没有此平台就新增一个平台
if (CollectionUtils.isEmpty(gamePlatforms)) { if (CollectionUtils.isEmpty(gamePlatforms)) {
gamePlatform.setPlatformName(GamePlatforms.KM.getInfo() + KMGameType.findInfoByCode(gamesDataDTO.getProviderCode())); gamePlatform.setPlatformName(GamePlatforms.KM.getInfo() + KMGameType.findInfoByCode(gamesDataDTO.getProviderCode()));
@ -340,9 +325,12 @@ public class GamesKMServiceImpl implements IGamesService {
gamePlatformService.insertGamePlatform(gamePlatform); gamePlatformService.insertGamePlatform(gamePlatform);
} else { } else {
gamePlatform = gamePlatforms.get(0); gamePlatform = gamePlatforms.get(0);
} }*/
Integer platformType = KMGameType.findSystemByCode(gamesDataDTO.getProviderCode());
Game game = Game.builder() Game game = Game.builder()
.platformId(gamePlatform.getId()) //.platformId(gamePlatform.getId())
.platformCode(GamePlatforms.KM.getCode())
.platformType(platformType)
.gameCode(gamesDataDTO.getCode()) .gameCode(gamesDataDTO.getCode())
.build(); .build();
List<Game> games = gameService.selectGameList(game); List<Game> games = gameService.selectGameList(game);
@ -351,24 +339,29 @@ public class GamesKMServiceImpl implements IGamesService {
game.setGameSourceType(gamesDataDTO.getProviderCode()); game.setGameSourceType(gamesDataDTO.getProviderCode());
game.setFreespin(Boolean.FALSE); game.setFreespin(Boolean.FALSE);
game.setDemoStatus(gamesDataDTO.getSupportDemoUrl()); game.setDemoStatus(gamesDataDTO.getSupportDemoUrl());
game.setSortNo(gameService.selectMaxSortNoByPlatformId(gamePlatform.getId()) + 1); game.setSortNo(gameService.selectMaxSortNo(platformType, GamePlatforms.KM.getCode()) + 1);
game.setGameName(gamesDataDTO.getName()); game.setGameName(gamesDataDTO.getName());
game.setCreateBy(Constants.SYSTEM); game.setCreateBy(Constants.SYSTEM);
game.setIngress(ingress); game.setIngress(ingress);
game.setPlatformCode(GamePlatforms.KM.getCode());
game.setPlatformType(platformType);
List<NameInfo> nameInfos = new ArrayList<>();
nameInfos.add(new NameInfo(gamesDataDTO.getName(), "zh-CN"));
game.setNameInfo(nameInfos);
gameService.insertGame(game); gameService.insertGame(game);
} else { } else {
game = games.get(0); game = games.get(0);
} }
gamesDataDTO.setSystemGameId(game.getId()); gamesDataDTO.setSystemGameId(game.getId());
List<GameName> gameNames = gameNameService.selectGameNameList(GameName.builder().gameId(game.getId()).gameName(game.getGameName()).build()); // List<GameName> gameNames = gameNameService.selectGameNameList(GameName.builder().gameId(game.getId()).gameName(game.getGameName()).build());
if (CollectionUtils.isEmpty(gameNames)) { // if (CollectionUtils.isEmpty(gameNames)) {
gameNameService.insertGameName(GameName.builder() // gameNameService.insertGameName(GameName.builder()
.gameId(game.getId()) // .gameId(game.getId())
.gameName(game.getGameName()) // .gameName(game.getGameName())
.langCode("zh-CN") // .langCode("zh-CN")
.createBy(Constants.SYSTEM) // .createBy(Constants.SYSTEM)
.build()); // .build());
} // }
} }
return gameList.getGames(); return gameList.getGames();
@ -384,10 +377,10 @@ public class GamesKMServiceImpl implements IGamesService {
@Transactional @Transactional
public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) { public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) {
log.info("GamesKMServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO); log.info("GamesKMServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO);
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder() // GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(GamePlatforms.KM.getInfo()) // .platformCode(GamePlatforms.KM.getInfo())
.currency(exchangeTransferMoneyRequestDTO.getCurrency()) // .currency(exchangeTransferMoneyRequestDTO.getCurrency())
.build()); // .build());
Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount()); Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount());
String transactionId = GamePlatforms.KM.getInfo() + IdUtils.simpleUUID(); String transactionId = GamePlatforms.KM.getInfo() + IdUtils.simpleUUID();
@ -407,7 +400,7 @@ public class GamesKMServiceImpl implements IGamesService {
.quota(exchangeTransferMoneyRequestDTO.getQuota()) .quota(exchangeTransferMoneyRequestDTO.getQuota())
.balance(exchangeTransferMoneyRequestDTO.getAmount()) .balance(exchangeTransferMoneyRequestDTO.getAmount())
.exchangeType(exchangeTransferMoneyRequestDTO.getTransferType()) .exchangeType(exchangeTransferMoneyRequestDTO.getTransferType())
.currencyCode(currencyDTO.getSystemCurrency()) .currencyCode(exchangeTransferMoneyRequestDTO.getSystemCurrency())
.memberId(member.getId()) .memberId(member.getId())
.transactionId(transactionId) .transactionId(transactionId)
.platformCode(GamePlatforms.KM.getInfo()) .platformCode(GamePlatforms.KM.getInfo())
@ -430,7 +423,7 @@ public class GamesKMServiceImpl implements IGamesService {
Map<String, Object> params = new LinkedHashMap<>(); Map<String, Object> params = new LinkedHashMap<>();
params.put("userid", exchangeTransferMoneyRequestDTO.getAccount()); params.put("userid", exchangeTransferMoneyRequestDTO.getAccount());
params.put("amt", amount); params.put("amt", amount);
params.put("cur", currencyDTO.getCurrency()); params.put("cur", exchangeTransferMoneyRequestDTO.getCurrency());
params.put("txid", transactionId); params.put("txid", transactionId);
Map<String, Object> headerMap = this.getKey(exchangeTransferMoneyRequestDTO); Map<String, Object> headerMap = this.getKey(exchangeTransferMoneyRequestDTO);
@ -503,9 +496,7 @@ public class GamesKMServiceImpl implements IGamesService {
KMBetRecordResponse betRecordByTime = KMClient.getBetRecordByTime(JsonUtil.mapToQueryString(params), key); KMBetRecordResponse betRecordByTime = KMClient.getBetRecordByTime(JsonUtil.mapToQueryString(params), key);
if (ObjectUtils.isEmpty(betRecordByTime.getErrorCode()) || this.getIsSuccess(betRecordByTime.getErrorCode())) { if (ObjectUtils.isEmpty(betRecordByTime.getErrorCode()) || this.getIsSuccess(betRecordByTime.getErrorCode())) {
this.batchInsert(betRecordByTime); this.batchInsert(betRecordByTime, betRecordByTimeDTO);
return Boolean.TRUE; return Boolean.TRUE;
} else { } else {
log.error("GamesKMServiceImpl [getBetRecordByTime] 获取投注记录失败,错误代码{},错误信息{}", betRecordByTime.getErrorCode(), betRecordByTime.getErrorDescription()); log.error("GamesKMServiceImpl [getBetRecordByTime] 获取投注记录失败,错误代码{},错误信息{}", betRecordByTime.getErrorCode(), betRecordByTime.getErrorDescription());
@ -628,14 +619,18 @@ public class GamesKMServiceImpl implements IGamesService {
* *
* @param betRecordByTime dgdto * @param betRecordByTime dgdto
*/ */
private void batchInsert(KMBetRecordResponse betRecordByTime) { private void batchInsert(KMBetRecordResponse betRecordByTime, BetRecordByTimeDTO betRecordByTimeDTO) {
List<GameBettingDetails> gameBettingDetails = new ArrayList<>(); List<GameBettingDetails> gameBettingDetails = new ArrayList<>();
List<String> wagersIds = new ArrayList<>(); List<String> wagersIds = new ArrayList<>();
//数据组装 //数据组装
List<KMBetRecordResponse.Bet> report = betRecordByTime.getBets(); List<KMBetRecordResponse.Bet> report = betRecordByTime.getBets();
//数据转化 //数据转化
for (KMBetRecordResponse.Bet bean : report) { for (KMBetRecordResponse.Bet bean : report) {
GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder().data(bean).build()); GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder()
//.systemCurrencyCode(systemCurrency)
//.currencyCode(targetCurrency)
.platform(betRecordByTimeDTO.getVendor())
.data(bean).build());
if (!ObjectUtils.isEmpty(bettingDetails)) { if (!ObjectUtils.isEmpty(bettingDetails)) {
bettingDetails.setId(IdUtil.getSnowflakeNextId()); bettingDetails.setId(IdUtil.getSnowflakeNextId());
gameBettingDetails.add(bettingDetails); gameBettingDetails.add(bettingDetails);
@ -666,12 +661,11 @@ public class GamesKMServiceImpl implements IGamesService {
public GameBettingDetails dataBuild(GamesDataBuildDTO gamesDataBuildDTO) { public GameBettingDetails dataBuild(GamesDataBuildDTO gamesDataBuildDTO) {
//转化类 //转化类
KMBetRecordResponse.Bet resultBean = (KMBetRecordResponse.Bet) gamesDataBuildDTO.getData(); KMBetRecordResponse.Bet resultBean = (KMBetRecordResponse.Bet) gamesDataBuildDTO.getData();
//
// GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder() // .platformCode(GamePlatforms.KM.getInfo())
.platformCode(GamePlatforms.KM.getInfo()) // .currency(resultBean.getCurrency())
.currency(resultBean.getCurrency()) // .build());
.build());
Member member = memberService.selectMemberByGameAccount(resultBean.getUserId()); Member member = memberService.selectMemberByGameAccount(resultBean.getUserId());
@ -697,20 +691,22 @@ public class GamesKMServiceImpl implements IGamesService {
} }
Platform platform = gamesDataBuildDTO.getPlatform();
String systemCurrency = platform.getOurCurrency(resultBean.getCurrency());
//数据构造 //数据构造
GameBettingDetails gameBettingDetails = GameBettingDetails.builder() GameBettingDetails gameBettingDetails = GameBettingDetails.builder()
.tenantKey(member.getTenantKey()) .tenantKey(member.getTenantKey())
//保存我们的币种id //保存我们的币种id
.currencyCode(currencyDTO.getSystemCurrency()) .currencyCode(systemCurrency)
.memberId(member.getId()) .memberId(member.getId())
.gameCode(gamesDataDTO.getCode()) .gameCode(gamesDataDTO.getCode())
.gameType(PlatformType.CARD_GAME.getCode()) .gameType(PlatformType.CARD_GAME.getCode())
.platformCode(GamePlatforms.KM.getInfo()) .platformCode(GamePlatforms.KM.getCode())
.gameId(GAME_ID) .gameId(GAME_ID)
.gameName(gamesDataDTO.getName()) .gameName(gamesDataDTO.getName())
.gameStatus(gameStatus) .gameStatus(gameStatus)
.gameStatusType(1) .gameStatusType(1)
.gameCurrencyCode(currencyDTO.getCurrency()) .gameCurrencyCode(resultBean.getCurrency())
.account(resultBean.getUserId()) .account(resultBean.getUserId())
.wagersId(resultBean.getId()) .wagersId(resultBean.getId())
.wagersTime(resultBean.getBeton().getTime()) .wagersTime(resultBean.getBeton().getTime())

View File

@ -10,7 +10,6 @@ import com.ff.base.enums.*;
import com.ff.base.exception.base.ApiException; import com.ff.base.exception.base.ApiException;
import com.ff.base.exception.base.BaseException; import com.ff.base.exception.base.BaseException;
import com.ff.base.system.domain.SysConfig; import com.ff.base.system.domain.SysConfig;
import com.ff.base.system.service.ISysConfigService;
import com.ff.base.system.service.impl.SysConfigServiceImpl; import com.ff.base.system.service.impl.SysConfigServiceImpl;
import com.ff.base.utils.DateUtils; import com.ff.base.utils.DateUtils;
import com.ff.base.utils.sign.Md5Utils; import com.ff.base.utils.sign.Md5Utils;
@ -20,8 +19,9 @@ import com.ff.game.api.meitian.client.MeiTianClient;
import com.ff.game.api.meitian.dto.*; import com.ff.game.api.meitian.dto.*;
import com.ff.game.api.request.*; import com.ff.game.api.request.*;
import com.ff.game.domain.*; import com.ff.game.domain.*;
import com.ff.game.dto.GameSecretKeyCurrencyDTO; import com.ff.game.service.IGameBettingDetailsService;
import com.ff.game.service.*; import com.ff.game.service.IGameExchangeMoneyService;
import com.ff.game.service.IGameService;
import com.ff.member.domain.Member; import com.ff.member.domain.Member;
import com.ff.member.service.IMemberService; import com.ff.member.service.IMemberService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -55,20 +55,12 @@ import java.util.stream.Collectors;
@Slf4j @Slf4j
public class MeiTianGameServiceImpl implements IGamesService { public class MeiTianGameServiceImpl implements IGamesService {
@Resource
private ISysConfigService configService;
@Resource @Resource
private RedisCache redisCache; private RedisCache redisCache;
@Resource @Resource
private IGameExchangeMoneyService gameExchangeMoneyService; private IGameExchangeMoneyService gameExchangeMoneyService;
@Resource
private IGamePlatformService gamePlatformService;
@Resource @Resource
private IGameService gameService; private IGameService gameService;
@ -82,11 +74,6 @@ public class MeiTianGameServiceImpl implements IGamesService {
@Resource @Resource
private IGameBettingDetailsService gameBettingDetailsService; private IGameBettingDetailsService gameBettingDetailsService;
@Resource
private IGameSecretKeyCurrencyService gameSecretKeyCurrencyService;
@Resource
private IGameNameService gameNameService;
@Autowired @Autowired
private SysConfigServiceImpl sysConfigServiceImpl; private SysConfigServiceImpl sysConfigServiceImpl;
@ -230,7 +217,7 @@ public class MeiTianGameServiceImpl implements IGamesService {
MeiTianGamesDTO gameList = new MeiTianGamesDTO(); MeiTianGamesDTO gameList = new MeiTianGamesDTO();
for (MeiTianGameDataDTO gamesDataDTO : gameList.getData()) { for (MeiTianGameDataDTO gamesDataDTO : gameList.getData()) {
GamePlatform gamePlatform = GamePlatform.builder() /* GamePlatform gamePlatform = GamePlatform.builder()
.platformType(MeiTianGameType.findSystemByCode(gamesDataDTO.getGameCategoryId())) .platformType(MeiTianGameType.findSystemByCode(gamesDataDTO.getGameCategoryId()))
.platformCode(GamePlatforms.MT.getCode()) .platformCode(GamePlatforms.MT.getCode())
.build(); .build();
@ -243,9 +230,12 @@ public class MeiTianGameServiceImpl implements IGamesService {
gamePlatformService.insertGamePlatform(gamePlatform); gamePlatformService.insertGamePlatform(gamePlatform);
} else { } else {
gamePlatform = gamePlatforms.get(0); gamePlatform = gamePlatforms.get(0);
} }*/
Integer platformType = MeiTianGameType.findSystemByCode(gamesDataDTO.getGameCategoryId());
Game game = Game.builder() Game game = Game.builder()
.platformId(gamePlatform.getId()) //.platformId(gamePlatform.getId())
.platformCode(GamePlatforms.MT.getCode())
.platformType(platformType)
.gameCode(String.valueOf(gamesDataDTO.getGameId())) .gameCode(String.valueOf(gamesDataDTO.getGameId()))
.build(); .build();
List<Game> games = gameService.selectGameList(game); List<Game> games = gameService.selectGameList(game);
@ -253,16 +243,23 @@ public class MeiTianGameServiceImpl implements IGamesService {
if (CollectionUtils.isEmpty(games)) { if (CollectionUtils.isEmpty(games)) {
game.setGameSourceType(String.valueOf(gamesDataDTO.getGameCategoryId())); game.setGameSourceType(String.valueOf(gamesDataDTO.getGameCategoryId()));
game.setFreespin(false); game.setFreespin(false);
game.setSortNo(gameService.selectMaxSortNoByPlatformId(gamePlatform.getId()) + 1); game.setSortNo(gameService.selectMaxSortNo(platformType, GamePlatforms.MT.getCode()) + 1);
game.setGameName(gamesDataDTO.getCnName()); game.setGameName(gamesDataDTO.getCnName());
game.setCreateBy(Constants.SYSTEM); game.setCreateBy(Constants.SYSTEM);
game.setPlatformType(platformType);
game.setPlatformCode(GamePlatforms.MT.getCode());
List<NameInfo> nameInfos = new ArrayList<>();
nameInfos.add(new NameInfo(gamesDataDTO.getCnName(), "zh-CN"));
nameInfos.add(new NameInfo(gamesDataDTO.getEnName(), "en-US"));
game.setNameInfo(nameInfos);
gameService.insertGame(game); gameService.insertGame(game);
} else { } else {
game = games.get(0); game = games.get(0);
} }
gamesDataDTO.setSystemGameId(game.getId()); gamesDataDTO.setSystemGameId(game.getId());
List<GameName> gameNames = gameNameService.selectGameNameList(GameName.builder().gameId(game.getId()).gameName(game.getGameName()).build()); /*List<GameName> gameNames = gameNameService.selectGameNameList(GameName.builder().gameId(game.getId()).gameName(game.getGameName()).build());
if (CollectionUtils.isEmpty(gameNames)) { if (CollectionUtils.isEmpty(gameNames)) {
gameNameService.insertGameName(GameName.builder() gameNameService.insertGameName(GameName.builder()
.gameId(game.getId()) .gameId(game.getId())
@ -270,15 +267,13 @@ public class MeiTianGameServiceImpl implements IGamesService {
.langCode("zh-CN") .langCode("zh-CN")
.createBy(Constants.SYSTEM) .createBy(Constants.SYSTEM)
.build()); .build());
//
gameNameService.insertGameName(GameName.builder() gameNameService.insertGameName(GameName.builder()
.gameId(game.getId()) .gameId(game.getId())
.gameName(gamesDataDTO.getEnName()) .gameName(gamesDataDTO.getEnName())
.langCode("en-US") .langCode("en-US")
.createBy(Constants.SYSTEM) .createBy(Constants.SYSTEM)
.build()); .build());
} }*/
} }
@ -298,9 +293,9 @@ public class MeiTianGameServiceImpl implements IGamesService {
@Override @Override
@Transactional @Transactional
public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) { public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) {
GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder() // GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.code(exchangeTransferMoneyRequestDTO.getAgentId()) // .code(exchangeTransferMoneyRequestDTO.getAgentId())
.currency(exchangeTransferMoneyRequestDTO.getCurrency()).build()); // .currency(exchangeTransferMoneyRequestDTO.getCurrency()).build());
Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount()); Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount());
String transactionId = GamePlatforms.MT.getCode() + IdUtils.simpleUUID(); String transactionId = GamePlatforms.MT.getCode() + IdUtils.simpleUUID();
@ -322,7 +317,7 @@ public class MeiTianGameServiceImpl implements IGamesService {
.quota(exchangeTransferMoneyRequestDTO.getQuota()) .quota(exchangeTransferMoneyRequestDTO.getQuota())
.balance(exchangeTransferMoneyRequestDTO.getAmount()) .balance(exchangeTransferMoneyRequestDTO.getAmount())
.exchangeType(exchangeTransferMoneyRequestDTO.getTransferType()) .exchangeType(exchangeTransferMoneyRequestDTO.getTransferType())
.currencyCode(gameSecretKey.getSystemCurrency()) .currencyCode(exchangeTransferMoneyRequestDTO.getSystemCurrency())
.memberId(member.getId()) .memberId(member.getId())
.transactionId(transactionId) .transactionId(transactionId)
.platformCode(GamePlatforms.MT.getCode()) .platformCode(GamePlatforms.MT.getCode())
@ -332,7 +327,8 @@ public class MeiTianGameServiceImpl implements IGamesService {
exchangeMoney.setTransactionId(transactionId); exchangeMoney.setTransactionId(transactionId);
String key = gameSecretKey.getKey(); // String key = gameSecretKey.getKey();
String key = exchangeTransferMoneyRequestDTO.getAgentKey();
String merchantId = exchangeTransferMoneyRequestDTO.getAgentId(); String merchantId = exchangeTransferMoneyRequestDTO.getAgentId();
String playerName = exchangeTransferMoneyRequestDTO.getAccount(); String playerName = exchangeTransferMoneyRequestDTO.getAccount();
String coins = exchangeTransferMoneyRequestDTO.getAmount().setScale(4, RoundingMode.DOWN).toString(); String coins = exchangeTransferMoneyRequestDTO.getAmount().setScale(4, RoundingMode.DOWN).toString();
@ -464,7 +460,7 @@ public class MeiTianGameServiceImpl implements IGamesService {
return Boolean.TRUE; return Boolean.TRUE;
} }
//数据插入 //数据插入
this.batchInsert(recordResponse); this.batchInsert(recordResponse, betRecordByTimeDTO);
MeiTianBetRecordResponseDTO.DataBean dataBean = dataList.get(dataList.size() - 1); MeiTianBetRecordResponseDTO.DataBean dataBean = dataList.get(dataList.size() - 1);
SysConfig config = sysConfigServiceImpl.getByConfigKey(configKey); SysConfig config = sysConfigServiceImpl.getByConfigKey(configKey);
if (config == null) { if (config == null) {
@ -532,7 +528,7 @@ public class MeiTianGameServiceImpl implements IGamesService {
return Boolean.TRUE; return Boolean.TRUE;
} }
//数据插入 //数据插入
this.batchInsert(recordResponse); this.batchInsert(recordResponse, betRecordByTimeDTO);
MeiTianBetRecordResponseDTO.DataBean dataBean = dataList.get(dataList.size() - 1); MeiTianBetRecordResponseDTO.DataBean dataBean = dataList.get(dataList.size() - 1);
syncDateMap.put(date, Long.parseLong(dataBean.getRowID())); syncDateMap.put(date, Long.parseLong(dataBean.getRowID()));
SysConfig config = sysConfigServiceImpl.getByConfigKey(configKey); SysConfig config = sysConfigServiceImpl.getByConfigKey(configKey);
@ -693,7 +689,7 @@ public class MeiTianGameServiceImpl implements IGamesService {
* *
* @param recordResponse * @param recordResponse
*/ */
private void batchInsert(MeiTianBetRecordResponseDTO recordResponse) { private void batchInsert(MeiTianBetRecordResponseDTO recordResponse, BetRecordByTimeDTO betRecordByTimeDTO) {
List<GameBettingDetails> gameBettingDetails = new ArrayList<>(); List<GameBettingDetails> gameBettingDetails = new ArrayList<>();
List<String> wagersIds = new ArrayList<>(); List<String> wagersIds = new ArrayList<>();
//数据组装 //数据组装
@ -705,6 +701,7 @@ public class MeiTianGameServiceImpl implements IGamesService {
//数据转化 //数据转化
for (MeiTianBetRecordResponseDTO.DataBean dataBean : dataList) { for (MeiTianBetRecordResponseDTO.DataBean dataBean : dataList) {
GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder() GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder()
.platform(betRecordByTimeDTO.getVendor())
.data(dataBean).build()); .data(dataBean).build());
if (!ObjectUtils.isEmpty(bettingDetails)) { if (!ObjectUtils.isEmpty(bettingDetails)) {
bettingDetails.setId(IdUtil.getSnowflakeNextId()); bettingDetails.setId(IdUtil.getSnowflakeNextId());
@ -737,10 +734,10 @@ public class MeiTianGameServiceImpl implements IGamesService {
//转化类 //转化类
MeiTianBetRecordResponseDTO.DataBean dataBean = (MeiTianBetRecordResponseDTO.DataBean) gamesDataBuildDTO.getData(); MeiTianBetRecordResponseDTO.DataBean dataBean = (MeiTianBetRecordResponseDTO.DataBean) gamesDataBuildDTO.getData();
GameSecretKeyCurrencyDTO gameSecretKey = // GameSecretKeyCurrencyDTO gameSecretKey =
gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder() // gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.currency(dataBean.getCurrency()) // .currency(dataBean.getCurrency())
.platformCode(GamePlatforms.MT.getCode()).build()); // .platformCode(GamePlatforms.MT.getCode()).build());
Member member = memberService.selectMemberByGameAccount(dataBean.getPlayerName()); Member member = memberService.selectMemberByGameAccount(dataBean.getPlayerName());
@ -754,11 +751,13 @@ public class MeiTianGameServiceImpl implements IGamesService {
int compareResult = originPayoffAmount.compareTo(BigDecimal.ZERO); int compareResult = originPayoffAmount.compareTo(BigDecimal.ZERO);
long gameTime = getTime(dataBean.getGameDate()); long gameTime = getTime(dataBean.getGameDate());
Platform platform = gamesDataBuildDTO.getPlatform();
String systemCurrency = platform.getOurCurrency(dataBean.getCurrency());
//数据构造 //数据构造
GameBettingDetails gameBettingDetails = GameBettingDetails.builder() GameBettingDetails gameBettingDetails = GameBettingDetails.builder()
.tenantKey(member.getTenantKey()) .tenantKey(member.getTenantKey())
//保存我们的币种id //保存我们的币种id
.currencyCode(gameSecretKey.getSystemCurrency()) .currencyCode(systemCurrency)
.memberId(member.getId()) .memberId(member.getId())
.gameCode(dataBean.getGameCode()) .gameCode(dataBean.getGameCode())
.gameType(MeiTianGameType.findSystemByCode(Integer.parseInt(dataBean.getGameType()))) .gameType(MeiTianGameType.findSystemByCode(Integer.parseInt(dataBean.getGameType())))

View File

@ -19,8 +19,11 @@ import com.ff.game.api.ng.client.NGClient;
import com.ff.game.api.ng.dto.*; import com.ff.game.api.ng.dto.*;
import com.ff.game.api.request.*; import com.ff.game.api.request.*;
import com.ff.game.domain.*; import com.ff.game.domain.*;
import com.ff.game.dto.*; import com.ff.game.dto.GameBettingDetailsDTO;
import com.ff.game.service.*; import com.ff.game.dto.GameDTO;
import com.ff.game.service.IGameBettingDetailsService;
import com.ff.game.service.IGameExchangeMoneyService;
import com.ff.game.service.IGameService;
import com.ff.member.domain.Member; import com.ff.member.domain.Member;
import com.ff.member.service.IMemberService; import com.ff.member.service.IMemberService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -65,11 +68,6 @@ public class GamesPGServiceImpl implements IGamesService {
@Resource @Resource
private IGameExchangeMoneyService gameExchangeMoneyService; private IGameExchangeMoneyService gameExchangeMoneyService;
@Resource
private IGamePlatformService gamePlatformService;
@Resource @Resource
private IGameService gameService; private IGameService gameService;
@ -77,33 +75,15 @@ public class GamesPGServiceImpl implements IGamesService {
@Resource @Resource
private IMemberService memberService; private IMemberService memberService;
@Resource
private IGameFreeRecordService gameFreeRecordService;
@Resource
private IGameSecretKeyService gameSecretKeyService;
@Resource @Resource
private NGClient ngClient; private NGClient ngClient;
@Resource @Resource
private KeyConfig keyConfig; private KeyConfig keyConfig;
@Resource @Resource
private IGameBettingDetailsService gameBettingDetailsService; private IGameBettingDetailsService gameBettingDetailsService;
@Resource
private IGameSecretKeyCurrencyService gameSecretKeyCurrencyService;
@Resource
private IGameNameService gameNameService;
@Resource
private IGameSecretKeyLangService gameSecretKeyLangService;
@Autowired @Autowired
@Qualifier("threadPoolTaskExecutor") @Qualifier("threadPoolTaskExecutor")
private ThreadPoolTaskExecutor threadPoolTaskExecutor; private ThreadPoolTaskExecutor threadPoolTaskExecutor;
@ -252,7 +232,7 @@ public class GamesPGServiceImpl implements IGamesService {
ApiNGResponseDTO<List<ApiGameInfoResponseDTO>> gameList = ngClient.getGameList(paramsMap, headerMap); ApiNGResponseDTO<List<ApiGameInfoResponseDTO>> gameList = ngClient.getGameList(paramsMap, headerMap);
if (this.getIsSuccess(gameList.getCode())) { if (this.getIsSuccess(gameList.getCode())) {
for (ApiGameInfoResponseDTO apiGameInfoResponseDTO : gameList.getData()) { for (ApiGameInfoResponseDTO apiGameInfoResponseDTO : gameList.getData()) {
GamePlatform gamePlatform = GamePlatform.builder() /*GamePlatform gamePlatform = GamePlatform.builder()
.platformType(NGGameType.findSystemByCode(apiGameInfoResponseDTO.getGameType())) .platformType(NGGameType.findSystemByCode(apiGameInfoResponseDTO.getGameType()))
.platformCode(GamePlatforms.PG.getCode()) .platformCode(GamePlatforms.PG.getCode())
.build(); .build();
@ -265,9 +245,12 @@ public class GamesPGServiceImpl implements IGamesService {
gamePlatformService.insertGamePlatform(gamePlatform); gamePlatformService.insertGamePlatform(gamePlatform);
} else { } else {
gamePlatform = gamePlatforms.get(0); gamePlatform = gamePlatforms.get(0);
} }*/
Integer platformType = NGGameType.findSystemByCode(apiGameInfoResponseDTO.getGameType());
Game game = Game.builder() Game game = Game.builder()
.platformId(gamePlatform.getId()) // .platformId(gamePlatform.getId())
.platformCode(GamePlatforms.PG.getCode())
.platformType(platformType)
.gameCode(apiGameInfoResponseDTO.getGameCode()) .gameCode(apiGameInfoResponseDTO.getGameCode())
.build(); .build();
List<Game> games = gameService.selectGameList(game); List<Game> games = gameService.selectGameList(game);
@ -276,15 +259,22 @@ public class GamesPGServiceImpl implements IGamesService {
game.setGameSourceType(String.valueOf(apiGameInfoResponseDTO.getGameType())); game.setGameSourceType(String.valueOf(apiGameInfoResponseDTO.getGameType()));
game.setFreespin(Boolean.FALSE); game.setFreespin(Boolean.FALSE);
game.setDemoStatus(Boolean.TRUE); game.setDemoStatus(Boolean.TRUE);
game.setSortNo(gameService.selectMaxSortNoByPlatformId(gamePlatform.getId()) + 1); game.setSortNo(gameService.selectMaxSortNo(platformType, GamePlatforms.PG.getCode()) + 1);
game.setGameName(apiGameInfoResponseDTO.getGameName().get("zh-hans")); game.setGameName(apiGameInfoResponseDTO.getGameName().get("zh-hans"));
game.setCreateBy(Constants.SYSTEM); game.setCreateBy(Constants.SYSTEM);
game.setPlatformCode(GamePlatforms.PG.getCode());
game.setPlatformType(platformType);
List<NameInfo> nameInfos = new ArrayList<>();
nameInfos.add(new NameInfo(apiGameInfoResponseDTO.getGameName().get("zh-hans"), "zh-CN"));
nameInfos.add(new NameInfo(apiGameInfoResponseDTO.getGameName().get("zh-hant"), "zh-TW"));
nameInfos.add(new NameInfo(apiGameInfoResponseDTO.getGameName().get("en"), "en-US"));
game.setNameInfo(nameInfos);
gameService.insertGame(game); gameService.insertGame(game);
} else { } else {
game = games.get(0); game = games.get(0);
} }
apiGameInfoResponseDTO.setSystemGameId(game.getId()); apiGameInfoResponseDTO.setSystemGameId(game.getId());
Map<String, String> gameName = apiGameInfoResponseDTO.getGameName(); /*Map<String, String> gameName = apiGameInfoResponseDTO.getGameName();
for (String key : gameName.keySet()) { for (String key : gameName.keySet()) {
String name = gameName.get(key); String name = gameName.get(key);
List<GameName> gameNames = gameNameService.selectGameNameList(GameName.builder().gameId(game.getId()).gameName(name).build()); List<GameName> gameNames = gameNameService.selectGameNameList(GameName.builder().gameId(game.getId()).gameName(name).build());
@ -309,7 +299,7 @@ public class GamesPGServiceImpl implements IGamesService {
.build()); .build());
} }
} }
} }*/
} }
@ -334,11 +324,11 @@ public class GamesPGServiceImpl implements IGamesService {
public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) { public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) {
log.info("GamesNGServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO); log.info("GamesNGServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO);
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder() // GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(GamePlatforms.PG.getCode()) // .platformCode(GamePlatforms.PG.getCode())
.code(exchangeTransferMoneyRequestDTO.getAgentId()) // .code(exchangeTransferMoneyRequestDTO.getAgentId())
.currency(exchangeTransferMoneyRequestDTO.getCurrency()) // .currency(exchangeTransferMoneyRequestDTO.getCurrency())
.build()); // .build());
Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount()); Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount());
String transactionId = gameExchangeMoneyService.getTransactionId(GamePlatforms.PG.getCode(), 32); String transactionId = gameExchangeMoneyService.getTransactionId(GamePlatforms.PG.getCode(), 32);
@ -358,7 +348,7 @@ public class GamesPGServiceImpl implements IGamesService {
.quota(exchangeTransferMoneyRequestDTO.getQuota()) .quota(exchangeTransferMoneyRequestDTO.getQuota())
.balance(exchangeTransferMoneyRequestDTO.getAmount()) .balance(exchangeTransferMoneyRequestDTO.getAmount())
.exchangeType(exchangeTransferMoneyRequestDTO.getTransferType()) .exchangeType(exchangeTransferMoneyRequestDTO.getTransferType())
.currencyCode(currencyDTO.getSystemCurrency()) .currencyCode(exchangeTransferMoneyRequestDTO.getSystemCurrency())
.memberId(member.getId()) .memberId(member.getId())
.transactionId(transactionId) .transactionId(transactionId)
.platformCode(GamePlatforms.PG.getCode()) .platformCode(GamePlatforms.PG.getCode())
@ -372,7 +362,7 @@ public class GamesPGServiceImpl implements IGamesService {
.accounts(member.getGameAccount()) .accounts(member.getGameAccount())
.agentId(exchangeTransferMoneyRequestDTO.getAgentId()) .agentId(exchangeTransferMoneyRequestDTO.getAgentId())
.agentKey(exchangeTransferMoneyRequestDTO.getAgentKey()) .agentKey(exchangeTransferMoneyRequestDTO.getAgentKey())
.currency(currencyDTO.getCurrency()) .currency(exchangeTransferMoneyRequestDTO.getCurrency())
.build(); .build();
MemberInfoResponseDTO memberInfo = this.getMemberInfo(gamesBaseRequestDTO); MemberInfoResponseDTO memberInfo = this.getMemberInfo(gamesBaseRequestDTO);
//判断是不是转出 //判断是不是转出
@ -384,7 +374,7 @@ public class GamesPGServiceImpl implements IGamesService {
Map<String, Object> paramsMap = new HashMap<>(); Map<String, Object> paramsMap = new HashMap<>();
paramsMap.put("platType", NGPlatforms.PG.getCode()); paramsMap.put("platType", NGPlatforms.PG.getCode());
paramsMap.put("playerId", exchangeTransferMoneyRequestDTO.getAccount()); paramsMap.put("playerId", exchangeTransferMoneyRequestDTO.getAccount());
paramsMap.put("currency", currencyDTO.getCurrency()); paramsMap.put("currency", exchangeTransferMoneyRequestDTO.getCurrency());
paramsMap.put("type", type); paramsMap.put("type", type);
paramsMap.put("amount", exchangeTransferMoneyRequestDTO.getAmount()); paramsMap.put("amount", exchangeTransferMoneyRequestDTO.getAmount());
paramsMap.put("orderId", transactionId); paramsMap.put("orderId", transactionId);
@ -399,7 +389,7 @@ public class GamesPGServiceImpl implements IGamesService {
gameExchangeMoneyService.insertGameExchangeMoney(exchangeMoney); gameExchangeMoneyService.insertGameExchangeMoney(exchangeMoney);
ExchangeTransferStatusRequestDTO exchangeTransferStatusRequestDTO = new ExchangeTransferStatusRequestDTO(); ExchangeTransferStatusRequestDTO exchangeTransferStatusRequestDTO = new ExchangeTransferStatusRequestDTO();
exchangeTransferStatusRequestDTO.setAccount(exchangeTransferMoneyRequestDTO.getAccount()); exchangeTransferStatusRequestDTO.setAccount(exchangeTransferMoneyRequestDTO.getAccount());
exchangeTransferStatusRequestDTO.setCurrency(currencyDTO.getCurrency()); exchangeTransferStatusRequestDTO.setCurrency(exchangeTransferMoneyRequestDTO.getCurrency());
exchangeTransferStatusRequestDTO.setOrderId(transactionId); exchangeTransferStatusRequestDTO.setOrderId(transactionId);
exchangeTransferStatusRequestDTO.setAgentId(exchangeTransferMoneyRequestDTO.getAgentId()); exchangeTransferStatusRequestDTO.setAgentId(exchangeTransferMoneyRequestDTO.getAgentId());
exchangeTransferStatusRequestDTO.setAgentKey(exchangeTransferMoneyRequestDTO.getAgentKey()); exchangeTransferStatusRequestDTO.setAgentKey(exchangeTransferMoneyRequestDTO.getAgentKey());
@ -465,19 +455,21 @@ public class GamesPGServiceImpl implements IGamesService {
@Override @Override
public Boolean getBetRecordByTime(BetRecordByTimeDTO betRecordByTimeDTO) { public Boolean getBetRecordByTime(BetRecordByTimeDTO betRecordByTimeDTO) {
GameSecretKeyCurrencyDTO gameSecretKeyDTO = new GameSecretKeyCurrencyDTO(); // GameSecretKeyCurrencyDTO gameSecretKeyDTO = new GameSecretKeyCurrencyDTO();
gameSecretKeyDTO.setPlatformCodes(NGPlatforms.getAllPlatforms()); // gameSecretKeyDTO.setPlatformCodes(NGPlatforms.getAllPlatforms());
List<GameSecretKeyCurrencyDTO> currencyDTOList = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTOList(gameSecretKeyDTO); // List<GameSecretKeyCurrencyDTO> currencyDTOList = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTOList(gameSecretKeyDTO);
List<String> currencys = currencyDTOList.stream() // List<String> currencys = currencyDTOList.stream()
.map(GameSecretKeyCurrencyDTO::getCurrency) // .map(GameSecretKeyCurrencyDTO::getCurrency)
.distinct() // .distinct()
.collect(Collectors.toList()); // .collect(Collectors.toList());
Platform platform = betRecordByTimeDTO.getVendor();
Set<String> cacheSet = redisCache.getCacheSet(CacheConstants.PG_GAMES_BET_CURRENCY); Set<String> cacheSet = redisCache.getCacheSet(CacheConstants.PG_GAMES_BET_CURRENCY);
if (CollectionUtils.isEmpty(cacheSet)) { if (CollectionUtils.isEmpty(cacheSet)) {
cacheSet = new HashSet<>(); cacheSet = new HashSet<>();
} }
List<String> currencys = new ArrayList<>(platform.getCurrencyInfo().values());
//如果长度一致则清空缓存循环币种 //如果长度一致则清空缓存循环币种
if (cacheSet.size() >= currencys.size()) { if (cacheSet.size() >= currencys.size()) {
cacheSet = new HashSet<>(); cacheSet = new HashSet<>();
@ -488,22 +480,24 @@ public class GamesPGServiceImpl implements IGamesService {
String firstCurrency = currencys.get(0); String firstCurrency = currencys.get(0);
GameSecretKeyCurrencyDTO currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder() // GameSecretKeyCurrencyDTO currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(GamePlatforms.PG.getCode()) // .platformCode(GamePlatforms.PG.getCode())
.currency(firstCurrency) // .currency(firstCurrency)
.build()); // .build());
betRecordByTimeDTO.setAgentId(currencyDTO.getCode()); // betRecordByTimeDTO.setAgentId(currencyDTO.getCode());
betRecordByTimeDTO.setAgentKey(currencyDTO.getKey()); // betRecordByTimeDTO.setAgentKey(currencyDTO.getKey());
int pageNo = 1; int pageNo = 1;
int pageSize = 2000; int pageSize = 2000;
Map<String, Object> paramsMap = new HashMap<>(); Map<String, Object> paramsMap = new HashMap<>();
paramsMap.put("currency", currencyDTO.getCurrency()); paramsMap.put("currency", /*currencyDTO.getCurrency()*/ firstCurrency);
paramsMap.put("pageNo", pageNo); paramsMap.put("pageNo", pageNo);
paramsMap.put("pageSize", pageSize); paramsMap.put("pageSize", pageSize);
Map<String, String> key = this.getKey(betRecordByTimeDTO); Map<String, String> key = this.getKey(betRecordByTimeDTO);
String systemCurrency = platform.getOurCurrency(firstCurrency);
ApiNGResponseDTO<ApiGameBetRecordPageResponseDTO> betRecordByTime = ngClient.getBetRecordByTime(paramsMap, key); ApiNGResponseDTO<ApiGameBetRecordPageResponseDTO> betRecordByTime = ngClient.getBetRecordByTime(paramsMap, key);
@ -517,7 +511,7 @@ public class GamesPGServiceImpl implements IGamesService {
ApiGameBetRecordPageResponseDTO data = result.getData(); ApiGameBetRecordPageResponseDTO data = result.getData();
//数据组装 //数据组装
this.batchInsert(data); this.batchInsert(data, systemCurrency, firstCurrency);
//总页数 //总页数
// 计算总页数,确保不会遗漏 // 计算总页数,确保不会遗漏
@ -528,19 +522,19 @@ public class GamesPGServiceImpl implements IGamesService {
pageNoAtomic.incrementAndGet(); pageNoAtomic.incrementAndGet();
//请求参数 //请求参数
Map<String, Object> paramMap = new HashMap<>(); Map<String, Object> paramMap = new HashMap<>();
paramMap.put("currency", currencyDTO.getCurrency()); paramMap.put("currency", /*currencyDTO.getCurrency()*/firstCurrency);
paramMap.put("pageNo", pageNoAtomic.get()); paramMap.put("pageNo", pageNoAtomic.get());
paramMap.put("pageSize", pageSize); paramMap.put("pageSize", pageSize);
SleepUtil.sleep(10000); SleepUtil.sleep(10000);
ApiNGResponseDTO<ApiGameBetRecordPageResponseDTO> betRecordByTimePage = ngClient.getBetRecordByTime(paramMap, key); ApiNGResponseDTO<ApiGameBetRecordPageResponseDTO> betRecordByTimePage = ngClient.getBetRecordByTime(paramMap, key);
data = betRecordByTimePage.getData(); data = betRecordByTimePage.getData();
//数据组装 //数据组装
this.batchInsert(data); this.batchInsert(data, systemCurrency, firstCurrency);
} }
} }
getBetRecordByHistoryTime(betRecordByTimeDTO, currencyDTO); getBetRecordByHistoryTime(betRecordByTimeDTO, systemCurrency, firstCurrency);
return Boolean.TRUE; return Boolean.TRUE;
} }
@ -548,9 +542,9 @@ public class GamesPGServiceImpl implements IGamesService {
* *
* *
* @param betRecordByTimeDTO dto * @param betRecordByTimeDTO dto
* @param currencyDTO dto * @param currency
*/ */
private void getBetRecordByHistoryTime(BetRecordByTimeDTO betRecordByTimeDTO, GameSecretKeyCurrencyDTO currencyDTO) { private void getBetRecordByHistoryTime(BetRecordByTimeDTO betRecordByTimeDTO, String systemCurrency, String currency /*GameSecretKeyCurrencyDTO currencyDTO*/) {
//捞取指定30分钟前的数据 //捞取指定30分钟前的数据
Long startTimes = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), -30); Long startTimes = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), -30);
@ -578,12 +572,12 @@ public class GamesPGServiceImpl implements IGamesService {
.format(Instant.ofEpochMilli(betRecordByTimeDTO.getEndTime())); .format(Instant.ofEpochMilli(betRecordByTimeDTO.getEndTime()));
betRecordByTimeDTO.setAgentId(currencyDTO.getCode()); //betRecordByTimeDTO.setAgentId(currencyDTO.getCode());
betRecordByTimeDTO.setAgentKey(currencyDTO.getKey()); //betRecordByTimeDTO.setAgentKey(currencyDTO.getKey());
int pageNo = 1; int pageNo = 1;
int pageSize = 2000; int pageSize = 2000;
Map<String, Object> paramsMap = new HashMap<>(); Map<String, Object> paramsMap = new HashMap<>();
paramsMap.put("currency", currencyDTO.getCurrency()); paramsMap.put("currency", /*currencyDTO.getCurrency()*/ currency);
paramsMap.put("pageNo", pageNo); paramsMap.put("pageNo", pageNo);
paramsMap.put("pageSize", pageSize); paramsMap.put("pageSize", pageSize);
paramsMap.put("startTime", startTime); paramsMap.put("startTime", startTime);
@ -601,7 +595,7 @@ public class GamesPGServiceImpl implements IGamesService {
ApiGameBetRecordPageResponseDTO data = result.getData(); ApiGameBetRecordPageResponseDTO data = result.getData();
//数据组装 //数据组装
this.batchInsert(data); this.batchInsert(data, systemCurrency, currency);
//总页数 //总页数
// 计算总页数,确保不会遗漏 // 计算总页数,确保不会遗漏
@ -612,7 +606,7 @@ public class GamesPGServiceImpl implements IGamesService {
pageNoAtomic.incrementAndGet(); pageNoAtomic.incrementAndGet();
//请求参数 //请求参数
Map<String, Object> paramMap = new HashMap<>(); Map<String, Object> paramMap = new HashMap<>();
paramMap.put("currency", currencyDTO.getCurrency()); paramMap.put("currency", /*currencyDTO.getCurrency()*/ currency);
paramMap.put("pageNo", pageNoAtomic.get()); paramMap.put("pageNo", pageNoAtomic.get());
paramMap.put("pageSize", pageSize); paramMap.put("pageSize", pageSize);
paramMap.put("startTime", startTime); paramMap.put("startTime", startTime);
@ -621,13 +615,14 @@ public class GamesPGServiceImpl implements IGamesService {
ApiNGResponseDTO<ApiGameBetRecordPageResponseDTO> betRecordByTimePage = ngClient.getBetRecordByTime(paramMap, key); ApiNGResponseDTO<ApiGameBetRecordPageResponseDTO> betRecordByTimePage = ngClient.getBetRecordByTime(paramMap, key);
data = betRecordByTimePage.getData(); data = betRecordByTimePage.getData();
//数据组装 //数据组装
this.batchInsert(data); this.batchInsert(data, systemCurrency, currency);
} }
}); });
} }
} }
/** /**
* *
* *
@ -719,6 +714,7 @@ public class GamesPGServiceImpl implements IGamesService {
throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode());
} }
/** /**
* *
* *
@ -731,7 +727,6 @@ public class GamesPGServiceImpl implements IGamesService {
} }
/** /**
* *
* *
@ -750,15 +745,18 @@ public class GamesPGServiceImpl implements IGamesService {
} }
String platform = ngPlatforms.getPlatform(); String platform = ngPlatforms.getPlatform();
List<Game> games = gameService.selectGameDTOList(GameDTO.builder().gameName(resultBean.getGameName()).platformCode(platform).build()); List<Game> games = gameService.selectGameDTOList(GameDTO.builder()
.gameName(resultBean.getGameName())
.platformCode(platform)
.build());
if (CollectionUtils.isEmpty(games)) { if (CollectionUtils.isEmpty(games)) {
return null; return null;
} }
Game gamesDataDTO = games.get(0); Game gamesDataDTO = games.get(0);
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder() // GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCodes(NGPlatforms.getAllPlatforms()) // .platformCodes(NGPlatforms.getAllPlatforms())
.currency(resultBean.getCurrency()) // .currency(resultBean.getCurrency())
.build()); // .build());
Member member = memberService.selectMemberByGameAccount(resultBean.getPlayerId()); Member member = memberService.selectMemberByGameAccount(resultBean.getPlayerId());
if (ObjectUtils.isEmpty(member)) { if (ObjectUtils.isEmpty(member)) {
@ -778,7 +776,7 @@ public class GamesPGServiceImpl implements IGamesService {
GameBettingDetails gameBettingDetails = GameBettingDetails.builder() GameBettingDetails gameBettingDetails = GameBettingDetails.builder()
.tenantKey(member.getTenantKey()) .tenantKey(member.getTenantKey())
//保存我们的币种id //保存我们的币种id
.currencyCode(currencyDTO.getSystemCurrency()) .currencyCode(gamesDataBuildDTO.getSystemCurrencyCode())
.memberId(member.getId()) .memberId(member.getId())
.gameCode(gamesDataDTO.getGameCode()) .gameCode(gamesDataDTO.getGameCode())
.gameType(NGGameType.findSystemByCode(resultBean.getGameType())) .gameType(NGGameType.findSystemByCode(resultBean.getGameType()))
@ -814,12 +812,15 @@ public class GamesPGServiceImpl implements IGamesService {
* *
* @param data * @param data
*/ */
private synchronized void batchInsert(ApiGameBetRecordPageResponseDTO data) { private synchronized void batchInsert(ApiGameBetRecordPageResponseDTO data, String systemCurrency, String currency) {
List<GameBettingDetails> gameBettingDetails = new ArrayList<>(); List<GameBettingDetails> gameBettingDetails = new ArrayList<>();
List<String> wagersIds = new ArrayList<>(); List<String> wagersIds = new ArrayList<>();
//数据转化 //数据转化
for (ApiGameBetRecordPageResponseDTO.GameBetRecord bean : data.getList()) { for (ApiGameBetRecordPageResponseDTO.GameBetRecord bean : data.getList()) {
GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder().data(bean).build()); GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder()
.systemCurrencyCode(systemCurrency)
.currencyCode(currency)
.data(bean).build());
if (!ObjectUtils.isEmpty(bettingDetails)) { if (!ObjectUtils.isEmpty(bettingDetails)) {
bettingDetails.setId(IdUtil.getSnowflakeNextId()); bettingDetails.setId(IdUtil.getSnowflakeNextId());
gameBettingDetails.add(bettingDetails); gameBettingDetails.add(bettingDetails);
@ -828,7 +829,7 @@ public class GamesPGServiceImpl implements IGamesService {
} }
if (!CollectionUtils.isEmpty(gameBettingDetails)) { if (!CollectionUtils.isEmpty(gameBettingDetails)) {
//查询重复数据id //查询重复数据id
List<String> removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds,NGPlatforms.PG.getPlatform()); List<String> removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds, NGPlatforms.PG.getPlatform());
//用steam流清除list中与wagersIds集合相同的数据 //用steam流清除list中与wagersIds集合相同的数据
gameBettingDetails = gameBettingDetails.stream() gameBettingDetails = gameBettingDetails.stream()
.filter(detail -> !removeWagersIds.contains(detail.getWagersId())) .filter(detail -> !removeWagersIds.contains(detail.getWagersId()))

View File

@ -2,12 +2,14 @@ package com.ff.game.api.pgt.client;
import com.dtflys.forest.annotation.*; import com.dtflys.forest.annotation.*;
import com.ff.game.api.dg.dto.DGResponse; import com.ff.game.api.dg.dto.DGResponse;
import com.ff.game.api.fc.dto.ApiFCGameListResponseDTO;
import com.ff.game.api.jili.dto.JILIKickMemberAllDTO; import com.ff.game.api.jili.dto.JILIKickMemberAllDTO;
import com.ff.game.api.jili.dto.JILIKickMemberDTO; import com.ff.game.api.jili.dto.JILIKickMemberDTO;
import com.ff.game.api.ng.dto.ApiExchangeTransferStatusResponseDTO; import com.ff.game.api.ng.dto.ApiExchangeTransferStatusResponseDTO;
import com.ff.game.api.ng.dto.ApiNGResponseDTO; import com.ff.game.api.ng.dto.ApiNGResponseDTO;
import com.ff.game.api.pgt.address.MyPGTAddressSource; import com.ff.game.api.pgt.address.MyPGTAddressSource;
import com.ff.game.api.pgt.dto.*; import com.ff.game.api.pgt.dto.*;
import com.ff.game.api.pgx.dto.PGXPlayerStatusResponse;
import com.ff.game.api.success.MySuccessCondition; import com.ff.game.api.success.MySuccessCondition;
import com.ff.game.api.xk.dto.XKKickMemberAllDTO; import com.ff.game.api.xk.dto.XKKickMemberAllDTO;
@ -42,91 +44,87 @@ public interface PGTClient {
PGTBalanceResponse getMemberInfo(@Var("parameters") String parameters, @Header Map<String, String> headerMap); PGTBalanceResponse getMemberInfo(@Var("parameters") String parameters, @Header Map<String, String> headerMap);
/**
* JD.
*
* @param parameters
* @return {@link PGXPlayerStatusResponse }
*/
@Get("/isPlayerIngame.ashx?${parameters}")
PGXPlayerStatusResponse getMemberPlayInfo(@Var("parameters") String parameters);
/** /**
* *
* *
* @param parameters * @param parameters
* @return {@link PGXGameLoginResponse } * @return {@link PGTLoginResponse }
*/ */
@Post("/logIn") @Post("/logIn")
PGXGameLoginResponse loginWithoutRedirect(@JSONBody Map<String, Object> parameters, @Header Map<String, String> headerMap); PGTLoginResponse loginWithoutRedirect(@JSONBody Map<String, Object> parameters, @Header Map<String, String> headerMap);
/** /**
* id *
* *
* @param parameters * @param parameters
* @return {@link PGXErrorResponse } * @param headerMap
* @return {@link PGTGameListResponse }
*/ */
@Post(url = "/makeTransfer.aspx?{parameters}") @Get("/GetGameIconList")
PGXErrorResponse exchangeTransferByAgentId(@Var("parameters") String parameters); PGTGameListResponse getGameList(@JSONBody Map<String, Object> parameters, @Header Map<String, String> headerMap);
/** /**
* *
* *
* @return {@link DGResponse } * @param parameters
* @param headerMap
* @return {@link PGTExchangeTransferResponse }
*/ */
@Post(url = "markbyjson.aspx") @Post(url = "/deposit")
DGResponse markReport(@JSONBody Map<String, Object> params); PGTExchangeTransferResponse deposit(@JSONBody Map<String, Object> parameters, @Header Map<String, String> headerMap);
/**
*
*
* @param parameters
* @param headerMap
* @return {@link PGTExchangeTransferResponse }
*/
@Post(url = "/withdraw")
PGTExchangeTransferResponse withdraw(@JSONBody Map<String, Object> parameters, @Header Map<String, String> headerMap);
/** /**
* *
* *
* @param parameters * @param parameters
* @param headerMap
* @return {@link ApiNGResponseDTO }<{@link ApiExchangeTransferStatusResponseDTO }> * @return {@link ApiNGResponseDTO }<{@link ApiExchangeTransferStatusResponseDTO }>
*/ */
@Post(url = "/checkTransaction.ashx?{parameters}") @Post(url = "/verifyDepositWithdraw")
PGXExchangeTransferStatusResponse exchangeTransferStatus(@Var("parameters") String parameters); PGTTransactionResponse exchangeTransferStatus(@JSONBody Map<String, Object> parameters, @Header Map<String, String> headerMap);
/** /**
* *
* *
* @return {@link PGXBetHistoryResponse } * @param parameters
* @param headerMap
* @return {@link PGTTransactionDetailsResponse }
*/ */
@Get(url = "/fetchbykey.aspx?{parameters}") @Get(url = "/betTransactionsV2?{parameters}")
PGXBetHistoryResponse getBetRecordByTime(@Var("parameters") String parameters); PGTTransactionDetailsResponse getBetRecordByTime(@Var("parameters") String parameters, @Header Map<String, String> headerMap);
@Get(url = "h/fetchArchieve.aspx?{parameters}")
PGXBetHistoryResponse getBetRecordByHistoryTime(@Var("parameters") String parameters);
/** /**
* *
* *
* @param parameters * @param parameters
* @return {@link JILIKickMemberDTO } * @param headerMap
* @return {@link PGTKickMemberResponse }
*/ */
@Post("/kickPlayerFromProduct.ashx?{parameters}") @Post("/seamless/kickOutPlayer")
PGXErrorResponse kickMember(@Var("parameters") String parameters); PGTKickMemberResponse kickMember(@JSONBody Map<String, Object> parameters, @Header Map<String, String> headerMap);
/**
*
*
* @param params
* @return {@link JILIKickMemberAllDTO }
*/
@Get("/kickMemberAll")
XKKickMemberAllDTO kickMemberAll(@JSONBody Map<String, Object> params);
} }

View File

@ -0,0 +1,80 @@
package com.ff.game.api.pgt.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* pgtexchange
*
* @author shi
* @date 2025/04/03
*/
@Data
public class PGTExchangeTransferResponse {
/**
*
*/
@JsonProperty("reqId")
private String reqId;
/**
* 0
*/
@JsonProperty("code")
private int code;
/**
*
*/
@JsonProperty("message")
private String message;
/**
*
*/
@JsonProperty("data")
private BalanceData data;
@Data
public static class BalanceData {
/**
* /
*/
@JsonProperty("status")
private String status;
/**
* 2
*/
@JsonProperty("amount")
private BigDecimal amount;
/**
* productId 2
*/
@JsonProperty("balance")
private BigDecimal balance;
/**
* ID
*/
@JsonProperty("txId")
private String txId;
/**
*
*/
@JsonProperty("username")
private String username;
/**
* productId 2
*/
@JsonProperty("beforeBalance")
private BigDecimal beforeBalance;
}
}

View File

@ -0,0 +1,133 @@
package com.ff.game.api.pgt.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.util.List;
/**
* pgtgame
*
* @author shi
* @date 2025/04/07
*/
@Data
public class PGTGameListResponse {
/**
*
*/
@JsonProperty("reqId")
private String reqId;
/**
* 0
*/
@JsonProperty("code")
private int code;
/**
*
*/
@JsonProperty("message")
private String message;
/**
*
*/
@JsonProperty("data")
private GameData data;
@Data
public static class GameData {
/**
*
*/
@JsonProperty("games")
private List<Game> games;
}
@Data
public static class Game {
/**
*
*/
@JsonProperty("name")
private String name;
/**
*
*/
@JsonProperty("category")
private String category;
/**
*
*/
@JsonProperty("type")
private String type;
/**
*
*/
@JsonProperty("code")
private String code;
/**
*
*/
@JsonProperty("img")
private String img;
/**
* id
*/
private Long systemGameId;
/**
*
*/
@JsonProperty("rank")
private int rank;
/**
*
*/
@JsonProperty("providerCode")
private String providerCode;
/**
*
*/
@JsonProperty("locale")
private Locale locale;
}
/**
*
*
* @author shi
* @date 2025/04/07
*/
@Data
public class Locale {
/**
*
*/
@JsonProperty("TH")
private String th;
/**
*
*/
@JsonProperty("EN")
private String en;
/**
*
*/
@JsonProperty("CN")
private String cn;
}
}

View File

@ -0,0 +1,56 @@
package com.ff.game.api.pgt.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
* pgtkick
*
* @author shi
* @date 2025/04/07
*/
@Data
public class PGTKickMemberResponse {
/**
*
*/
@JsonProperty("reqId")
private String reqId;
/**
*
* 0
*/
@JsonProperty("code")
private int code;
/**
*
*/
@JsonProperty("message")
private String message;
/**
*
*/
@JsonProperty("data")
private TransactionData data;
@Data
public static class TransactionData {
/**
*
*/
@JsonProperty("status")
private String status;
/**
*
*/
@JsonProperty("username")
private String username;
}
}

View File

@ -0,0 +1,54 @@
package com.ff.game.api.pgt.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
* pgtlogin
*
* @author shi
* @date 2025/04/03
*/
@Data
public class PGTLoginResponse {
/**
*
*/
@JsonProperty("reqId")
private String reqId;
/**
* 0
*/
@JsonProperty("code")
private int code;
/**
*
*/
@JsonProperty("message")
private String message;
/**
*
*/
@JsonProperty("data")
private LoginData data;
@Data
public static class LoginData {
/**
* URL
*/
@JsonProperty("url")
private String url;
/**
*
*/
@JsonProperty("username")
private String username;
}
}

View File

@ -0,0 +1,153 @@
package com.ff.game.api.pgt.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* pgtt
*
* @author shi
* @date 2025/04/07
*/
@Data
public class PGTTransactionDetailsResponse {
/**
*
*/
@JsonProperty("reqId")
private String reqId;
/**
* 0
*/
@JsonProperty("code")
private int code;
/**
*
*/
@JsonProperty("message")
private String message;
/**
*
*/
@JsonProperty("data")
private TransactionData data;
@Data
public static class TransactionData {
/**
* ID
*/
@JsonProperty("nextId")
private String nextId;
/**
*
*/
@JsonProperty("txns")
private List<Transaction> txns;
}
@Data
public static class Transaction {
/**
* ID
*/
@JsonProperty("id")
private String id;
/**
* ID
*/
@JsonProperty("betId")
private String betId;
/**
*
*/
@JsonProperty("username")
private String username;
/**
* ISO 4217
*/
@JsonProperty("currency")
private String currency;
/**
*
*/
@JsonProperty("accountingDate")
private Date accountingDate;
/**
*
*/
@JsonProperty("updatedDate")
private Date updatedDate;
/**
*
*/
@JsonProperty("stake")
private BigDecimal stake;
/**
*
*/
@JsonProperty("payout")
private BigDecimal payout;
/**
* ID
*/
@JsonProperty("productId")
private String productId;
/**
*
*/
@JsonProperty("gameCode")
private String gameCode;
/**
*
*/
@JsonProperty("gameName")
private String gameName;
/**
* ID
*/
@JsonProperty("roundId")
private String roundId;
/**
*
* OPEN, SETTLED, UNSETTLED, VOID
*/
@JsonProperty("betStatus")
private String betStatus;
/**
* LOSEWINDRAWUNKNOWN
*/
@JsonProperty("payoutStatus")
private String payoutStatus;
/**
*
*/
@JsonProperty("commission")
private double commission;
}
}

View File

@ -0,0 +1,90 @@
package com.ff.game.api.pgt.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
* pgtt
*
* @author shi
* @date 2025/04/07
*/
@Data
public class PGTTransactionResponse {
/**
*
*/
@JsonProperty("reqId")
private String reqId;
/**
* 0
*/
@JsonProperty("code")
private int code;
/**
*
*/
@JsonProperty("message")
private String message;
/**
*
*/
@JsonProperty("data")
private TransactionData data;
@Data
public static class TransactionData {
/**
*
*/
@JsonProperty("success")
private boolean success;
/**
*
*/
@JsonProperty("username")
private String username;
/**
* ID "SEXY"
*/
@JsonProperty("productId")
private String productId;
/**
* "THB"
*/
@JsonProperty("currency")
private String currency;
/**
*
*/
@JsonProperty("transactionRef")
private String transactionRef;
/**
*
*/
@JsonProperty("amount")
private String amount;
/**
*
*/
@JsonProperty("beforeBalance")
private String beforeBalance;
/**
*
*/
@JsonProperty("afterBalance")
private String afterBalance;
}
}

View File

@ -1,148 +0,0 @@
package com.ff.game.api.pgt.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
*
*
* @author shi
* @date 2025/03/28
*/
@Data
public class PGXBetHistoryResponse {
/**
*
*/
@JsonProperty("errCode")
private Integer errCode;
/**
* JSON (String)
*/
@JsonProperty("result")
private String result;
/**
* (String)
*/
@JsonProperty("errMsg")
private String errMsg;
/**
* AIO
*/
@Data
public class Result {
/**
* AIO () (Long)
*/
@JsonProperty("id")
private Long id;
/**
* (Long)
*/
@JsonProperty("ref_no")
private Long refNo;
/**
* (String)
*/
@JsonProperty("site")
private String site;
/**
* (String)
*/
@JsonProperty("product")
private String product;
/**
* (String)
*/
@JsonProperty("member")
private String member;
/**
* (String)
*/
@JsonProperty("game_id")
private String gameId;
/**
* () GMT/UTC +0
*/
@JsonProperty("start_time")
private Date startTime;
/**
* (String) GMT/UTC +0
*/
@JsonProperty("end_time")
private Date endTime;
/**
* (String) GMT/UTC +0
*/
@JsonProperty("match_time")
private String matchTime;
/**
* (String)
*/
@JsonProperty("bet_detail")
private String betDetail;
/**
* (Double)
*/
@JsonProperty("turnover")
private BigDecimal turnover;
/**
* (Double)
*/
@JsonProperty("bet")
private BigDecimal bet;
/**
* (Double)
*/
@JsonProperty("payout")
private BigDecimal payout;
/**
* (Double)
*/
@JsonProperty("commission")
private BigDecimal commission;
/**
* (Double)
*/
@JsonProperty("p_share")
private BigDecimal pShare;
/**
* (Double)
*/
@JsonProperty("p_win")
private BigDecimal pWin;
/**
* (Int)
* 1 (valid bet record )
* 0 (running/ongoing match )
* -1 (invalid bet record e.g. voided , canceled )
*/
@JsonProperty("status")
private int status;
}
}

View File

@ -1,26 +0,0 @@
package com.ff.game.api.pgt.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
*
*
* @author shi
* @date 2025/03/27
*/
@Data
public class PGXErrorResponse {
/** 错误码 */
@JsonProperty("errCode")
private Integer errCode;
/** 内部参考代码 (字符串类型) */
@JsonProperty("innerCode")
private String innerCode;
/** 错误信息 (字符串类型) */
@JsonProperty("errMsg")
private String errMsg;
}

View File

@ -1,67 +0,0 @@
package com.ff.game.api.pgt.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
* pgxexchange
*
* @author shi
* @date 2025/03/28
*/
@Data
public class PGXExchangeTransferStatusResponse {
/** 错误码 */
@JsonProperty("errCode")
private Integer errCode;
/** 错误信息 (字符串类型) */
@JsonProperty("errMsg")
private String errMsg;
/** GSC生成的转账ID (String类型) */
@JsonProperty("trans_id")
private String transId;
/** 交易时间GMT+0 (String类型) */
@JsonProperty("trans_time")
private String transTime;
/** 玩家姓名 (String类型) */
@JsonProperty("username")
private String username;
/** 交易类型 (String类型)0为存款1为取款 */
@JsonProperty("type")
private String type;
/** 提供商 (String类型) */
@JsonProperty("provider")
private String provider;
/** 交易金额 (double类型) */
@JsonProperty("amount")
private double amount;
/** 运营商的参考ID (String类型) */
@JsonProperty("ref_id")
private String refId;
/** (String)SUCCESS
PROCESSING
FAILED */
@JsonProperty("status")
private String status;
/** GSC操作员代码 (String类型) */
@JsonProperty("operator")
private String operator;
/** 交易备注 (String类型) */
@JsonProperty("remark")
private String remark;
}

View File

@ -1,30 +0,0 @@
package com.ff.game.api.pgt.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
*
*/
@Data
public class PGXGameLoginResponse {
/**
* (String)
*/
@JsonProperty("errCode")
private Integer errCode;
/**
* (String)
*/
@JsonProperty("gameUrl")
private String gameUrl;
/**
* (String)
*/
@JsonProperty("errMsg")
private String errMsg;
}

View File

@ -1,26 +0,0 @@
package com.ff.game.api.pgt.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
*
*/
@Data
public class PGXMemberResponse {
/** 错误码 */
@JsonProperty("errCode")
private Integer errCode;
/** 账户余额 (小数类型) */
@JsonProperty("balance")
private BigDecimal balance;
/** 错误信息 (字符串类型) */
@JsonProperty("errMsg")
private String errMsg;
}

View File

@ -1,26 +0,0 @@
package com.ff.game.api.pgt.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
*
*
* @author shi
* @date 2025/03/28
*/
@Data
public class PGXPlayerStatusResponse {
/** 错误码 (字符串类型) */
@JsonProperty("errCode")
private Integer errCode;
/** 玩家是否在游戏中 (字符串类型) "true" 表示在游戏中,"false" 表示不在游戏中 */
@JsonProperty("result")
private Boolean result;
/** 错误信息 (字符串类型) */
@JsonProperty("errMsg")
private String errMsg;
}

View File

@ -1,7 +1,9 @@
package com.ff.game.api.pgt.impl; package com.ff.game.api.pgt.impl;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.NumberUtil;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;
import com.ff.base.config.RedisConfig;
import com.ff.base.constant.CacheConstants; import com.ff.base.constant.CacheConstants;
import com.ff.base.constant.Constants; import com.ff.base.constant.Constants;
import com.ff.base.core.redis.RedisCache; import com.ff.base.core.redis.RedisCache;
@ -9,13 +11,18 @@ import com.ff.base.enums.*;
import com.ff.base.exception.base.ApiException; import com.ff.base.exception.base.ApiException;
import com.ff.base.exception.base.BaseException; import com.ff.base.exception.base.BaseException;
import com.ff.base.system.service.ISysConfigService; import com.ff.base.system.service.ISysConfigService;
import com.ff.base.utils.DateUtils;
import com.ff.base.utils.JsonUtil; import com.ff.base.utils.JsonUtil;
import com.ff.base.utils.sign.Base64; import com.ff.base.utils.sign.Base64;
import com.ff.config.KeyConfig; import com.ff.config.KeyConfig;
import com.ff.game.api.IGamesService; import com.ff.game.api.IGamesService;
import com.ff.game.api.fc.dto.ApiFCGameListResponseDTO;
import com.ff.game.api.fc.dto.ApiFCResult;
import com.ff.game.api.pgt.client.PGTClient; import com.ff.game.api.pgt.client.PGTClient;
import com.ff.game.api.pgt.dto.*; import com.ff.game.api.pgt.dto.*;
import com.ff.game.api.request.*; import com.ff.game.api.request.*;
import com.ff.game.api.xk.dto.XKBetRecordResponseDTO;
import com.ff.game.api.xk.dto.XKGamesDTO;
import com.ff.game.domain.*; import com.ff.game.domain.*;
import com.ff.game.dto.GameSecretKeyCurrencyDTO; import com.ff.game.dto.GameSecretKeyCurrencyDTO;
import com.ff.game.service.*; import com.ff.game.service.*;
@ -32,10 +39,8 @@ import org.springframework.util.ObjectUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.ArrayList; import java.util.*;
import java.util.LinkedHashMap; import java.util.concurrent.TimeUnit;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -110,15 +115,16 @@ public class GamesPGTServiceImpl implements IGamesService {
* *
* @return {@link String } * @return {@link String }
*/ */
private Map<String, String> getKey( GamesBaseRequestDTO gamesBaseRequestDTO) { private Map<String, String> getKey(GamesBaseRequestDTO gamesBaseRequestDTO) {
Map<String, String> headerMap=new LinkedHashMap<>(); Map<String, String> headerMap = new LinkedHashMap<>();
String auth = gamesBaseRequestDTO.getAgentId() + ":" + gamesBaseRequestDTO.getAgentKey(); String auth = gamesBaseRequestDTO.getAgentId() + ":" + gamesBaseRequestDTO.getAgentKey();
String encodedAuth = Base64Utils.encodeToString(auth.getBytes()); String encodedAuth = Base64Utils.encodeToString(auth.getBytes());
headerMap.put("Authorization","Basic "+encodedAuth); headerMap.put("Authorization", "Basic " + encodedAuth);
return headerMap; return headerMap;
} }
String productId = "PGSOFT";
/** /**
* *
@ -132,7 +138,7 @@ public class GamesPGTServiceImpl implements IGamesService {
Map<String, String> headerMap = this.getKey(createMemberRequestDTO); Map<String, String> headerMap = this.getKey(createMemberRequestDTO);
Map<String, Object> params = new LinkedHashMap<>(); Map<String, Object> params = new LinkedHashMap<>();
params.put("username", createMemberRequestDTO.getAccount()); params.put("username", createMemberRequestDTO.getAccount());
params.put("productId","PGSOFT"); params.put("productId", productId);
PGTCreateMemberResponse member = pgtClient.createMember(params, headerMap); PGTCreateMemberResponse member = pgtClient.createMember(params, headerMap);
if (this.getIsSuccess(member.getCode())) { if (this.getIsSuccess(member.getCode())) {
@ -154,9 +160,9 @@ public class GamesPGTServiceImpl implements IGamesService {
log.info("GamesPGTServiceImpl [getMemberInfo] 请求参数 {}", memberInfoRequestDTO); log.info("GamesPGTServiceImpl [getMemberInfo] 请求参数 {}", memberInfoRequestDTO);
Map<String, Object> params = new LinkedHashMap<>(); Map<String, Object> params = new LinkedHashMap<>();
params.put("username", memberInfoRequestDTO.getAccounts()); params.put("username", memberInfoRequestDTO.getAccounts());
params.put("productId", "PGSOFT"); params.put("productId", productId);
Map<String, String> headerMap = this.getKey(memberInfoRequestDTO); Map<String, String> headerMap = this.getKey(memberInfoRequestDTO);
PGTBalanceResponse memberInfo = pgtClient.getMemberInfo(JsonUtil.mapToQueryString(params),headerMap); PGTBalanceResponse memberInfo = pgtClient.getMemberInfo(JsonUtil.mapToQueryString(params), headerMap);
//判断是否获取成功 //判断是否获取成功
if (this.getIsSuccess(memberInfo.getCode())) { if (this.getIsSuccess(memberInfo.getCode())) {
MemberInfoResponseDTO memberInfoResponseDTO = MemberInfoResponseDTO.builder() MemberInfoResponseDTO memberInfoResponseDTO = MemberInfoResponseDTO.builder()
@ -179,24 +185,19 @@ public class GamesPGTServiceImpl implements IGamesService {
@Override @Override
public String loginWithoutRedirect(GamesLogin gamesLogin) { public String loginWithoutRedirect(GamesLogin gamesLogin) {
log.info("GamesPGTServiceImpl [loginWithoutRedirect] 请求参数 {}", gamesLogin); log.info("GamesPGTServiceImpl [loginWithoutRedirect] 请求参数 {}", gamesLogin);
GameSecretKey gameSecretKey = gameSecretKeyService.selectGameSecretKeyByCode(gamesLogin.getAgentId());
Map<String, Object> params = new LinkedHashMap<>(); Map<String, Object> params = new LinkedHashMap<>();
params.put("operatorcode", gamesLogin.getAgentId());
params.put("password", gameSecretKey.getPassword());
params.put("providercode", gameSecretKey.getProviderCode());
params.put("type", gamesLogin.getGameType());
params.put("username", gamesLogin.getAccount()); params.put("username", gamesLogin.getAccount());
params.put("productId", productId);
params.put("gameCode", gamesLogin.getGameId());
params.put("isMobileLogin", PlatformHomeType.APP.getValue().equals(gamesLogin.getPlatform()));
params.put("language", gamesLogin.getLang());
Map<String, String> key = this.getKey(gamesLogin); Map<String, String> key = this.getKey(gamesLogin);
params.put("gameid", gamesLogin.getGameId()); PGTLoginResponse pgtLoginResponse = pgtClient.loginWithoutRedirect(params, key);
params.put("lang", gamesLogin.getLang());
params.put("html5", 1);
params.put("signature", key);
PGXGameLoginResponse PGXGameLoginResponse = pgtClient.loginWithoutRedirect(params,key);
//判断是否获取成功 //判断是否获取成功
if (this.getIsSuccess(PGXGameLoginResponse.getErrCode())) { if (this.getIsSuccess(pgtLoginResponse.getCode())) {
return PGXGameLoginResponse.getGameUrl(); return pgtLoginResponse.getData().getUrl();
} else { } else {
throw new BaseException(PGXGameLoginResponse.getErrMsg()); throw new BaseException(pgtLoginResponse.getMessage());
} }
} }
@ -210,9 +211,60 @@ public class GamesPGTServiceImpl implements IGamesService {
@Transactional @Transactional
@Override @Override
public String getGameList(GamesBaseRequestDTO gamesBaseRequestDTO) { public String getGameList(GamesBaseRequestDTO gamesBaseRequestDTO) {
List<PGTGameListResponse.Game> apiGameInfoResponseDTOS = redisCache.getCacheList(CacheConstants.PGT_GAMES);
if (!CollectionUtils.isEmpty(apiGameInfoResponseDTOS)) {
return CacheConstants.PGT_GAMES;
}
return CacheConstants.PGX_GAMES; log.info("GamesPGTServiceImpl [getGameList] 请求参数 {}", gamesBaseRequestDTO);
Map<String, Object> paramsMap = new HashMap<>();
paramsMap.put("productId", productId);
PGTGameListResponse gameList = pgtClient.getGameList(paramsMap, this.getKey(gamesBaseRequestDTO));
if (this.getIsSuccess(gameList.getCode())) {
//新增游戏
for (PGTGameListResponse.Game gameIdKey : gameList.getData().getGames()) {
Game game = Game.builder()
.platformCode(GamePlatforms.PGT.getCode())
.gameCode(gameIdKey.getCode())
.build();
List<Game> games = gameService.selectGameList(game);
int platformType = PGTGameType.findSystemByCode(gameIdKey.getCategory());
//不存在这个游戏
if (CollectionUtils.isEmpty(games)) {
game.setGameSourceType(gameIdKey.getCategory());
game.setFreespin(Boolean.FALSE);
game.setDemoStatus(Boolean.FALSE);
game.setPlatformCode(GamePlatforms.PGT.getCode());
game.setPlatformType(platformType);
game.setSortNo(gameService.selectMaxSortNo(platformType, GamePlatforms.PGT.getCode()) + 1);
game.setGameName(gameIdKey.getLocale().getCn());
game.setCreateBy(Constants.SYSTEM);
List<NameInfo> nameInfos = new ArrayList<>();
nameInfos.add(NameInfo.builder().lang("zh-CN").name(gameIdKey.getLocale().getCn()).build());
nameInfos.add(NameInfo.builder().lang("en-US").name(gameIdKey.getLocale().getEn()).build());
nameInfos.add(NameInfo.builder().lang("th-TH").name(gameIdKey.getLocale().getTh()).build());
game.setNameInfo(nameInfos);
gameService.insertGame(game);
} else {
game = games.get(0);
}
gameIdKey.setSystemGameId(game.getId());
}
redisCache.deleteObject(CacheConstants.PGT_GAMES);
redisCache.setCacheList(CacheConstants.PGT_GAMES, gameList.getData().getGames());
redisCache.expire(CacheConstants.PGT_GAMES, 5L, TimeUnit.HOURS);
} else {
throw new ApiException(ErrorCode.ERROR.getCode());
}
return CacheConstants.PGT_GAMES;
} }
/** /**
@ -224,13 +276,10 @@ public class GamesPGTServiceImpl implements IGamesService {
@Override @Override
@Transactional @Transactional
public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) { public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) {
log.info("GamesPGXServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO); log.info("GamesPGTServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO);
String currency = exchangeTransferMoneyRequestDTO.getCurrency();
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(GamePlatforms.PGX.getInfo())
.code(exchangeTransferMoneyRequestDTO.getAgentId())
.currency(exchangeTransferMoneyRequestDTO.getCurrency())
.build());
Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount()); Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount());
String transactionId = gameExchangeMoneyService.getTransactionId(GamePlatforms.PGX.getInfo(), 17); String transactionId = gameExchangeMoneyService.getTransactionId(GamePlatforms.PGX.getInfo(), 17);
@ -242,7 +291,6 @@ public class GamesPGTServiceImpl implements IGamesService {
); );
Assert.isTrue(CollectionUtils.isEmpty(gameExchangeMonies), "订单号重复"); Assert.isTrue(CollectionUtils.isEmpty(gameExchangeMonies), "订单号重复");
GameSecretKey gameSecretKey = gameSecretKeyService.selectGameSecretKeyByCode(exchangeTransferMoneyRequestDTO.getAgentId());
//获取下一个自增id //获取下一个自增id
GameExchangeMoney exchangeMoney = GameExchangeMoney GameExchangeMoney exchangeMoney = GameExchangeMoney
@ -252,15 +300,13 @@ public class GamesPGTServiceImpl implements IGamesService {
.quota(exchangeTransferMoneyRequestDTO.getQuota()) .quota(exchangeTransferMoneyRequestDTO.getQuota())
.balance(exchangeTransferMoneyRequestDTO.getAmount()) .balance(exchangeTransferMoneyRequestDTO.getAmount())
.exchangeType(exchangeTransferMoneyRequestDTO.getTransferType()) .exchangeType(exchangeTransferMoneyRequestDTO.getTransferType())
.currencyCode(currencyDTO.getSystemCurrency()) .currencyCode(currency)
.memberId(member.getId()) .memberId(member.getId())
.transactionId(transactionId) .transactionId(transactionId)
.platformCode(GamePlatforms.PGX.getInfo()) .platformCode(GamePlatforms.PGT.getInfo())
.build(); .build();
exchangeMoney.setCreateBy(Constants.SYSTEM); exchangeMoney.setCreateBy(Constants.SYSTEM);
//获取余额
String type = TransferType.ALL.getCode().equals(exchangeTransferMoneyRequestDTO.getTransferType()) ? PGXTransferType.WITHDRAW.getCode() : PGXTransferType.DEPOSIT.getCode();
BigDecimal amount = exchangeTransferMoneyRequestDTO.getAmount(); BigDecimal amount = exchangeTransferMoneyRequestDTO.getAmount();
BigDecimal amountBefore = BigDecimal.ZERO; BigDecimal amountBefore = BigDecimal.ZERO;
@ -272,49 +318,48 @@ public class GamesPGTServiceImpl implements IGamesService {
.agentKey(exchangeTransferMoneyRequestDTO.getAgentKey()) .agentKey(exchangeTransferMoneyRequestDTO.getAgentKey())
.build(); .build();
//判断是不是提出 //判断是不是提出
if (TransferType.ALL.getCode().equals(exchangeTransferMoneyRequestDTO.getTransferType())) { if (TransferType.ALL.getCode().equals(exchangeTransferMoneyRequestDTO.getTransferType())) {
amountBefore = this.getMemberInfo(gamesBaseRequestDTO).getBalance(); amountBefore = this.getMemberInfo(gamesBaseRequestDTO).getBalance();
amount = amountBefore; amount = amountBefore;
} }
Map<String, Object> paramsMap = new LinkedHashMap<>(); Map<String, Object> paramsMap = new LinkedHashMap<>();
paramsMap.put("amount", amount);
paramsMap.put("operatorcode", exchangeTransferMoneyRequestDTO.getAgentId());
paramsMap.put("password", gameSecretKey.getPassword());
paramsMap.put("providercode", gameSecretKey.getProviderCode());
paramsMap.put("referenceid", transactionId);
paramsMap.put("type", type);
paramsMap.put("username", exchangeTransferMoneyRequestDTO.getAccount()); paramsMap.put("username", exchangeTransferMoneyRequestDTO.getAccount());
paramsMap.put("amount", amount);
paramsMap.put("transactionRef", transactionId);
paramsMap.put("productId", productId);
Map<String, String> key = this.getKey(exchangeTransferMoneyRequestDTO);
PGTExchangeTransferResponse errorResponse;
//判断是不是提出
if (TransferType.ALL.getCode().equals(exchangeTransferMoneyRequestDTO.getTransferType())) {
errorResponse = pgtClient.withdraw(paramsMap, key);
} else {
errorResponse = pgtClient.deposit(paramsMap, key);
}
if (this.getIsSuccess(errorResponse.getCode())) {
PGXErrorResponse errorResponse = pgtClient.exchangeTransferByAgentId(JsonUtil.mapToQueryString(paramsMap)); PGTExchangeTransferResponse.BalanceData data = errorResponse.getData();
if (this.getIsSuccess(errorResponse.getErrCode())) {
//更新数据 //更新数据
exchangeMoney.setBalance(amount); exchangeMoney.setBalance(data.getAmount());
exchangeMoney.setCoinBefore(amountBefore); exchangeMoney.setCoinBefore(data.getBeforeBalance());
//转后的余额 exchangeMoney.setCoinAfter(data.getBalance());
BigDecimal coinAfter = this.getMemberInfo(gamesBaseRequestDTO).getBalance();
exchangeMoney.setCoinAfter(coinAfter);
exchangeMoney.setCurrencyBefore(exchangeMoney.getCoinBefore()); exchangeMoney.setCurrencyBefore(exchangeMoney.getCoinBefore());
exchangeMoney.setCurrencyAfter(exchangeMoney.getCoinAfter()); exchangeMoney.setCurrencyAfter(exchangeMoney.getCoinAfter());
exchangeMoney.setStatus(StatusType.IN_PROGRESS.getValue()); exchangeMoney.setStatus(StatusType.IN_PROGRESS.getValue());
gameExchangeMoneyService.insertGameExchangeMoney(exchangeMoney); gameExchangeMoneyService.insertGameExchangeMoney(exchangeMoney);
//确认状态 //查询交易状态
ExchangeTransferStatusRequestDTO exchangeTransferStatusRequestDTO = new ExchangeTransferStatusRequestDTO(); ExchangeTransferStatusRequestDTO exchangeTransferStatusRequestDTO = new ExchangeTransferStatusRequestDTO();
exchangeTransferStatusRequestDTO.setAccount(member.getGameAccount()); exchangeTransferStatusRequestDTO.setAccount(exchangeTransferMoneyRequestDTO.getAccount());
exchangeTransferStatusRequestDTO.setOrderId(exchangeMoney.getTransactionId()); exchangeTransferStatusRequestDTO.setCurrency(currency);
exchangeTransferStatusRequestDTO.setAgentId(gameSecretKey.getCode()); exchangeTransferStatusRequestDTO.setOrderId(transactionId);
exchangeTransferStatusRequestDTO.setAgentKey(gameSecretKey.getKey()); exchangeTransferStatusRequestDTO.setAgentId(exchangeTransferMoneyRequestDTO.getAgentId());
exchangeTransferStatusRequestDTO.setAgentKey(exchangeTransferMoneyRequestDTO.getAgentKey());
this.exchangeTransferStatus(exchangeTransferStatusRequestDTO); this.exchangeTransferStatus(exchangeTransferStatusRequestDTO);
} else { } else {
log.error("GamesFCServiceImpl [exchangeTransferByAgentId] 金额转移失败,错误代码{}", errorResponse.getErrCode()); log.error("GamesPGTServiceImpl [exchangeTransferByAgentId] 金额转移失败,错误代码{}", errorResponse.getCode());
throw new ApiException(ErrorCode.BALANCE_TRANSFER_FAILED.getCode()); throw new ApiException(ErrorCode.BALANCE_TRANSFER_FAILED.getCode());
} }
return exchangeMoney.getId(); return exchangeMoney.getId();
@ -328,29 +373,35 @@ public class GamesPGTServiceImpl implements IGamesService {
*/ */
@Override @Override
public Boolean exchangeTransferStatus(ExchangeTransferStatusRequestDTO exchangeTransferMoneyRequestDTO) { public Boolean exchangeTransferStatus(ExchangeTransferStatusRequestDTO exchangeTransferMoneyRequestDTO) {
log.info("GamesPGXServiceImpl [exchangeTransferStatus] 请求参数 {}", exchangeTransferMoneyRequestDTO); log.info("GamesPGTServiceImpl [exchangeTransferStatus] 请求参数 {}", exchangeTransferMoneyRequestDTO);
GameExchangeMoney gameExchangeMoney = gameExchangeMoneyService.selectGameExchangeMoneyById(exchangeTransferMoneyRequestDTO.getGameExchangeMoneyId());
Map<String, Object> paramsMap = new LinkedHashMap<>(); Map<String, Object> paramsMap = new LinkedHashMap<>();
paramsMap.put("operatorcode", exchangeTransferMoneyRequestDTO.getAgentId()); paramsMap.put("username", exchangeTransferMoneyRequestDTO.getAccount());
paramsMap.put("referenceid", exchangeTransferMoneyRequestDTO.getOrderId()); paramsMap.put("transactionRef", exchangeTransferMoneyRequestDTO.getOrderId());
paramsMap.put("productId", productId);
if (TransferType.ALL.getCode().equals(gameExchangeMoney.getExchangeType())) {
PGXExchangeTransferStatusResponse exchangeTransferStatusResponse = pgtClient.exchangeTransferStatus(JsonUtil.mapToQueryString(paramsMap)); paramsMap.put("type", "WITHDRAW");
if (this.getIsSuccess(exchangeTransferStatusResponse.getErrCode())) { } else {
paramsMap.put("type", "DEPOSIT");
}
Map<String, String> key = this.getKey(exchangeTransferMoneyRequestDTO);
PGTTransactionResponse transactionResponse = pgtClient.exchangeTransferStatus(paramsMap, key);
if (this.getIsSuccess(transactionResponse.getCode())) {
List<GameExchangeMoney> gameExchangeMonies = gameExchangeMoneyService.selectGameExchangeMoneyList( List<GameExchangeMoney> gameExchangeMonies = gameExchangeMoneyService.selectGameExchangeMoneyList(
GameExchangeMoney.builder() GameExchangeMoney.builder()
.platformCode(GamePlatforms.PGX.getInfo()) .platformCode(GamePlatforms.PGT.getCode())
.transactionId(exchangeTransferMoneyRequestDTO.getOrderId()) .transactionId(exchangeTransferMoneyRequestDTO.getOrderId())
.build() .build()
); );
for (GameExchangeMoney exchangeMoney : gameExchangeMonies) { for (GameExchangeMoney exchangeMoney : gameExchangeMonies) {
//更新数据 //更新数据
exchangeMoney.setStatus(PGXTransactionStatus.findValueByCode(exchangeTransferStatusResponse.getStatus())); exchangeMoney.setStatus(transactionResponse.getData().isSuccess() ? StatusType.SUCCESS.getValue() : StatusType.FAILURE.getValue());
gameExchangeMoneyService.updateGameExchangeMoney(exchangeMoney); gameExchangeMoneyService.updateGameExchangeMoney(exchangeMoney);
} }
return Boolean.TRUE; return Boolean.TRUE;
} else { } else {
log.error("GamesPGXServiceImpl [exchangeTransferStatus]错误代码{},错误信息{}", exchangeTransferStatusResponse.getErrCode(), exchangeTransferStatusResponse.getErrMsg()); log.error("GamesPGTServiceImpl [exchangeTransferStatus]错误代码{},错误信息{}", transactionResponse.getCode(), transactionResponse.getMessage());
return Boolean.FALSE; return Boolean.FALSE;
} }
} }
@ -365,20 +416,32 @@ public class GamesPGTServiceImpl implements IGamesService {
@Override @Override
public Boolean getBetRecordByTime(BetRecordByTimeDTO betRecordByTimeDTO) { public Boolean getBetRecordByTime(BetRecordByTimeDTO betRecordByTimeDTO) {
//请求参数 //请求参数
log.info("GamesPGXServiceImpl [getBetRecordByTime] 请求参数 {}", betRecordByTimeDTO); log.info("GamesPGTServiceImpl [getBetRecordByTime] 请求参数 {}", betRecordByTimeDTO);
String startTime = DateUtils.convertTimestampToFormattedDate(betRecordByTimeDTO.getStartTime(), DateUtils.ISO_8601_FORMAT_Z, "GMT+8");
String endTime = DateUtils.convertTimestampToFormattedDate(betRecordByTimeDTO.getEndTime(), DateUtils.ISO_8601_FORMAT_Z, "GMT+8");
String nextId = redisCache.getCacheObject(CacheConstants.PGT_NEXT_ID);
Map<String, Object> paramsMap = new LinkedHashMap<>(); Map<String, Object> paramsMap = new LinkedHashMap<>();
paramsMap.put("operatorcode", betRecordByTimeDTO.getAgentId()); paramsMap.put("productId", productId);
paramsMap.put("startTime", startTime);
paramsMap.put("endTime", endTime);
paramsMap.put("nextId", nextId);
Map<String, String> key = this.getKey(betRecordByTimeDTO);
paramsMap.put("versionkey", 0); PGTTransactionDetailsResponse betRecordByTime = pgtClient.getBetRecordByTime(JsonUtil.mapToQueryString(paramsMap), key);
PGXBetHistoryResponse betRecordByTime = pgtClient.getBetRecordByTime(JsonUtil.mapToQueryString(paramsMap));
if (this.getIsSuccess(betRecordByTime.getErrCode())) { if (this.getIsSuccess(betRecordByTime.getCode())) {
List<PGXBetHistoryResponse.Result> results = JSON.parseArray(betRecordByTime.getResult(), PGXBetHistoryResponse.Result.class); List<PGTTransactionDetailsResponse.Transaction> txns = betRecordByTime.getData().getTxns();
this.batchInsert(results, betRecordByTimeDTO); this.batchInsert(txns, betRecordByTimeDTO);
//保存本次请求的id
redisCache.setCacheObject(CacheConstants.PGT_NEXT_ID, betRecordByTime.getData().getNextId());
return Boolean.TRUE; return Boolean.TRUE;
} else { } else {
log.error("GamesPGXServiceImpl [getBetRecordByTime] 获取投注记录失败,错误代码{},错误信息{}", betRecordByTime.getErrCode(), betRecordByTime.getErrMsg()); log.error("GamesPGXServiceImpl [getBetRecordByTime] 获取投注记录失败,错误代码{},错误信息{}", betRecordByTime.getCode(), betRecordByTime.getMessage());
throw new BaseException(betRecordByTime.getErrMsg()); throw new BaseException(betRecordByTime.getMessage());
} }
} }
@ -390,21 +453,7 @@ public class GamesPGTServiceImpl implements IGamesService {
*/ */
@Override @Override
public Boolean getBetRecordByHistoryTime(BetRecordByTimeDTO betRecordByTimeDTO) { public Boolean getBetRecordByHistoryTime(BetRecordByTimeDTO betRecordByTimeDTO) {
//请求参数 throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode());
log.info("GamesPGXServiceImpl [getBetRecordByHistoryTime] 请求参数 {}", betRecordByTimeDTO);
Map<String, Object> paramsMap = new LinkedHashMap<>();
paramsMap.put("operatorcode", betRecordByTimeDTO.getAgentId());
paramsMap.put("versionkey", 0);
PGXBetHistoryResponse betRecordByTime = pgtClient.getBetRecordByHistoryTime(JsonUtil.mapToQueryString(paramsMap));
if (this.getIsSuccess(betRecordByTime.getErrCode())) {
List<PGXBetHistoryResponse.Result> results = JSON.parseArray(betRecordByTime.getResult(), PGXBetHistoryResponse.Result.class);
this.batchInsert(results, betRecordByTimeDTO);
return Boolean.TRUE;
} else {
log.error("GamesPGXServiceImpl [getBetRecordByHistoryTime] 获取投注记录失败,错误代码{},错误信息{}", betRecordByTime.getErrCode(), betRecordByTime.getErrMsg());
throw new BaseException(betRecordByTime.getErrMsg());
}
} }
/** /**
@ -437,7 +486,18 @@ public class GamesPGTServiceImpl implements IGamesService {
*/ */
@Override @Override
public Boolean kickMember(KickMemberRequestDTO kickMemberRequestDTO) { public Boolean kickMember(KickMemberRequestDTO kickMemberRequestDTO) {
throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); log.info("GamesPGTServiceImpl [kickMember] 请求参数 {}", kickMemberRequestDTO);
Map<String, Object> paramsMap = new HashMap<>();
paramsMap.put("username", kickMemberRequestDTO.getAccount());
paramsMap.put("productId", productId);
Map<String, String> key = this.getKey(kickMemberRequestDTO);
PGTKickMemberResponse pgtKickMemberResponse = pgtClient.kickMember(paramsMap, key);
if (this.getIsSuccess(pgtKickMemberResponse.getCode())&&"SUCCESS".equals(pgtKickMemberResponse.getData().getStatus())) {
return Boolean.TRUE;
} else {
throw new ApiException(ErrorCode.KICK_OUT_AILED.getCode());
}
} }
/** /**
@ -490,13 +550,15 @@ public class GamesPGTServiceImpl implements IGamesService {
* *
* @param dataBean bean * @param dataBean bean
*/ */
private void batchInsert(List<PGXBetHistoryResponse.Result> dataBean, GamesBaseRequestDTO gamesBaseRequestDTO) { private void batchInsert(List<PGTTransactionDetailsResponse.Transaction> dataBean, GamesBaseRequestDTO gamesBaseRequestDTO) {
List<GameBettingDetails> gameBettingDetails = new ArrayList<>(); List<GameBettingDetails> gameBettingDetails = new ArrayList<>();
List<String> wagersIds = new ArrayList<>(); List<String> wagersIds = new ArrayList<>();
//数据转化 //数据转化
for (PGXBetHistoryResponse.Result bean : dataBean) { for (PGTTransactionDetailsResponse.Transaction bean : dataBean) {
GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder().agentId(gamesBaseRequestDTO.getAgentId()).data(bean).build()); GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder().agentId(gamesBaseRequestDTO.getAgentId())
.platform(gamesBaseRequestDTO.getVendor())
.data(bean).build());
if (!ObjectUtils.isEmpty(bettingDetails)) { if (!ObjectUtils.isEmpty(bettingDetails)) {
bettingDetails.setId(IdUtil.getSnowflakeNextId()); bettingDetails.setId(IdUtil.getSnowflakeNextId());
gameBettingDetails.add(bettingDetails); gameBettingDetails.add(bettingDetails);
@ -505,7 +567,7 @@ public class GamesPGTServiceImpl implements IGamesService {
} }
if (!CollectionUtils.isEmpty(gameBettingDetails)) { if (!CollectionUtils.isEmpty(gameBettingDetails)) {
//查询重复数据id //查询重复数据id
List<String> removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds,GamePlatforms.PGX.getInfo()); List<String> removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds, GamePlatforms.PGX.getInfo());
//用steam流清除list中与wagersIds集合相同的数据 //用steam流清除list中与wagersIds集合相同的数据
gameBettingDetails = gameBettingDetails.stream() gameBettingDetails = gameBettingDetails.stream()
.filter(detail -> !removeWagersIds.contains(detail.getWagersId())) .filter(detail -> !removeWagersIds.contains(detail.getWagersId()))
@ -528,7 +590,51 @@ public class GamesPGTServiceImpl implements IGamesService {
@Override @Override
public GameBettingDetails dataBuild(GamesDataBuildDTO gamesDataBuildDTO) { public GameBettingDetails dataBuild(GamesDataBuildDTO gamesDataBuildDTO) {
//转化类 //转化类
PGTTransactionDetailsResponse.Transaction resultBean = (PGTTransactionDetailsResponse.Transaction) gamesDataBuildDTO.getData();
return new GameBettingDetails();
//只要结算的数据
if (!PGTBetStatus.SETTLED.getType().equals(resultBean.getBetStatus())) {
return null;
}
Member member = memberService.selectMemberByGameAccount(resultBean.getUsername());
if (ObjectUtils.isEmpty(member)) {
return null;
}
List<PGTGameListResponse.Game> gamesDatas = redisCache.getCacheList(CacheConstants.PGT_GAMES);
Map<String, PGTGameListResponse.Game> dataDTOMap = gamesDatas.stream().collect(Collectors.toMap(PGTGameListResponse.Game::getCode, e -> e));
PGTGameListResponse.Game gamesDataDTO = dataDTOMap.get(resultBean.getGameCode());
//数据构造
GameBettingDetails gameBettingDetails = GameBettingDetails.builder()
.tenantKey(member.getTenantKey())
//保存我们的币种id
.currencyCode(gamesDataBuildDTO.getPlatform().getOurCurrency(resultBean.getCurrency()))
.memberId(member.getId())
.gameCode(resultBean.getGameCode())
.gameType(PGTGameType.findSystemByCode(gamesDataDTO.getCategory()))
.platformCode(GamePlatforms.PGT.getCode())
.gameId(gamesDataDTO.getSystemGameId())
.gameName(gamesDataDTO.getName())
.gameStatus(PGTPayoutStatus.getByCode(resultBean.getPayoutStatus()).getSystemCode())
.gameStatusType(1)
.gameCurrencyCode(resultBean.getCurrency())
.account(resultBean.getUsername())
.wagersId(resultBean.getBetId())
.wagersTime(resultBean.getAccountingDate().getTime())
.betAmount(resultBean.getPayout())
.payoffTime(resultBean.getAccountingDate().getTime())
.payoffAmount(resultBean.getStake())
.settlementTime(resultBean.getAccountingDate().getTime())
.turnover(resultBean.getPayout())
.orderNo(resultBean.getRoundId())
.settlementStatus(SettlementStatusEnum.COMPLETED.getCode())
.build();
gameBettingDetails.setCreateBy(Constants.SYSTEM);
gameBettingDetails.setCreateTime(DateUtils.getNowDate());
return gameBettingDetails;
} }
} }

View File

@ -15,17 +15,13 @@ import com.ff.base.utils.JsonUtil;
import com.ff.base.utils.sign.Md5Utils; import com.ff.base.utils.sign.Md5Utils;
import com.ff.config.KeyConfig; import com.ff.config.KeyConfig;
import com.ff.game.api.IGamesService; import com.ff.game.api.IGamesService;
import com.ff.game.api.dg.dto.DGBetRecordResponseDTO;
import com.ff.game.api.ng.dto.ApiExchangeTransferStatusResponseDTO;
import com.ff.game.api.pgx.client.PGXClient; import com.ff.game.api.pgx.client.PGXClient;
import com.ff.game.api.pgx.dto.*; import com.ff.game.api.pgx.dto.*;
import com.ff.game.api.request.*; import com.ff.game.api.request.*;
import com.ff.game.api.xk.dto.XKBetRecordResponseDTO;
import com.ff.game.api.xk.dto.XKGamesDTO;
import com.ff.game.api.xk.dto.XKKickMemberDTO;
import com.ff.game.domain.*; import com.ff.game.domain.*;
import com.ff.game.dto.GameSecretKeyCurrencyDTO; import com.ff.game.service.IGameBettingDetailsService;
import com.ff.game.service.*; import com.ff.game.service.IGameExchangeMoneyService;
import com.ff.game.service.IGameService;
import com.ff.member.domain.Member; import com.ff.member.domain.Member;
import com.ff.member.service.IMemberService; import com.ff.member.service.IMemberService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -37,7 +33,10 @@ import org.springframework.util.ObjectUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -63,10 +62,6 @@ public class GamesPGXServiceImpl implements IGamesService {
private IGameExchangeMoneyService gameExchangeMoneyService; private IGameExchangeMoneyService gameExchangeMoneyService;
@Resource
private IGamePlatformService gamePlatformService;
@Resource @Resource
private IGameService gameService; private IGameService gameService;
@ -74,14 +69,6 @@ public class GamesPGXServiceImpl implements IGamesService {
@Resource @Resource
private IMemberService memberService; private IMemberService memberService;
@Resource
private IGameFreeRecordService gameFreeRecordService;
@Resource
private IGameSecretKeyService gameSecretKeyService;
@Resource
private IGameSecretKeyCurrencyService gameSecretKeyCurrencyService;
@Resource @Resource
private PGXClient PGXClient; private PGXClient PGXClient;
@ -92,9 +79,6 @@ public class GamesPGXServiceImpl implements IGamesService {
@Resource @Resource
private IGameBettingDetailsService gameBettingDetailsService; private IGameBettingDetailsService gameBettingDetailsService;
@Resource
private IGameNameService gameNameService;
/** /**
* *
@ -158,11 +142,12 @@ public class GamesPGXServiceImpl implements IGamesService {
@Override @Override
public MemberInfoResponseDTO getMemberInfo(MemberInfoRequestDTO memberInfoRequestDTO) { public MemberInfoResponseDTO getMemberInfo(MemberInfoRequestDTO memberInfoRequestDTO) {
log.info("GamesPGXServiceImpl [getMemberInfo] 请求参数 {}", memberInfoRequestDTO); log.info("GamesPGXServiceImpl [getMemberInfo] 请求参数 {}", memberInfoRequestDTO);
GameSecretKey gameSecretKey = gameSecretKeyService.selectGameSecretKeyByCode(memberInfoRequestDTO.getAgentId()); // GameSecretKey gameSecretKey = gameSecretKeyService.selectGameSecretKeyByCode(memberInfoRequestDTO.getAgentId());
Map<String, Object> params = new LinkedHashMap<>(); Map<String, Object> params = new LinkedHashMap<>();
params.put("operatorcode", memberInfoRequestDTO.getAgentId()); params.put("operatorcode", memberInfoRequestDTO.getAgentId());
params.put("password", gameSecretKey.getPassword()); KeyInfo keyInfo = memberInfoRequestDTO.getKeyInfo();
params.put("providercode", gameSecretKey.getProviderCode()); params.put("password", keyInfo.getPassword());
params.put("providercode", keyInfo.getProviderCode());
params.put("username", memberInfoRequestDTO.getAccounts()); params.put("username", memberInfoRequestDTO.getAccounts());
String key = this.getKey(params, memberInfoRequestDTO); String key = this.getKey(params, memberInfoRequestDTO);
params.put("signature", key); params.put("signature", key);
@ -189,11 +174,13 @@ public class GamesPGXServiceImpl implements IGamesService {
@Override @Override
public String loginWithoutRedirect(GamesLogin gamesLogin) { public String loginWithoutRedirect(GamesLogin gamesLogin) {
log.info("GamesPGXServiceImpl [loginWithoutRedirect] 请求参数 {}", gamesLogin); log.info("GamesPGXServiceImpl [loginWithoutRedirect] 请求参数 {}", gamesLogin);
GameSecretKey gameSecretKey = gameSecretKeyService.selectGameSecretKeyByCode(gamesLogin.getAgentId()); // GameSecretKey gameSecretKey = gameSecretKeyService.selectGameSecretKeyByCode(gamesLogin.getAgentId());
KeyInfo keyInfo = gamesLogin.getKeyInfo();
Map<String, Object> params = new LinkedHashMap<>(); Map<String, Object> params = new LinkedHashMap<>();
params.put("operatorcode", gamesLogin.getAgentId()); params.put("operatorcode", gamesLogin.getAgentId());
params.put("password", gameSecretKey.getPassword()); params.put("password", keyInfo.getPassword());
params.put("providercode", gameSecretKey.getProviderCode()); params.put("providercode", keyInfo.getProviderCode());
params.put("type", gamesLogin.getGameType()); params.put("type", gamesLogin.getGameType());
params.put("username", gamesLogin.getAccount()); params.put("username", gamesLogin.getAccount());
String key = this.getKey(params, gamesLogin); String key = this.getKey(params, gamesLogin);
@ -226,10 +213,11 @@ public class GamesPGXServiceImpl implements IGamesService {
return CacheConstants.PGX_GAMES; return CacheConstants.PGX_GAMES;
} }
GameSecretKey gameSecretKey = gameSecretKeyService.selectGameSecretKeyByCode(gamesBaseRequestDTO.getAgentId()); // GameSecretKey gameSecretKey = gameSecretKeyService.selectGameSecretKeyByCode(gamesBaseRequestDTO.getAgentId());
KeyInfo keyInfo = gamesBaseRequestDTO.getKeyInfo();
Map<String, Object> params = new LinkedHashMap<>(); Map<String, Object> params = new LinkedHashMap<>();
params.put("operatorcode", gamesBaseRequestDTO.getAgentId()); params.put("operatorcode", gamesBaseRequestDTO.getAgentId());
params.put("providercode", gameSecretKey.getProviderCode()); params.put("providercode", keyInfo.getProviderCode());
String key = this.getKey(params, gamesBaseRequestDTO); String key = this.getKey(params, gamesBaseRequestDTO);
//没有中文 //没有中文
params.put("html5", 1); params.put("html5", 1);
@ -242,7 +230,7 @@ public class GamesPGXServiceImpl implements IGamesService {
List<PGXGameListResponse.Game> gameLists = JSON.parseArray(gameList.getGamelist(), PGXGameListResponse.Game.class); List<PGXGameListResponse.Game> gameLists = JSON.parseArray(gameList.getGamelist(), PGXGameListResponse.Game.class);
for (PGXGameListResponse.Game gamesDataDTO : gameLists) { for (PGXGameListResponse.Game gamesDataDTO : gameLists) {
GamePlatform gamePlatform = GamePlatform.builder() /* GamePlatform gamePlatform = GamePlatform.builder()
.platformType(GPXGameType.SL.getSystemCode()) .platformType(GPXGameType.SL.getSystemCode())
.platformCode(GamePlatforms.PGX.getInfo()) .platformCode(GamePlatforms.PGX.getInfo())
.build(); .build();
@ -255,25 +243,33 @@ public class GamesPGXServiceImpl implements IGamesService {
gamePlatformService.insertGamePlatform(gamePlatform); gamePlatformService.insertGamePlatform(gamePlatform);
} else { } else {
gamePlatform = gamePlatforms.get(0); gamePlatform = gamePlatforms.get(0);
} }*/
Integer platformType = GPXGameType.findSystemByCode(gamesDataDTO.getGameCode());
Game game = Game.builder() Game game = Game.builder()
.platformId(gamePlatform.getId()) //.platformId(gamePlatform.getId())
.gameCode(gamesDataDTO.getGameId()) .gameCode(gamesDataDTO.getGameId())
.platformCode(GamePlatforms.PGX.getCode())
.platformType(platformType)
.build(); .build();
List<Game> games = gameService.selectGameList(game); List<Game> games = gameService.selectGameList(game);
//不存在这个游戏 //不存在这个游戏
if (CollectionUtils.isEmpty(games)) { if (CollectionUtils.isEmpty(games)) {
game.setGameSourceType(GPXGameType.SL.getCode()); game.setGameSourceType(GPXGameType.SL.getCode());
game.setFreespin(Boolean.FALSE); game.setFreespin(Boolean.FALSE);
game.setSortNo(gameService.selectMaxSortNoByPlatformId(gamePlatform.getId()) + 1); game.setSortNo(gameService.selectMaxSortNo(platformType, GamePlatforms.PGX.getCode()) + 1);
game.setGameName(gamesDataDTO.getGameName()); game.setGameName(gamesDataDTO.getGameName());
game.setCreateBy(Constants.SYSTEM); game.setCreateBy(Constants.SYSTEM);
game.setPlatformCode(GamePlatforms.PGX.getCode());
game.setPlatformType(platformType);
List<NameInfo> nameInfos = new ArrayList<>();
nameInfos.add(new NameInfo(gamesDataDTO.getGameName(), "en-US"));
game.setNameInfo(nameInfos);
gameService.insertGame(game); gameService.insertGame(game);
} else { } else {
game = games.get(0); game = games.get(0);
} }
gamesDataDTO.setSystemGameId(game.getId()); gamesDataDTO.setSystemGameId(game.getId());
List<GameName> gameNames = gameNameService.selectGameNameList(GameName.builder().gameId(game.getId()).gameName(game.getGameName()).build()); /*List<GameName> gameNames = gameNameService.selectGameNameList(GameName.builder().gameId(game.getId()).gameName(game.getGameName()).build());
if (CollectionUtils.isEmpty(gameNames)) { if (CollectionUtils.isEmpty(gameNames)) {
gameNameService.insertGameName(GameName.builder() gameNameService.insertGameName(GameName.builder()
.gameId(game.getId()) .gameId(game.getId())
@ -281,7 +277,7 @@ public class GamesPGXServiceImpl implements IGamesService {
.langCode("en-US") .langCode("en-US")
.createBy(Constants.SYSTEM) .createBy(Constants.SYSTEM)
.build()); .build());
} }*/
} }
@ -307,11 +303,11 @@ public class GamesPGXServiceImpl implements IGamesService {
public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) { public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) {
log.info("GamesPGXServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO); log.info("GamesPGXServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO);
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder() // GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(GamePlatforms.PGX.getInfo()) // .platformCode(GamePlatforms.PGX.getInfo())
.code(exchangeTransferMoneyRequestDTO.getAgentId()) // .code(exchangeTransferMoneyRequestDTO.getAgentId())
.currency(exchangeTransferMoneyRequestDTO.getCurrency()) // .currency(exchangeTransferMoneyRequestDTO.getCurrency())
.build()); // .build());
Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount()); Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount());
String transactionId = gameExchangeMoneyService.getTransactionId(GamePlatforms.PGX.getInfo(), 17); String transactionId = gameExchangeMoneyService.getTransactionId(GamePlatforms.PGX.getInfo(), 17);
@ -323,7 +319,7 @@ public class GamesPGXServiceImpl implements IGamesService {
); );
Assert.isTrue(CollectionUtils.isEmpty(gameExchangeMonies), "订单号重复"); Assert.isTrue(CollectionUtils.isEmpty(gameExchangeMonies), "订单号重复");
GameSecretKey gameSecretKey = gameSecretKeyService.selectGameSecretKeyByCode(exchangeTransferMoneyRequestDTO.getAgentId()); // GameSecretKey gameSecretKey = gameSecretKeyService.selectGameSecretKeyByCode(exchangeTransferMoneyRequestDTO.getAgentId());
//获取下一个自增id //获取下一个自增id
GameExchangeMoney exchangeMoney = GameExchangeMoney GameExchangeMoney exchangeMoney = GameExchangeMoney
@ -333,7 +329,7 @@ public class GamesPGXServiceImpl implements IGamesService {
.quota(exchangeTransferMoneyRequestDTO.getQuota()) .quota(exchangeTransferMoneyRequestDTO.getQuota())
.balance(exchangeTransferMoneyRequestDTO.getAmount()) .balance(exchangeTransferMoneyRequestDTO.getAmount())
.exchangeType(exchangeTransferMoneyRequestDTO.getTransferType()) .exchangeType(exchangeTransferMoneyRequestDTO.getTransferType())
.currencyCode(currencyDTO.getSystemCurrency()) .currencyCode(exchangeTransferMoneyRequestDTO.getSystemCurrency())
.memberId(member.getId()) .memberId(member.getId())
.transactionId(transactionId) .transactionId(transactionId)
.platformCode(GamePlatforms.PGX.getInfo()) .platformCode(GamePlatforms.PGX.getInfo())
@ -362,11 +358,12 @@ public class GamesPGXServiceImpl implements IGamesService {
} }
KeyInfo keyInfo = exchangeTransferMoneyRequestDTO.getKeyInfo();
Map<String, Object> paramsMap = new LinkedHashMap<>(); Map<String, Object> paramsMap = new LinkedHashMap<>();
paramsMap.put("amount", amount); paramsMap.put("amount", amount);
paramsMap.put("operatorcode", exchangeTransferMoneyRequestDTO.getAgentId()); paramsMap.put("operatorcode", exchangeTransferMoneyRequestDTO.getAgentId());
paramsMap.put("password", gameSecretKey.getPassword()); paramsMap.put("password", keyInfo.getPassword());
paramsMap.put("providercode", gameSecretKey.getProviderCode()); paramsMap.put("providercode", keyInfo.getProviderCode());
paramsMap.put("referenceid", transactionId); paramsMap.put("referenceid", transactionId);
paramsMap.put("type", type); paramsMap.put("type", type);
paramsMap.put("username", exchangeTransferMoneyRequestDTO.getAccount()); paramsMap.put("username", exchangeTransferMoneyRequestDTO.getAccount());
@ -392,8 +389,8 @@ public class GamesPGXServiceImpl implements IGamesService {
ExchangeTransferStatusRequestDTO exchangeTransferStatusRequestDTO = new ExchangeTransferStatusRequestDTO(); ExchangeTransferStatusRequestDTO exchangeTransferStatusRequestDTO = new ExchangeTransferStatusRequestDTO();
exchangeTransferStatusRequestDTO.setAccount(member.getGameAccount()); exchangeTransferStatusRequestDTO.setAccount(member.getGameAccount());
exchangeTransferStatusRequestDTO.setOrderId(exchangeMoney.getTransactionId()); exchangeTransferStatusRequestDTO.setOrderId(exchangeMoney.getTransactionId());
exchangeTransferStatusRequestDTO.setAgentId(gameSecretKey.getCode()); exchangeTransferStatusRequestDTO.setAgentId(keyInfo.getCode());
exchangeTransferStatusRequestDTO.setAgentKey(gameSecretKey.getKey()); exchangeTransferStatusRequestDTO.setAgentKey(keyInfo.getKey());
this.exchangeTransferStatus(exchangeTransferStatusRequestDTO); this.exchangeTransferStatus(exchangeTransferStatusRequestDTO);
} else { } else {
log.error("GamesFCServiceImpl [exchangeTransferByAgentId] 金额转移失败,错误代码{}", errorResponse.getErrCode()); log.error("GamesFCServiceImpl [exchangeTransferByAgentId] 金额转移失败,错误代码{}", errorResponse.getErrCode());
@ -576,13 +573,17 @@ public class GamesPGXServiceImpl implements IGamesService {
* *
* @param dataBean bean * @param dataBean bean
*/ */
private void batchInsert(List<PGXBetHistoryResponse.Result> dataBean, GamesBaseRequestDTO gamesBaseRequestDTO) { private void batchInsert(List<PGXBetHistoryResponse.Result> dataBean, BetRecordByTimeDTO gamesBaseRequestDTO) {
List<GameBettingDetails> gameBettingDetails = new ArrayList<>(); List<GameBettingDetails> gameBettingDetails = new ArrayList<>();
List<String> wagersIds = new ArrayList<>(); List<String> wagersIds = new ArrayList<>();
//数据转化 //数据转化
for (PGXBetHistoryResponse.Result bean : dataBean) { for (PGXBetHistoryResponse.Result bean : dataBean) {
GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder().agentId(gamesBaseRequestDTO.getAgentId()).data(bean).build()); GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder()
.currencyCode(gamesBaseRequestDTO.getCurrency())
.systemCurrencyCode(gamesBaseRequestDTO.getSystemCurrency())
.agentId(gamesBaseRequestDTO.getAgentId())
.data(bean).build());
if (!ObjectUtils.isEmpty(bettingDetails)) { if (!ObjectUtils.isEmpty(bettingDetails)) {
bettingDetails.setId(IdUtil.getSnowflakeNextId()); bettingDetails.setId(IdUtil.getSnowflakeNextId());
gameBettingDetails.add(bettingDetails); gameBettingDetails.add(bettingDetails);
@ -591,7 +592,7 @@ public class GamesPGXServiceImpl implements IGamesService {
} }
if (!CollectionUtils.isEmpty(gameBettingDetails)) { if (!CollectionUtils.isEmpty(gameBettingDetails)) {
//查询重复数据id //查询重复数据id
List<String> removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds,GamePlatforms.PGX.getInfo()); List<String> removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds, GamePlatforms.PGX.getInfo());
//用steam流清除list中与wagersIds集合相同的数据 //用steam流清除list中与wagersIds集合相同的数据
gameBettingDetails = gameBettingDetails.stream() gameBettingDetails = gameBettingDetails.stream()
.filter(detail -> !removeWagersIds.contains(detail.getWagersId())) .filter(detail -> !removeWagersIds.contains(detail.getWagersId()))
@ -622,10 +623,10 @@ public class GamesPGXServiceImpl implements IGamesService {
//转化类 //转化类
PGXBetHistoryResponse.Result resultBean = (PGXBetHistoryResponse.Result) gamesDataBuildDTO.getData(); PGXBetHistoryResponse.Result resultBean = (PGXBetHistoryResponse.Result) gamesDataBuildDTO.getData();
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder() // GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(GamePlatforms.PGX.getInfo()) // .platformCode(GamePlatforms.PGX.getInfo())
.code(gamesDataBuildDTO.getAgentId()) // .code(gamesDataBuildDTO.getAgentId())
.build()); // .build());
Member member = memberService.selectMemberByGameAccount(resultBean.getMember()); Member member = memberService.selectMemberByGameAccount(resultBean.getMember());
if (ObjectUtils.isEmpty(member)) { if (ObjectUtils.isEmpty(member)) {
@ -651,17 +652,17 @@ public class GamesPGXServiceImpl implements IGamesService {
GameBettingDetails gameBettingDetails = GameBettingDetails.builder() GameBettingDetails gameBettingDetails = GameBettingDetails.builder()
.tenantKey(member.getTenantKey()) .tenantKey(member.getTenantKey())
//保存我们的币种id //保存我们的币种id
.currencyCode(currencyDTO.getSystemCurrency()) .currencyCode(/*currencyDTO.getSystemCurrency()*/gamesDataBuildDTO.getSystemCurrencyCode())
.memberId(member.getId()) .memberId(member.getId())
.gameCode(resultBean.getGameId()) .gameCode(resultBean.getGameId())
.gameType(GPXGameType.SL.getSystemCode()) .gameType(GPXGameType.SL.getSystemCode())
.platformCode(GamePlatforms.PGX.getInfo()) .platformCode(GamePlatforms.PGX.getCode())
.gameId(gamesDataDTO.getSystemGameId()) .gameId(gamesDataDTO.getSystemGameId())
.gameName(gamesDataDTO.getGameName()) .gameName(gamesDataDTO.getGameName())
.gameStatus(gameStatus) .gameStatus(gameStatus)
.gameStatusType(1) .gameStatusType(1)
.betContent(resultBean.getBetDetail()) .betContent(resultBean.getBetDetail())
.gameCurrencyCode(currencyDTO.getCurrency()) .gameCurrencyCode(/*currencyDTO.getCurrency()*/gamesDataBuildDTO.getCurrencyCode())
.account(resultBean.getMember()) .account(resultBean.getMember())
.wagersId(String.valueOf(resultBean.getId())) .wagersId(String.valueOf(resultBean.getId()))
.wagersTime(resultBean.getStartTime().getTime()) .wagersTime(resultBean.getStartTime().getTime())

View File

@ -30,13 +30,6 @@ public class BetRecordByTimeDTO extends GamesBaseRequestDTO {
* id * id
*/ */
private Integer gameId; private Integer gameId;
/**
*
*/
private String gamePlatform;
} }

View File

@ -46,5 +46,6 @@ public class GamesBaseRequestDTO implements Serializable {
private KeyInfo keyInfo; private KeyInfo keyInfo;
private String systemCurrency;
} }

View File

@ -1,5 +1,6 @@
package com.ff.game.api.request; package com.ff.game.api.request;
import com.ff.game.domain.Platform;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
@ -39,5 +40,7 @@ public class GamesDataBuildDTO
*/ */
private String agentId; private String agentId;
private Platform platform;
} }

View File

@ -5,23 +5,20 @@ import cn.hutool.core.util.NumberUtil;
import com.ff.base.constant.CacheConstants; import com.ff.base.constant.CacheConstants;
import com.ff.base.constant.ConfigConstants; import com.ff.base.constant.ConfigConstants;
import com.ff.base.constant.Constants; import com.ff.base.constant.Constants;
import com.ff.base.core.redis.RedisCache;
import com.ff.base.enums.*; import com.ff.base.enums.*;
import com.ff.base.exception.base.ApiException; import com.ff.base.exception.base.ApiException;
import com.ff.base.exception.base.BaseException;
import com.ff.base.system.service.ISysConfigService; import com.ff.base.system.service.ISysConfigService;
import com.ff.base.utils.*; import com.ff.base.utils.*;
import com.ff.base.utils.sign.Md5Utils; import com.ff.base.utils.sign.Md5Utils;
import com.ff.base.utils.uuid.IdUtils;
import com.ff.config.KeyConfig; import com.ff.config.KeyConfig;
import com.ff.game.api.IGamesService; import com.ff.game.api.IGamesService;
import com.ff.game.api.request.*; import com.ff.game.api.request.*;
import com.ff.game.api.sa.client.SAClient; import com.ff.game.api.sa.client.SAClient;
import com.ff.game.api.sa.dto.*; import com.ff.game.api.sa.dto.*;
import com.ff.game.api.xk.dto.*;
import com.ff.game.domain.*; import com.ff.game.domain.*;
import com.ff.game.dto.GameSecretKeyCurrencyDTO; import com.ff.game.service.IGameBettingDetailsService;
import com.ff.game.service.*; import com.ff.game.service.IGameExchangeMoneyService;
import com.ff.game.service.IGameService;
import com.ff.member.domain.Member; import com.ff.member.domain.Member;
import com.ff.member.service.IMemberService; import com.ff.member.service.IMemberService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -33,8 +30,10 @@ import org.springframework.util.ObjectUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.ArrayList;
import java.util.concurrent.TimeUnit; import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -52,17 +51,9 @@ public class GamesSAServiceImpl implements IGamesService {
@Resource @Resource
private ISysConfigService configService; private ISysConfigService configService;
@Resource
private RedisCache redisCache;
@Resource @Resource
private IGameExchangeMoneyService gameExchangeMoneyService; private IGameExchangeMoneyService gameExchangeMoneyService;
@Resource
private IGamePlatformService gamePlatformService;
@Resource @Resource
private IGameService gameService; private IGameService gameService;
@ -70,14 +61,6 @@ public class GamesSAServiceImpl implements IGamesService {
@Resource @Resource
private IMemberService memberService; private IMemberService memberService;
@Resource
private IGameFreeRecordService gameFreeRecordService;
@Resource
private IGameSecretKeyService gameSecretKeyService;
@Resource
private IGameSecretKeyCurrencyService gameSecretKeyCurrencyService;
@Resource @Resource
private SAClient SAClient; private SAClient SAClient;
@ -88,9 +71,6 @@ public class GamesSAServiceImpl implements IGamesService {
@Resource @Resource
private IGameBettingDetailsService gameBettingDetailsService; private IGameBettingDetailsService gameBettingDetailsService;
@Resource
private IGameNameService gameNameService;
/** /**
* id * id
*/ */
@ -241,9 +221,9 @@ public class GamesSAServiceImpl implements IGamesService {
@Transactional @Transactional
@Override @Override
public String getGameList(GamesBaseRequestDTO gamesBaseRequestDTO) { public String getGameList(GamesBaseRequestDTO gamesBaseRequestDTO) {
GamePlatform gamePlatform = gamePlatformService.selectGamePlatformById(PLATFORM_ID); // GamePlatform gamePlatform = gamePlatformService.selectGamePlatformById(PLATFORM_ID);
//没有此平台就新增一个平台 //没有此平台就新增一个平台
if (ObjectUtils.isEmpty(gamePlatform)) { /*if (ObjectUtils.isEmpty(gamePlatform)) {
gamePlatform = new GamePlatform(); gamePlatform = new GamePlatform();
gamePlatform.setId(PLATFORM_ID); gamePlatform.setId(PLATFORM_ID);
gamePlatform.setPlatformCode(GamePlatforms.SA.getInfo()); gamePlatform.setPlatformCode(GamePlatforms.SA.getInfo());
@ -252,30 +232,36 @@ public class GamesSAServiceImpl implements IGamesService {
gamePlatform.setSortNo(gamePlatformService.selectMaxSortNo() + 1); gamePlatform.setSortNo(gamePlatformService.selectMaxSortNo() + 1);
gamePlatform.setCreateBy(Constants.SYSTEM); gamePlatform.setCreateBy(Constants.SYSTEM);
gamePlatformService.insertGamePlatform(gamePlatform); gamePlatformService.insertGamePlatform(gamePlatform);
} }*/
Game game = gameService.selectGameById(GAME_ID); Game game = gameService.selectGameById(GAME_ID);
Integer platformType = PlatformType.CARD_GAME.getCode();
//不存在这个游戏 //不存在这个游戏
if (ObjectUtils.isEmpty(game)) { if (ObjectUtils.isEmpty(game)) {
game = new Game(); game = new Game();
game.setId(GAME_ID); game.setId(GAME_ID);
game.setSortNo(gameService.selectMaxSortNoByPlatformId(gamePlatform.getId()) + 1); game.setSortNo(gameService.selectMaxSortNo(platformType, GamePlatforms.SA.getCode()) + 1);
game.setPlatformId(gamePlatform.getId()); //game.setPlatformId(gamePlatform.getId());
game.setPlatformCode(GamePlatforms.SA.getCode());
game.setPlatformType(platformType);
game.setGameCode("1"); game.setGameCode("1");
game.setGameSourceType(String.valueOf(1)); game.setGameSourceType(String.valueOf(1));
game.setGameName("真人棋牌"); game.setGameName("真人棋牌");
game.setCreateBy(Constants.SYSTEM); game.setCreateBy(Constants.SYSTEM);
List<NameInfo> nameInfos = new ArrayList<>();
nameInfos.add(new NameInfo("真人棋牌", "zh-CN"));
game.setNameInfo(nameInfos);
gameService.insertGame(game); gameService.insertGame(game);
} }
GameName gameName = gameNameService.selectGameNameById(GAME_NAME_ID); // GameName gameName = gameNameService.selectGameNameById(GAME_NAME_ID);
if (ObjectUtils.isEmpty(gameName)) { /*if (ObjectUtils.isEmpty(gameName)) {
gameNameService.insertGameName(GameName.builder() gameNameService.insertGameName(GameName.builder()
.id(GAME_NAME_ID) .id(GAME_NAME_ID)
.gameId(game.getId()) .gameId(game.getId())
.gameName(game.getGameName()) .gameName(game.getGameName())
.langCode("zh-CN") .langCode("zh-CN")
.createBy(Constants.SYSTEM) .createBy(Constants.SYSTEM)
.build()); .build());
} }*/
return CacheConstants.SA_GAMES; return CacheConstants.SA_GAMES;
} }
@ -289,10 +275,10 @@ public class GamesSAServiceImpl implements IGamesService {
@Transactional @Transactional
public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) { public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) {
log.info("GamesSAServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO); log.info("GamesSAServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO);
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder() // GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(GamePlatforms.SA.getInfo()) // .platformCode(GamePlatforms.SA.getInfo())
.code(exchangeTransferMoneyRequestDTO.getAgentId()) // .code(exchangeTransferMoneyRequestDTO.getAgentId())
.build()); // .build());
Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount()); Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount());
@ -318,7 +304,7 @@ public class GamesSAServiceImpl implements IGamesService {
.quota(exchangeTransferMoneyRequestDTO.getQuota()) .quota(exchangeTransferMoneyRequestDTO.getQuota())
.balance(exchangeTransferMoneyRequestDTO.getAmount()) .balance(exchangeTransferMoneyRequestDTO.getAmount())
.exchangeType(exchangeTransferMoneyRequestDTO.getTransferType()) .exchangeType(exchangeTransferMoneyRequestDTO.getTransferType())
.currencyCode(currencyDTO.getSystemCurrency()) .currencyCode(exchangeTransferMoneyRequestDTO.getSystemCurrency())
.memberId(member.getId()) .memberId(member.getId())
.transactionId(transactionId) .transactionId(transactionId)
.platformCode(GamePlatforms.SA.getInfo()) .platformCode(GamePlatforms.SA.getInfo())
@ -355,7 +341,7 @@ public class GamesSAServiceImpl implements IGamesService {
params.put("Username", exchangeTransferMoneyRequestDTO.getAccount()); params.put("Username", exchangeTransferMoneyRequestDTO.getAccount());
params.put("OrderId", exchangeMoney.getTransactionId()); params.put("OrderId", exchangeMoney.getTransactionId());
params.put("CreditAmount", exchangeTransferMoneyRequestDTO.getAmount().stripTrailingZeros().toPlainString()); params.put("CreditAmount", exchangeTransferMoneyRequestDTO.getAmount().stripTrailingZeros().toPlainString());
params.put("CurrencyType", currencyDTO.getCurrency()); params.put("CurrencyType", exchangeTransferMoneyRequestDTO.getCurrency());
String query = JsonUtil.mapToQueryString(params); String query = JsonUtil.mapToQueryString(params);
exchangeTransferMoneyRequestDTO.setQuery(query); exchangeTransferMoneyRequestDTO.setQuery(query);
String key = this.getKey(exchangeTransferMoneyRequestDTO, "CreditBalanceDV"); String key = this.getKey(exchangeTransferMoneyRequestDTO, "CreditBalanceDV");
@ -424,7 +410,7 @@ public class GamesSAServiceImpl implements IGamesService {
//判断是否获取成功 //判断是否获取成功
if (this.getIsSuccess(errorCode)) { if (this.getIsSuccess(errorCode)) {
//数据组装 //数据组装
this.batchInsert(saGetAllBetDetailsResponse); this.batchInsert(saGetAllBetDetailsResponse, betRecordByTimeDTO);
return Boolean.TRUE; return Boolean.TRUE;
} else { } else {
@ -541,14 +527,17 @@ public class GamesSAServiceImpl implements IGamesService {
* *
* @param saGetAllBetDetailsResponse sa * @param saGetAllBetDetailsResponse sa
*/ */
private void batchInsert(SAGetAllBetDetailsResponse saGetAllBetDetailsResponse) { private void batchInsert(SAGetAllBetDetailsResponse saGetAllBetDetailsResponse, BetRecordByTimeDTO betRecordByTimeDTO) {
List<GameBettingDetails> gameBettingDetails = new ArrayList<>(); List<GameBettingDetails> gameBettingDetails = new ArrayList<>();
List<String> wagersIds = new ArrayList<>(); List<String> wagersIds = new ArrayList<>();
//数据组装 //数据组装
List<SAGetAllBetDetailsResponse.BetDetail> result = saGetAllBetDetailsResponse.getBetDetailList(); List<SAGetAllBetDetailsResponse.BetDetail> result = saGetAllBetDetailsResponse.getBetDetailList();
//数据转化 //数据转化
for (SAGetAllBetDetailsResponse.BetDetail bean : result) { for (SAGetAllBetDetailsResponse.BetDetail bean : result) {
GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder().data(bean).build()); GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder()
.platform(betRecordByTimeDTO.getVendor())
.data(bean)
.build());
if (!ObjectUtils.isEmpty(bettingDetails)) { if (!ObjectUtils.isEmpty(bettingDetails)) {
bettingDetails.setId(IdUtil.getSnowflakeNextId()); bettingDetails.setId(IdUtil.getSnowflakeNextId());
gameBettingDetails.add(bettingDetails); gameBettingDetails.add(bettingDetails);
@ -557,7 +546,7 @@ public class GamesSAServiceImpl implements IGamesService {
} }
if (!CollectionUtils.isEmpty(gameBettingDetails)) { if (!CollectionUtils.isEmpty(gameBettingDetails)) {
//查询重复数据id //查询重复数据id
List<String> removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds,GamePlatforms.SA.getInfo()); List<String> removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds, GamePlatforms.SA.getInfo());
//用steam流清除list中与wagersIds集合相同的数据 //用steam流清除list中与wagersIds集合相同的数据
gameBettingDetails = gameBettingDetails.stream() gameBettingDetails = gameBettingDetails.stream()
.filter(detail -> !removeWagersIds.contains(detail.getWagersId())) .filter(detail -> !removeWagersIds.contains(detail.getWagersId()))
@ -580,10 +569,10 @@ public class GamesSAServiceImpl implements IGamesService {
//转化类 //转化类
SAGetAllBetDetailsResponse.BetDetail resultBean = (SAGetAllBetDetailsResponse.BetDetail) gamesDataBuildDTO.getData(); SAGetAllBetDetailsResponse.BetDetail resultBean = (SAGetAllBetDetailsResponse.BetDetail) gamesDataBuildDTO.getData();
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder() // GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(GamePlatforms.SA.getInfo()) // .platformCode(GamePlatforms.SA.getInfo())
.currency(resultBean.getCurrency()) // .currency(resultBean.getCurrency())
.build()); // .build());
Member member = memberService.selectMemberByGameAccount(resultBean.getUsername()); Member member = memberService.selectMemberByGameAccount(resultBean.getUsername());
if (ObjectUtils.isEmpty(member)) { if (ObjectUtils.isEmpty(member)) {
@ -602,11 +591,12 @@ public class GamesSAServiceImpl implements IGamesService {
} }
String systemCurrency = gamesDataBuildDTO.getPlatform().getOurCurrency(resultBean.getCurrency());
//数据构造 //数据构造
GameBettingDetails gameBettingDetails = GameBettingDetails.builder() GameBettingDetails gameBettingDetails = GameBettingDetails.builder()
.tenantKey(member.getTenantKey()) .tenantKey(member.getTenantKey())
//保存我们的币种id //保存我们的币种id
.currencyCode(currencyDTO.getSystemCurrency()) .currencyCode(systemCurrency)
.memberId(member.getId()) .memberId(member.getId())
.gameCode(resultBean.getGameID()) .gameCode(resultBean.getGameID())
.gameType(PlatformType.CARD_GAME.getCode()) .gameType(PlatformType.CARD_GAME.getCode())

View File

@ -8,7 +8,6 @@ import com.ff.base.core.redis.RedisCache;
import com.ff.base.enums.*; import com.ff.base.enums.*;
import com.ff.base.exception.base.ApiException; import com.ff.base.exception.base.ApiException;
import com.ff.base.exception.base.BaseException; import com.ff.base.exception.base.BaseException;
import com.ff.base.system.service.ISysConfigService;
import com.ff.base.utils.DateUtils; import com.ff.base.utils.DateUtils;
import com.ff.base.utils.JsonUtil; import com.ff.base.utils.JsonUtil;
import com.ff.base.utils.sign.Md5Utils; import com.ff.base.utils.sign.Md5Utils;
@ -19,8 +18,9 @@ import com.ff.game.api.request.*;
import com.ff.game.api.xk.client.XKClient; import com.ff.game.api.xk.client.XKClient;
import com.ff.game.api.xk.dto.*; import com.ff.game.api.xk.dto.*;
import com.ff.game.domain.*; import com.ff.game.domain.*;
import com.ff.game.dto.GameSecretKeyCurrencyDTO; import com.ff.game.service.IGameBettingDetailsService;
import com.ff.game.service.*; import com.ff.game.service.IGameExchangeMoneyService;
import com.ff.game.service.IGameService;
import com.ff.member.domain.Member; import com.ff.member.domain.Member;
import com.ff.member.service.IMemberService; import com.ff.member.service.IMemberService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -47,49 +47,27 @@ import java.util.stream.Collectors;
@Slf4j @Slf4j
public class GamesXKServiceImpl implements IGamesService { public class GamesXKServiceImpl implements IGamesService {
@Resource
private ISysConfigService configService;
@Resource @Resource
private RedisCache redisCache; private RedisCache redisCache;
@Resource @Resource
private IGameExchangeMoneyService gameExchangeMoneyService; private IGameExchangeMoneyService gameExchangeMoneyService;
@Resource
private IGamePlatformService gamePlatformService;
@Resource @Resource
private IGameService gameService; private IGameService gameService;
@Resource @Resource
private IMemberService memberService; private IMemberService memberService;
@Resource
private IGameFreeRecordService gameFreeRecordService;
@Resource
private IGameSecretKeyService gameSecretKeyService;
@Resource
private IGameSecretKeyCurrencyService gameSecretKeyCurrencyService;
@Resource @Resource
private XKClient xkClient; private XKClient xkClient;
@Resource @Resource
private KeyConfig keyConfig; private KeyConfig keyConfig;
@Resource @Resource
private IGameBettingDetailsService gameBettingDetailsService; private IGameBettingDetailsService gameBettingDetailsService;
@Resource
private IGameNameService gameNameService;
/** /**
* *
@ -248,7 +226,7 @@ public class GamesXKServiceImpl implements IGamesService {
if (this.getIsSuccess(xkGamesDTO.getCode())) { if (this.getIsSuccess(xkGamesDTO.getCode())) {
for (XKGamesDTO.DataBean gamesDataDTO : xkGamesDTO.getData()) { for (XKGamesDTO.DataBean gamesDataDTO : xkGamesDTO.getData()) {
GamePlatform gamePlatform = GamePlatform.builder() /*GamePlatform gamePlatform = GamePlatform.builder()
.platformType(XKGameType.findSystemByCode(gamesDataDTO.getGameCategoryId())) .platformType(XKGameType.findSystemByCode(gamesDataDTO.getGameCategoryId()))
.platformCode(GamePlatforms.XK.getCode()) .platformCode(GamePlatforms.XK.getCode())
.build(); .build();
@ -261,9 +239,12 @@ public class GamesXKServiceImpl implements IGamesService {
gamePlatformService.insertGamePlatform(gamePlatform); gamePlatformService.insertGamePlatform(gamePlatform);
} else { } else {
gamePlatform = gamePlatforms.get(0); gamePlatform = gamePlatforms.get(0);
} }*/
Integer platformType = XKGameType.findSystemByCode(gamesDataDTO.getGameCategoryId());
Game game = Game.builder() Game game = Game.builder()
.platformId(gamePlatform.getId()) //.platformId(gamePlatform.getId())
.platformCode(GamePlatforms.XK.getCode())
.platformType(platformType)
.gameCode(String.valueOf(gamesDataDTO.getGameId())) .gameCode(String.valueOf(gamesDataDTO.getGameId()))
.build(); .build();
List<Game> games = gameService.selectGameList(game); List<Game> games = gameService.selectGameList(game);
@ -271,24 +252,30 @@ public class GamesXKServiceImpl implements IGamesService {
if (CollectionUtils.isEmpty(games)) { if (CollectionUtils.isEmpty(games)) {
game.setGameSourceType(String.valueOf(gamesDataDTO.getGameCategoryId())); game.setGameSourceType(String.valueOf(gamesDataDTO.getGameCategoryId()));
game.setFreespin(gamesDataDTO.isFreeSpin()); game.setFreespin(gamesDataDTO.isFreeSpin());
game.setSortNo(gameService.selectMaxSortNoByPlatformId(gamePlatform.getId()) + 1); game.setSortNo(gameService.selectMaxSortNo(platformType, GamePlatforms.XK.getCode()) + 1);
game.setPlatformCode(GamePlatforms.XK.getCode());
game.setPlatformType(platformType);
game.setGameName(gamesDataDTO.getName()); game.setGameName(gamesDataDTO.getName());
game.setCreateBy(Constants.SYSTEM); game.setCreateBy(Constants.SYSTEM);
List<NameInfo> nameInfos = new ArrayList<>();
nameInfos.add(new NameInfo(gamesDataDTO.getName(), "zh-CN"));
game.setNameInfo(nameInfos);
gameService.insertGame(game); gameService.insertGame(game);
} else { } else {
game = games.get(0); game = games.get(0);
} }
gamesDataDTO.setSystemGameId(game.getId()); gamesDataDTO.setSystemGameId(game.getId());
List<GameName> gameNames = gameNameService.selectGameNameList(GameName.builder().gameId(game.getId()).gameName(game.getGameName()).build()); /*List<GameName> gameNames = gameNameService.selectGameNameList(GameName.builder().gameId(game.getId()).gameName(game.getGameName()).build());
if (CollectionUtils.isEmpty(gameNames)){ if (CollectionUtils.isEmpty(gameNames)) {
gameNameService.insertGameName(GameName.builder() gameNameService.insertGameName(GameName.builder()
.gameId(game.getId()) .gameId(game.getId())
.gameName(game.getGameName()) .gameName(game.getGameName())
.langCode("zh-CN") .langCode("zh-CN")
.createBy(Constants.SYSTEM) .createBy(Constants.SYSTEM)
.build()); .build());
} }*/
} }
redisCache.deleteObject(CacheConstants.XK_GAMES); redisCache.deleteObject(CacheConstants.XK_GAMES);
@ -312,10 +299,10 @@ public class GamesXKServiceImpl implements IGamesService {
@Transactional @Transactional
public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) { public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) {
log.info("GamesXKServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO); log.info("GamesXKServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO);
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder() // GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(GamePlatforms.XK.getInfo()) // .platformCode(GamePlatforms.XK.getInfo())
.code(exchangeTransferMoneyRequestDTO.getAgentId()) // .code(exchangeTransferMoneyRequestDTO.getAgentId())
.build()); // .build());
Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount()); Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount());
String transactionId = GamePlatforms.XK.getCode() + IdUtils.simpleUUID(); String transactionId = GamePlatforms.XK.getCode() + IdUtils.simpleUUID();
@ -335,7 +322,7 @@ public class GamesXKServiceImpl implements IGamesService {
.quota(exchangeTransferMoneyRequestDTO.getQuota()) .quota(exchangeTransferMoneyRequestDTO.getQuota())
.balance(exchangeTransferMoneyRequestDTO.getAmount()) .balance(exchangeTransferMoneyRequestDTO.getAmount())
.exchangeType(exchangeTransferMoneyRequestDTO.getTransferType()) .exchangeType(exchangeTransferMoneyRequestDTO.getTransferType())
.currencyCode(currencyDTO.getSystemCurrency()) .currencyCode(exchangeTransferMoneyRequestDTO.getSystemCurrency())
.memberId(member.getId()) .memberId(member.getId())
.transactionId(transactionId) .transactionId(transactionId)
.platformCode(GamePlatforms.XK.getCode()) .platformCode(GamePlatforms.XK.getCode())
@ -395,7 +382,7 @@ public class GamesXKServiceImpl implements IGamesService {
*/ */
@Override @Override
public Boolean getBetRecordByTime(BetRecordByTimeDTO betRecordByTimeDTO) { public Boolean getBetRecordByTime(BetRecordByTimeDTO betRecordByTimeDTO) {
List<GameBettingDetails> gameBettingDetails = new ArrayList<>(); // List<GameBettingDetails> gameBettingDetails = new ArrayList<>();
//请求参数 //请求参数
log.info("GamesXKServiceImpl [getBetRecordByTime] 请求参数 {}", betRecordByTimeDTO); log.info("GamesXKServiceImpl [getBetRecordByTime] 请求参数 {}", betRecordByTimeDTO);
Map<String, Object> params = new LinkedHashMap<>(); Map<String, Object> params = new LinkedHashMap<>();
@ -414,7 +401,7 @@ public class GamesXKServiceImpl implements IGamesService {
if (this.getIsSuccess(xkBetRecordResponseDTO.getCode())) { if (this.getIsSuccess(xkBetRecordResponseDTO.getCode())) {
//数据组装 //数据组装
XKBetRecordResponseDTO.DataBean dataBean = xkBetRecordResponseDTO.getData(); XKBetRecordResponseDTO.DataBean dataBean = xkBetRecordResponseDTO.getData();
this.batchInsert(xkBetRecordResponseDTO); this.batchInsert(xkBetRecordResponseDTO, betRecordByTimeDTO);
//获取下一页数据 //获取下一页数据
while (!Objects.equals(dataBean.getCurrentPage(), dataBean.getTotalPages()) && dataBean.getTotalPages() > 0) { while (!Objects.equals(dataBean.getCurrentPage(), dataBean.getTotalPages()) && dataBean.getTotalPages() > 0) {
@ -432,7 +419,7 @@ public class GamesXKServiceImpl implements IGamesService {
params.put("key", key); params.put("key", key);
xkBetRecordResponseDTO = xkClient.getBetRecordByTime(params); xkBetRecordResponseDTO = xkClient.getBetRecordByTime(params);
dataBean = xkBetRecordResponseDTO.getData(); dataBean = xkBetRecordResponseDTO.getData();
this.batchInsert(xkBetRecordResponseDTO); this.batchInsert(xkBetRecordResponseDTO, betRecordByTimeDTO);
} }
@ -463,7 +450,7 @@ public class GamesXKServiceImpl implements IGamesService {
*/ */
@Override @Override
public Boolean createFreeSpin(CreateFreeSpinRequestDTO createFreeSpinRequest) { public Boolean createFreeSpin(CreateFreeSpinRequestDTO createFreeSpinRequest) {
throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode());
} }
/** /**
@ -474,7 +461,7 @@ public class GamesXKServiceImpl implements IGamesService {
*/ */
@Override @Override
public GetGameDetailResponseDTO getGameDetail(GetGameDetailRequestDTO getGameDetailRequestDTO) { public GetGameDetailResponseDTO getGameDetail(GetGameDetailRequestDTO getGameDetailRequestDTO) {
throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode());
} }
/** /**
@ -510,7 +497,7 @@ public class GamesXKServiceImpl implements IGamesService {
*/ */
@Override @Override
public Boolean kickMemberAll(KickMemberAllDTO kickMemberAllDTO) { public Boolean kickMemberAll(KickMemberAllDTO kickMemberAllDTO) {
throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode());
} }
/** /**
@ -521,7 +508,7 @@ public class GamesXKServiceImpl implements IGamesService {
*/ */
@Override @Override
public List<GameFreeRecord> getFreeSpinDashflow(GetFreeSpinDashflowRequestDTO getFreeSpinDashflowRequestDTO) { public List<GameFreeRecord> getFreeSpinDashflow(GetFreeSpinDashflowRequestDTO getFreeSpinDashflowRequestDTO) {
throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode());
} }
/** /**
@ -532,8 +519,9 @@ public class GamesXKServiceImpl implements IGamesService {
*/ */
@Override @Override
public Boolean cancelFreeSpin(CancelFreeSpinRequestDTO cancelFreeSpinRequestDTO) { public Boolean cancelFreeSpin(CancelFreeSpinRequestDTO cancelFreeSpinRequestDTO) {
throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode());
} }
/** /**
* *
* *
@ -546,20 +534,24 @@ public class GamesXKServiceImpl implements IGamesService {
} }
/** /**
* *
* *
* @param xkBetRecordResponseDTO xkdto * @param xkBetRecordResponseDTO xkdto
*/ */
private void batchInsert(XKBetRecordResponseDTO xkBetRecordResponseDTO) { private void batchInsert(XKBetRecordResponseDTO xkBetRecordResponseDTO, BetRecordByTimeDTO betRecordByTimeDTO) {
List<GameBettingDetails> gameBettingDetails = new ArrayList<>(); List<GameBettingDetails> gameBettingDetails = new ArrayList<>();
List<String> wagersIds = new ArrayList<>(); List<String> wagersIds = new ArrayList<>();
//数据组装 //数据组装
XKBetRecordResponseDTO.DataBean dataBean = xkBetRecordResponseDTO.getData(); XKBetRecordResponseDTO.DataBean dataBean = xkBetRecordResponseDTO.getData();
//数据转化 //数据转化
for (XKBetRecordResponseDTO.DataBean.ResultBean bean : dataBean.getResult()) { for (XKBetRecordResponseDTO.DataBean.ResultBean bean : dataBean.getResult()) {
GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder().data(bean).build()); GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder()
.platform(betRecordByTimeDTO.getVendor())
.systemCurrencyCode(betRecordByTimeDTO.getSystemCurrency())
.currencyCode(betRecordByTimeDTO.getCurrency())
.data(bean)
.build());
if (!ObjectUtils.isEmpty(bettingDetails)) { if (!ObjectUtils.isEmpty(bettingDetails)) {
bettingDetails.setId(IdUtil.getSnowflakeNextId()); bettingDetails.setId(IdUtil.getSnowflakeNextId());
gameBettingDetails.add(bettingDetails); gameBettingDetails.add(bettingDetails);
@ -568,7 +560,7 @@ public class GamesXKServiceImpl implements IGamesService {
} }
if (!CollectionUtils.isEmpty(gameBettingDetails)) { if (!CollectionUtils.isEmpty(gameBettingDetails)) {
//查询重复数据id //查询重复数据id
List<String> removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds,GamePlatforms.XK.getInfo()); List<String> removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds, GamePlatforms.XK.getInfo());
//用steam流清除list中与wagersIds集合相同的数据 //用steam流清除list中与wagersIds集合相同的数据
gameBettingDetails = gameBettingDetails.stream() gameBettingDetails = gameBettingDetails.stream()
.filter(detail -> !removeWagersIds.contains(detail.getWagersId())) .filter(detail -> !removeWagersIds.contains(detail.getWagersId()))
@ -591,10 +583,10 @@ public class GamesXKServiceImpl implements IGamesService {
//转化类 //转化类
XKBetRecordResponseDTO.DataBean.ResultBean resultBean = (XKBetRecordResponseDTO.DataBean.ResultBean) gamesDataBuildDTO.getData(); XKBetRecordResponseDTO.DataBean.ResultBean resultBean = (XKBetRecordResponseDTO.DataBean.ResultBean) gamesDataBuildDTO.getData();
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder() // GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(GamePlatforms.XK.getInfo()) // .platformCode(GamePlatforms.XK.getInfo())
.code(resultBean.getAgentId()) // .code(resultBean.getAgentId())
.build()); // .build());
Member member = memberService.selectMemberByGameAccount(resultBean.getAccount()); Member member = memberService.selectMemberByGameAccount(resultBean.getAccount());
if (ObjectUtils.isEmpty(member)) { if (ObjectUtils.isEmpty(member)) {
@ -614,7 +606,7 @@ public class GamesXKServiceImpl implements IGamesService {
GameBettingDetails gameBettingDetails = GameBettingDetails.builder() GameBettingDetails gameBettingDetails = GameBettingDetails.builder()
.tenantKey(member.getTenantKey()) .tenantKey(member.getTenantKey())
//保存我们的币种id //保存我们的币种id
.currencyCode(currencyDTO.getSystemCurrency()) .currencyCode(gamesDataBuildDTO.getSystemCurrencyCode())
.memberId(member.getId()) .memberId(member.getId())
.gameCode(resultBean.getGameId()) .gameCode(resultBean.getGameId())
.gameType(XKGameType.findSystemByCode(resultBean.getGameCategoryId())) .gameType(XKGameType.findSystemByCode(resultBean.getGameCategoryId()))

View File

@ -1,27 +1,11 @@
package com.ff.game.controller; package com.ff.game.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.ff.base.enums.GamePlatforms;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ff.base.annotation.Log;
import com.ff.base.core.controller.BaseController; import com.ff.base.core.controller.BaseController;
import com.ff.base.core.domain.AjaxResult; import com.ff.base.core.domain.AjaxResult;
import com.ff.base.enums.BusinessType; import com.ff.base.enums.GamePlatforms;
import com.ff.game.domain.GamePlatform; import org.springframework.web.bind.annotation.GetMapping;
import com.ff.game.service.IGamePlatformService; import org.springframework.web.bind.annotation.RequestMapping;
import com.ff.base.utils.poi.ExcelUtil; import org.springframework.web.bind.annotation.RestController;
import com.ff.base.core.page.TableDataInfo;
/** /**
* Controller * Controller
@ -32,19 +16,7 @@ import com.ff.base.core.page.TableDataInfo;
@RestController @RestController
@RequestMapping("/game/platform") @RequestMapping("/game/platform")
public class GamePlatformController extends BaseController { public class GamePlatformController extends BaseController {
@Autowired
private IGamePlatformService gamePlatformService;
/**
*
*/
@PreAuthorize("@ss.hasPermi('game:platform:list')")
@GetMapping("/list")
public TableDataInfo list(GamePlatform gamePlatform) {
startPage();
List<GamePlatform> list = gamePlatformService.selectGamePlatformList(gamePlatform);
return getDataTable(list);
}
/** /**
* *
@ -56,54 +28,4 @@ public class GamePlatformController extends BaseController {
return AjaxResult.success(GamePlatforms.getCodes()); return AjaxResult.success(GamePlatforms.getCodes());
} }
/**
*
*/
@PreAuthorize("@ss.hasPermi('game:platform:export')")
@Log(title = "平台管理", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, GamePlatform gamePlatform) {
List<GamePlatform> list = gamePlatformService.selectGamePlatformList(gamePlatform);
ExcelUtil<GamePlatform> util = new ExcelUtil<GamePlatform>(GamePlatform.class);
util.exportExcel(response, list, "平台管理数据");
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('game:platform:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id) {
return success(gamePlatformService.selectGamePlatformById(id));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('game:platform:add')")
@Log(title = "平台管理", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody GamePlatform gamePlatform) {
return toAjax(gamePlatformService.insertGamePlatform(gamePlatform));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('game:platform:edit')")
@Log(title = "平台管理", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody GamePlatform gamePlatform) {
return toAjax(gamePlatformService.updateGamePlatform(gamePlatform));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('game:platform:remove')")
@Log(title = "平台管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids) {
return toAjax(gamePlatformService.deleteGamePlatformByIds(ids));
}
} }

View File

@ -1,104 +0,0 @@
package com.ff.game.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ff.base.annotation.Log;
import com.ff.base.core.controller.BaseController;
import com.ff.base.core.domain.AjaxResult;
import com.ff.base.enums.BusinessType;
import com.ff.game.domain.GameSecretKey;
import com.ff.game.service.IGameSecretKeyService;
import com.ff.base.utils.poi.ExcelUtil;
import com.ff.base.core.page.TableDataInfo;
/**
* Controller
*
* @author shi
* @date 2025-02-10
*/
@RestController
@RequestMapping("/game/key")
public class GameSecretKeyController extends BaseController
{
@Autowired
private IGameSecretKeyService gameSecretKeyService;
/**
*
*/
@PreAuthorize("@ss.hasPermi('game:key:list')")
@GetMapping("/list")
public TableDataInfo list(GameSecretKey gameSecretKey)
{
startPage();
List<GameSecretKey> list = gameSecretKeyService.selectGameSecretKeyList(gameSecretKey);
return getDataTable(list);
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('game:key:export')")
@Log(title = "游戏平台密钥管理", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, GameSecretKey gameSecretKey)
{
List<GameSecretKey> list = gameSecretKeyService.selectGameSecretKeyList(gameSecretKey);
ExcelUtil<GameSecretKey> util = new ExcelUtil<GameSecretKey>(GameSecretKey.class);
util.exportExcel(response, list, "游戏平台密钥管理数据");
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('game:key:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return success(gameSecretKeyService.selectGameSecretKeyById(id));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('game:key:add')")
@Log(title = "游戏平台密钥管理", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody GameSecretKey gameSecretKey)
{
return toAjax(gameSecretKeyService.insertGameSecretKey(gameSecretKey));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('game:key:edit')")
@Log(title = "游戏平台密钥管理", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody GameSecretKey gameSecretKey)
{
return toAjax(gameSecretKeyService.updateGameSecretKey(gameSecretKey));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('game:key:remove')")
@Log(title = "游戏平台密钥管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(gameSecretKeyService.deleteGameSecretKeyByIds(ids));
}
}

View File

@ -1,11 +1,15 @@
package com.ff.game.domain; package com.ff.game.domain;
import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.HashMap; import java.util.HashMap;
/** /**
* key:
*
* @author cengy * @author cengy
*/ */
@Data
public class CurrencyInfo extends HashMap<String, String> implements Serializable { public class CurrencyInfo extends HashMap<String, String> implements Serializable {
} }

View File

@ -0,0 +1,20 @@
package com.ff.game.domain;
import lombok.Data;
import java.io.Serializable;
import java.util.Map;
/**
* @author cengy
*/
@Data
public class ExtInfo implements Serializable {
// 币种信息key为其它平台的币种idvalue为我们自己的币种
private Map<String, String> currency;
public String getOurCurrency(String currencyId) {
return currency == null ? null : currency.get(currencyId);
}
}

View File

@ -9,6 +9,8 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder; import lombok.experimental.SuperBuilder;
import java.util.List;
/** /**
* ff_game * ff_game
* *
@ -92,4 +94,5 @@ public class Game extends BaseEntity {
*/ */
private Integer platformType; private Integer platformType;
private List<NameInfo> nameInfo;
} }

View File

@ -67,8 +67,8 @@ public class GameBettingDetails extends BaseEntity
@Excel(name = "游戏名称") @Excel(name = "游戏名称")
private String gameName; private String gameName;
/** 注单状态 1: 赢 2: 输 3: 平局 */ /** 注单状态 1: 赢 2: 输 3: 平局 4 未知 */
@Excel(name = "注单状态 1: 赢 2: 输 3: 平局") @Excel(name = "注单状态 1: 赢 2: 输 3: 平局 4 未知")
private Integer gameStatus; private Integer gameStatus;
/** /**

View File

@ -1,50 +0,0 @@
package com.ff.game.domain;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.ff.base.annotation.Excel;
import com.ff.base.core.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* ff_game_name
*
* @author shi
* @date 2025-03-13
*/
@Data
@AllArgsConstructor
@SuperBuilder
@NoArgsConstructor
public class GameName extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* $column.columnComment
*/
private Long id;
/**
* id
*/
@JsonSerialize(using = ToStringSerializer.class)
@Excel(name = "游戏id", width = 30, dateFormat = "yyyy-MM-dd")
private Long gameId;
/**
*
*/
@Excel(name = "游戏名称")
private String gameName;
/**
*
*/
@Excel(name = "语言代码")
private String langCode;
}

View File

@ -1,58 +0,0 @@
package com.ff.game.domain;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.ff.base.annotation.Excel;
import com.ff.base.core.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* ff_game_platform
*
* @author shi
* @date 2025-02-10
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@SuperBuilder
public class GamePlatform extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键id */
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
/** 排序 */
@Excel(name = "排序")
private Integer sortNo;
/** 平台编码 */
@Excel(name = "平台编码")
private String platformCode;
/** 平台类型 ff_game_platform_type 字典 */
@Excel(name = "平台类型 ff_game_platform_type 字典")
private Integer platformType;
/** 平台名称 */
@Excel(name = "平台名称")
private String platformName;
/** 维护开关 维护状态 */
@Excel(name = "维护开关 维护状态 ")
private Boolean stopStatus;
/** 平台开关 平台开关状态 */
@Excel(name = "平台开关 平台开关状态 ")
private Boolean platformStatus;
}

View File

@ -1,50 +0,0 @@
package com.ff.game.domain;
import com.ff.base.annotation.Excel;
import com.ff.base.core.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* ff_game_secret_key
*
* @author shi
* @date 2025-03-13
*/
@Data
@AllArgsConstructor
@SuperBuilder
@NoArgsConstructor
public class GameSecretKey extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** $column.columnComment */
private Long id;
/** 平台 */
@Excel(name = "平台")
private String platform;
/**
*
*/
private String providerCode;
/**
*
*/
private String password;
/** 代码 */
@Excel(name = "代码")
private String code;
/** 密钥 */
@Excel(name = "密钥")
private String key;
}

View File

@ -1,55 +0,0 @@
package com.ff.game.domain;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.ff.base.annotation.Excel;
import com.ff.base.core.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* ff_game_secret_key_currency
*
* @author shi
* @date 2025-03-13
*/
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
public class GameSecretKeyCurrency extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* $column.columnComment
*/
private Long id;
/**
*
*/
@JsonSerialize(using = ToStringSerializer.class)
@Excel(name = "平台", width = 30, dateFormat = "yyyy-MM-dd")
private Long gameSecretKeyId;
/**
* id
*/
private String currencyId;
/**
*
*/
@Excel(name = "币种")
private String currency;
/**
*
*/
@Excel(name = "系统代码")
private String systemCurrency;
}

View File

@ -1,43 +0,0 @@
package com.ff.game.domain;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.ff.base.annotation.Excel;
import com.ff.base.core.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* ff_game_secret_key_lang
*
* @author shi
* @date 2025-03-13
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@SuperBuilder
public class GameSecretKeyLang extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** $column.columnComment */
private Long id;
/** 平台 */
@JsonSerialize(using = ToStringSerializer.class)
@Excel(name = "平台", width = 30, dateFormat = "yyyy-MM-dd")
private Long gameSecretKeyId;
/** 语言 */
@Excel(name = "语言")
private String lang;
/** 系统语种id */
@Excel(name = "系统语种id")
private String systemLangCode;
}

View File

@ -0,0 +1,20 @@
package com.ff.game.domain;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author cengy
*/
@Data
@AllArgsConstructor
@Builder
@NoArgsConstructor
public class NameInfo implements Serializable {
private String name;
private String lang;
}

View File

@ -1,9 +1,13 @@
package com.ff.game.domain; package com.ff.game.domain;
import com.ff.base.core.domain.BaseEntity; import com.ff.base.core.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.Getter;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Set;
/** /**
* @author cengy * @author cengy
@ -34,5 +38,45 @@ public class Platform extends BaseEntity {
private LangInfo langInfo; private LangInfo langInfo;
private CurrencyInfo currencyInfo; private CurrencyInfo currencyInfo;
private UrlInfo urlInfo; private UrlInfo urlInfo;
/**
* 0: 1:
*/
private Integer type;
private ExtInfo extInfo;
@Getter
@AllArgsConstructor
public enum Type {
/**
* 0: 1:
*/
SINGLE(0, "代理单币种"),
MULTI(1, "代理多币种");
private Integer code;
private String name;
}
public boolean isMultiAgent() {
return this.type == Type.MULTI.getCode();
}
/**
*
*
* @param currency
* @return {@link String }
*/
public String getOurCurrency(String currency) {
Set<Map.Entry<String, String>> entrySet= currencyInfo.entrySet();
for (Map.Entry<String, String> entry : entrySet) {
if (entry.getValue().equals(currency)) {
return entry.getKey();
}
}
return null;
}
} }

View File

@ -1,28 +0,0 @@
package com.ff.game.dto;
import com.ff.game.domain.GameName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
@Data
@AllArgsConstructor
@NoArgsConstructor
@SuperBuilder
public class GameNameDTO extends GameName {
/**
*
*/
private String platformCode;
/**
*
*/
private String defaultName;
/**
*
*/
private String gameCode;
}

View File

@ -1,51 +0,0 @@
package com.ff.game.dto;
import com.ff.game.domain.GameSecretKeyCurrency;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.List;
/**
* dto
*
* @author shi
* @date 2025/03/13
*/
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
public class GameSecretKeyCurrencyDTO extends GameSecretKeyCurrency {
/**
*
*/
private String platformCode;
/**
*
*/
private List<String> platformCodes;
/**
* API code
*/
private String code;
/**
* id
*/
private Long gameSecretKeyId;
/**
*
*/
private String key;
}

View File

@ -1,21 +0,0 @@
package com.ff.game.dto;
import com.ff.game.domain.GameSecretKey;
import lombok.Data;
import java.util.List;
/**
* dto
*
* @author shi
* @date 2025/03/12
*/
@Data
public class GameSecretKeyDTO extends GameSecretKey {
/**
*
*/
private List<String> platforms;
}

View File

@ -1,41 +0,0 @@
package com.ff.game.dto;
import com.ff.game.domain.GameSecretKeyLang;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* lang dto
*
* @author shi
* @date 2025/03/13
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@SuperBuilder
public class GameSecretKeyLangDTO extends GameSecretKeyLang {
/**
*
*/
private String platformCode;
/**
* API code
*/
private String code;
/**
* id
*/
private Long gameSecretKeyId;
/**
*
*/
private String key;
}

View File

@ -1,77 +1,77 @@
package com.ff.game.mapper; package com.ff.game.mapper;
import java.util.List;
import com.ff.api.response.GameResponse; import com.ff.api.response.GameResponse;
import com.ff.game.api.request.GameUniqueDTO; import com.ff.game.api.request.GameUniqueDTO;
import com.ff.game.domain.Game; import com.ff.game.domain.Game;
import com.ff.game.dto.GameDTO; import com.ff.game.dto.GameDTO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* Mapper * Mapper
* *
* @author shi * @author shi
* @date 2025-02-10 * @date 2025-02-10
*/ */
public interface GameMapper public interface GameMapper {
{
/** /**
* *
* *
* @param id * @param id
* @return * @return
*/ */
Game selectGameById(Long id); Game selectGameById(Long id);
/** /**
* *
* *
* @param game * @param game
* @return * @return
*/ */
List<Game> selectGameList(Game game); List<Game> selectGameList(Game game);
/** /**
* *
* *
* @param game * @param game
* @return * @return
*/ */
int insertGame(Game game); int insertGame(Game game);
/** /**
* *
* *
* @param game * @param game
* @return * @return
*/ */
int updateGame(Game game); int updateGame(Game game);
/** /**
* *
* *
* @param id * @param id
* @return * @return
*/ */
int deleteGameById(Long id); int deleteGameById(Long id);
/** /**
* *
* *
* @param ids * @param ids
* @return * @return
*/ */
int deleteGameByIds(Long[] ids); int deleteGameByIds(Long[] ids);
/** /**
* id * code
* *
* @param platformId id * @param platformType
* @return {@link Integer } * @param platformCode
* @return
*/ */
Integer selectMaxSortNoByPlatformId(Long platformId); Integer selectMaxSortNoBy(@Param("platformType") Integer platformType, @Param("platformCode") String platformCode);
/** /**
* *
@ -79,7 +79,7 @@ public interface GameMapper
* @param gameUniqueDTO dto * @param gameUniqueDTO dto
* @return {@link List }<{@link Game }> * @return {@link List }<{@link Game }>
*/ */
List<Game> selectGameUniqueList(GameUniqueDTO gameUniqueDTO); List<Game> selectGameUniqueList(GameUniqueDTO gameUniqueDTO);
/** /**
* *

View File

@ -1,72 +0,0 @@
package com.ff.game.mapper;
import com.ff.game.domain.GameName;
import com.ff.game.dto.GameDTO;
import com.ff.game.dto.GameNameDTO;
import java.util.List;
/**
* Mapper
*
* @author shi
* @date 2025-03-13
*/
public interface GameNameMapper
{
/**
*
*
* @param id
* @return
*/
GameName selectGameNameById(Long id);
/**
*
*
* @param gameName
* @return
*/
List<GameName> selectGameNameList(GameName gameName);
/**
*
*
* @param gameName
* @return
*/
int insertGameName(GameName gameName);
/**
*
*
* @param gameName
* @return
*/
int updateGameName(GameName gameName);
/**
*
*
* @param id
* @return
*/
int deleteGameNameById(Long id);
/**
*
*
* @param ids
* @return
*/
int deleteGameNameByIds(Long[] ids);
/**
*
*
* @param gameNameDTO dto
* @return {@link List }<{@link GameDTO }>
*/
List<GameDTO> selectGameNameDTOList(GameNameDTO gameNameDTO);
}

View File

@ -1,70 +0,0 @@
package com.ff.game.mapper;
import java.util.List;
import com.ff.game.domain.GamePlatform;
/**
* Mapper
*
* @author shi
* @date 2025-02-10
*/
public interface GamePlatformMapper
{
/**
*
*
* @param id
* @return
*/
GamePlatform selectGamePlatformById(Long id);
/**
*
*
* @param gamePlatform
* @return
*/
List<GamePlatform> selectGamePlatformList(GamePlatform gamePlatform);
/**
*
*
* @param gamePlatform
* @return
*/
int insertGamePlatform(GamePlatform gamePlatform);
/**
*
*
* @param gamePlatform
* @return
*/
int updateGamePlatform(GamePlatform gamePlatform);
/**
*
*
* @param id
* @return
*/
int deleteGamePlatformById(Long id);
/**
*
*
* @param ids
* @return
*/
int deleteGamePlatformByIds(Long[] ids);
/**
*
*
* @return {@link Integer }
*/
Integer selectMaxSortNo();
}

View File

@ -1,79 +0,0 @@
package com.ff.game.mapper;
import java.util.List;
import com.ff.game.domain.GameSecretKeyCurrency;
import com.ff.game.dto.GameSecretKeyCurrencyDTO;
/**
* Mapper
*
* @author shi
* @date 2025-03-13
*/
public interface GameSecretKeyCurrencyMapper
{
/**
*
*
* @param id
* @return
*/
GameSecretKeyCurrency selectGameSecretKeyCurrencyById(Long id);
/**
*
*
* @param gameSecretKeyCurrency
* @return
*/
List<GameSecretKeyCurrency> selectGameSecretKeyCurrencyList(GameSecretKeyCurrency gameSecretKeyCurrency);
/**
*
*
* @param gameSecretKeyCurrency
* @return
*/
int insertGameSecretKeyCurrency(GameSecretKeyCurrency gameSecretKeyCurrency);
/**
*
*
* @param gameSecretKeyCurrency
* @return
*/
int updateGameSecretKeyCurrency(GameSecretKeyCurrency gameSecretKeyCurrency);
/**
*
*
* @param id
* @return
*/
int deleteGameSecretKeyCurrencyById(Long id);
/**
*
*
* @param ids
* @return
*/
int deleteGameSecretKeyCurrencyByIds(Long[] ids);
/**
* dto
*
* @param gameSecretKeyCurrencyDTO dto
* @return {@link GameSecretKeyCurrencyDTO }
*/
GameSecretKeyCurrencyDTO findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO gameSecretKeyCurrencyDTO);
/**
*
*
* @param gameSecretKeyCurrencyDTO dto
* @return {@link List }<{@link GameSecretKeyCurrencyDTO }>
*/
List<GameSecretKeyCurrencyDTO> findByGameSecretKeyCurrencyDTOList(GameSecretKeyCurrencyDTO gameSecretKeyCurrencyDTO);
}

View File

@ -1,71 +0,0 @@
package com.ff.game.mapper;
import java.util.List;
import com.ff.game.domain.GameSecretKeyLang;
import com.ff.game.dto.GameSecretKeyCurrencyDTO;
import com.ff.game.dto.GameSecretKeyLangDTO;
/**
* Mapper
*
* @author shi
* @date 2025-03-13
*/
public interface GameSecretKeyLangMapper
{
/**
*
*
* @param id
* @return
*/
GameSecretKeyLang selectGameSecretKeyLangById(Long id);
/**
*
*
* @param gameSecretKeyLang
* @return
*/
List<GameSecretKeyLang> selectGameSecretKeyLangList(GameSecretKeyLang gameSecretKeyLang);
/**
*
*
* @param gameSecretKeyLang
* @return
*/
int insertGameSecretKeyLang(GameSecretKeyLang gameSecretKeyLang);
/**
*
*
* @param gameSecretKeyLang
* @return
*/
int updateGameSecretKeyLang(GameSecretKeyLang gameSecretKeyLang);
/**
*
*
* @param id
* @return
*/
int deleteGameSecretKeyLangById(Long id);
/**
*
*
* @param ids
* @return
*/
int deleteGameSecretKeyLangByIds(Long[] ids);
/**
* dto
*
* @param gameSecretKeyLangDTO dto
* @return {@link GameSecretKeyLangDTO }
*/
GameSecretKeyLangDTO findGameSecretKeyLangDTO(GameSecretKeyLangDTO gameSecretKeyLangDTO);
}

View File

@ -1,72 +0,0 @@
package com.ff.game.mapper;
import java.util.List;
import com.ff.game.domain.GameSecretKey;
/**
* Mapper
*
* @author shi
* @date 2025-03-13
*/
public interface GameSecretKeyMapper
{
/**
*
*
* @param id
* @return
*/
GameSecretKey selectGameSecretKeyById(Long id);
/**
*
*
* @param gameSecretKey
* @return
*/
List<GameSecretKey> selectGameSecretKeyList(GameSecretKey gameSecretKey);
/**
*
*
* @param code
* @return {@link GameSecretKey }
*/
GameSecretKey selectGameSecretKeyByCode(String code);
/**
*
*
* @param gameSecretKey
* @return
*/
int insertGameSecretKey(GameSecretKey gameSecretKey);
/**
*
*
* @param gameSecretKey
* @return
*/
int updateGameSecretKey(GameSecretKey gameSecretKey);
/**
*
*
* @param id
* @return
*/
int deleteGameSecretKeyById(Long id);
/**
*
*
* @param ids
* @return
*/
int deleteGameSecretKeyByIds(Long[] ids);
}

View File

@ -1,74 +0,0 @@
package com.ff.game.service;
import com.ff.game.domain.GameName;
import com.ff.game.dto.GameDTO;
import com.ff.game.dto.GameNameDTO;
import java.util.List;
/**
* Service
*
* @author shi
* @date 2025-03-13
*/
public interface IGameNameService
{
/**
*
*
* @param id
* @return
*/
GameName selectGameNameById(Long id);
/**
*
*
* @param gameName
* @return
*/
List<GameName> selectGameNameList(GameName gameName);
/**
*
*
* @param gameName
* @return
*/
int insertGameName(GameName gameName);
/**
*
*
* @param gameName
* @return
*/
int updateGameName(GameName gameName);
/**
*
*
* @param ids
* @return
*/
int deleteGameNameByIds(Long[] ids);
/**
*
*
* @param id
* @return
*/
int deleteGameNameById(Long id);
/**
*
*
* @param gameNameDTO dto
* @return {@link List }<{@link GameDTO }>
*/
List<GameDTO> selectGameNameDTOList(GameNameDTO gameNameDTO);
}

View File

@ -1,71 +0,0 @@
package com.ff.game.service;
import java.util.List;
import com.ff.game.domain.GamePlatform;
/**
* Service
*
* @author shi
* @date 2025-02-10
*/
public interface IGamePlatformService
{
/**
*
*
* @param id
* @return
*/
GamePlatform selectGamePlatformById(Long id);
/**
*
*
* @param gamePlatform
* @return
*/
List<GamePlatform> selectGamePlatformList(GamePlatform gamePlatform);
/**
*
*
* @param gamePlatform
* @return
*/
int insertGamePlatform(GamePlatform gamePlatform);
/**
*
*
* @param gamePlatform
* @return
*/
int updateGamePlatform(GamePlatform gamePlatform);
/**
*
*
* @param ids
* @return
*/
int deleteGamePlatformByIds(Long[] ids);
/**
*
*
* @param id
* @return
*/
int deleteGamePlatformById(Long id);
/**
*
*
* @return {@link Integer }
*/
Integer selectMaxSortNo();
}

View File

@ -1,86 +0,0 @@
package com.ff.game.service;
import java.util.List;
import com.ff.game.domain.GameName;
import com.ff.game.domain.GameSecretKey;
import com.ff.game.domain.GameSecretKeyCurrency;
import com.ff.game.dto.GameSecretKeyCurrencyDTO;
import com.ff.game.dto.GameSecretKeyDTO;
/**
* Service
*
* @author shi
* @date 2025-03-13
*/
public interface IGameSecretKeyCurrencyService
{
/**
*
*
* @param id
* @return
*/
GameSecretKeyCurrency selectGameSecretKeyCurrencyById(Long id);
/**
*
*
* @param gameSecretKeyCurrency
* @return
*/
List<GameSecretKeyCurrency> selectGameSecretKeyCurrencyList(GameSecretKeyCurrency gameSecretKeyCurrency);
/**
*
*
* @param gameSecretKeyCurrency
* @return
*/
int insertGameSecretKeyCurrency(GameSecretKeyCurrency gameSecretKeyCurrency);
/**
*
*
* @param gameSecretKeyCurrency
* @return
*/
int updateGameSecretKeyCurrency(GameSecretKeyCurrency gameSecretKeyCurrency);
/**
*
*
* @param ids
* @return
*/
int deleteGameSecretKeyCurrencyByIds(Long[] ids);
/**
*
*
* @param id
* @return
*/
int deleteGameSecretKeyCurrencyById(Long id);
/**
* dto
*
* @param gameSecretKeyCurrencyDTO dto
* @return {@link GameSecretKeyCurrencyDTO }
*/
GameSecretKeyCurrencyDTO findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO gameSecretKeyCurrencyDTO);
/**
*
*
* @param gameSecretKeyCurrencyDTO dto
* @return {@link List }<{@link GameSecretKeyCurrencyDTO }>
*/
List<GameSecretKeyCurrencyDTO> findByGameSecretKeyCurrencyDTOList(GameSecretKeyCurrencyDTO gameSecretKeyCurrencyDTO);
}

View File

@ -1,72 +0,0 @@
package com.ff.game.service;
import java.util.List;
import com.ff.game.domain.GameSecretKeyLang;
import com.ff.game.dto.GameSecretKeyCurrencyDTO;
import com.ff.game.dto.GameSecretKeyDTO;
import com.ff.game.dto.GameSecretKeyLangDTO;
/**
* Service
*
* @author shi
* @date 2025-03-13
*/
public interface IGameSecretKeyLangService {
/**
*
*
* @param id
* @return
*/
GameSecretKeyLang selectGameSecretKeyLangById(Long id);
/**
*
*
* @param gameSecretKeyLang
* @return
*/
List<GameSecretKeyLang> selectGameSecretKeyLangList(GameSecretKeyLang gameSecretKeyLang);
/**
*
*
* @param gameSecretKeyLang
* @return
*/
int insertGameSecretKeyLang(GameSecretKeyLang gameSecretKeyLang);
/**
*
*
* @param gameSecretKeyLang
* @return
*/
int updateGameSecretKeyLang(GameSecretKeyLang gameSecretKeyLang);
/**
*
*
* @param ids
* @return
*/
int deleteGameSecretKeyLangByIds(Long[] ids);
/**
*
*
* @param id
* @return
*/
int deleteGameSecretKeyLangById(Long id);
/**
* dto
*
* @param gameSecretKeyLangDTO dto
* @return {@link GameSecretKeyLangDTO }
*/
GameSecretKeyLangDTO findGameSecretKeyLangDTO(GameSecretKeyLangDTO gameSecretKeyLangDTO);
}

View File

@ -1,72 +0,0 @@
package com.ff.game.service;
import java.util.List;
import com.ff.game.domain.Game;
import com.ff.game.domain.GameSecretKey;
/**
* Service
*
* @author shi
* @date 2025-03-13
*/
public interface IGameSecretKeyService
{
/**
*
*
* @param id
* @return
*/
GameSecretKey selectGameSecretKeyById(Long id);
/**
*
*
* @param code
* @return {@link GameSecretKey }
*/
GameSecretKey selectGameSecretKeyByCode(String code);
/**
*
*
* @param gameSecretKey
* @return
*/
List<GameSecretKey> selectGameSecretKeyList(GameSecretKey gameSecretKey);
/**
*
*
* @param gameSecretKey
* @return
*/
int insertGameSecretKey(GameSecretKey gameSecretKey);
/**
*
*
* @param gameSecretKey
* @return
*/
int updateGameSecretKey(GameSecretKey gameSecretKey);
/**
*
*
* @param ids
* @return
*/
int deleteGameSecretKeyByIds(Long[] ids);
/**
*
*
* @param id
* @return
*/
int deleteGameSecretKeyById(Long id);
}

View File

@ -1,36 +1,34 @@
package com.ff.game.service; package com.ff.game.service;
import java.util.List;
import com.dtflys.forest.annotation.Body;
import com.ff.api.response.GameResponse; import com.ff.api.response.GameResponse;
import com.ff.game.api.request.GameUniqueDTO; import com.ff.game.api.request.GameUniqueDTO;
import com.ff.game.domain.Game; import com.ff.game.domain.Game;
import com.ff.game.dto.GameDTO; import com.ff.game.dto.GameDTO;
import java.util.List;
/** /**
* Service * Service
* *
* @author shi * @author shi
* @date 2025-02-10 * @date 2025-02-10
*/ */
public interface IGameService public interface IGameService {
{
/** /**
* *
* *
* @param id * @param id
* @return * @return
*/ */
Game selectGameById(Long id); Game selectGameById(Long id);
/** /**
* *
* *
* @param game * @param game
* @return * @return
*/ */
List<Game> selectGameList(Game game); List<Game> selectGameList(Game game);
/** /**
@ -43,43 +41,42 @@ public interface IGameService
/** /**
* *
* *
* @param game * @param game
* @return * @return
*/ */
int insertGame(Game game); int insertGame(Game game);
/** /**
* *
* *
* @param game * @param game
* @return * @return
*/ */
int updateGame(Game game); int updateGame(Game game);
/** /**
* *
* *
* @param ids * @param ids
* @return * @return
*/ */
int deleteGameByIds(Long[] ids); int deleteGameByIds(Long[] ids);
/** /**
* *
* *
* @param id * @param id
* @return * @return
*/ */
int deleteGameById(Long id); int deleteGameById(Long id);
/** /**
* id * id
* *
* @param platformId id
* @return {@link Integer } * @return {@link Integer }
*/ */
Integer selectMaxSortNoByPlatformId(Long platformId); Integer selectMaxSortNo(Integer platformType, String platformCode);
/** /**
* *
@ -96,14 +93,5 @@ public interface IGameService
*/ */
List<GameResponse> selectGameResponseList(); List<GameResponse> selectGameResponseList();
/**
*
*
* @param startTime
* @param endTime
* @param platformCode
*/
void insertGameBettingDetails(Long startTime,Long endTime,String platformCode);
} }

View File

@ -1,110 +0,0 @@
package com.ff.game.service.impl;
import java.util.Collections;
import java.util.List;
import com.ff.base.utils.DateUtils;
import com.ff.game.domain.GameName;
import com.ff.game.dto.GameDTO;
import com.ff.game.dto.GameNameDTO;
import com.ff.game.mapper.GameNameMapper;
import com.ff.game.service.IGameNameService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import cn.hutool.core.util.IdUtil;
/**
* Service
*
* @author shi
* @date 2025-03-13
*/
@Service
public class GameNameServiceImpl implements IGameNameService {
@Autowired
private GameNameMapper gameNameMapper;
/**
*
*
* @param id
* @return
*/
@Override
public GameName selectGameNameById(Long id) {
return gameNameMapper.selectGameNameById(id);
}
/**
*
*
* @param gameName
* @return
*/
@Override
public List<GameName> selectGameNameList(GameName gameName) {
return gameNameMapper.selectGameNameList(gameName);
}
/**
*
*
* @param gameName
* @return
*/
@Override
public int insertGameName(GameName gameName) {
if (gameName.getId() == null) {
gameName.setId(IdUtil.getSnowflakeNextId());
}
gameName.setCreateTime(DateUtils.getNowDate());
return gameNameMapper.insertGameName(gameName);
}
/**
*
*
* @param gameName
* @return
*/
@Override
public int updateGameName(GameName gameName) {
gameName.setUpdateTime(DateUtils.getNowDate());
return gameNameMapper.updateGameName(gameName);
}
/**
*
*
* @param ids
* @return
*/
@Override
public int deleteGameNameByIds(Long[] ids) {
return gameNameMapper.deleteGameNameByIds(ids);
}
/**
*
*
* @param id
* @return
*/
@Override
public int deleteGameNameById(Long id) {
return gameNameMapper.deleteGameNameById(id);
}
/**
*
*
* @param gameNameDTO dto
* @return {@link List }<{@link GameDTO }>
*/
@Override
public List<GameDTO> selectGameNameDTOList(GameNameDTO gameNameDTO) {
return gameNameMapper.selectGameNameDTOList(gameNameDTO);
}
}

View File

@ -1,107 +0,0 @@
package com.ff.game.service.impl;
import java.util.List;
import cn.hutool.core.util.IdUtil;
import com.ff.base.utils.DateUtils;
import com.ff.base.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ff.game.mapper.GamePlatformMapper;
import com.ff.game.domain.GamePlatform;
import com.ff.game.service.IGamePlatformService;
import org.springframework.util.ObjectUtils;
/**
* Service
*
* @author shi
* @date 2025-02-10
*/
@Service
public class GamePlatformServiceImpl implements IGamePlatformService {
@Autowired
private GamePlatformMapper gamePlatformMapper;
/**
*
*
* @param id
* @return
*/
@Override
public GamePlatform selectGamePlatformById(Long id) {
return gamePlatformMapper.selectGamePlatformById(id);
}
/**
*
*
* @param gamePlatform
* @return
*/
@Override
public List<GamePlatform> selectGamePlatformList(GamePlatform gamePlatform) {
return gamePlatformMapper.selectGamePlatformList(gamePlatform);
}
/**
*
*
* @param gamePlatform
* @return
*/
@Override
public int insertGamePlatform(GamePlatform gamePlatform) {
if (ObjectUtils.isEmpty(gamePlatform.getId())) {
gamePlatform.setId(IdUtil.getSnowflakeNextId());
}
gamePlatform.setCreateTime(DateUtils.getNowDate());
return gamePlatformMapper.insertGamePlatform(gamePlatform);
}
/**
*
*
* @param gamePlatform
* @return
*/
@Override
public int updateGamePlatform(GamePlatform gamePlatform) {
gamePlatform.setUpdateTime(DateUtils.getNowDate());
return gamePlatformMapper.updateGamePlatform(gamePlatform);
}
/**
*
*
* @param ids
* @return
*/
@Override
public int deleteGamePlatformByIds(Long[] ids) {
return gamePlatformMapper.deleteGamePlatformByIds(ids);
}
/**
*
*
* @param id
* @return
*/
@Override
public int deleteGamePlatformById(Long id) {
return gamePlatformMapper.deleteGamePlatformById(id);
}
/**
*
*
* @return {@link Integer }
*/
@Override
public Integer selectMaxSortNo() {
return gamePlatformMapper.selectMaxSortNo();
}
}

View File

@ -1,123 +0,0 @@
package com.ff.game.service.impl;
import java.util.Collections;
import java.util.List;
import com.ff.base.utils.DateUtils;
import com.ff.game.dto.GameSecretKeyCurrencyDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ff.game.mapper.GameSecretKeyCurrencyMapper;
import com.ff.game.domain.GameSecretKeyCurrency;
import com.ff.game.service.IGameSecretKeyCurrencyService;
import cn.hutool.core.util.IdUtil;
/**
* Service
*
* @author shi
* @date 2025-03-13
*/
@Service
public class GameSecretKeyCurrencyServiceImpl implements IGameSecretKeyCurrencyService
{
@Autowired
private GameSecretKeyCurrencyMapper gameSecretKeyCurrencyMapper;
/**
*
*
* @param id
* @return
*/
@Override
public GameSecretKeyCurrency selectGameSecretKeyCurrencyById(Long id)
{
return gameSecretKeyCurrencyMapper.selectGameSecretKeyCurrencyById(id);
}
/**
*
*
* @param gameSecretKeyCurrency
* @return
*/
@Override
public List<GameSecretKeyCurrency> selectGameSecretKeyCurrencyList(GameSecretKeyCurrency gameSecretKeyCurrency)
{
return gameSecretKeyCurrencyMapper.selectGameSecretKeyCurrencyList(gameSecretKeyCurrency);
}
/**
*
*
* @param gameSecretKeyCurrency
* @return
*/
@Override
public int insertGameSecretKeyCurrency(GameSecretKeyCurrency gameSecretKeyCurrency)
{
gameSecretKeyCurrency.setId(IdUtil.getSnowflakeNextId());
gameSecretKeyCurrency.setCreateTime(DateUtils.getNowDate());
return gameSecretKeyCurrencyMapper.insertGameSecretKeyCurrency(gameSecretKeyCurrency);
}
/**
*
*
* @param gameSecretKeyCurrency
* @return
*/
@Override
public int updateGameSecretKeyCurrency(GameSecretKeyCurrency gameSecretKeyCurrency)
{
gameSecretKeyCurrency.setUpdateTime(DateUtils.getNowDate());
return gameSecretKeyCurrencyMapper.updateGameSecretKeyCurrency(gameSecretKeyCurrency);
}
/**
*
*
* @param ids
* @return
*/
@Override
public int deleteGameSecretKeyCurrencyByIds(Long[] ids)
{
return gameSecretKeyCurrencyMapper.deleteGameSecretKeyCurrencyByIds(ids);
}
/**
*
*
* @param id
* @return
*/
@Override
public int deleteGameSecretKeyCurrencyById(Long id)
{
return gameSecretKeyCurrencyMapper.deleteGameSecretKeyCurrencyById(id);
}
/**
* dto
*
* @param gameSecretKeyCurrencyDTO dto
* @return {@link GameSecretKeyCurrency }
*/
@Override
public GameSecretKeyCurrencyDTO findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO gameSecretKeyCurrencyDTO) {
return gameSecretKeyCurrencyMapper.findByGameSecretKeyCurrencyDTO(gameSecretKeyCurrencyDTO);
}
/**
*
*
* @param gameSecretKeyCurrencyDTO dto
* @return {@link List }<{@link GameSecretKeyCurrencyDTO }>
*/
@Override
public List<GameSecretKeyCurrencyDTO> findByGameSecretKeyCurrencyDTOList(GameSecretKeyCurrencyDTO gameSecretKeyCurrencyDTO) {
return gameSecretKeyCurrencyMapper.findByGameSecretKeyCurrencyDTOList(gameSecretKeyCurrencyDTO);
}
}

View File

@ -1,106 +0,0 @@
package com.ff.game.service.impl;
import java.util.List;
import com.ff.base.utils.DateUtils;
import com.ff.game.dto.GameSecretKeyCurrencyDTO;
import com.ff.game.dto.GameSecretKeyLangDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ff.game.mapper.GameSecretKeyLangMapper;
import com.ff.game.domain.GameSecretKeyLang;
import com.ff.game.service.IGameSecretKeyLangService;
import cn.hutool.core.util.IdUtil;
/**
* Service
*
* @author shi
* @date 2025-03-13
*/
@Service
public class GameSecretKeyLangServiceImpl implements IGameSecretKeyLangService {
@Autowired
private GameSecretKeyLangMapper gameSecretKeyLangMapper;
/**
*
*
* @param id
* @return
*/
@Override
public GameSecretKeyLang selectGameSecretKeyLangById(Long id) {
return gameSecretKeyLangMapper.selectGameSecretKeyLangById(id);
}
/**
*
*
* @param gameSecretKeyLang
* @return
*/
@Override
public List<GameSecretKeyLang> selectGameSecretKeyLangList(GameSecretKeyLang gameSecretKeyLang) {
return gameSecretKeyLangMapper.selectGameSecretKeyLangList(gameSecretKeyLang);
}
/**
*
*
* @param gameSecretKeyLang
* @return
*/
@Override
public int insertGameSecretKeyLang(GameSecretKeyLang gameSecretKeyLang) {
gameSecretKeyLang.setId(IdUtil.getSnowflakeNextId());
gameSecretKeyLang.setCreateTime(DateUtils.getNowDate());
return gameSecretKeyLangMapper.insertGameSecretKeyLang(gameSecretKeyLang);
}
/**
*
*
* @param gameSecretKeyLang
* @return
*/
@Override
public int updateGameSecretKeyLang(GameSecretKeyLang gameSecretKeyLang) {
gameSecretKeyLang.setUpdateTime(DateUtils.getNowDate());
return gameSecretKeyLangMapper.updateGameSecretKeyLang(gameSecretKeyLang);
}
/**
*
*
* @param ids
* @return
*/
@Override
public int deleteGameSecretKeyLangByIds(Long[] ids) {
return gameSecretKeyLangMapper.deleteGameSecretKeyLangByIds(ids);
}
/**
*
*
* @param id
* @return
*/
@Override
public int deleteGameSecretKeyLangById(Long id) {
return gameSecretKeyLangMapper.deleteGameSecretKeyLangById(id);
}
/**
* dto
*
* @param gameSecretKeyLangDTO dto
* @return {@link GameSecretKeyLangDTO }
*/
@Override
public GameSecretKeyLangDTO findGameSecretKeyLangDTO(GameSecretKeyLangDTO gameSecretKeyLangDTO) {
return gameSecretKeyLangMapper.findGameSecretKeyLangDTO(gameSecretKeyLangDTO);
}
}

View File

@ -1,110 +0,0 @@
package com.ff.game.service.impl;
import java.util.List;
import com.ff.base.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ff.game.mapper.GameSecretKeyMapper;
import com.ff.game.domain.GameSecretKey;
import com.ff.game.service.IGameSecretKeyService;
import cn.hutool.core.util.IdUtil;
/**
* Service
*
* @author shi
* @date 2025-03-13
*/
@Service
public class GameSecretKeyServiceImpl implements IGameSecretKeyService
{
@Autowired
private GameSecretKeyMapper gameSecretKeyMapper;
/**
*
*
* @param id
* @return
*/
@Override
public GameSecretKey selectGameSecretKeyById(Long id)
{
return gameSecretKeyMapper.selectGameSecretKeyById(id);
}
/**
*
*
* @param code
* @return {@link GameSecretKey }
*/
@Override
public GameSecretKey selectGameSecretKeyByCode(String code) {
return gameSecretKeyMapper.selectGameSecretKeyByCode(code);
}
/**
*
*
* @param gameSecretKey
* @return
*/
@Override
public List<GameSecretKey> selectGameSecretKeyList(GameSecretKey gameSecretKey)
{
return gameSecretKeyMapper.selectGameSecretKeyList(gameSecretKey);
}
/**
*
*
* @param gameSecretKey
* @return
*/
@Override
public int insertGameSecretKey(GameSecretKey gameSecretKey)
{
gameSecretKey.setId(IdUtil.getSnowflakeNextId());
gameSecretKey.setCreateTime(DateUtils.getNowDate());
return gameSecretKeyMapper.insertGameSecretKey(gameSecretKey);
}
/**
*
*
* @param gameSecretKey
* @return
*/
@Override
public int updateGameSecretKey(GameSecretKey gameSecretKey)
{
gameSecretKey.setUpdateTime(DateUtils.getNowDate());
return gameSecretKeyMapper.updateGameSecretKey(gameSecretKey);
}
/**
*
*
* @param ids
* @return
*/
@Override
public int deleteGameSecretKeyByIds(Long[] ids)
{
return gameSecretKeyMapper.deleteGameSecretKeyByIds(ids);
}
/**
*
*
* @param id
* @return
*/
@Override
public int deleteGameSecretKeyById(Long id)
{
return gameSecretKeyMapper.deleteGameSecretKeyById(id);
}
}

View File

@ -1,29 +1,22 @@
package com.ff.game.service.impl; package com.ff.game.service.impl;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import com.ff.api.response.GameResponse; import com.ff.api.response.GameResponse;
import com.ff.base.constant.ConfigConstants;
import com.ff.base.utils.DateUtils; import com.ff.base.utils.DateUtils;
import com.ff.game.api.IGamesService; import com.ff.game.api.IGamesService;
import com.ff.game.api.request.BetRecordByTimeDTO;
import com.ff.game.api.request.GameUniqueDTO; import com.ff.game.api.request.GameUniqueDTO;
import com.ff.game.api.request.GamesBaseRequestDTO; import com.ff.game.domain.Game;
import com.ff.game.domain.GameSecretKey;
import com.ff.game.dto.GameDTO; import com.ff.game.dto.GameDTO;
import com.ff.game.service.IGameSecretKeyService; import com.ff.game.mapper.GameMapper;
import com.ff.game.service.IGameService;
import com.ff.member.service.IMemberService; import com.ff.member.service.IMemberService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.ff.game.mapper.GameMapper;
import com.ff.game.domain.Game;
import com.ff.game.service.IGameService;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/** /**
* Service * Service
@ -34,16 +27,13 @@ import javax.annotation.Resource;
@Service @Service
@Slf4j @Slf4j
public class GameServiceImpl implements IGameService { public class GameServiceImpl implements IGameService {
@Autowired @Autowired
private GameMapper gameMapper; private GameMapper gameMapper;
@Resource @Resource
private IMemberService memberService; private IMemberService memberService;
@Resource
private IGameSecretKeyService gameSecretKeyService;
@Autowired @Autowired
private Map<String, IGamesService> gamesService; private Map<String, IGamesService> gamesService;
@ -129,19 +119,6 @@ public class GameServiceImpl implements IGameService {
return gameMapper.deleteGameById(id); return gameMapper.deleteGameById(id);
} }
/**
* id
*
* @param platformId id
* @return {@link Integer }
*/
@Override
public Integer selectMaxSortNoByPlatformId(Long platformId) {
return gameMapper.selectMaxSortNoByPlatformId(platformId);
}
/** /**
* *
* *
@ -163,35 +140,9 @@ public class GameServiceImpl implements IGameService {
return gameMapper.selectGameResponseList(); return gameMapper.selectGameResponseList();
} }
/**
*
*
* @param startTime
* @param endTime
* @param platformCode
*/
@Override @Override
public void insertGameBettingDetails(Long startTime, Long endTime, String platformCode) { public Integer selectMaxSortNo(Integer platformType, String platformCode) {
List<GameSecretKey> gameSecretKeys = gameSecretKeyService.selectGameSecretKeyList(GameSecretKey.builder().platform(platformCode).build()); return gameMapper.selectMaxSortNoBy(platformType, platformCode);
for (GameSecretKey gameSecretKey : gameSecretKeys) {
try {
gamesService.get(platformCode).getGameList(GamesBaseRequestDTO.builder()
.agentId(gameSecretKey.getCode())
.agentKey(gameSecretKey.getKey())
.build());
BetRecordByTimeDTO betRecordByTimeDTO = new BetRecordByTimeDTO();
betRecordByTimeDTO.setGamePlatform(gameSecretKey.getPlatform());
betRecordByTimeDTO.setStartTime(startTime);
betRecordByTimeDTO.setEndTime(endTime);
betRecordByTimeDTO.setPage(1);
betRecordByTimeDTO.setPageLimit(1000);
betRecordByTimeDTO.setAgentId(gameSecretKey.getCode());
betRecordByTimeDTO.setAgentKey(gameSecretKey.getKey());
gamesService.get(platformCode).getBetRecordByHistoryTime(betRecordByTimeDTO);
} catch (Exception e) {
log.error("查询 平台 {} 投注记录失败,错误信息 {}", gameSecretKey.getCode(), e);
}
}
} }

View File

@ -1,43 +1,30 @@
package com.ff.quartz.task; package com.ff.quartz.task;
import com.ff.base.constant.Constants; import com.ff.base.constant.Constants;
import com.ff.base.core.redis.RedisCache;
import com.ff.base.datasource.DynamicDataSourceContextHolder;
import com.ff.base.enums.GamePlatforms; import com.ff.base.enums.GamePlatforms;
import com.ff.base.enums.NGPlatforms;
import com.ff.base.enums.PlatformType;
import com.ff.base.enums.StatusType; import com.ff.base.enums.StatusType;
import com.ff.base.utils.DateUtils; import com.ff.base.utils.DateUtils;
import com.ff.base.utils.StringUtils;
import com.ff.game.api.IGamesService; import com.ff.game.api.IGamesService;
import com.ff.game.api.ng.client.NGClient; import com.ff.game.api.ng.client.NGClient;
import com.ff.game.api.ng.dto.ApiExchangeTransferStatusResponseDTO;
import com.ff.game.api.ng.dto.ApiNGResponseDTO;
import com.ff.game.api.request.BetRecordByTimeDTO; import com.ff.game.api.request.BetRecordByTimeDTO;
import com.ff.game.api.request.ExchangeTransferStatusRequestDTO; import com.ff.game.api.request.ExchangeTransferStatusRequestDTO;
import com.ff.game.api.request.GamesBaseRequestDTO; import com.ff.game.api.request.GamesBaseRequestDTO;
import com.ff.game.api.request.GetFreeSpinDashflowRequestDTO; import com.ff.game.api.request.GetFreeSpinDashflowRequestDTO;
import com.ff.game.domain.GameExchangeMoney; import com.ff.game.domain.GameExchangeMoney;
import com.ff.game.domain.GameSecretKey; import com.ff.game.domain.KeyInfo;
import com.ff.game.dto.GameSecretKeyCurrencyDTO; import com.ff.game.domain.Platform;
import com.ff.game.dto.GameSecretKeyDTO; import com.ff.game.service.IGameExchangeMoneyService;
import com.ff.game.service.*; import com.ff.game.service.IPlatformService;
import com.ff.member.domain.Member; import com.ff.member.domain.Member;
import com.ff.member.service.IMemberService; import com.ff.member.service.IMemberService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.scheduling.annotation.AsyncConfigurationSelector;
import org.springframework.security.core.parameters.P;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.sql.DataSource; import java.util.List;
import javax.xml.crypto.dsig.keyinfo.PGPData; import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/** /**
@ -50,242 +37,213 @@ import java.util.stream.Collectors;
@Component("gameTask") @Component("gameTask")
public class GameTask { public class GameTask {
@Autowired @Autowired
private Map<String, IGamesService> gamesService; private Map<String, IGamesService> gamesService;
@Resource
private IGameSecretKeyService gameSecretKeyService;
@Resource
private IGamePlatformService gamePlatformService;
@Resource @Resource
private NGClient ngClient; private NGClient ngClient;
@Resource @Resource
private IGameExchangeMoneyService gameExchangeMoneyService; private IGameExchangeMoneyService gameExchangeMoneyService;
@Resource
private IGameSecretKeyCurrencyService gameSecretKeyCurrencyService;
@Resource @Resource
private IMemberService memberService; private IMemberService memberService;
@Resource @Resource
private RedisCache redisCache; private IPlatformService platformService;
@Resource
private IGameService gameService;
/** /**
* *
*/ */
public void syncGameList() {
public void insertGameBettingDetails(Integer backTime) { for (GamePlatforms gamePlatform : GamePlatforms.values()) {
String platformCode = gamePlatform.getCode();
//捞取指定分钟前的数据 try {
Long startTime = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), backTime); syncGameList(platformCode);
Long endTime = DateUtils.getNowDate(); } catch (Exception e) {
log.error("同步游戏列表失败platformCode:{}", platformCode, e);
for (String gameKey : gamesService.keySet()) {
String platformCode = gameKey.replace(Constants.SERVICE, "");
//特殊的平台跳过
if (NGPlatforms.exists(platformCode) || GamePlatforms.FC.getInfo().equals(platformCode)) {
continue;
} }
}
}
List<GameSecretKey> gameSecretKeys = gameSecretKeyService.selectGameSecretKeyList(GameSecretKey.builder().platform(platformCode).build()); public void syncGameList(String platformCode) {
for (GameSecretKey gameSecretKey : gameSecretKeys) {
try { Platform platform = platformService.get(platformCode);
gamesService.get(gameKey).getGameList(GamesBaseRequestDTO.builder() if (null == platform) {
.agentId(gameSecretKey.getCode()) return;
.agentKey(gameSecretKey.getKey()) }
List<KeyInfo> keyData = platform.getKeyInfo();
for (KeyInfo keyInfo : keyData) {
gamesService.get(platformCode + Constants.SERVICE)
.getGameList(GamesBaseRequestDTO.builder()
.agentId(keyInfo.getCode())
.agentKey(keyInfo.getKey())
.keyInfo(keyInfo)
.vendor(platform)
.build()); .build());
BetRecordByTimeDTO betRecordByTimeDTO = new BetRecordByTimeDTO(); break;
betRecordByTimeDTO.setGamePlatform(gameSecretKey.getPlatform()); }
betRecordByTimeDTO.setStartTime(startTime); }
betRecordByTimeDTO.setEndTime(endTime);
betRecordByTimeDTO.setPage(1); /**
betRecordByTimeDTO.setPageLimit(1000); *
betRecordByTimeDTO.setAgentId(gameSecretKey.getCode()); *
betRecordByTimeDTO.setAgentKey(gameSecretKey.getKey()); * @param platformCode
gamesService.get(gameKey).getBetRecordByTime(betRecordByTimeDTO); * @param backTimeMin
} catch (Exception e) { */
log.error("查询 币种 {} 投注记录失败,错误信息 {}", gameSecretKey.getCode(), e); public void syncRealtimeBetRecord(String platformCode, Integer backTimeMin) {
} //捞取指定分钟前的数据
Long startTime = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), backTimeMin);
Long endTime = DateUtils.getNowDate();
Platform platform = platformService.get(platformCode);
if (null == platform) {
return;
}
List<KeyInfo> keyData = platform.getKeyInfo();
for (KeyInfo keyInfo : keyData) {
try {
BetRecordByTimeDTO betRecordByTimeDTO = new BetRecordByTimeDTO();
betRecordByTimeDTO.setStartTime(startTime);
betRecordByTimeDTO.setEndTime(endTime);
betRecordByTimeDTO.setPage(1);
betRecordByTimeDTO.setPageLimit(1000);
betRecordByTimeDTO.setAgentId(keyInfo.getCode());
betRecordByTimeDTO.setAgentKey(keyInfo.getKey());
betRecordByTimeDTO.setKeyInfo(keyInfo);
betRecordByTimeDTO.setVendor(platform);
betRecordByTimeDTO.setSystemCurrency(keyInfo.getCurrency());
betRecordByTimeDTO.setCurrency(platform.getCurrencyInfo().get(keyInfo.getCurrency()));
gamesService.get(platformCode + Constants.SERVICE).getBetRecordByTime(betRecordByTimeDTO);
} catch (Exception e) {
log.error("同步平台投注记录失败platformCode:{}", platformCode, e);
} }
if (platform.isMultiAgent()) {
} break;
}
/**
* cfbetting
*/
public void insertGameCFBettingDetails(Integer backTime) {
try {
//捞取指定分钟前的数据
Long startTime = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), backTime);
Long endTime = DateUtils.getNowDate();
for (String gameKey : gamesService.keySet()) {
String platformCode = gameKey.replace(Constants.SERVICE, "");
//不是特殊的平台跳过
if (!GamePlatforms.FC.getInfo().equals(platformCode)) {
continue;
}
List<GameSecretKey> gameSecretKeys = gameSecretKeyService.selectGameSecretKeyList(GameSecretKey.builder().platform(platformCode).build());
for (GameSecretKey gameSecretKey : gameSecretKeys) {
try {
gamesService.get(gameKey).getGameList(GamesBaseRequestDTO.builder()
.agentId(gameSecretKey.getCode())
.agentKey(gameSecretKey.getKey())
.build());
BetRecordByTimeDTO betRecordByTimeDTO = new BetRecordByTimeDTO();
betRecordByTimeDTO.setGamePlatform(gameSecretKey.getPlatform());
betRecordByTimeDTO.setStartTime(startTime);
betRecordByTimeDTO.setEndTime(endTime);
betRecordByTimeDTO.setPage(1);
betRecordByTimeDTO.setPageLimit(1000);
betRecordByTimeDTO.setAgentId(gameSecretKey.getCode());
betRecordByTimeDTO.setAgentKey(gameSecretKey.getKey());
gamesService.get(gameKey).getBetRecordByTime(betRecordByTimeDTO);
} catch (Exception e) {
log.error("查询 平台 {} 投注记录失败,错误信息 {}", gameSecretKey.getCode(), e);
}
}
} }
} catch (Exception e) {
log.error("查询 FC 投注记录失败,错误信息 {}", e);
} }
}
/**
* FC
*
* @param backTime
*/
public void insertFCHistoryGameBettingDetails(Integer backTime) {
Long startTime = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), backTime);
Long endTime = DateUtils.getNowDate();
//捞取指定分钟前的数据
gameService.insertGameBettingDetails(startTime, endTime, GamePlatforms.FC.getInfo());
}
/**
* AE
*
* @param backTime
*/
public void insertAEHistoryGameBettingDetails(Integer backTime) {
Long startTime = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), backTime);
Long endTime = DateUtils.getNowDate();
//捞取指定分钟前的数据
gameService.insertGameBettingDetails(startTime, endTime, GamePlatforms.AE.getInfo());
} }
/** /**
* PGX *
* *
* @param backTime * @param platformCode
* @param backTimeMin
*/ */
public void insertPGXHistoryGameBettingDetails(Integer backTime) { public void syncHistoryBetRecord(String platformCode, Integer backTimeMin) {
Long startTime = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), backTime);
Long endTime = DateUtils.getNowDate();
//捞取指定分钟前的数据
gameService.insertGameBettingDetails(startTime, endTime, GamePlatforms.PGX.getInfo());
}
/**
* MT
*
* @param backTime
*/
public void insertMTHistoryGameBettingDetails(Integer backTime) {
Long startTime = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), backTime);
Long endTime = DateUtils.getNowDate();
//捞取指定分钟前的数据 //捞取指定分钟前的数据
gameService.insertGameBettingDetails(startTime, endTime, GamePlatforms.MT.getCode()); Long startTime = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), backTimeMin);
Long endTime = DateUtils.getNowDate();
}
/**
* ngbetting
*/
public void insertGameNGBettingDetails(Integer backTime) {
try {
//捞取指定分钟前的数据
Long startTime = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), backTime);
Long endTime = DateUtils.getNowDate();
BetRecordByTimeDTO betRecordByTimeDTO = new BetRecordByTimeDTO();
betRecordByTimeDTO.setStartTime(startTime);
betRecordByTimeDTO.setEndTime(endTime);
gamesService.get(NGPlatforms.PG.getPlatform() + Constants.SERVICE).getBetRecordByTime(betRecordByTimeDTO);
} catch (Exception e) {
log.error("查询 NG 投注记录失败,错误信息 {}", e);
Platform platform = platformService.get(platformCode);
if (null == platform) {
return;
} }
List<KeyInfo> keyData = platform.getKeyInfo();
} for (KeyInfo keyInfo : keyData) {
try {
BetRecordByTimeDTO betRecordByTimeDTO = new BetRecordByTimeDTO();
betRecordByTimeDTO.setStartTime(startTime);
betRecordByTimeDTO.setEndTime(endTime);
betRecordByTimeDTO.setPage(1);
betRecordByTimeDTO.setPageLimit(1000);
betRecordByTimeDTO.setAgentId(keyInfo.getCode());
betRecordByTimeDTO.setAgentKey(keyInfo.getKey());
betRecordByTimeDTO.setKeyInfo(keyInfo);
betRecordByTimeDTO.setVendor(platform);
betRecordByTimeDTO.setSystemCurrency(keyInfo.getCurrency());
betRecordByTimeDTO.setCurrency(platform.getCurrencyInfo().get(keyInfo.getCurrency()));
/** gamesService.get(platformCode + Constants.SERVICE).getBetRecordByHistoryTime(betRecordByTimeDTO);
* } catch (Exception e) {
*/ log.error("同步平台投注记录失败platformCode:{}", platformCode, e);
public void insertFreeSpinDashflow() { }
Long startTime = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), -70); if (platform.isMultiAgent()) {
for (String gameKey : gamesService.keySet()) { break;
List<GameSecretKey> gameSecretKeys = gameSecretKeyService.selectGameSecretKeyList(GameSecretKey.builder().platform(gameKey.replace(Constants.SERVICE, "")).build());
for (GameSecretKey gameSecretKey : gameSecretKeys) {
try {
GetFreeSpinDashflowRequestDTO getFreeSpinDashflowRequestDTO = new GetFreeSpinDashflowRequestDTO();
getFreeSpinDashflowRequestDTO.setStartTime(startTime);
getFreeSpinDashflowRequestDTO.setAgentId(gameSecretKey.getCode());
getFreeSpinDashflowRequestDTO.setAgentKey(gameSecretKey.getKey());
gamesService.get(gameKey).getFreeSpinDashflow(getFreeSpinDashflowRequestDTO);
} catch (Exception e) {
log.error("查询 币种 {} 免费游戏投注记录失败,错误信息 {}", gameSecretKey.getCode(), e.getMessage());
}
} }
} }
} }
/**
*
*/
public void syncFreeBetRecord(String platformCode, Integer backTime) {
// 捞取指定分钟前的数据
Long startTime = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), backTime);
Platform platform = platformService.get(platformCode);
if (null == platform) {
return;
}
List<KeyInfo> keyData = platform.getKeyInfo();
for (KeyInfo keyInfo : keyData) {
try {
GetFreeSpinDashflowRequestDTO getFreeSpinDashflowRequestDTO = new GetFreeSpinDashflowRequestDTO();
getFreeSpinDashflowRequestDTO.setStartTime(startTime);
getFreeSpinDashflowRequestDTO.setAgentId(keyInfo.getCode());
getFreeSpinDashflowRequestDTO.setAgentKey(keyInfo.getKey());
getFreeSpinDashflowRequestDTO.setVendor(platform);
getFreeSpinDashflowRequestDTO.setKeyInfo(keyInfo);
gamesService.get(platformCode + Constants.SERVICE).getFreeSpinDashflow(getFreeSpinDashflowRequestDTO);
} catch (Exception e) {
log.error("免费游戏投注记录失败platformCode:{}", platformCode, e);
}
if (platform.isMultiAgent()) {
break;
}
}
}
public void updateGameExchangeMoney() { public void updateGameExchangeMoney() {
List<GameExchangeMoney> gameExchangeMoneyList = gameExchangeMoneyService.selectGameExchangeMoneyList(GameExchangeMoney.builder().status(StatusType.IN_PROGRESS.getValue()).build()); List<GameExchangeMoney> gameExchangeMoneyList = gameExchangeMoneyService.selectGameExchangeMoneyList(GameExchangeMoney.builder().status(StatusType.IN_PROGRESS.getValue()).build());
for (GameExchangeMoney exchangeMoney : gameExchangeMoneyList) { for (GameExchangeMoney exchangeMoney : gameExchangeMoneyList) {
try { try {
GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder() // GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(exchangeMoney.getPlatformCode()) // .platformCode(exchangeMoney.getPlatformCode())
.systemCurrency(exchangeMoney.getCurrencyCode()).build()); // .systemCurrency(exchangeMoney.getCurrencyCode()).build());
Platform platform = platformService.get(exchangeMoney.getPlatformCode());
if (null == platform) {
log.error("平台不存在platformCode:{}", exchangeMoney.getPlatformCode());
continue;
}
List<KeyInfo> keyInfos = platform.getKeyInfo();
KeyInfo keyInfo = null;
for (KeyInfo keyData : keyInfos) {
if (keyData.getCurrency().equalsIgnoreCase(exchangeMoney.getCurrencyCode())) {
keyInfo = keyData;
break;
}
}
if (null == keyInfo) {
log.error("平台不存在currencyCode:{}", exchangeMoney.getCurrencyCode());
continue;
}
String targetCurrency = platform.getCurrencyInfo().get(exchangeMoney.getCurrencyCode());
if (StringUtils.isEmpty(targetCurrency)) {
log.error("平台不存在currencyCode:{}", exchangeMoney.getCurrencyCode());
continue;
}
Member member = memberService.selectMemberById(exchangeMoney.getMemberId()); Member member = memberService.selectMemberById(exchangeMoney.getMemberId());
ExchangeTransferStatusRequestDTO exchangeTransferStatusRequestDTO = new ExchangeTransferStatusRequestDTO(); ExchangeTransferStatusRequestDTO exchangeTransferStatusRequestDTO = new ExchangeTransferStatusRequestDTO();
exchangeTransferStatusRequestDTO.setAccount(member.getGameAccount()); exchangeTransferStatusRequestDTO.setAccount(member.getGameAccount());
exchangeTransferStatusRequestDTO.setCurrency(gameSecretKey.getCurrency()); exchangeTransferStatusRequestDTO.setCurrency(targetCurrency);
exchangeTransferStatusRequestDTO.setOrderId(exchangeMoney.getTransactionId()); exchangeTransferStatusRequestDTO.setOrderId(exchangeMoney.getTransactionId());
exchangeTransferStatusRequestDTO.setAgentId(gameSecretKey.getCode()); exchangeTransferStatusRequestDTO.setAgentId(keyInfo.getCode());
exchangeTransferStatusRequestDTO.setAgentKey(gameSecretKey.getKey()); exchangeTransferStatusRequestDTO.setAgentKey(keyInfo.getKey());
exchangeTransferStatusRequestDTO.setGameExchangeMoneyId(exchangeMoney.getId()); exchangeTransferStatusRequestDTO.setGameExchangeMoneyId(exchangeMoney.getId());
exchangeTransferStatusRequestDTO.setVendor(platform);
exchangeTransferStatusRequestDTO.setKeyInfo(keyInfo);
exchangeTransferStatusRequestDTO.setSystemCurrency(exchangeMoney.getCurrencyCode());
gamesService.get(exchangeMoney.getPlatformCode() + Constants.SERVICE).exchangeTransferStatus(exchangeTransferStatusRequestDTO); gamesService.get(exchangeMoney.getPlatformCode() + Constants.SERVICE).exchangeTransferStatus(exchangeTransferStatusRequestDTO);
} catch (Exception e) { } catch (Exception e) {
log.error("查询 更新交易记录失败,错误信息 {}", e); log.error("查询 更新交易记录失败,错误信息 {}", e);

View File

@ -12,6 +12,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="ingress" column="ingress" /> <result property="ingress" column="ingress" />
<result property="gameSourceType" column="game_source_type" /> <result property="gameSourceType" column="game_source_type" />
<result property="gameName" column="game_name" /> <result property="gameName" column="game_name" />
<result property="nameInfo" column="name_info" typeHandler="com.ff.base.handler.JsonListHandler" javaType="com.ff.game.domain.NameInfo" />
<result property="freespin" column="freespin" /> <result property="freespin" column="freespin" />
<result property="demoStatus" column="demo_status" /> <result property="demoStatus" column="demo_status" />
<result property="stopStatus" column="stop_status" /> <result property="stopStatus" column="stop_status" />
@ -40,6 +41,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="freespin != null "> and freespin = #{freespin}</if> <if test="freespin != null "> and freespin = #{freespin}</if>
<if test="demoStatus != null "> and demo_status = #{demoStatus}</if> <if test="demoStatus != null "> and demo_status = #{demoStatus}</if>
<if test="stopStatus != null "> and stop_status = #{stopStatus}</if> <if test="stopStatus != null "> and stop_status = #{stopStatus}</if>
<if test="platformCode != null "> and platform_code = #{platformCode}</if>
<if test="platformType != null "> and platform_type = #{platformType}</if>
</where> </where>
</select> </select>
@ -161,6 +165,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where platform_id = #{platformId} where platform_id = #{platformId}
</select> </select>
<select id="selectMaxSortNoBy" resultType="java.lang.Integer">
select ifnull(max(sort_no), 0)
from ff_game
where platform_type = #{platformType} and platform_code = #{platformCode}
</select>
<resultMap id="GameResponseResultMap" type="com.ff.api.response.GameResponse"> <resultMap id="GameResponseResultMap" type="com.ff.api.response.GameResponse">
<result property="id" column="id"/> <result property="id" column="id"/>
<result property="gameName" column="game_name"/> <result property="gameName" column="game_name"/>

View File

@ -1,124 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ff.game.mapper.GameNameMapper">
<resultMap type="GameName" id="GameNameResult">
<result property="id" column="id" />
<result property="gameId" column="game_id" />
<result property="gameName" column="game_name" />
<result property="langCode" column="lang_code" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
</resultMap>
<resultMap type="com.ff.game.dto.GameNameDTO" id="GameNameDTOResult">
<result property="id" column="id" />
<result property="gameId" column="game_id" />
<result property="gameName" column="game_name" />
<result property="langCode" column="lang_code" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="defaultName" column="default_name" />
<result property="gameCode" column="game_code" />
</resultMap>
<sql id="selectGameNameVo">
select id, game_id, game_name, lang_code, create_by, create_time, update_by, update_time from ff_game_name
</sql>
<select id="selectGameNameList" parameterType="GameName" resultMap="GameNameResult">
<include refid="selectGameNameVo"/>
<where>
<if test="gameId != null "> and game_id = #{gameId}</if>
<if test="gameName != null and gameName != ''"> and game_name = #{gameName}</if>
<if test="langCode != null and langCode != ''"> and lang_code = #{langCode}</if>
</where>
</select>
<select id="selectGameNameDTOList" parameterType="com.ff.game.dto.GameNameDTO" resultMap="GameNameDTOResult">
select gn.id,
gn.game_id,
gn.game_name,
gn.lang_code,
gn.create_by,
gn.create_time,
gn.update_by,
g.game_code,
gn.update_time,
g.game_name as default_name
from ff_game_name gn
inner join ff_game g on g.id = gn.game_id
inner join ff_game_platform gp on gp.id = g.platform_id
<where>
<if test="platformCode != null and platformCode != ''"> and gp.platform_code = #{platformCode}</if>
<if test="gameId != null "> and gn.game_id = #{gameId}</if>
<if test="gameName != null and gameName != ''"> and gn.game_name = #{gameName}</if>
<if test="langCode != null and langCode != ''"> and gn.lang_code =#{langCode}</if>
</where>
</select>
<select id="selectGameNameById" parameterType="Long" resultMap="GameNameResult">
<include refid="selectGameNameVo"/>
where id = #{id}
</select>
<insert id="insertGameName" parameterType="GameName">
insert into ff_game_name
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">id,</if>
<if test="gameId != null">game_id,</if>
<if test="gameName != null">game_name,</if>
<if test="langCode != null">lang_code,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">#{id},</if>
<if test="gameId != null">#{gameId},</if>
<if test="gameName != null">#{gameName},</if>
<if test="langCode != null">#{langCode},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
</trim>
</insert>
<update id="updateGameName" parameterType="GameName">
update ff_game_name
<trim prefix="SET" suffixOverrides=",">
<if test="gameId != null">game_id = #{gameId},</if>
<if test="gameName != null">game_name = #{gameName},</if>
<if test="langCode != null">lang_code = #{langCode},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteGameNameById" parameterType="Long">
delete from ff_game_name where id = #{id}
</delete>
<delete id="deleteGameNameByIds" parameterType="String">
delete from ff_game_name where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>

View File

@ -1,99 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ff.game.mapper.GamePlatformMapper">
<resultMap type="GamePlatform" id="GamePlatformResult">
<result property="id" column="id" />
<result property="sortNo" column="sort_no" />
<result property="platformCode" column="platform_code" />
<result property="platformType" column="platform_type" />
<result property="platformName" column="platform_name" />
<result property="stopStatus" column="stop_status" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
</resultMap>
<sql id="selectGamePlatformVo">
select id, sort_no, platform_code, platform_type, platform_name, stop_status, create_by, create_time, update_by, update_time from ff_game_platform
</sql>
<select id="selectGamePlatformList" parameterType="GamePlatform" resultMap="GamePlatformResult">
<include refid="selectGamePlatformVo"/>
<where>
<if test="sortNo != null "> and sort_no = #{sortNo}</if>
<if test="platformCode != null and platformCode != ''"> and platform_code = #{platformCode}</if>
<if test="platformType != null "> and platform_type = #{platformType}</if>
<if test="platformName != null and platformName != ''"> and platform_name like concat('%', #{platformName}, '%')</if>
<if test="stopStatus != null "> and stop_status = #{stopStatus}</if>
</where>
</select>
<select id="selectGamePlatformById" parameterType="Long" resultMap="GamePlatformResult">
<include refid="selectGamePlatformVo"/>
where id = #{id}
</select>
<insert id="insertGamePlatform" parameterType="GamePlatform" useGeneratedKeys="true" keyProperty="id">
insert into ff_game_platform
<trim prefix="(" suffix=")" suffixOverrides=","><if test="id != null">id,</if>
<if test="sortNo != null">sort_no,</if>
<if test="platformCode != null">platform_code,</if>
<if test="platformType != null">platform_type,</if>
<if test="platformName != null">platform_name,</if>
<if test="stopStatus != null">stop_status,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <if test="id != null">#{id},</if>
<if test="sortNo != null">#{sortNo},</if>
<if test="platformCode != null">#{platformCode},</if>
<if test="platformType != null">#{platformType},</if>
<if test="platformName != null">#{platformName},</if>
<if test="stopStatus != null">#{stopStatus},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
</trim>
</insert>
<update id="updateGamePlatform" parameterType="GamePlatform">
update ff_game_platform
<trim prefix="SET" suffixOverrides=",">
<if test="sortNo != null">sort_no = #{sortNo},</if>
<if test="platformCode != null">platform_code = #{platformCode},</if>
<if test="platformType != null">platform_type = #{platformType},</if>
<if test="platformName != null">platform_name = #{platformName},</if>
<if test="stopStatus != null">stop_status = #{stopStatus},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteGamePlatformById" parameterType="Long">
delete from ff_game_platform where id = #{id}
</delete>
<delete id="deleteGamePlatformByIds" parameterType="String">
delete from ff_game_platform where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<select id="selectMaxSortNo" resultType="java.lang.Integer">
select ifnull(max(sort_no),0)
from ff_game_platform
</select>
</mapper>

View File

@ -1,141 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ff.game.mapper.GameSecretKeyCurrencyMapper">
<resultMap type="GameSecretKeyCurrency" id="GameSecretKeyCurrencyResult">
<result property="id" column="id" />
<result property="gameSecretKeyId" column="game_secret_key_id" />
<result property="currencyId" column="currency_id" />
<result property="currency" column="currency" />
<result property="systemCurrency" column="system_currency" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
</resultMap>
<resultMap type="com.ff.game.dto.GameSecretKeyCurrencyDTO" id="GameSecretKeyCurrencyDTOResult">
<result property="id" column="id" />
<result property="gameSecretKeyId" column="game_secret_key_id" />
<result property="currencyId" column="currency_id" />
<result property="currency" column="currency" />
<result property="systemCurrency" column="system_currency" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="code" column="code" />
<result property="key" column="key" />
<result property="platformCode" column="platform_code" />
</resultMap>
<sql id="selectGameSecretKeyCurrencyVo">
select id,currency_id, game_secret_key_id, currency, system_currency, create_by, create_time, update_by, update_time from ff_game_secret_key_currency
</sql>
<select id="selectGameSecretKeyCurrencyList" parameterType="GameSecretKeyCurrency" resultMap="GameSecretKeyCurrencyResult">
<include refid="selectGameSecretKeyCurrencyVo"/>
<where>
<if test="gameSecretKeyId != null "> and game_secret_key_id = #{gameSecretKeyId}</if>
<if test="currency != null and currency != ''"> and currency = #{currency}</if>
<if test="systemCurrency != null and systemCurrency != ''"> and system_currency = #{systemCurrency}</if>
</where>
</select>
<select id="selectGameSecretKeyCurrencyById" parameterType="Long" resultMap="GameSecretKeyCurrencyResult">
<include refid="selectGameSecretKeyCurrencyVo"/>
where id = #{id}
</select>
<insert id="insertGameSecretKeyCurrency" parameterType="GameSecretKeyCurrency">
insert into ff_game_secret_key_currency
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">id,</if>
<if test="gameSecretKeyId != null">game_secret_key_id,</if>
<if test="currencyId != null">currency_id,</if>
<if test="currency != null">currency,</if>
<if test="systemCurrency != null and systemCurrency != ''">system_currency,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">#{id},</if>
<if test="gameSecretKeyId != null">#{gameSecretKeyId},</if>
<if test="currencyId != null">#{currencyId},</if>
<if test="currency != null">#{currency},</if>
<if test="systemCurrency != null and systemCurrency != ''">#{systemCurrency},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
</trim>
</insert>
<update id="updateGameSecretKeyCurrency" parameterType="GameSecretKeyCurrency">
update ff_game_secret_key_currency
<trim prefix="SET" suffixOverrides=",">
<if test="gameSecretKeyId != null">game_secret_key_id = #{gameSecretKeyId},</if>
<if test="currencyId != null">currency_id = #{currencyId},</if>
<if test="currency != null">currency = #{currency},</if>
<if test="systemCurrency != null and systemCurrency != ''">system_currency = #{systemCurrency},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteGameSecretKeyCurrencyById" parameterType="Long">
delete from ff_game_secret_key_currency where id = #{id}
</delete>
<delete id="deleteGameSecretKeyCurrencyByIds" parameterType="String">
delete from ff_game_secret_key_currency where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<select id="findByGameSecretKeyCurrencyDTO" parameterType="com.ff.game.dto.GameSecretKeyCurrencyDTO" resultMap="GameSecretKeyCurrencyDTOResult">
select gskc.currency, gskc.system_currency,gskc.game_secret_key_id,gsk.code ,gsk.`key`,gsk.platform,gskc.currency_id as platform_code
from ff_game_secret_key gsk
inner join ff_game_secret_key_currency gskc on gsk.id = gskc.game_secret_key_id
<where>
<if test="currency != null and currency != ''"> and gskc.currency = #{currency}</if>
<if test="systemCurrency != null and systemCurrency != ''"> and gskc.system_currency = #{systemCurrency}</if>
<if test="platformCode != null and platformCode != ''"> and gsk.platform = #{platformCode}</if>
<if test="code != null and code != ''"> and gsk.code = #{code}</if>
<if test="platformCodes != null and platformCodes.size() > 0">
and gsk.platform
<foreach collection="platformCodes" item="platformCode" open=" in (" separator="," close=")">
#{platformCode}
</foreach>
</if>
<if test="currencyId != null "> and gskc.currency_id = #{currencyId}</if>
</where>
limit 1
</select>
<select id="findByGameSecretKeyCurrencyDTOList" parameterType="com.ff.game.dto.GameSecretKeyCurrencyDTO" resultMap="GameSecretKeyCurrencyDTOResult">
select gskc.currency, gskc.system_currency,gskc.game_secret_key_id,gsk.code ,gsk.`key`,gsk.platform,gskc.currency_id as platform_code
from ff_game_secret_key gsk
inner join ff_game_secret_key_currency gskc on gsk.id = gskc.game_secret_key_id
<where>
<if test="currency != null and currency != ''"> and gskc.currency = #{currency}</if>
<if test="systemCurrency != null and systemCurrency != ''"> and gskc.system_currency = #{systemCurrency}</if>
<if test="platformCode != null and platformCode != ''"> and gsk.platform = #{platformCode}</if>
<if test="code != null and code != ''"> and gsk.code = #{code}</if>
<if test="platformCodes != null and platformCodes.size() > 0">
and gsk.platform
<foreach collection="platformCodes" item="platformCode" open=" in (" separator="," close=")">
#{platformCode}
</foreach>
</if>
</where>
</select>
</mapper>

View File

@ -1,112 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ff.game.mapper.GameSecretKeyLangMapper">
<resultMap type="GameSecretKeyLang" id="GameSecretKeyLangResult">
<result property="id" column="id" />
<result property="gameSecretKeyId" column="game_secret_key_id" />
<result property="lang" column="lang" />
<result property="systemLangCode" column="system_lang_code" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
</resultMap>
<resultMap type="com.ff.game.dto.GameSecretKeyLangDTO" id="GameSecretKeyLangDTOResult">
<result property="id" column="id" />
<result property="gameSecretKeyId" column="game_secret_key_id" />
<result property="lang" column="lang" />
<result property="systemLangCode" column="system_lang_code" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="code" column="code" />
<result property="key" column="key" />
</resultMap>
<sql id="selectGameSecretKeyLangVo">
select id, game_secret_key_id, lang, system_lang_code, create_by, create_time, update_by, update_time from ff_game_secret_key_lang
</sql>
<select id="selectGameSecretKeyLangList" parameterType="GameSecretKeyLang" resultMap="GameSecretKeyLangResult">
<include refid="selectGameSecretKeyLangVo"/>
<where>
<if test="gameSecretKeyId != null "> and game_secret_key_id = #{gameSecretKeyId}</if>
<if test="lang != null and lang != ''"> and lang = #{lang}</if>
<if test="systemLangCode != null and systemLangCode != ''"> and system_lang_code = #{systemLangCode}</if>
</where>
</select>
<select id="selectGameSecretKeyLangById" parameterType="Long" resultMap="GameSecretKeyLangResult">
<include refid="selectGameSecretKeyLangVo"/>
where id = #{id}
</select>
<insert id="insertGameSecretKeyLang" parameterType="GameSecretKeyLang">
insert into ff_game_secret_key_lang
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">id,</if>
<if test="gameSecretKeyId != null">game_secret_key_id,</if>
<if test="lang != null and lang != ''">lang,</if>
<if test="systemLangCode != null">system_lang_code,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">#{id},</if>
<if test="gameSecretKeyId != null">#{gameSecretKeyId},</if>
<if test="lang != null and lang != ''">#{lang},</if>
<if test="systemLangCode != null">#{systemLangCode},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
</trim>
</insert>
<update id="updateGameSecretKeyLang" parameterType="GameSecretKeyLang">
update ff_game_secret_key_lang
<trim prefix="SET" suffixOverrides=",">
<if test="gameSecretKeyId != null">game_secret_key_id = #{gameSecretKeyId},</if>
<if test="lang != null and lang != ''">lang = #{lang},</if>
<if test="systemLangCode != null">system_lang_code = #{systemLangCode},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteGameSecretKeyLangById" parameterType="Long">
delete from ff_game_secret_key_lang where id = #{id}
</delete>
<delete id="deleteGameSecretKeyLangByIds" parameterType="String">
delete from ff_game_secret_key_lang where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<select id="findGameSecretKeyLangDTO" parameterType="com.ff.game.dto.GameSecretKeyLangDTO" resultMap="GameSecretKeyLangDTOResult">
select gskl.lang, gskl.system_lang_code,gsk.code ,gsk.`key`,gskl.game_secret_key_id
from ff_game_secret_key gsk
inner join ff_game_secret_key_lang gskl on gsk.id = gskl.game_secret_key_id
<where>
<if test="lang != null and lang != ''"> and gskl.lang = #{lang}</if>
<if test="systemLangCode != null and systemLangCode != ''"> and gskl.system_lang_code = #{systemLangCode}</if>
<if test="platformCode != null and platformCode != ''"> and gsk.platform = #{platformCode}</if>
<if test="code != null and code != ''"> and gsk.code = #{code}</if>
</where>
limit 1
</select>
</mapper>

View File

@ -1,100 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ff.game.mapper.GameSecretKeyMapper">
<resultMap type="GameSecretKey" id="GameSecretKeyResult">
<result property="id" column="id" />
<result property="platform" column="platform" />
<result property="providerCode" column="provider_code" />
<result property="password" column="password" />
<result property="code" column="code" />
<result property="key" column="key" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
</resultMap>
<sql id="selectGameSecretKeyVo">
select id, platform,provider_code,password, code, `key`, create_by, create_time, update_by, update_time from ff_game_secret_key
</sql>
<select id="selectGameSecretKeyList" parameterType="GameSecretKey" resultMap="GameSecretKeyResult">
<include refid="selectGameSecretKeyVo"/>
<where>
<if test="platform != null and platform != ''"> and platform = #{platform}</if>
<if test="providerCode != null and providerCode != ''"> and provider_code = #{providerCode}</if>
<if test="password != null and password != ''"> and password = #{password}</if>
<if test="code != null and code != ''"> and code = #{code}</if>
<if test="key != null and key != ''"> and key = #{key}</if>
</where>
</select>
<select id="selectGameSecretKeyById" parameterType="Long" resultMap="GameSecretKeyResult">
<include refid="selectGameSecretKeyVo"/>
where id = #{id}
</select>
<select id="selectGameSecretKeyByCode" parameterType="String" resultMap="GameSecretKeyResult">
<include refid="selectGameSecretKeyVo"/>
where code = #{code}
limit 1
</select>
<insert id="insertGameSecretKey" parameterType="GameSecretKey">
insert into ff_game_secret_key
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">id,</if>
<if test="platform != null and platform != ''">platform,</if>
<if test="code != null and code != ''">provider_code,</if>
<if test="password != null and password != ''">password,</if>
<if test="code != null and code != ''">code,</if>
<if test="key != null and key != ''">key,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">#{id},</if>
<if test="platform != null and platform != ''">#{platform},</if>
<if test="code != null and code != ''">#{providerCode},</if>
<if test="password != null and password != ''">#{password},</if>
<if test="code != null and code != ''">#{code},</if>
<if test="key != null and key != ''">#{key},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
</trim>
</insert>
<update id="updateGameSecretKey" parameterType="GameSecretKey">
update ff_game_secret_key
<trim prefix="SET" suffixOverrides=",">
<if test="platform != null and platform != ''">platform = #{platform},</if>
<if test="code != null and code != ''">provider_code = #{providerCode},</if>
<if test="password != null and password != ''">password = #{password},</if>
<if test="code != null and code != ''">code = #{code},</if>
<if test="key != null and key != ''">key = #{key},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteGameSecretKeyById" parameterType="Long">
delete from ff_game_secret_key where id = #{id}
</delete>
<delete id="deleteGameSecretKeyByIds" parameterType="String">
delete from ff_game_secret_key where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>

View File

@ -14,6 +14,8 @@
<result property="keyInfo" column="key_info" typeHandler="com.ff.base.handler.JsonListHandler" javaType="com.ff.game.domain.KeyInfo"/> <result property="keyInfo" column="key_info" typeHandler="com.ff.base.handler.JsonListHandler" javaType="com.ff.game.domain.KeyInfo"/>
<result property="langInfo" column="lang_info" typeHandler="com.ff.base.handler.JsonHandler" javaType="com.ff.game.domain.LangInfo"/> <result property="langInfo" column="lang_info" typeHandler="com.ff.base.handler.JsonHandler" javaType="com.ff.game.domain.LangInfo"/>
<result property="currencyInfo" column="currency_info" typeHandler="com.ff.base.handler.JsonHandler" javaType="com.ff.game.domain.CurrencyInfo"/> <result property="currencyInfo" column="currency_info" typeHandler="com.ff.base.handler.JsonHandler" javaType="com.ff.game.domain.CurrencyInfo"/>
<result property="extInfo" column="ext_info" typeHandler="com.ff.base.handler.JsonHandler" javaType="com.ff.game.domain.ExtInfo"/>
<result property="stopStatus" column="stop_status" /> <result property="stopStatus" column="stop_status" />
<result property="createBy" column="create_by" /> <result property="createBy" column="create_by" />
<result property="createTime" column="create_time" /> <result property="createTime" column="create_time" />
@ -52,6 +54,8 @@
<if test="keyInfo != null and keyInfo != ''">key_info,</if> <if test="keyInfo != null and keyInfo != ''">key_info,</if>
<if test="langInfo != null and langInfo != ''">lang_info,</if> <if test="langInfo != null and langInfo != ''">lang_info,</if>
<if test="currencyInfo != null and currencyInfo != ''">currency_info,</if> <if test="currencyInfo != null and currencyInfo != ''">currency_info,</if>
<if test="extInfo != null and extInfo != ''">ext_info,</if>
<if test="stopStatus != null">stop_status,</if> <if test="stopStatus != null">stop_status,</if>
<if test="createBy != null">create_by,</if> <if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if> <if test="createTime != null">create_time,</if>
@ -88,6 +92,8 @@
<if test="keyInfo != null and keyInfo != ''">key_info = #{keyInfo},</if> <if test="keyInfo != null and keyInfo != ''">key_info = #{keyInfo},</if>
<if test="langInfo != null and langInfo != ''">lang_info = #{langInfo},</if> <if test="langInfo != null and langInfo != ''">lang_info = #{langInfo},</if>
<if test="currencyInfo != null and currencyInfo != ''">currency_info = #{currencyInfo},</if> <if test="currencyInfo != null and currencyInfo != ''">currency_info = #{currencyInfo},</if>
<if test="extInfo != null and extInfo != ''">ext_info = #{extInfo},</if>
<if test="stopStatus != null">stop_status = #{stopStatus},</if> <if test="stopStatus != null">stop_status = #{stopStatus},</if>
<if test="createBy != null">create_by = #{createBy},</if> <if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{updateTime},</if> <if test="createTime != null">create_time = #{updateTime},</if>