Compare commits

..

No commits in common. "f35179c8bcff0654e7e2d5983db84597e46c4219" and "8ffe94204c72ab1d37000a1714455e98c3278c1c" have entirely different histories.

89 changed files with 3932 additions and 2037 deletions

View File

@ -100,8 +100,6 @@ public class CacheConstants {
public static final String MeiTian_GAMES = "meitian_games:";
public static final String Platform = "platform:";
/**
* km
*/

View File

@ -178,6 +178,65 @@ public class Constants {
*/
public static final String PASS_PREFIX = "FF_";
/**
* jili
*/
public static final String JILI_API_BASE_URL = "jili.api.base.url";
/**
* ng
*/
public static final String NG_API_BASE_URL = "ng.api.base.url";
/**
* fc-apiurl
*/
public static final String FC_API_BASE_URL = "fc.api.base.url";
/**
*
*/
public static final String JILI_GAME_DOME = "jili.game.dome";
/**
* xk
*/
public static final String XK_API_BASE_URL = "xk.api.base.url";
/**
* pgx-apiurl
*/
public static final String PGX_API_BASE_URL = "gpx.api.base.url";
/**
* dg-apiurl
*/
public static final String DG_API_BASE_URL = "dg.api.base.url";
/**
* ae apiurl
*/
public static final String AE_API_BASE_URL = "ae.api.base.url";
/**
* sa-apiurl
*/
public static final String SA_API_BASE_URL = "sa.api.base.url";
/**
*
*/
public static final String MEITIAN_API_BASE_URL = "meitian.api.base.url";
/**
* km-apiurl
*/
public static final String KM_API_BASE_URL_LOGIN = "km.api.base.url";
/**
* km-apiurl
*/
public static final String KM_API_BASE_LOGIN_URL = "km.api.base.login.url";
/**
*

View File

@ -11,7 +11,7 @@ public enum GamePlatforms {
FC("FC", "FC"),
SA("SA", "SA"),
DG("DG", "DG"),
MT("MT", "美天棋牌"),
MeiTian("MeiTian","美天棋牌"),
AE("AE", "AE"),
KM("KM", "KM")
;
@ -19,14 +19,16 @@ public enum GamePlatforms {
private final String code;
private final String info;
GamePlatforms(String code, String info) {
GamePlatforms(String code, String info)
{
this.code = code;
this.info = info;
}
public static List<String> getCodes() {
List<String> result = new ArrayList<>();
public static List<String> getCodes()
{
List<String> result=new ArrayList<>();
GamePlatforms[] values = GamePlatforms.values();
for (GamePlatforms value : values) {
result.add(value.getCode());
@ -34,11 +36,13 @@ public enum GamePlatforms {
return result;
}
public String getCode() {
public String getCode()
{
return code;
}
public String getInfo() {
public String getInfo()
{
return info;
}

View File

@ -21,8 +21,7 @@ public enum PlatformType {
VIDEO(6, "视讯"),
LOTTERY(7, "彩票"),
SPORTS(8, "体育"),
HUNTING(9, "捕猎"),
BaiRen(10, "百人场");
HUNTING(9, "捕猎");
private final int code;
private final String name;

View File

@ -1,59 +0,0 @@
package com.ff.base.handler;
import com.alibaba.fastjson2.JSON;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* mybatis json
*
* @author cengy
*/
public class JsonHandler<T> extends BaseTypeHandler<T> {
private final Class<T> type;
public JsonHandler(Class<T> type) {
if (type == null) {
throw new IllegalArgumentException("Type argument cannot be null");
}
this.type = type;
}
@Override
public void setNonNullParameter(PreparedStatement ps, int i, T parameter, JdbcType jdbcType) throws SQLException {
ps.setString(i, JSON.toJSONString(parameter));
}
@Override
public T getNullableResult(ResultSet rs, String columnName) throws SQLException {
String json = rs.getString(columnName);
if (json != null) {
return JSON.parseObject(json, type);
}
return null;
}
@Override
public T getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
String json = rs.getString(columnIndex);
if (json != null) {
return JSON.parseObject(json, type);
}
return null;
}
@Override
public T getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
String json = cs.getString(columnIndex);
if (json != null) {
return JSON.parseObject(json, type);
}
return null;
}
}

View File

@ -1,64 +0,0 @@
package com.ff.base.handler;
import com.alibaba.fastjson2.JSON;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
/**
* mybatis json
*
* @author cengy
*/
public class JsonListHandler<T> extends BaseTypeHandler<List<T>> {
private final Class<T> type;
public JsonListHandler(Class<T> type) {
if (type == null) {
throw new IllegalArgumentException("Type argument cannot be null");
}
this.type = type;
}
@Override
public void setNonNullParameter(PreparedStatement ps, int i, List<T> parameter, JdbcType jdbcType) throws SQLException {
// Convert the List<Item> to JSON string
String json = JSON.toJSONString(parameter);
ps.setString(i, json);
}
@Override
public List<T> getNullableResult(ResultSet rs, String columnName) throws SQLException {
String json = rs.getString(columnName);
if (json == null) {
return null;
}
return JSON.parseArray(json, type);
}
@Override
public List<T> getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
String json = rs.getString(columnIndex);
if (json == null) {
return null;
}
return JSON.parseArray(json, type);
}
@Override
public List<T> getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
String json = cs.getString(columnIndex);
if (json == null) {
return null;
}
return JSON.parseArray(json, type);
}
}

View File

@ -4,6 +4,7 @@ import com.ff.base.constant.Constants;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import sun.misc.BASE64Encoder;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
@ -14,23 +15,27 @@ import java.security.NoSuchAlgorithmException;
*
* @author ff
*/
public class Md5Utils {
public class Md5Utils
{
private static final Logger log = LoggerFactory.getLogger(Md5Utils.class);
private static byte[] md5(String s) {
private static byte[] md5(String s)
{
MessageDigest algorithm;
try {
try
{
algorithm = MessageDigest.getInstance("MD5");
algorithm.reset();
algorithm.update(s.getBytes("UTF-8"));
byte[] messageDigest = algorithm.digest();
return messageDigest;
} catch (Exception e) {
}
catch (Exception e)
{
log.error("MD5 Error...", e);
}
return null;
}
public static String md5New(String input) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
@ -58,24 +63,30 @@ public class Md5Utils {
return null;
}
String result = "";
try {
try{
MessageDigest md5 = MessageDigest.getInstance("MD5");
result = Base64.encode(md5.digest(str.getBytes(StandardCharsets.UTF_8)));
} catch (Exception e) {
log.error("encoderByMd5...{}", str, e);
BASE64Encoder base64en = new BASE64Encoder();
result = base64en.encode(md5.digest(str.getBytes(StandardCharsets.UTF_8)));
}catch (Exception e){
log.error("encoderByMd5...{0}", str, e);
}
return result;
}
private static final String toHex(byte hash[]) {
if (hash == null) {
private static final String toHex(byte hash[])
{
if (hash == null)
{
return null;
}
StringBuffer buf = new StringBuffer(hash.length * 2);
int i;
for (i = 0; i < hash.length; i++) {
if ((hash[i] & 0xff) < 0x10) {
for (i = 0; i < hash.length; i++)
{
if ((hash[i] & 0xff) < 0x10)
{
buf.append("0");
}
buf.append(Long.toString(hash[i] & 0xff, 16));
@ -83,11 +94,15 @@ public class Md5Utils {
return buf.toString();
}
public static String hash(String s) {
try {
return new String(toHex(md5(Constants.PASS_PREFIX + s)).getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8);
} catch (Exception e) {
log.error("not supported charset...", e);
public static String hash(String s)
{
try
{
return new String(toHex(md5(Constants.PASS_PREFIX +s)).getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8);
}
catch (Exception e)
{
log.error("not supported charset...{}", e);
return s;
}
}

View File

@ -16,6 +16,7 @@
<dependencies>
<!-- spring-boot-devtools -->
<dependency>
<groupId>org.springframework.boot</groupId>

View File

@ -1,6 +1,7 @@
package com.ff.api.controller;
import cn.hutool.core.util.NumberUtil;
import com.ff.annotation.CheckHeader;
import com.ff.api.request.*;
import com.ff.api.response.*;
@ -8,11 +9,12 @@ import com.ff.base.constant.Constants;
import com.ff.base.core.controller.BaseController;
import com.ff.base.core.domain.AjaxResult;
import com.ff.base.core.page.TableDataInfo;
import com.ff.base.enums.ErrorCode;
import com.ff.base.enums.*;
import com.ff.base.exception.base.ApiException;
import com.ff.base.system.domain.TenantSecretKey;
import com.ff.base.exception.base.BaseException;
import com.ff.base.utils.StringUtils;
import com.ff.base.utils.bean.BeanUtils;
import com.ff.base.system.domain.TenantSecretKey;
import com.ff.common.dto.GameBalanceExchange;
import com.ff.common.service.ITenantGameQuotaFlowService;
import com.ff.common.service.ITenantGameQuotaService;
@ -21,16 +23,18 @@ import com.ff.game.api.IGamesService;
import com.ff.game.api.request.*;
import com.ff.game.domain.*;
import com.ff.game.dto.GameBettingDetailsDTO;
import com.ff.game.dto.GameSecretKeyCurrencyDTO;
import com.ff.game.dto.GameSecretKeyLangDTO;
import com.ff.game.service.*;
import com.ff.member.domain.Member;
import com.ff.member.service.IMemberService;
import com.github.pagehelper.PageHelper;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import org.springframework.validation.annotation.Validated;
@ -41,9 +45,10 @@ import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Future;
import java.util.stream.Collectors;
/**
* api
@ -69,9 +74,16 @@ public class ApiGameController extends BaseController {
@Resource
private KeyConfig keyConfig;
@Resource
private IGameSecretKeyService gameSecretKeyService;
@Resource
private IMemberService memberService;
@Resource
private IGamePlatformService gamePlatformService;
@Resource
private ITenantGameQuotaService tenantGameQuotaService;
@ -86,12 +98,17 @@ public class ApiGameController extends BaseController {
@Resource
private IGameExchangeMoneyService gameExchangeMoneyService;
@Resource
private IGameSecretKeyCurrencyService gameSecretKeyCurrencyService;
@Resource
private IGameSecretKeyLangService gameSecretKeyLangService;
@Autowired
@Qualifier("threadPoolTaskExecutor")
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
@Resource
private IPlatformService platformService;
/**
*
@ -101,20 +118,11 @@ public class ApiGameController extends BaseController {
@PostMapping("/list")
public AjaxResult list() {
List<GameResponse> gameResponses = gameService.selectGameResponseList();
for (GameResponse gameResponse : gameResponses) {
Platform platform = platformService.get(gameResponse.getPlatformCode());
if (null == platform) {
continue;
}
// List<GameSecretKeyCurrencyDTO> gameSecretKeyCurrencies =
// gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTOList(
// GameSecretKeyCurrencyDTO.builder().platformCode(gameResponse.getPlatformCode())
// .build()
// );
// List<String> currencyCode = gameSecretKeyCurrencies.stream().map(GameSecretKeyCurrencyDTO::getSystemCurrency).collect(Collectors.toList());
for (GameResponse gameRespons : gameResponses) {
List<String> currencyCode = new ArrayList<>(platform.getCurrencyInfo().keySet());
gameResponse.setCurrencyCode(currencyCode);
List<GameSecretKeyCurrencyDTO> gameSecretKeyCurrencies = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTOList(GameSecretKeyCurrencyDTO.builder().platformCode(gameRespons.getPlatformCode()).build());
List<String> currencyCode = gameSecretKeyCurrencies.stream().map(GameSecretKeyCurrencyDTO::getSystemCurrency).collect(Collectors.toList());
gameRespons.setCurrencyCode(currencyCode);
}
return AjaxResult.success(gameResponses);
}
@ -123,69 +131,50 @@ public class ApiGameController extends BaseController {
/**
*
*
* @param loginRequest
* @param memberCreateApiRequest api
* @return {@link AjaxResult }
*/
@PostMapping("/login")
public AjaxResult login(@Validated @RequestBody GameLoginRequest loginRequest) {
public AjaxResult login(@Validated @RequestBody GameLoginRequest memberCreateApiRequest) {
Game game = gameService.selectGameById(loginRequest.getGameId());
Game game = gameService.selectGameById(memberCreateApiRequest.getGameId());
ApiException.notNull(game, ErrorCode.GAME_NOT_EXIST.getCode());
Platform platform = platformService.get(game.getPlatformCode());
ApiException.notNull(platform, ErrorCode.PLATFORM_NOT_EXIST.getCode());
IGamesService iGamesService = gamesService.get(platform.getPlatformCode() + Constants.SERVICE);
ApiException.notNull(iGamesService, ErrorCode.PLATFORM_NOT_EXIST.getCode());
String targetCurrency = platform.getCurrencyInfo().get(loginRequest.getCurrencyCode());
ApiException.notNull(targetCurrency, ErrorCode.CURRENCY_NOT_EXIST.getCode());
KeyInfo keyInfo = null;
for (KeyInfo keyData : platform.getKeyInfo()) {
if (StringUtils.isNotEmpty(loginRequest.getCurrencyCode())) {
if (keyData.getCurrency().equalsIgnoreCase(loginRequest.getCurrencyCode())) {
keyInfo = keyData;
break;
}
}
}
ApiException.notNull(keyInfo, ErrorCode.CURRENCY_NOT_EXIST.getCode());
String targetLang = platform.getLangInfo().get(loginRequest.getLangCode());
ApiException.notNull(targetLang, ErrorCode.LANG_NOT_EXIST.getCode());
// TenantSecretKey tenantSecretKey = keyConfig.get();
// GameSecretKeyCurrencyDTO secretKeyCurrencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
// .platformCode(gamePlatform.getPlatformCode())
// .systemCurrency(memberCreateApiRequest.getCurrencyCode()).build());
// ApiException.notNull(secretKeyCurrencyDTO, ErrorCode.CURRENCY_NOT_EXIST.getCode());
// GameSecretKeyLangDTO gameSecretKeyLangDTO = gameSecretKeyLangService.findGameSecretKeyLangDTO(GameSecretKeyLangDTO.builder()
// .platformCode(gamePlatform.getPlatformCode())
// .systemLangCode(memberCreateApiRequest.getLangCode())
// .build());
// ApiException.notNull(gameSecretKeyLangDTO, ErrorCode.LANG_NOT_EXIST.getCode());
GamePlatform gamePlatform = gamePlatformService.selectGamePlatformById(game.getPlatformId());
ApiException.notNull(gamePlatform, ErrorCode.PLATFORM_NOT_EXIST.getCode());
Member member = memberService.selectMemberByAccount(loginRequest.getAccount(), loginRequest.getCurrencyCode(), platform.getPlatformCode());
IGamesService iGamesService = gamesService.get(gamePlatform.getPlatformCode() + Constants.SERVICE);
TenantSecretKey tenantSecretKey = keyConfig.get();
GameSecretKeyCurrencyDTO secretKeyCurrencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(gamePlatform.getPlatformCode())
.systemCurrency(memberCreateApiRequest.getCurrencyCode()).build());
ApiException.notNull(secretKeyCurrencyDTO, ErrorCode.CURRENCY_NOT_EXIST.getCode());
GameSecretKeyLangDTO gameSecretKeyLangDTO = gameSecretKeyLangService.findGameSecretKeyLangDTO(GameSecretKeyLangDTO.builder()
.platformCode(gamePlatform.getPlatformCode())
.systemLangCode(memberCreateApiRequest.getLangCode())
.build());
ApiException.notNull(gameSecretKeyLangDTO, ErrorCode.LANG_NOT_EXIST.getCode());
Member member = memberService.selectMemberByAccount(memberCreateApiRequest.getAccount(), memberCreateApiRequest.getCurrencyCode(), gamePlatform.getPlatformCode());
ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode());
GamesLogin gamesLogin = GamesLogin.builder()
.agentId(keyInfo.getCode())
.agentKey(keyInfo.getKey())
.agentId(secretKeyCurrencyDTO.getCode())
.agentKey(secretKeyCurrencyDTO.getKey())
.account(member.getGameAccount())
.gameType(game.getGameSourceType())
.currency(/*secretKeyCurrencyDTO.getCurrency()*/targetCurrency)
.currency(secretKeyCurrencyDTO.getCurrency())
.gameId(game.getGameCode())
.homeUrl(loginRequest.getHomeUrl())
.betLimit(loginRequest.getBetLimit())
.platform(loginRequest.getPlatform())
.disableFullScreen(loginRequest.getDisableFullScreen())
.lang(/*gameSecretKeyLangDTO.getLang()*/ targetLang)
.vendor(platform)
.keyInfo(keyInfo)
.systemCurrency(loginRequest.getCurrencyCode())
.homeUrl(memberCreateApiRequest.getHomeUrl())
.betLimit(memberCreateApiRequest.getBetLimit())
.platform(memberCreateApiRequest.getPlatform())
.disableFullScreen(memberCreateApiRequest.getDisableFullScreen())
.lang(gameSecretKeyLangDTO.getLang())
.build();
String login = iGamesService.loginWithoutRedirect(gamesLogin);
@ -204,47 +193,26 @@ public class ApiGameController extends BaseController {
@Transactional
public AjaxResult exchangeBalance(@Validated @RequestBody GameExchangeBalanceRequest gameExchangeBalanceRequest) {
IGamesService iGamesService = gamesService.get(gameExchangeBalanceRequest.getPlatformCode() + Constants.SERVICE);
ApiException.notNull(iGamesService, ErrorCode.PLATFORM_NOT_EXIST.getCode());
TenantSecretKey tenantSecretKey = keyConfig.get();
// GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
// .platformCode(gameExchangeBalanceRequest.getPlatformCode())
// .systemCurrency(gameExchangeBalanceRequest.getCurrencyCode()).build());
//
// ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode());
GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(gameExchangeBalanceRequest.getPlatformCode())
.systemCurrency(gameExchangeBalanceRequest.getCurrencyCode()).build());
Platform platform = platformService.get(gameExchangeBalanceRequest.getPlatformCode());
ApiException.notNull(platform, ErrorCode.PLATFORM_NOT_EXIST.getCode());
String targetCurrency = platform.getCurrencyInfo().get(gameExchangeBalanceRequest.getCurrencyCode());
ApiException.notNull(targetCurrency, ErrorCode.CURRENCY_NOT_EXIST.getCode());
KeyInfo keyInfo = null;
for (KeyInfo keyData : platform.getKeyInfo()) {
if (StringUtils.isNotEmpty(gameExchangeBalanceRequest.getCurrencyCode())) {
if (keyData.getCurrency().equalsIgnoreCase(gameExchangeBalanceRequest.getCurrencyCode())) {
keyInfo = keyData;
break;
}
}
}
ApiException.notNull(keyInfo, ErrorCode.CURRENCY_NOT_EXIST.getCode());
ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode());
BigDecimal quota = tenantGameQuotaService.gameBalanceExchange(GameBalanceExchange.builder()
.platformCode(gameExchangeBalanceRequest.getPlatformCode())
.sourceId(gameExchangeBalanceRequest.getOrderId())
.currencyCode(gameExchangeBalanceRequest.getCurrencyCode())
.currency(targetCurrency)
.transferType(gameExchangeBalanceRequest.getTransferType())
.amount(gameExchangeBalanceRequest.getAmount())
.account(gameExchangeBalanceRequest.getAccount())
.tenantKey(tenantSecretKey.getTenantKey())
.systemCurrency(gameExchangeBalanceRequest.getCurrencyCode())
.agentId(keyInfo.getCode())
.agentKey(keyInfo.getKey())
.build());
// 获取用户信息
@ -254,19 +222,15 @@ public class ApiGameController extends BaseController {
//操作第三方额度接口
ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO = ExchangeTransferMoneyRequestDTO.builder()
.agentId(keyInfo.getCode())
.agentKey(keyInfo.getKey())
.agentId(gameSecretKey.getCode())
.agentKey(gameSecretKey.getKey())
.orderId(gameExchangeBalanceRequest.getOrderId())
.account(member.getGameAccount())
.currency(/*gameSecretKey.getCurrency()*/targetCurrency)
.currency(gameSecretKey.getCurrency())
.tenantKey(tenantSecretKey.getTenantKey())
.quota(quota)
.amount(gameExchangeBalanceRequest.getAmount())
.transferType(gameExchangeBalanceRequest.getTransferType())
.vendor(platform)
.keyInfo(keyInfo)
.systemCurrency(gameExchangeBalanceRequest.getCurrencyCode())
.build();
Long exchangeTransferId = iGamesService.exchangeTransferByAgentId(exchangeTransferMoneyRequestDTO);
GameExchangeMoney gameExchangeMoney = gameExchangeMoneyService.selectGameExchangeMoneyById(exchangeTransferId);
@ -312,27 +276,12 @@ public class ApiGameController extends BaseController {
ApiException.notNull(iGamesService, ErrorCode.PLATFORM_NOT_EXIST.getCode());
// TenantSecretKey tenantSecretKey = keyConfig.get();
// GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
// .platformCode(gameCreateFreeSpinRequest.getPlatformCode())
// .systemCurrency(gameCreateFreeSpinRequest.getCurrencyCode()).build());
// ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode());
Platform platform = platformService.get(gameCreateFreeSpinRequest.getPlatformCode());
ApiException.notNull(platform, ErrorCode.PLATFORM_NOT_EXIST.getCode());
TenantSecretKey tenantSecretKey = keyConfig.get();
GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(gameCreateFreeSpinRequest.getPlatformCode())
.systemCurrency(gameCreateFreeSpinRequest.getCurrencyCode()).build());
ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode());
String targetCurrency = platform.getCurrencyInfo().get(gameCreateFreeSpinRequest.getCurrencyCode());
ApiException.notNull(targetCurrency, ErrorCode.CURRENCY_NOT_EXIST.getCode());
KeyInfo keyInfo = null;
for (KeyInfo keyData : platform.getKeyInfo()) {
if (StringUtils.isNotEmpty(gameCreateFreeSpinRequest.getCurrencyCode())) {
if (keyData.getCurrency().equalsIgnoreCase(gameCreateFreeSpinRequest.getCurrencyCode())) {
keyInfo = keyData;
break;
}
}
}
ApiException.notNull(keyInfo, ErrorCode.CURRENCY_NOT_EXIST.getCode());
Member member = memberService.selectMemberByAccount(gameCreateFreeSpinRequest.getAccount(), gameCreateFreeSpinRequest.getCurrencyCode(), gameCreateFreeSpinRequest.getPlatformCode());
ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode());
@ -340,18 +289,15 @@ public class ApiGameController extends BaseController {
CreateFreeSpinRequestDTO createFreeSpinRequestDTO = CreateFreeSpinRequestDTO.builder()
.account(member.getGameAccount())
.currency(/*gameCreateFreeSpinRequest.getCurrencyCode()*/targetCurrency)
.agentId(keyInfo.getCode())
.agentKey(keyInfo.getKey())
.currency(gameCreateFreeSpinRequest.getCurrencyCode())
.agentId(gameSecretKey.getCode())
.agentKey(gameSecretKey.getKey())
.referenceId(gameCreateFreeSpinRequest.getReferenceId())
.freeSpinValidity(gameCreateFreeSpinRequest.getFreeSpinValidity())
.numberOfRounds(gameCreateFreeSpinRequest.getNumberOfRounds())
.gameIds(gameCreateFreeSpinRequest.getGameIds())
.betValue(gameCreateFreeSpinRequest.getBetValue())
.startTime(gameCreateFreeSpinRequest.getStartTime())
.vendor(platform)
.keyInfo(keyInfo)
.systemCurrency(gameCreateFreeSpinRequest.getCurrencyCode())
.build();
@ -404,53 +350,32 @@ public class ApiGameController extends BaseController {
*/
@PostMapping("/get/detail")
public AjaxResult getDetail(@Validated @RequestBody GameGetDetailRequest gameGetDetailRequest) {
Platform platform = platformService.get(gameGetDetailRequest.getPlatformCode());
ApiException.notNull(platform, ErrorCode.PLATFORM_NOT_EXIST.getCode());
String targetCurrency = platform.getCurrencyInfo().get(gameGetDetailRequest.getCurrencyCode());
ApiException.notNull(targetCurrency, ErrorCode.CURRENCY_NOT_EXIST.getCode());
KeyInfo keyInfo = null;
for (KeyInfo keyData : platform.getKeyInfo()) {
if (StringUtils.isNotEmpty(gameGetDetailRequest.getCurrencyCode())) {
if (keyData.getCurrency().equalsIgnoreCase(gameGetDetailRequest.getCurrencyCode())) {
keyInfo = keyData;
break;
}
}
}
ApiException.notNull(keyInfo, ErrorCode.CURRENCY_NOT_EXIST.getCode());
String targetLang = platform.getLangInfo().get(gameGetDetailRequest.getLangCode());
ApiException.notNull(targetLang, ErrorCode.LANG_NOT_EXIST.getCode());
// GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
// .platformCode(gameGetDetailRequest.getPlatformCode())
// .systemCurrency(gameGetDetailRequest.getCurrencyCode()).build());
// ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode());
GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(gameGetDetailRequest.getPlatformCode())
.systemCurrency(gameGetDetailRequest.getCurrencyCode()).build());
ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode());
IGamesService iGamesService = gamesService.get(gameGetDetailRequest.getPlatformCode() + Constants.SERVICE);
ApiException.notNull(iGamesService, ErrorCode.PLATFORM_NOT_EXIST.getCode());
// GameSecretKeyLangDTO gameSecretKeyLang = gameSecretKeyLangService.findGameSecretKeyLangDTO(GameSecretKeyLangDTO.builder()
// .platformCode(gameGetDetailRequest.getPlatformCode())
// .systemLangCode(gameGetDetailRequest.getLangCode())
// .build());
// ApiException.notNull(gameSecretKeyLang, ErrorCode.LANG_NOT_EXIST.getCode());
GameSecretKeyLangDTO gameSecretKeyLang = gameSecretKeyLangService.findGameSecretKeyLangDTO(GameSecretKeyLangDTO.builder()
.platformCode(gameGetDetailRequest.getPlatformCode())
.systemLangCode(gameGetDetailRequest.getLangCode())
.build());
ApiException.notNull(gameSecretKeyLang, ErrorCode.LANG_NOT_EXIST.getCode());
GetGameDetailResponseDTO gameDetail = iGamesService.getGameDetail(GetGameDetailRequestDTO.builder()
.wagersId(gameGetDetailRequest.getWagersId())
.lang(/*gameSecretKeyLang.getLang()*/targetLang)
.agentId(keyInfo.getCode())
.agentKey(keyInfo.getKey())
.vendor(platform)
.keyInfo(keyInfo)
.systemCurrency(gameGetDetailRequest.getCurrencyCode())
.lang(gameSecretKeyLang.getLang())
.agentId(gameSecretKey.getCode())
.agentKey(gameSecretKey.getKey())
.build());
return AjaxResult.success(gameDetail);
}
@ -463,82 +388,44 @@ public class ApiGameController extends BaseController {
*/
@PostMapping("/kick/member")
public AjaxResult kickMember(@Validated @RequestBody GameKickMemeberRequest gameKickMemeberRequest) {
// GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
// .platformCode(gameKickMemeberRequest.getPlatformCode())
// .systemCurrency(gameKickMemeberRequest.getCurrencyCode()).build());
// ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode());
GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(gameKickMemeberRequest.getPlatformCode())
.systemCurrency(gameKickMemeberRequest.getCurrencyCode()).build());
ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode());
Platform platform = platformService.get(gameKickMemeberRequest.getPlatformCode());
ApiException.notNull(platform, ErrorCode.PLATFORM_NOT_EXIST.getCode());
String targetCurrency = platform.getCurrencyInfo().get(gameKickMemeberRequest.getCurrencyCode());
ApiException.notNull(targetCurrency, ErrorCode.CURRENCY_NOT_EXIST.getCode());
KeyInfo keyInfo = null;
for (KeyInfo keyData : platform.getKeyInfo()) {
if (StringUtils.isNotEmpty(gameKickMemeberRequest.getCurrencyCode())) {
if (keyData.getCurrency().equalsIgnoreCase(gameKickMemeberRequest.getCurrencyCode())) {
keyInfo = keyData;
break;
}
}
}
ApiException.notNull(keyInfo, ErrorCode.CURRENCY_NOT_EXIST.getCode());
Member member = memberService.selectMemberByAccount(gameKickMemeberRequest.getAccount(), gameKickMemeberRequest.getCurrencyCode(), gameKickMemeberRequest.getPlatformCode());
ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode());
IGamesService iGamesService = gamesService.get(gameKickMemeberRequest.getPlatformCode() + Constants.SERVICE);
ApiException.notNull(iGamesService, ErrorCode.PLATFORM_NOT_EXIST.getCode());
Member member = memberService.selectMemberByAccount(gameKickMemeberRequest.getAccount(), gameKickMemeberRequest.getCurrencyCode(), gameKickMemeberRequest.getPlatformCode());
ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode());
return AjaxResult.success(iGamesService.kickMember(KickMemberRequestDTO.builder()
.account(member.getGameAccount())
.agentId(keyInfo.getCode())
.currency(targetCurrency)
.agentKey(keyInfo.getKey())
.vendor(platform)
.keyInfo(keyInfo)
.systemCurrency(gameKickMemeberRequest.getCurrencyCode())
.agentId(gameSecretKey.getCode())
.currency(gameSecretKey.getCurrency())
.agentKey(gameSecretKey.getKey())
.build()));
}
@PostMapping("/kick/member/all")
public AjaxResult kickMemberAll(@Validated @RequestBody GameKickMemeberAllRequest gameKickMemeberAllRequest) {
// GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
// .platformCode(gameKickMemeberAllRequest.getPlatformCode())
// .systemCurrency(gameKickMemeberAllRequest.getCurrencyCode()).build());
//
// ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode());
Platform platform = platformService.get(gameKickMemeberAllRequest.getPlatformCode());
ApiException.notNull(platform, ErrorCode.PLATFORM_NOT_EXIST.getCode());
GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(gameKickMemeberAllRequest.getPlatformCode())
.systemCurrency(gameKickMemeberAllRequest.getCurrencyCode()).build());
String targetCurrency = platform.getCurrencyInfo().get(gameKickMemeberAllRequest.getCurrencyCode());
ApiException.notNull(targetCurrency, ErrorCode.CURRENCY_NOT_EXIST.getCode());
KeyInfo keyInfo = null;
for (KeyInfo keyData : platform.getKeyInfo()) {
if (StringUtils.isNotEmpty(gameKickMemeberAllRequest.getCurrencyCode())) {
if (keyData.getCurrency().equalsIgnoreCase(gameKickMemeberAllRequest.getCurrencyCode())) {
keyInfo = keyData;
break;
}
}
}
ApiException.notNull(keyInfo, ErrorCode.CURRENCY_NOT_EXIST.getCode());
ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode());
IGamesService iGamesService = gamesService.get(gameKickMemeberAllRequest.getPlatformCode() + Constants.SERVICE);
ApiException.notNull(iGamesService, ErrorCode.PLATFORM_NOT_EXIST.getCode());
KickMemberAllDTO kickMemberAllDTO = KickMemberAllDTO.builder()
.agentId(keyInfo.getCode())
.agentKey(keyInfo.getKey())
.currency(/*gameSecretKey.getCurrency()*/targetCurrency)
.vendor(platform)
.keyInfo(keyInfo)
.systemCurrency(gameKickMemeberAllRequest.getCurrencyCode())
.agentId(gameSecretKey.getCode())
.agentKey(gameSecretKey.getKey())
.currency(gameSecretKey.getCurrency())
.build();
if (!ObjectUtils.isEmpty(gameKickMemeberAllRequest.getGameId())) {
Game game = gameService.selectGameById(gameKickMemeberAllRequest.getGameId());
@ -587,43 +474,23 @@ public class ApiGameController extends BaseController {
/**
*
*
* @param request dashflow
* @param gameGetFreeSpinDashflowRequest dashflow
* @return {@link TableDataInfo }
*/
@PostMapping("/cancel/free/spin")
public AjaxResult cancelFreeSpin(@Validated @RequestBody GameCancelFreeSpinRequest request) {
// GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
// .platformCode(gameGetFreeSpinDashflowRequest.getPlatformCode())
// .systemCurrency(gameGetFreeSpinDashflowRequest.getCurrencyCode()).build());
// ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode());
public AjaxResult cancelFreeSpin(@Validated @RequestBody GameCancelFreeSpinRequest gameGetFreeSpinDashflowRequest) {
GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(gameGetFreeSpinDashflowRequest.getPlatformCode())
.systemCurrency(gameGetFreeSpinDashflowRequest.getCurrencyCode()).build());
ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode());
Platform platform = platformService.get(request.getPlatformCode());
ApiException.notNull(platform, ErrorCode.PLATFORM_NOT_EXIST.getCode());
String targetCurrency = platform.getCurrencyInfo().get(request.getCurrencyCode());
ApiException.notNull(targetCurrency, ErrorCode.CURRENCY_NOT_EXIST.getCode());
KeyInfo keyInfo = null;
for (KeyInfo keyData : platform.getKeyInfo()) {
if (StringUtils.isNotEmpty(request.getCurrencyCode())) {
if (keyData.getCurrency().equalsIgnoreCase(request.getCurrencyCode())) {
keyInfo = keyData;
break;
}
}
}
ApiException.notNull(keyInfo, ErrorCode.CURRENCY_NOT_EXIST.getCode());
IGamesService iGamesService = gamesService.get(request.getPlatformCode() + Constants.SERVICE);
IGamesService iGamesService = gamesService.get(gameGetFreeSpinDashflowRequest.getPlatformCode() + Constants.SERVICE);
ApiException.notNull(iGamesService, ErrorCode.PLATFORM_NOT_EXIST.getCode());
Boolean cancelFreeSpin = iGamesService.cancelFreeSpin(CancelFreeSpinRequestDTO.builder()
.agentId(keyInfo.getCode())
.agentKey(keyInfo.getKey())
.referenceId(request.getReferenceId())
.vendor(platform)
.keyInfo(keyInfo)
.systemCurrency(request.getCurrencyCode())
.agentId(gameSecretKey.getCode())
.agentKey(gameSecretKey.getKey())
.referenceId(gameGetFreeSpinDashflowRequest.getReferenceId())
.build());
return AjaxResult.success(cancelFreeSpin);
}
@ -631,80 +498,45 @@ public class ApiGameController extends BaseController {
/**
*
*
* @param request api
* @param gameExchangeBalanceAllRequest api
* @return {@link AjaxResult }
*//*
*/
@PostMapping("/exchange/balance/all")
public AjaxResult exchangeBalanceAll(@Validated @RequestBody GameExchangeBalanceAllRequest request) {
public AjaxResult exchangeBalanceAll(@Validated @RequestBody GameExchangeBalanceAllRequest gameExchangeBalanceAllRequest) {
TenantSecretKey tenantSecretKey = keyConfig.get();
// List<GameSecretKeyCurrencyDTO> gameSecretKeys = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTOList(GameSecretKeyCurrencyDTO.builder()
// .systemCurrency(gameExchangeBalanceAllRequest.getCurrencyCode()).build());
List<GameSecretKeyCurrencyDTO> gameSecretKeys = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTOList(GameSecretKeyCurrencyDTO.builder()
.systemCurrency(gameExchangeBalanceAllRequest.getCurrencyCode()).build());
List<Key> keys = new ArrayList<>();
for (GamePlatforms platformEnum : GamePlatforms.values()) {
Platform platform = platformService.get(platformEnum.getCode());
String targetCurrency = platform.getCurrencyInfo().get(request.getCurrencyCode());
if (StringUtils.isEmpty(targetCurrency)) {
continue;
}
KeyInfo keyInfo = null;
for (KeyInfo keyData : platform.getKeyInfo()) {
if (StringUtils.isNotEmpty(request.getCurrencyCode())) {
if (keyData.getCurrency().equalsIgnoreCase(request.getCurrencyCode())) {
keyInfo = keyData;
break;
}
}
}
if (null == keyInfo) {
continue;
}
Key key = new Key();
key.setPlatformCode(platform.getPlatformCode());
key.setCode(keyInfo.getCode());
key.setKey(keyInfo.getKey());
key.setCurrency(targetCurrency);
key.setPlatform(platform);
key.setKeyInfo(keyInfo);
key.setSystemCurrency(request.getCurrencyCode());
keys.add(key);
}
// 创建线程池
Map<String, BigDecimal> balanceMap = new LinkedHashMap<>();
CountDownLatch latch = new CountDownLatch(keys.size());
CountDownLatch latch = new CountDownLatch(gameSecretKeys.size());
// 使用List存储Future对象用于获取异步执行的结果
List<Future<Long>> futures = new ArrayList<>();
// 提交异步任务到线程池
// for (GameSecretKeyCurrencyDTO gameSecretKeyCurrencyDTO : gameSecretKeys) {
for (Key key : keys) {
for (GameSecretKeyCurrencyDTO gameSecretKeyCurrencyDTO : gameSecretKeys) {
futures.add(threadPoolTaskExecutor.submit(() -> {
try {
IGamesService iGamesService = gamesService.get(key.getPlatformCode() + Constants.SERVICE);
IGamesService iGamesService = gamesService.get(gameSecretKeyCurrencyDTO.getPlatformCode() + Constants.SERVICE);
Member member = memberService.selectMemberByAccount(request.getAccount(), request.getCurrencyCode(), key.getPlatformCode());
Member member = memberService.selectMemberByAccount(gameExchangeBalanceAllRequest.getAccount(), gameExchangeBalanceAllRequest.getCurrencyCode(), gameSecretKeyCurrencyDTO.getPlatformCode());
ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode());
//操作第三方钱包
ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO = ExchangeTransferMoneyRequestDTO.builder()
.agentId(key.getCode())
.agentKey(key.getKey())
.orderId(request.getOrderId())
.agentId(gameSecretKeyCurrencyDTO.getCode())
.agentKey(gameSecretKeyCurrencyDTO.getKey())
.orderId(gameExchangeBalanceAllRequest.getOrderId())
.amount(BigDecimal.ONE)
.currency(*//*gameSecretKeyCurrencyDTO.getCurrency()*//*key.currency)
.currency(gameSecretKeyCurrencyDTO.getCurrency())
.tenantKey(tenantSecretKey.getTenantKey())
.account(member.getGameAccount())
.vendor(key.getPlatform())
.keyInfo(key.getKeyInfo())
.systemCurrency(key.systemCurrency)
.transferType(TransferType.ALL.getCode())
.build();
return iGamesService.exchangeTransferByAgentId(exchangeTransferMoneyRequestDTO);
@ -739,15 +571,11 @@ public class ApiGameController extends BaseController {
tenantGameQuotaService.gameBalanceExchange(GameBalanceExchange.builder()
.platformCode(gameExchangeMoney.getPlatformCode())
.currencyCode(gameExchangeMoney.getCurrencyCode())
.sourceId(request.getOrderId())
.sourceId(gameExchangeBalanceAllRequest.getOrderId())
.transferType(TransferType.ALL.getCode())
.amount(gameExchangeMoney.getBalance())
.account(member.getMemberAccount())
.tenantKey(tenantSecretKey.getTenantKey())
.currency()
.systemCurrency(gameExchangeMoney.getCurrencyCode())
.agentId()
.agentKey()
.build());
}
@ -759,61 +587,39 @@ public class ApiGameController extends BaseController {
return AjaxResult.success(balanceMap);
}*/
}
/**
*
*
* @param request
* @param gameDemoLoginRequest
* @return {@link AjaxResult }
*/
@PostMapping("/demo/login")
public AjaxResult demoLogin(@Validated @RequestBody GameDemoLoginRequest request) {
public AjaxResult demoLogin(@Validated @RequestBody GameDemoLoginRequest gameDemoLoginRequest) {
Game game = gameService.selectGameById(request.getGameId());
Game game = gameService.selectGameById(gameDemoLoginRequest.getGameId());
ApiException.notNull(game, ErrorCode.GAME_NOT_EXIST.getCode());
//GamePlatform gamePlatform = gamePlatformService.selectGamePlatformById(game.getPlatformId());
//ApiException.notNull(gamePlatform, ErrorCode.PLATFORM_NOT_EXIST.getCode());
GamePlatform gamePlatform = gamePlatformService.selectGamePlatformById(game.getPlatformId());
ApiException.notNull(gamePlatform, ErrorCode.PLATFORM_NOT_EXIST.getCode());
Platform platform = platformService.get(game.getPlatformCode());
ApiException.notNull(platform, ErrorCode.PLATFORM_NOT_EXIST.getCode());
IGamesService iGamesService = gamesService.get(platform.getPlatformCode() + Constants.SERVICE);
ApiException.notNull(iGamesService, ErrorCode.PLATFORM_NOT_EXIST.getCode());
IGamesService iGamesService = gamesService.get(gamePlatform.getPlatformCode() + Constants.SERVICE);
String targetCurrency = platform.getCurrencyInfo().get(request.getCurrencyCode());
ApiException.notNull(targetCurrency, ErrorCode.CURRENCY_NOT_EXIST.getCode());
KeyInfo keyInfo = null;
for (KeyInfo keyData : platform.getKeyInfo()) {
if (StringUtils.isNotEmpty(request.getCurrencyCode())) {
if (keyData.getCurrency().equalsIgnoreCase(request.getCurrencyCode())) {
keyInfo = keyData;
break;
}
}
}
ApiException.notNull(keyInfo, ErrorCode.CURRENCY_NOT_EXIST.getCode());
String targetLang = platform.getLangInfo().get(request.getLangCode());
ApiException.notNull(targetLang, ErrorCode.LANG_NOT_EXIST.getCode());
// GameSecretKeyLangDTO gameSecretKeyLangDTO = gameSecretKeyLangService.findGameSecretKeyLangDTO(GameSecretKeyLangDTO.builder()
// .platformCode(gamePlatform.getPlatformCode())
// .systemLangCode(gameDemoLoginRequest.getLangCode())
// .build());
// ApiException.notNull(gameSecretKeyLangDTO, ErrorCode.LANG_NOT_EXIST.getCode());
GameSecretKeyLangDTO gameSecretKeyLangDTO = gameSecretKeyLangService.findGameSecretKeyLangDTO(GameSecretKeyLangDTO.builder()
.platformCode(gamePlatform.getPlatformCode())
.systemLangCode(gameDemoLoginRequest.getLangCode())
.build());
ApiException.notNull(gameSecretKeyLangDTO, ErrorCode.LANG_NOT_EXIST.getCode());
GameDemoLoginRequestDTO gamesLogin = GameDemoLoginRequestDTO.builder()
.gameId(game.getGameCode())
.gameType(game.getGameSourceType())
.lang(/*gameSecretKeyLangDTO.getLang()*/targetLang)
.vendor(platform)
.keyInfo(keyInfo)
.systemCurrency(request.getCurrencyCode())
.lang(gameSecretKeyLangDTO.getLang())
.build();
GameDemoLoginResponseDTO gameDemoLoginResponseDTO = iGamesService.gameDemoLogin(gamesLogin);
@ -821,15 +627,4 @@ public class ApiGameController extends BaseController {
BeanUtils.copyProperties(gameDemoLoginResponseDTO, gameDemoLoginResponse);
return AjaxResult.success(gameDemoLoginResponse);
}
@Data
class Key {
private String platformCode;
private String code;
private String currency;
private String key;
private Platform platform;
private KeyInfo keyInfo;
private String systemCurrency;
}
}

View File

@ -11,22 +11,20 @@ import com.ff.base.constant.Constants;
import com.ff.base.core.controller.BaseController;
import com.ff.base.core.domain.AjaxResult;
import com.ff.base.enums.ErrorCode;
import com.ff.base.enums.GamePlatforms;
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.utils.StringUtils;
import com.ff.base.system.domain.TenantSecretKey;
import com.ff.config.KeyConfig;
import com.ff.game.api.IGamesService;
import com.ff.game.api.request.CreateMemberRequestDTO;
import com.ff.game.api.request.MemberInfoRequestDTO;
import com.ff.game.api.request.MemberInfoResponseDTO;
import com.ff.game.domain.KeyInfo;
import com.ff.game.domain.Platform;
import com.ff.game.service.IPlatformService;
import com.ff.game.api.request.*;
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.game.service.IGameService;
import com.ff.member.domain.Member;
import com.ff.member.service.IMemberService;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -34,12 +32,10 @@ import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.math.BigDecimal;
@ -62,21 +58,31 @@ import java.util.concurrent.Future;
@Slf4j
public class ApiMemberController extends BaseController {
@Autowired
private Map<String, IGamesService> gamesService;
@Resource
private IGameService gameService;
@Resource
private KeyConfig keyConfig;
@Resource
private IGameSecretKeyService gameSecretKeyService;
@Resource
private IMemberService memberService;
@Autowired
@Qualifier("threadPoolTaskExecutor")
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
@Resource
private IPlatformService platformService;
private IGameSecretKeyCurrencyService gameSecretKeyCurrencyService;
/**
*
@ -92,38 +98,24 @@ public class ApiMemberController extends BaseController {
ApiException.notNull(iGamesService, ErrorCode.PLATFORM_NOT_EXIST.getCode());
TenantSecretKey tenantSecretKey = keyConfig.get();
GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(memberCreateApiRequest.getPlatformCode())
.systemCurrency(memberCreateApiRequest.getCurrencyCode()).build());
Platform platform = platformService.get(memberCreateApiRequest.getPlatformCode());
ApiException.notNull(platform, ErrorCode.CURRENCY_NOT_EXIST.getCode());
String targetCurrency = platform.getCurrencyInfo().get(memberCreateApiRequest.getCurrencyCode());
ApiException.notNull(targetCurrency, ErrorCode.CURRENCY_NOT_EXIST.getCode());
KeyInfo keyInfo = null;
for (KeyInfo keyData : platform.getKeyInfo()) {
if (StringUtils.isNotEmpty(memberCreateApiRequest.getCurrencyCode())) {
if (keyData.getCurrency().equalsIgnoreCase(memberCreateApiRequest.getCurrencyCode())) {
keyInfo = keyData;
break;
}
}
}
ApiException.notNull(keyInfo, ErrorCode.CURRENCY_NOT_EXIST.getCode());
// GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
// .platformCode(memberCreateApiRequest.getPlatformCode())
// .systemCurrency(memberCreateApiRequest.getCurrencyCode()).build());
// ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode());
ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode());
String gameAccount = StringUtils.addSuffix(memberService.getMemberGameAccount(memberCreateApiRequest.getPlatformCode()), tenantSecretKey.getTenantSn());
// 获取用户信息
Member gameMember = memberService.selectMemberByAccount(memberCreateApiRequest.getAccount(), memberCreateApiRequest.getCurrencyCode(), memberCreateApiRequest.getPlatformCode());
if (!ObjectUtils.isEmpty(gameMember)) {
if (!ObjectUtils.isEmpty(gameMember)){
throw new ApiException(ErrorCode.GAME_ACCOUNT_CREATION_FAILED.getCode());
}
//注册本地账号
Member member = Member.builder()
.tenantKey(tenantSecretKey.getTenantKey())
@ -138,14 +130,11 @@ public class ApiMemberController extends BaseController {
//向第三方注册账号
CreateMemberRequestDTO gamesBaseRequestDTO = CreateMemberRequestDTO.builder()
.account(gameAccount)
.agentId(keyInfo.getCode())
.agentKey(keyInfo.getKey())
.agentId(gameSecretKey.getCode())
.agentKey(gameSecretKey.getKey())
.betLimit(memberCreateApiRequest.getBetLimit())
.platformType(memberCreateApiRequest.getPlatformType())
.currency(targetCurrency)
.vendor(platform)
.keyInfo(keyInfo)
.systemCurrency(memberCreateApiRequest.getCurrencyCode())
.currency(gameSecretKey.getCurrency())
.build();
Boolean result = iGamesService.createMember(gamesBaseRequestDTO);
Assert.isTrue(result, "建立游戏账号失败");
@ -157,52 +146,35 @@ public class ApiMemberController extends BaseController {
/**
*
*
* @param request api
* @param memberInfoApiRequest api
* @return {@link AjaxResult }
*/
@PostMapping("/info")
public AjaxResult getMemberInfo(@Validated @RequestBody MemberInfoApiRequest request) {
IGamesService iGamesService = gamesService.get(request.getPlatformCode() + Constants.SERVICE);
public AjaxResult getMemberInfo(@Validated @RequestBody MemberInfoApiRequest memberInfoApiRequest) {
IGamesService iGamesService = gamesService.get(memberInfoApiRequest.getPlatformCode() + Constants.SERVICE);
ApiException.notNull(iGamesService, ErrorCode.PLATFORM_NOT_EXIST.getCode());
TenantSecretKey tenantSecretKey = keyConfig.get();
// GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
// .platformCode(memberInfoApiRequest.getPlatformCode())
// .systemCurrency(memberInfoApiRequest.getCurrencyCode()).build());
//
// ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode());
Platform platform = platformService.get(request.getPlatformCode());
ApiException.notNull(platform, ErrorCode.PLATFORM_NOT_EXIST.getCode());
GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(memberInfoApiRequest.getPlatformCode())
.systemCurrency(memberInfoApiRequest.getCurrencyCode()).build());
String targetCurrency = platform.getCurrencyInfo().get(request.getCurrencyCode());
ApiException.notNull(targetCurrency, ErrorCode.CURRENCY_NOT_EXIST.getCode());
ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode());
KeyInfo keyInfo = null;
for (KeyInfo keyData : platform.getKeyInfo()) {
if (StringUtils.isNotEmpty(request.getCurrencyCode())) {
if (keyData.getCurrency().equalsIgnoreCase(request.getCurrencyCode())) {
keyInfo = keyData;
break;
}
}
}
ApiException.notNull(keyInfo, ErrorCode.CURRENCY_NOT_EXIST.getCode());
// 获取用户信息
Member member = memberService.selectMemberByAccount(request.getAccount(), request.getCurrencyCode(), request.getPlatformCode());
Member member = memberService.selectMemberByAccount(memberInfoApiRequest.getAccount(), memberInfoApiRequest.getCurrencyCode(), memberInfoApiRequest.getPlatformCode());
ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode());
//向第三方查询账号
MemberInfoRequestDTO gamesBaseRequestDTO = MemberInfoRequestDTO.builder()
.accounts(member.getGameAccount())
.agentId(keyInfo.getCode())
.currency(targetCurrency)
.agentKey(keyInfo.getKey())
.vendor(platform)
.keyInfo(keyInfo)
.systemCurrency(request.getCurrencyCode())
.agentId(gameSecretKey.getCode())
.currency(gameSecretKey.getCurrency())
.agentKey(gameSecretKey.getKey())
.build();
MemberInfoResponseDTO memberInfo = iGamesService.getMemberInfo(gamesBaseRequestDTO);
MemberInfoResponse memberInfoResponse = new MemberInfoResponse();
@ -221,50 +193,22 @@ public class ApiMemberController extends BaseController {
public AjaxResult infoAll(@Validated @RequestBody MemberInfoAllApiRequest memberInfoAllApiRequest) {
// List<GameSecretKeyCurrencyDTO> gameSecretKeys = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTOList(
// GameSecretKeyCurrencyDTO.builder()
// .systemCurrency(memberInfoAllApiRequest.getCurrencyCode()).build());
List<Key> keys = new ArrayList<>();
for (GamePlatforms platformEnum : GamePlatforms.values()) {
Platform platform = platformService.get(platformEnum.getCode());
String targetCurrency = platform.getCurrencyInfo().get(memberInfoAllApiRequest.getCurrencyCode());
if (StringUtils.isEmpty(targetCurrency)) {
continue;
}
KeyInfo keyInfo = null;
for (KeyInfo keyData : platform.getKeyInfo()) {
if (StringUtils.isNotEmpty(memberInfoAllApiRequest.getCurrencyCode())) {
if (keyData.getCurrency().equalsIgnoreCase(memberInfoAllApiRequest.getCurrencyCode())) {
keyInfo = keyData;
break;
}
}
}
if (null == keyInfo) {
continue;
}
Key key = new Key();
key.setPlatformCode(platform.getPlatformCode());
key.setCode(keyInfo.getCode());
key.setKey(keyInfo.getKey());
key.setCurrency(targetCurrency);
key.setSystemCurrency(memberInfoAllApiRequest.getCurrencyCode());
keys.add(key);
}
List<GameSecretKeyCurrencyDTO> gameSecretKeys = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTOList(GameSecretKeyCurrencyDTO.builder()
.systemCurrency(memberInfoAllApiRequest.getCurrencyCode()).build());
// 创建线程池
Map<String, BigDecimal> balanceMap = new LinkedHashMap<>();
CountDownLatch latch = new CountDownLatch(keys.size());
CountDownLatch latch = new CountDownLatch(gameSecretKeys.size());
// 使用List存储Future对象用于获取异步执行的结果
List<Future<MemberInfoAllResponse>> futures = new ArrayList<>();
// 提交异步任务到线程池
for (Key gameSecretKey : keys) {
for (GameSecretKeyCurrencyDTO gameSecretKey : gameSecretKeys) {
futures.add(threadPoolTaskExecutor.submit(() -> {
try {
IGamesService iGamesService = gamesService.get(gameSecretKey.getPlatformCode() + Constants.SERVICE);
@ -277,7 +221,6 @@ public class ApiMemberController extends BaseController {
.accounts(member.getGameAccount())
.agentId(gameSecretKey.getCode())
.currency(gameSecretKey.getCurrency())
.systemCurrency(gameSecretKey.getSystemCurrency())
.agentKey(gameSecretKey.getKey())
.build();
//查询余额
@ -313,13 +256,5 @@ public class ApiMemberController extends BaseController {
return AjaxResult.success(balanceMap);
}
@Data
class Key {
private String platformCode;
private String code;
private String currency;
private String key;
private String systemCurrency;
}
}

View File

@ -49,11 +49,5 @@ public class GameDemoLoginRequest implements Serializable {
*/
private Integer disableFullScreen;
/**
*
*/
@NotBlank(message = "currencyCode不能为空")
@Length(max = 32, message = "currencyCode长度不能超过32个字符")
private String currencyCode;
}

View File

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

View File

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

View File

@ -5,7 +5,6 @@ import com.ff.base.system.domain.SysDatasource;
import com.ff.base.system.mapper.SysDatasourceMapper;
import com.ff.base.system.service.ISysConfigService;
import com.ff.base.system.service.ISysDictTypeService;
import com.ff.game.service.IPlatformService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.context.ApplicationListener;
@ -35,9 +34,6 @@ public class ContentRefreshedEventListener implements ApplicationListener<Contex
@Resource
private ISysDictTypeService sysDictTypeService;
@Resource
private IPlatformService platformService;
/**
*
*
@ -54,7 +50,5 @@ public class ContentRefreshedEventListener implements ApplicationListener<Contex
}
sysConfigService.loadingConfigCache();
sysDictTypeService.loadingDictCache();
platformService.loadToCache();
}
}

View File

@ -3,8 +3,8 @@ package com.ff.game.api.ae.address;
import com.dtflys.forest.callback.AddressSource;
import com.dtflys.forest.http.ForestAddress;
import com.dtflys.forest.http.ForestRequest;
import com.ff.base.enums.GamePlatforms;
import com.ff.game.service.IPlatformService;
import com.ff.base.constant.Constants;
import com.ff.base.system.service.ISysConfigService;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@ -20,12 +20,12 @@ import javax.annotation.Resource;
public class MyAEAddressSource implements AddressSource {
@Resource
private IPlatformService platformService;
private ISysConfigService configService;
@Override
public ForestAddress getAddress(ForestRequest request) {
String apiBaseUrl = platformService.get(GamePlatforms.AE.getCode())
.getUrlInfo().getUrl();
return new ForestAddress("https", apiBaseUrl, 443, "");
String apiBaseUrl = configService.selectConfigByKey(Constants.AE_API_BASE_URL);
return new ForestAddress("https",apiBaseUrl, 443,"");
}
}

View File

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

View File

@ -3,8 +3,8 @@ package com.ff.game.api.dg.address;
import com.dtflys.forest.callback.AddressSource;
import com.dtflys.forest.http.ForestAddress;
import com.dtflys.forest.http.ForestRequest;
import com.ff.base.enums.GamePlatforms;
import com.ff.game.service.IPlatformService;
import com.ff.base.constant.Constants;
import com.ff.base.system.service.ISysConfigService;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@ -20,12 +20,12 @@ import javax.annotation.Resource;
public class MyDGAddressSource implements AddressSource {
@Resource
private IPlatformService platformService;
private ISysConfigService configService;
@Override
public ForestAddress getAddress(ForestRequest request) {
String apiBaseUrl = platformService.get(GamePlatforms.DG.getCode())
.getUrlInfo().getUrl();
return new ForestAddress("http", apiBaseUrl, 80, "");
String apiBaseUrl = configService.selectConfigByKey(Constants.DG_API_BASE_URL);
return new ForestAddress("http",apiBaseUrl, 80,"");
}
}

View File

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

View File

@ -3,8 +3,8 @@ package com.ff.game.api.fc.address;
import com.dtflys.forest.callback.AddressSource;
import com.dtflys.forest.http.ForestAddress;
import com.dtflys.forest.http.ForestRequest;
import com.ff.base.enums.GamePlatforms;
import com.ff.game.service.IPlatformService;
import com.ff.base.constant.Constants;
import com.ff.base.system.service.ISysConfigService;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@ -13,13 +13,12 @@ import javax.annotation.Resource;
public class MyFCAddressSource implements AddressSource {
@Resource
private IPlatformService platformService;
private ISysConfigService configService;
@Override
public ForestAddress getAddress(ForestRequest request) {
String apiBaseUrl = platformService.get(GamePlatforms.FC.getCode())
.getUrlInfo().getUrl();
return new ForestAddress("https", apiBaseUrl, 443, "");
String apiBaseUrl = configService.selectConfigByKey(Constants.FC_API_BASE_URL);
return new ForestAddress("https",apiBaseUrl, 443,"");
}
}

View File

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

View File

@ -3,11 +3,13 @@ package com.ff.game.api.jili.address;
import com.dtflys.forest.callback.AddressSource;
import com.dtflys.forest.http.ForestAddress;
import com.dtflys.forest.http.ForestRequest;
import com.ff.base.enums.GamePlatforms;
import com.ff.game.service.IPlatformService;
import com.ff.base.constant.Constants;
import com.ff.base.system.service.ISysConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Random;
/**
@ -17,15 +19,15 @@ import javax.annotation.Resource;
* @date 2025/02/10
*/
@Component
public class MyJILIAddressSource implements AddressSource {
public class MyJILIAddressSource implements AddressSource {
@Resource
private IPlatformService platformService;
private ISysConfigService configService;
@Override
public ForestAddress getAddress(ForestRequest request) {
String apiBaseUrl = platformService.get(GamePlatforms.FC.getCode())
.getUrlInfo().getUrl();
return new ForestAddress("https", apiBaseUrl, 443, "api1");
String apiBaseUrl = configService.selectConfigByKey(Constants.JILI_API_BASE_URL);
return new ForestAddress("https",apiBaseUrl, 443,"api1");
}
}

View File

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

View File

@ -3,8 +3,8 @@ package com.ff.game.api.km.address;
import com.dtflys.forest.callback.AddressSource;
import com.dtflys.forest.http.ForestAddress;
import com.dtflys.forest.http.ForestRequest;
import com.ff.base.enums.GamePlatforms;
import com.ff.game.service.IPlatformService;
import com.ff.base.constant.Constants;
import com.ff.base.system.service.ISysConfigService;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@ -20,12 +20,12 @@ import javax.annotation.Resource;
public class MyKMAddressSource implements AddressSource {
@Resource
private IPlatformService platformService;
private ISysConfigService configService;
@Override
public ForestAddress getAddress(ForestRequest request) {
String apiBaseUrl = platformService.get(GamePlatforms.KM.getCode())
.getUrlInfo().getUrl();
return new ForestAddress("https", apiBaseUrl, 443, "api");
String apiBaseUrl = configService.selectConfigByKey(Constants.KM_API_BASE_URL_LOGIN);
return new ForestAddress("https",apiBaseUrl, 443,"api");
}
}

View File

@ -2,28 +2,34 @@ package com.ff.game.api.km.impl;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.NumberUtil;
import com.alibaba.druid.support.json.JSONUtils;
import com.ff.base.constant.CacheConstants;
import com.ff.base.constant.ConfigConstants;
import com.ff.base.constant.Constants;
import com.ff.base.core.redis.RedisCache;
import com.ff.base.enums.*;
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.utils.DateUtils;
import com.ff.base.utils.JsonUtil;
import com.ff.base.utils.StringUtils;
import com.ff.base.utils.ip.IpUtils;
import com.ff.base.utils.sign.Md5Utils;
import com.ff.base.utils.uuid.IdUtils;
import com.ff.config.KeyConfig;
import com.ff.game.api.IGamesService;
import com.ff.game.api.dg.dto.DGBetRecordResponseDTO;
import com.ff.game.api.dg.dto.DGResponse;
import com.ff.game.api.dg.dto.DGUserListResponseDTO;
import com.ff.game.api.jili.dto.JILIGamesDataDTO;
import com.ff.game.api.km.client.KMClient;
import com.ff.game.api.km.dto.*;
import com.ff.game.api.request.*;
import com.ff.game.api.xk.dto.XKGamesDTO;
import com.ff.game.domain.*;
import com.ff.game.service.IGameBettingDetailsService;
import com.ff.game.service.IGameExchangeMoneyService;
import com.ff.game.service.IGameService;
import com.ff.game.service.IPlatformService;
import com.ff.game.dto.GameSecretKeyCurrencyDTO;
import com.ff.game.service.*;
import com.ff.member.domain.Member;
import com.ff.member.service.IMemberService;
import lombok.extern.slf4j.Slf4j;
@ -51,8 +57,9 @@ import java.util.stream.Collectors;
@Slf4j
public class GamesKMServiceImpl implements IGamesService {
@Resource
private IPlatformService platformService;
private ISysConfigService configService;
@Resource
private RedisCache redisCache;
@ -60,6 +67,11 @@ public class GamesKMServiceImpl implements IGamesService {
@Resource
private IGameExchangeMoneyService gameExchangeMoneyService;
@Resource
private IGamePlatformService gamePlatformService;
@Resource
private IGameService gameService;
@ -67,6 +79,14 @@ public class GamesKMServiceImpl implements IGamesService {
@Resource
private IMemberService memberService;
@Resource
private IGameFreeRecordService gameFreeRecordService;
@Resource
private IGameSecretKeyService gameSecretKeyService;
@Resource
private IGameSecretKeyCurrencyService gameSecretKeyCurrencyService;
@Resource
private KMClient KMClient;
@ -77,6 +97,9 @@ public class GamesKMServiceImpl implements IGamesService {
@Resource
private IGameBettingDetailsService gameBettingDetailsService;
@Resource
private IGameNameService gameNameService;
/**
* id
@ -168,14 +191,14 @@ public class GamesKMServiceImpl implements IGamesService {
public MemberInfoResponseDTO getMemberInfo(MemberInfoRequestDTO memberInfoRequestDTO) {
log.info("GamesDGServiceImpl [getMemberInfo] 请求参数 {}", memberInfoRequestDTO);
Map<String, Object> paramsMap = new HashMap<>();
// Member member = memberService.selectMemberByGameAccount(memberInfoRequestDTO.getAccounts());
// GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
// .platformCode(GamePlatforms.KM.getInfo())
// .currency(member.getCurrencyCode())
// .build());
Member member = memberService.selectMemberByGameAccount(memberInfoRequestDTO.getAccounts());
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(GamePlatforms.KM.getInfo())
.currency(member.getCurrencyCode())
.build());
paramsMap.put("userid", memberInfoRequestDTO.getAccounts());
paramsMap.put("cur", memberInfoRequestDTO.getCurrency());
paramsMap.put("cur", currencyDTO.getCurrency());
Map<String, Object> headerMap = this.getKey(memberInfoRequestDTO);
KMBalanceResponse memberInfo = KMClient.getMemberInfo(JsonUtil.mapToQueryString(paramsMap), headerMap);
if (ObjectUtils.isEmpty(memberInfo.getErrorCode()) || this.getIsSuccess(memberInfo.getErrorCode())) {
@ -196,26 +219,26 @@ public class GamesKMServiceImpl implements IGamesService {
log.info("GamesKMServiceImpl [loginWithoutRedirect] 请求参数 {}", gamesLogin);
String kmUserToken = redisCache.getCacheObject(CacheConstants.KM_USER_TOKEN + gamesLogin.getAccount());
if (StringUtils.isEmpty(kmUserToken)) {
// Member member = memberService.selectMemberByGameAccount(gamesLogin.getAccount());
// GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
// .platformCode(GamePlatforms.KM.getInfo())
// .currency(member.getCurrencyCode())
// .build());
Member member = memberService.selectMemberByGameAccount(gamesLogin.getAccount());
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(GamePlatforms.KM.getInfo())
.currency(member.getCurrencyCode())
.build());
CreateMemberRequestDTO gamesBaseRequestDTO = CreateMemberRequestDTO.builder()
.account(gamesLogin.getAccount())
.agentId(gamesLogin.getAgentId())
.agentKey(gamesLogin.getAgentKey())
.currency(gamesLogin.getCurrency())
.currency(currencyDTO.getCurrency())
.build();
this.createMember(gamesBaseRequestDTO);
kmUserToken = redisCache.getCacheObject(CacheConstants.KM_USER_TOKEN + gamesLogin.getAccount());
}
String loginUrl = platformService.get(GamePlatforms.KM.getCode()).getUrlInfo().getLoginUrl();
//String selectConfigByKey = configService.selectConfigByKey(Constants.KM_API_BASE_LOGIN_URL);
return loginUrl + "/gamelauncher?gpcode=" + gamesLogin.getGameType()
String selectConfigByKey = configService.selectConfigByKey(Constants.KM_API_BASE_LOGIN_URL);
return selectConfigByKey + "/gamelauncher?gpcode=" + gamesLogin.getGameType()
+ "&gcode=" + gamesLogin.getGameId()
+ "&token=" + kmUserToken
+ "&lang=" + gamesLogin.getLang();
@ -269,11 +292,11 @@ public class GamesKMServiceImpl implements IGamesService {
.anyMatch(pc -> pc.getCode().equals(mobile.getCode())))
.collect(Collectors.toList());
for (KMGameResponse.Game game : games) {
// GamePlatform gamePlatform = GamePlatform.builder()
// .platformType(KMGameType.findSystemByCode(game.getProviderCode()))
// .platformCode(GamePlatforms.KM.getCode())
// .build();
/*List<GamePlatform> gamePlatforms = gamePlatformService.selectGamePlatformList(gamePlatform);
GamePlatform gamePlatform = GamePlatform.builder()
.platformType(KMGameType.findSystemByCode(game.getProviderCode()))
.platformCode(GamePlatforms.KM.getCode())
.build();
List<GamePlatform> gamePlatforms = gamePlatformService.selectGamePlatformList(gamePlatform);
//没有此平台就新增一个平台
if (CollectionUtils.isEmpty(gamePlatforms)) {
gamePlatform.setPlatformName(GamePlatforms.KM.getInfo() + KMGameType.findInfoByCode(game.getProviderCode()));
@ -282,12 +305,9 @@ public class GamesKMServiceImpl implements IGamesService {
gamePlatformService.insertGamePlatform(gamePlatform);
} else {
gamePlatform = gamePlatforms.get(0);
}*/
Integer platformType = KMGameType.findSystemByCode(game.getProviderCode());
}
Game gameOne = Game.builder()
//.platformId(gamePlatform.getId())
.platformCode(GamePlatforms.KM.getCode())
.platformType(platformType)
.platformId(gamePlatform.getId())
.gameCode(game.getCode())
.build();
List<Game> gameOnes = gameService.selectGameList(gameOne);
@ -312,11 +332,11 @@ public class GamesKMServiceImpl implements IGamesService {
*/
private List<KMGameResponse.Game> gameList(KMGameResponse gameList, Integer ingress) {
for (KMGameResponse.Game gamesDataDTO : gameList.getGames()) {
// GamePlatform gamePlatform = GamePlatform.builder()
// .platformType(KMGameType.findSystemByCode(gamesDataDTO.getProviderCode()))
// .platformCode(GamePlatforms.KM.getCode())
// .build();
/*List<GamePlatform> gamePlatforms = gamePlatformService.selectGamePlatformList(gamePlatform);
GamePlatform gamePlatform = GamePlatform.builder()
.platformType(KMGameType.findSystemByCode(gamesDataDTO.getProviderCode()))
.platformCode(GamePlatforms.KM.getCode())
.build();
List<GamePlatform> gamePlatforms = gamePlatformService.selectGamePlatformList(gamePlatform);
//没有此平台就新增一个平台
if (CollectionUtils.isEmpty(gamePlatforms)) {
gamePlatform.setPlatformName(GamePlatforms.KM.getInfo() + KMGameType.findInfoByCode(gamesDataDTO.getProviderCode()));
@ -325,12 +345,9 @@ public class GamesKMServiceImpl implements IGamesService {
gamePlatformService.insertGamePlatform(gamePlatform);
} else {
gamePlatform = gamePlatforms.get(0);
}*/
Integer platformType = KMGameType.findSystemByCode(gamesDataDTO.getProviderCode());
}
Game game = Game.builder()
//.platformId(gamePlatform.getId())
.platformCode(GamePlatforms.KM.getCode())
.platformType(platformType)
.platformId(gamePlatform.getId())
.gameCode(gamesDataDTO.getCode())
.build();
List<Game> games = gameService.selectGameList(game);
@ -339,29 +356,24 @@ public class GamesKMServiceImpl implements IGamesService {
game.setGameSourceType(gamesDataDTO.getProviderCode());
game.setFreespin(Boolean.FALSE);
game.setDemoStatus(gamesDataDTO.getSupportDemoUrl());
game.setSortNo(gameService.selectMaxSortNo(platformType, GamePlatforms.KM.getCode()) + 1);
game.setSortNo(gameService.selectMaxSortNoByPlatformId(gamePlatform.getId()) + 1);
game.setGameName(gamesDataDTO.getName());
game.setCreateBy(Constants.SYSTEM);
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);
} else {
game = games.get(0);
}
gamesDataDTO.setSystemGameId(game.getId());
// List<GameName> gameNames = gameNameService.selectGameNameList(GameName.builder().gameId(game.getId()).gameName(game.getGameName()).build());
// if (CollectionUtils.isEmpty(gameNames)) {
// gameNameService.insertGameName(GameName.builder()
// .gameId(game.getId())
// .gameName(game.getGameName())
// .langCode("zh-CN")
// .createBy(Constants.SYSTEM)
// .build());
// }
List<GameName> gameNames = gameNameService.selectGameNameList(GameName.builder().gameId(game.getId()).gameName(game.getGameName()).build());
if (CollectionUtils.isEmpty(gameNames)) {
gameNameService.insertGameName(GameName.builder()
.gameId(game.getId())
.gameName(game.getGameName())
.langCode("zh-CN")
.createBy(Constants.SYSTEM)
.build());
}
}
return gameList.getGames();
@ -377,10 +389,10 @@ public class GamesKMServiceImpl implements IGamesService {
@Transactional
public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) {
log.info("GamesKMServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO);
// GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
// .platformCode(GamePlatforms.KM.getInfo())
// .currency(exchangeTransferMoneyRequestDTO.getCurrency())
// .build());
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(GamePlatforms.KM.getInfo())
.currency(exchangeTransferMoneyRequestDTO.getCurrency())
.build());
Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount());
String transactionId = GamePlatforms.KM.getInfo() + IdUtils.simpleUUID();
@ -400,7 +412,7 @@ public class GamesKMServiceImpl implements IGamesService {
.quota(exchangeTransferMoneyRequestDTO.getQuota())
.balance(exchangeTransferMoneyRequestDTO.getAmount())
.exchangeType(exchangeTransferMoneyRequestDTO.getTransferType())
.currencyCode(exchangeTransferMoneyRequestDTO.getSystemCurrency())
.currencyCode(currencyDTO.getSystemCurrency())
.memberId(member.getId())
.transactionId(transactionId)
.platformCode(GamePlatforms.KM.getInfo())
@ -423,7 +435,7 @@ public class GamesKMServiceImpl implements IGamesService {
Map<String, Object> params = new LinkedHashMap<>();
params.put("userid", exchangeTransferMoneyRequestDTO.getAccount());
params.put("amt", amount);
params.put("cur", exchangeTransferMoneyRequestDTO.getCurrency());
params.put("cur", currencyDTO.getCurrency());
params.put("txid", transactionId);
Map<String, Object> headerMap = this.getKey(exchangeTransferMoneyRequestDTO);
@ -496,7 +508,9 @@ public class GamesKMServiceImpl implements IGamesService {
KMBetRecordResponse betRecordByTime = KMClient.getBetRecordByTime(JsonUtil.mapToQueryString(params), key);
if (ObjectUtils.isEmpty(betRecordByTime.getErrorCode()) || this.getIsSuccess(betRecordByTime.getErrorCode())) {
this.batchInsert(betRecordByTime, betRecordByTimeDTO);
this.batchInsert(betRecordByTime);
return Boolean.TRUE;
} else {
log.error("GamesKMServiceImpl [getBetRecordByTime] 获取投注记录失败,错误代码{},错误信息{}", betRecordByTime.getErrorCode(), betRecordByTime.getErrorDescription());
@ -555,7 +569,7 @@ public class GamesKMServiceImpl implements IGamesService {
if (ObjectUtils.isEmpty(kickMember.getErrorCode()) || this.getIsSuccess(kickMember.getErrorCode())) {
redisCache.deleteObject(CacheConstants.KM_USER_TOKEN + kickMemberRequestDTO.getAccount());
return kickMember.isSuccess();
} else {
}else {
throw new BaseException(kickMember.getDescription());
}
}
@ -604,10 +618,9 @@ public class GamesKMServiceImpl implements IGamesService {
log.info("GamesKMServiceImpl [gameDemoLogin] 请求参数 {}", gameDemoLoginRequestDTO);
Map<String, Object> params = new LinkedHashMap<>();
params.put("lang", gameDemoLoginRequestDTO.getLang());
String loginUrl = platformService.get(GamePlatforms.KM.getCode()).getUrlInfo().getLoginUrl();
//String selectConfigByKey = configService.selectConfigByKey(Constants.KM_API_BASE_LOGIN_URL);
String selectConfigByKey = configService.selectConfigByKey(Constants.KM_API_BASE_LOGIN_URL);
return GameDemoLoginResponseDTO.builder()
.url(loginUrl + "/demolauncher?gpcode=" + gameDemoLoginRequestDTO.getGameType()
.url(selectConfigByKey + "/demolauncher?gpcode=" + gameDemoLoginRequestDTO.getGameType()
+ "&gcode=" + gameDemoLoginRequestDTO.getGameId()
+ "&lang=" + gameDemoLoginRequestDTO.getLang())
.build();
@ -619,18 +632,14 @@ public class GamesKMServiceImpl implements IGamesService {
*
* @param betRecordByTime dgdto
*/
private void batchInsert(KMBetRecordResponse betRecordByTime, BetRecordByTimeDTO betRecordByTimeDTO) {
private void batchInsert(KMBetRecordResponse betRecordByTime) {
List<GameBettingDetails> gameBettingDetails = new ArrayList<>();
List<String> wagersIds = new ArrayList<>();
//数据组装
List<KMBetRecordResponse.Bet> report = betRecordByTime.getBets();
//数据转化
for (KMBetRecordResponse.Bet bean : report) {
GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder()
//.systemCurrencyCode(systemCurrency)
//.currencyCode(targetCurrency)
.platform(betRecordByTimeDTO.getVendor())
.data(bean).build());
GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder().data(bean).build());
if (!ObjectUtils.isEmpty(bettingDetails)) {
bettingDetails.setId(IdUtil.getSnowflakeNextId());
gameBettingDetails.add(bettingDetails);
@ -661,11 +670,12 @@ public class GamesKMServiceImpl implements IGamesService {
public GameBettingDetails dataBuild(GamesDataBuildDTO gamesDataBuildDTO) {
//转化类
KMBetRecordResponse.Bet resultBean = (KMBetRecordResponse.Bet) gamesDataBuildDTO.getData();
//
// GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
// .platformCode(GamePlatforms.KM.getInfo())
// .currency(resultBean.getCurrency())
// .build());
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(GamePlatforms.KM.getInfo())
.currency(resultBean.getCurrency())
.build());
Member member = memberService.selectMemberByGameAccount(resultBean.getUserId());
@ -673,17 +683,16 @@ public class GamesKMServiceImpl implements IGamesService {
return null;
}
List<KMGameResponse.Game> gamesDatas = redisCache.getCacheList(CacheConstants.KM_GAMES);
Map<String, KMGameResponse.Game> dataDTOMap = gamesDatas.stream().collect(Collectors.toMap(
Map<String, KMGameResponse.Game> dataDTOMap = gamesDatas.stream() .collect(Collectors.toMap(
KMGameResponse.Game::getCode,
e -> e,
(existing, replacement) -> existing
));
;
));;
KMGameResponse.Game gamesDataDTO = dataDTOMap.get(resultBean.getGCode());
//输赢状态
Integer gameStatus = GameStatus.FLAT.getCode();
BigDecimal payoffAmount = NumberUtil.sub(resultBean.getWinAmount(), resultBean.getRiskAmount().abs());
BigDecimal payoffAmount =NumberUtil.sub(resultBean.getWinAmount(), resultBean.getRiskAmount().abs());
if (payoffAmount.compareTo(BigDecimal.ZERO) > 0) {
gameStatus = GameStatus.WIN.getCode();
} else if (payoffAmount.compareTo(BigDecimal.ZERO) < 0) {
@ -691,22 +700,20 @@ public class GamesKMServiceImpl implements IGamesService {
}
Platform platform = gamesDataBuildDTO.getPlatform();
String systemCurrency = platform.getOurCurrency(resultBean.getCurrency());
//数据构造
GameBettingDetails gameBettingDetails = GameBettingDetails.builder()
.tenantKey(member.getTenantKey())
//保存我们的币种id
.currencyCode(systemCurrency)
.currencyCode(currencyDTO.getSystemCurrency())
.memberId(member.getId())
.gameCode(gamesDataDTO.getCode())
.gameType(PlatformType.CARD_GAME.getCode())
.platformCode(GamePlatforms.KM.getCode())
.platformCode(GamePlatforms.KM.getInfo())
.gameId(GAME_ID)
.gameName(gamesDataDTO.getName())
.gameStatus(gameStatus)
.gameStatusType(1)
.gameCurrencyCode(resultBean.getCurrency())
.gameCurrencyCode(currencyDTO.getCurrency())
.account(resultBean.getUserId())
.wagersId(resultBean.getId())
.wagersTime(resultBean.getBeton().getTime())

View File

@ -3,8 +3,8 @@ package com.ff.game.api.meitian.address;
import com.dtflys.forest.callback.AddressSource;
import com.dtflys.forest.http.ForestAddress;
import com.dtflys.forest.http.ForestRequest;
import com.ff.base.enums.GamePlatforms;
import com.ff.game.service.IPlatformService;
import com.ff.base.constant.Constants;
import com.ff.base.system.service.ISysConfigService;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@ -18,12 +18,12 @@ import javax.annotation.Resource;
public class MeiTianAddressSource implements AddressSource {
@Resource
private IPlatformService platformService;
private ISysConfigService configService;
@Override
public ForestAddress getAddress(ForestRequest request) {
String apiBaseUrl = platformService.get(GamePlatforms.MT.getCode())
.getUrlInfo().getUrl();
String apiBaseUrl = configService.selectConfigByKey(Constants.MEITIAN_API_BASE_URL);
return new ForestAddress("https", apiBaseUrl, 443, "services");
}
}

View File

@ -0,0 +1,89 @@
package com.ff.game.api.meitian.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
/**
* JiLi
*
* @author shi
* @date 2024/10/21
*/
@NoArgsConstructor
@Data
public class JILIBetRecordDataResponseDTO {
/**
*
*/
@JsonProperty("Account")
private String account;
/**
* id
*/
@JsonProperty("WagersId")
private String wagersId;
/**
* id
*/
@JsonProperty("GameId")
private String gameId;
/**
*
*/
@JsonProperty("WagersTime")
private Long wagersTime;
/**
*
*/
@JsonProperty("BetAmount")
private BigDecimal betAmount;
/**
*
*/
@JsonProperty("PayoffTime")
private Long payoffTime;
/**
*
*/
@JsonProperty("PayoffAmount")
private BigDecimal payoffAmount;
/**
* 1: 2: 3:
*/
@JsonProperty("Status")
private int status;
/**
*
*/
@JsonProperty("SettlementTime")
private Long settlementTime;
/**
* id
*/
@JsonProperty("GameCategoryId")
private int gameCategoryId;
/**
*
*/
@JsonProperty("Type")
private int type;
/**
* id
*/
@JsonProperty("AgentId")
private String agentId;
/**
*
*/
@JsonProperty("Turnover")
private BigDecimal turnover;
/**
*
*/
@JsonProperty("RoundIndex")
private long roundIndex;
}

View File

@ -10,6 +10,7 @@ import com.ff.base.enums.*;
import com.ff.base.exception.base.ApiException;
import com.ff.base.exception.base.BaseException;
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.utils.DateUtils;
import com.ff.base.utils.sign.Md5Utils;
@ -19,9 +20,8 @@ import com.ff.game.api.meitian.client.MeiTianClient;
import com.ff.game.api.meitian.dto.*;
import com.ff.game.api.request.*;
import com.ff.game.domain.*;
import com.ff.game.service.IGameBettingDetailsService;
import com.ff.game.service.IGameExchangeMoneyService;
import com.ff.game.service.IGameService;
import com.ff.game.dto.GameSecretKeyCurrencyDTO;
import com.ff.game.service.*;
import com.ff.member.domain.Member;
import com.ff.member.service.IMemberService;
import lombok.extern.slf4j.Slf4j;
@ -55,12 +55,20 @@ import java.util.stream.Collectors;
@Slf4j
public class MeiTianGameServiceImpl implements IGamesService {
@Resource
private ISysConfigService configService;
@Resource
private RedisCache redisCache;
@Resource
private IGameExchangeMoneyService gameExchangeMoneyService;
@Resource
private IGamePlatformService gamePlatformService;
@Resource
private IGameService gameService;
@ -68,12 +76,21 @@ public class MeiTianGameServiceImpl implements IGamesService {
@Resource
private IMemberService memberService;
@Resource
private IGameSecretKeyService gameSecretKeyService;
@Resource
private MeiTianClient meiTianClient;
@Resource
private IGameBettingDetailsService gameBettingDetailsService;
@Resource
private IGameSecretKeyCurrencyService gameSecretKeyCurrencyService;
@Resource
private IGameNameService gameNameService;
@Autowired
private SysConfigServiceImpl sysConfigServiceImpl;
@ -95,10 +112,11 @@ public class MeiTianGameServiceImpl implements IGamesService {
*/
@Override
public Boolean createMember(CreateMemberRequestDTO createMemberRequestDTO) {
GameSecretKey gameSecretKey = gameSecretKeyService.selectGameSecretKeyByCode(createMemberRequestDTO.getAgentId());
String playerName = createMemberRequestDTO.getAccount();
String merchantId = createMemberRequestDTO.getAgentId();
String md5Password = Md5Utils.md5New(createMemberRequestDTO.getKeyInfo().getPassword());
String md5Password = Md5Utils.md5New(gameSecretKey.getPassword());
Map<String, String> rawMap = new LinkedHashMap<>();
rawMap.put("nickname", createMemberRequestDTO.getAccount());
rawMap.put("playerLevel", "0");
@ -110,7 +128,7 @@ public class MeiTianGameServiceImpl implements IGamesService {
log.error("[MeiTian] encode rawData failure", e);
throw new ApiException(ErrorCode.ERROR.getCode());
}
String md5Code = Md5Utils.md5New(createMemberRequestDTO.getKeyInfo().getKey() + rawData);//MD5(key+rawData);
String md5Code = Md5Utils.md5New(gameSecretKey.getKey() + rawData);//MD5(key+rawData);
MeiTianCreateMemberResponseDTO createMemberResponseDTO =
meiTianClient.createMember(
playerName,
@ -163,10 +181,11 @@ public class MeiTianGameServiceImpl implements IGamesService {
*/
@Override
public String loginWithoutRedirect(GamesLogin gamesLogin) {
GameSecretKey gameSecretKey = gameSecretKeyService.selectGameSecretKeyByCode(gamesLogin.getAgentId());
String merchantId = gamesLogin.getAgentId();
String playerName = gamesLogin.getAccount();
String md5Password = Md5Utils.md5New(gamesLogin.getKeyInfo().getPassword());
String md5Password = Md5Utils.md5New(gameSecretKey.getPassword());
Map<String, String> rawMap = new LinkedHashMap<>();
/*rawMap.put("gameHall ", gamesLogin.getGameType());*/
rawMap.put("gameCode", gamesLogin.getGameId());
@ -181,7 +200,7 @@ public class MeiTianGameServiceImpl implements IGamesService {
log.error("[MeiTian] encode rawData failure", e);
throw new ApiException(ErrorCode.ERROR.getCode());
}
String code = Md5Utils.md5New(gamesLogin.getKeyInfo().getKey() + rawData);
String code = Md5Utils.md5New(gameSecretKey.getKey() + rawData);
MeiTianLoginResultDTO loginWithoutRedirectResponseDTO =
meiTianClient.loginWithoutRedirect(
merchantId,
@ -217,25 +236,22 @@ public class MeiTianGameServiceImpl implements IGamesService {
MeiTianGamesDTO gameList = new MeiTianGamesDTO();
for (MeiTianGameDataDTO gamesDataDTO : gameList.getData()) {
/* GamePlatform gamePlatform = GamePlatform.builder()
GamePlatform gamePlatform = GamePlatform.builder()
.platformType(MeiTianGameType.findSystemByCode(gamesDataDTO.getGameCategoryId()))
.platformCode(GamePlatforms.MT.getCode())
.platformCode(GamePlatforms.MeiTian.getCode())
.build();
List<GamePlatform> gamePlatforms = gamePlatformService.selectGamePlatformList(gamePlatform);
//没有此平台就新增一个平台
if (CollectionUtils.isEmpty(gamePlatforms)) {
gamePlatform.setPlatformName(GamePlatforms.MT.getInfo() + MeiTianGameType.findInfoByCode(gamesDataDTO.getGameCategoryId()));
gamePlatform.setPlatformName(GamePlatforms.MeiTian.getInfo() + MeiTianGameType.findInfoByCode(gamesDataDTO.getGameCategoryId()));
gamePlatform.setSortNo(gamePlatformService.selectMaxSortNo() + 1);
gamePlatform.setCreateBy(Constants.SYSTEM);
gamePlatformService.insertGamePlatform(gamePlatform);
} else {
gamePlatform = gamePlatforms.get(0);
}*/
Integer platformType = MeiTianGameType.findSystemByCode(gamesDataDTO.getGameCategoryId());
}
Game game = Game.builder()
//.platformId(gamePlatform.getId())
.platformCode(GamePlatforms.MT.getCode())
.platformType(platformType)
.platformId(gamePlatform.getId())
.gameCode(String.valueOf(gamesDataDTO.getGameId()))
.build();
List<Game> games = gameService.selectGameList(game);
@ -243,23 +259,16 @@ public class MeiTianGameServiceImpl implements IGamesService {
if (CollectionUtils.isEmpty(games)) {
game.setGameSourceType(String.valueOf(gamesDataDTO.getGameCategoryId()));
game.setFreespin(false);
game.setSortNo(gameService.selectMaxSortNo(platformType, GamePlatforms.MT.getCode()) + 1);
game.setSortNo(gameService.selectMaxSortNoByPlatformId(gamePlatform.getId()) + 1);
game.setGameName(gamesDataDTO.getCnName());
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);
} else {
game = games.get(0);
}
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)) {
gameNameService.insertGameName(GameName.builder()
.gameId(game.getId())
@ -267,13 +276,15 @@ public class MeiTianGameServiceImpl implements IGamesService {
.langCode("zh-CN")
.createBy(Constants.SYSTEM)
.build());
//
gameNameService.insertGameName(GameName.builder()
.gameId(game.getId())
.gameName(gamesDataDTO.getEnName())
.langCode("en-US")
.createBy(Constants.SYSTEM)
.build());
}*/
}
}
@ -293,12 +304,12 @@ public class MeiTianGameServiceImpl implements IGamesService {
@Override
@Transactional
public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) {
// GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
// .code(exchangeTransferMoneyRequestDTO.getAgentId())
// .currency(exchangeTransferMoneyRequestDTO.getCurrency()).build());
GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.code(exchangeTransferMoneyRequestDTO.getAgentId())
.currency(exchangeTransferMoneyRequestDTO.getCurrency()).build());
Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount());
String transactionId = GamePlatforms.MT.getCode() + IdUtils.simpleUUID();
String transactionId = GamePlatforms.MeiTian.getCode() + IdUtils.simpleUUID();
List<GameExchangeMoney> gameExchangeMonies = gameExchangeMoneyService.selectGameExchangeMoneyList(
GameExchangeMoney.builder()
@ -317,18 +328,17 @@ public class MeiTianGameServiceImpl implements IGamesService {
.quota(exchangeTransferMoneyRequestDTO.getQuota())
.balance(exchangeTransferMoneyRequestDTO.getAmount())
.exchangeType(exchangeTransferMoneyRequestDTO.getTransferType())
.currencyCode(exchangeTransferMoneyRequestDTO.getSystemCurrency())
.currencyCode(gameSecretKey.getSystemCurrency())
.memberId(member.getId())
.transactionId(transactionId)
.platformCode(GamePlatforms.MT.getCode())
.platformCode(GamePlatforms.MeiTian.getCode())
.build();
exchangeMoney.setCreateBy(Constants.SYSTEM);
//接口限制限制50字符
exchangeMoney.setTransactionId(transactionId);
// String key = gameSecretKey.getKey();
String key = exchangeTransferMoneyRequestDTO.getAgentKey();
String key = gameSecretKey.getKey();
String merchantId = exchangeTransferMoneyRequestDTO.getAgentId();
String playerName = exchangeTransferMoneyRequestDTO.getAccount();
String coins = exchangeTransferMoneyRequestDTO.getAmount().setScale(4, RoundingMode.DOWN).toString();
@ -429,7 +439,7 @@ public class MeiTianGameServiceImpl implements IGamesService {
}
boolean doSyncRecordByRecordID(BetRecordByTimeDTO betRecordByTimeDTO) {
String configKey = GamePlatforms.MT.getCode() + ":lastRecordID";
String configKey = GamePlatforms.MeiTian.getCode() + ":lastRecordID";
String lastRecordID = sysConfigServiceImpl.selectConfigByKey(configKey);
long recordID = 0;
if (lastRecordID == null || lastRecordID.isEmpty()) {
@ -460,7 +470,7 @@ public class MeiTianGameServiceImpl implements IGamesService {
return Boolean.TRUE;
}
//数据插入
this.batchInsert(recordResponse, betRecordByTimeDTO);
this.batchInsert(recordResponse);
MeiTianBetRecordResponseDTO.DataBean dataBean = dataList.get(dataList.size() - 1);
SysConfig config = sysConfigServiceImpl.getByConfigKey(configKey);
if (config == null) {
@ -486,7 +496,7 @@ public class MeiTianGameServiceImpl implements IGamesService {
boolean doSyncRecordByDate(BetRecordByTimeDTO betRecordByTimeDTO, int daysToSubtract) {
String date = getDateStr(daysToSubtract);
String configKey = GamePlatforms.MT.getCode() + ":lastSyncDate";
String configKey = GamePlatforms.MeiTian.getCode() + ":lastSyncDate";
String syncDateStr = sysConfigServiceImpl.selectConfigByKey(configKey);
Map<String, Long> syncDateMap = new HashMap<>();
long recordID = 0;
@ -528,7 +538,7 @@ public class MeiTianGameServiceImpl implements IGamesService {
return Boolean.TRUE;
}
//数据插入
this.batchInsert(recordResponse, betRecordByTimeDTO);
this.batchInsert(recordResponse);
MeiTianBetRecordResponseDTO.DataBean dataBean = dataList.get(dataList.size() - 1);
syncDateMap.put(date, Long.parseLong(dataBean.getRowID()));
SysConfig config = sysConfigServiceImpl.getByConfigKey(configKey);
@ -587,8 +597,9 @@ public class MeiTianGameServiceImpl implements IGamesService {
*/
@Override
public GetGameDetailResponseDTO getGameDetail(GetGameDetailRequestDTO getGameDetailRequestDTO) {
GameSecretKey gameSecretKey = gameSecretKeyService.selectGameSecretKeyByCode(getGameDetailRequestDTO.getAgentId());
String key = getGameDetailRequestDTO.getKeyInfo().getKey();
String key = gameSecretKey.getKey();
String merchantId = getGameDetailRequestDTO.getAgentId();
Map<String, String> rawMap = new LinkedHashMap<>();
rawMap.put("rowID", getGameDetailRequestDTO.getWagersId());
@ -689,7 +700,7 @@ public class MeiTianGameServiceImpl implements IGamesService {
*
* @param recordResponse
*/
private void batchInsert(MeiTianBetRecordResponseDTO recordResponse, BetRecordByTimeDTO betRecordByTimeDTO) {
private void batchInsert(MeiTianBetRecordResponseDTO recordResponse) {
List<GameBettingDetails> gameBettingDetails = new ArrayList<>();
List<String> wagersIds = new ArrayList<>();
//数据组装
@ -701,7 +712,6 @@ public class MeiTianGameServiceImpl implements IGamesService {
//数据转化
for (MeiTianBetRecordResponseDTO.DataBean dataBean : dataList) {
GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder()
.platform(betRecordByTimeDTO.getVendor())
.data(dataBean).build());
if (!ObjectUtils.isEmpty(bettingDetails)) {
bettingDetails.setId(IdUtil.getSnowflakeNextId());
@ -711,7 +721,7 @@ public class MeiTianGameServiceImpl implements IGamesService {
}
if (!CollectionUtils.isEmpty(gameBettingDetails)) {
//查询重复数据id
List<String> removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds, GamePlatforms.MT.getCode());
List<String> removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds, GamePlatforms.MeiTian.getCode());
//用steam流清除list中与wagersIds集合相同的数据
gameBettingDetails = gameBettingDetails.stream()
.filter(detail -> !removeWagersIds.contains(detail.getWagersId()))
@ -734,10 +744,10 @@ public class MeiTianGameServiceImpl implements IGamesService {
//转化类
MeiTianBetRecordResponseDTO.DataBean dataBean = (MeiTianBetRecordResponseDTO.DataBean) gamesDataBuildDTO.getData();
// GameSecretKeyCurrencyDTO gameSecretKey =
// gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
// .currency(dataBean.getCurrency())
// .platformCode(GamePlatforms.MT.getCode()).build());
GameSecretKeyCurrencyDTO gameSecretKey =
gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.currency(dataBean.getCurrency())
.platformCode(GamePlatforms.MeiTian.getCode()).build());
Member member = memberService.selectMemberByGameAccount(dataBean.getPlayerName());
@ -751,17 +761,15 @@ public class MeiTianGameServiceImpl implements IGamesService {
int compareResult = originPayoffAmount.compareTo(BigDecimal.ZERO);
long gameTime = getTime(dataBean.getGameDate());
Platform platform = gamesDataBuildDTO.getPlatform();
String systemCurrency = platform.getOurCurrency(dataBean.getCurrency());
//数据构造
GameBettingDetails gameBettingDetails = GameBettingDetails.builder()
.tenantKey(member.getTenantKey())
//保存我们的币种id
.currencyCode(systemCurrency)
.currencyCode(gameSecretKey.getSystemCurrency())
.memberId(member.getId())
.gameCode(dataBean.getGameCode())
.gameType(MeiTianGameType.findSystemByCode(Integer.parseInt(dataBean.getGameType())))
.platformCode(GamePlatforms.MT.getCode())
.platformCode(GamePlatforms.MeiTian.getCode())
.gameId(gamesDataDTO.getSystemGameId())
.gameName(gamesDataDTO.getCnName())
.gameStatus(compareResult > 0 ? GameStatus.WIN.getCode() : compareResult < 0 ? GameStatus.FAIL.getCode() : GameStatus.FLAT.getCode())

View File

@ -3,24 +3,22 @@ package com.ff.game.api.ng.address;
import com.dtflys.forest.callback.AddressSource;
import com.dtflys.forest.http.ForestAddress;
import com.dtflys.forest.http.ForestRequest;
import com.ff.base.enums.GamePlatforms;
import com.ff.game.service.IPlatformService;
import com.ff.base.constant.Constants;
import com.ff.base.system.service.ISysConfigService;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@Component
public class MyNGAddressSource implements AddressSource {
public class MyNGAddressSource implements AddressSource {
@Resource
private IPlatformService platformService;
private ISysConfigService configService;
@Override
public ForestAddress getAddress(ForestRequest request) {
//String apiBaseUrl = configService.selectConfigByKey(Constants.NG_API_BASE_URL);
String apiBaseUrl = platformService.get(GamePlatforms.PG.getCode())
.getUrlInfo().getUrl();
return new ForestAddress("https", apiBaseUrl, 443, "api");
String apiBaseUrl = configService.selectConfigByKey(Constants.NG_API_BASE_URL);
return new ForestAddress("https",apiBaseUrl, 443,"api");
}
}

View File

@ -2,6 +2,7 @@ package com.ff.game.api.ng.service.impl;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.NumberUtil;
import com.ff.base.config.RedisConfig;
import com.ff.base.constant.CacheConstants;
import com.ff.base.constant.Constants;
import com.ff.base.core.redis.RedisCache;
@ -10,20 +11,22 @@ 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.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.sign.Md5Utils;
import com.ff.base.utils.uuid.IdUtils;
import com.ff.config.KeyConfig;
import com.ff.game.api.IGamesService;
import com.ff.game.api.jili.dto.*;
import com.ff.game.api.ng.client.NGClient;
import com.ff.game.api.ng.dto.*;
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.dto.GameBettingDetailsDTO;
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.game.dto.*;
import com.ff.game.service.*;
import com.ff.member.domain.Member;
import com.ff.member.service.IMemberService;
import lombok.extern.slf4j.Slf4j;
@ -39,12 +42,15 @@ import org.springframework.util.ObjectUtils;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.security.SecureRandom;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Function;
import java.util.stream.Collectors;
@ -68,6 +74,11 @@ public class GamesPGServiceImpl implements IGamesService {
@Resource
private IGameExchangeMoneyService gameExchangeMoneyService;
@Resource
private IGamePlatformService gamePlatformService;
@Resource
private IGameService gameService;
@ -75,15 +86,33 @@ public class GamesPGServiceImpl implements IGamesService {
@Resource
private IMemberService memberService;
@Resource
private IGameFreeRecordService gameFreeRecordService;
@Resource
private IGameSecretKeyService gameSecretKeyService;
@Resource
private NGClient ngClient;
@Resource
private KeyConfig keyConfig;
@Resource
private IGameBettingDetailsService gameBettingDetailsService;
@Resource
private IGameSecretKeyCurrencyService gameSecretKeyCurrencyService;
@Resource
private IGameNameService gameNameService;
@Resource
private IGameSecretKeyLangService gameSecretKeyLangService;
@Autowired
@Qualifier("threadPoolTaskExecutor")
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
@ -199,7 +228,7 @@ public class GamesPGServiceImpl implements IGamesService {
paramsMap.put("lang", gamesLogin.getLang());
paramsMap.put("gameCode", gamesLogin.getGameId());
paramsMap.put("returnUrl", gamesLogin.getHomeUrl());
paramsMap.put("ingress", PlatformHomeType.WEB.getValue().equals(gamesLogin.getVendor()) ? IngressType.PC_WEB.getValue() : IngressType.MOBILE_WEB.getValue());
paramsMap.put("ingress", PlatformHomeType.WEB.getValue().equals(gamesLogin.getPlatform()) ? IngressType.PC_WEB.getValue() : IngressType.MOBILE_WEB.getValue());
Map<String, String> headerMap = this.getKey(gamesLogin);
ApiNGResponseDTO<ApiLoginResponseDTO> apiLoginResponseDTOApiNGResponseDTO = ngClient.loginWithoutRedirect(paramsMap, headerMap);
if (this.getIsSuccess(apiLoginResponseDTOApiNGResponseDTO.getCode())) {
@ -232,7 +261,7 @@ public class GamesPGServiceImpl implements IGamesService {
ApiNGResponseDTO<List<ApiGameInfoResponseDTO>> gameList = ngClient.getGameList(paramsMap, headerMap);
if (this.getIsSuccess(gameList.getCode())) {
for (ApiGameInfoResponseDTO apiGameInfoResponseDTO : gameList.getData()) {
/*GamePlatform gamePlatform = GamePlatform.builder()
GamePlatform gamePlatform = GamePlatform.builder()
.platformType(NGGameType.findSystemByCode(apiGameInfoResponseDTO.getGameType()))
.platformCode(GamePlatforms.PG.getCode())
.build();
@ -245,12 +274,9 @@ public class GamesPGServiceImpl implements IGamesService {
gamePlatformService.insertGamePlatform(gamePlatform);
} else {
gamePlatform = gamePlatforms.get(0);
}*/
Integer platformType = NGGameType.findSystemByCode(apiGameInfoResponseDTO.getGameType());
}
Game game = Game.builder()
// .platformId(gamePlatform.getId())
.platformCode(GamePlatforms.PG.getCode())
.platformType(platformType)
.platformId(gamePlatform.getId())
.gameCode(apiGameInfoResponseDTO.getGameCode())
.build();
List<Game> games = gameService.selectGameList(game);
@ -259,22 +285,15 @@ public class GamesPGServiceImpl implements IGamesService {
game.setGameSourceType(String.valueOf(apiGameInfoResponseDTO.getGameType()));
game.setFreespin(Boolean.FALSE);
game.setDemoStatus(Boolean.TRUE);
game.setSortNo(gameService.selectMaxSortNo(platformType, GamePlatforms.PG.getCode()) + 1);
game.setSortNo(gameService.selectMaxSortNoByPlatformId(gamePlatform.getId()) + 1);
game.setGameName(apiGameInfoResponseDTO.getGameName().get("zh-hans"));
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);
} else {
game = games.get(0);
}
apiGameInfoResponseDTO.setSystemGameId(game.getId());
/*Map<String, String> gameName = apiGameInfoResponseDTO.getGameName();
Map<String, String> gameName = apiGameInfoResponseDTO.getGameName();
for (String key : gameName.keySet()) {
String name = gameName.get(key);
List<GameName> gameNames = gameNameService.selectGameNameList(GameName.builder().gameId(game.getId()).gameName(name).build());
@ -299,7 +318,7 @@ public class GamesPGServiceImpl implements IGamesService {
.build());
}
}
}*/
}
}
@ -324,11 +343,11 @@ public class GamesPGServiceImpl implements IGamesService {
public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) {
log.info("GamesNGServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO);
// GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
// .platformCode(GamePlatforms.PG.getCode())
// .code(exchangeTransferMoneyRequestDTO.getAgentId())
// .currency(exchangeTransferMoneyRequestDTO.getCurrency())
// .build());
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(GamePlatforms.PG.getCode())
.code(exchangeTransferMoneyRequestDTO.getAgentId())
.currency(exchangeTransferMoneyRequestDTO.getCurrency())
.build());
Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount());
String transactionId = gameExchangeMoneyService.getTransactionId(GamePlatforms.PG.getCode(), 32);
@ -348,7 +367,7 @@ public class GamesPGServiceImpl implements IGamesService {
.quota(exchangeTransferMoneyRequestDTO.getQuota())
.balance(exchangeTransferMoneyRequestDTO.getAmount())
.exchangeType(exchangeTransferMoneyRequestDTO.getTransferType())
.currencyCode(exchangeTransferMoneyRequestDTO.getSystemCurrency())
.currencyCode(currencyDTO.getSystemCurrency())
.memberId(member.getId())
.transactionId(transactionId)
.platformCode(GamePlatforms.PG.getCode())
@ -362,7 +381,7 @@ public class GamesPGServiceImpl implements IGamesService {
.accounts(member.getGameAccount())
.agentId(exchangeTransferMoneyRequestDTO.getAgentId())
.agentKey(exchangeTransferMoneyRequestDTO.getAgentKey())
.currency(exchangeTransferMoneyRequestDTO.getCurrency())
.currency(currencyDTO.getCurrency())
.build();
MemberInfoResponseDTO memberInfo = this.getMemberInfo(gamesBaseRequestDTO);
//判断是不是转出
@ -374,7 +393,7 @@ public class GamesPGServiceImpl implements IGamesService {
Map<String, Object> paramsMap = new HashMap<>();
paramsMap.put("platType", NGPlatforms.PG.getCode());
paramsMap.put("playerId", exchangeTransferMoneyRequestDTO.getAccount());
paramsMap.put("currency", exchangeTransferMoneyRequestDTO.getCurrency());
paramsMap.put("currency", currencyDTO.getCurrency());
paramsMap.put("type", type);
paramsMap.put("amount", exchangeTransferMoneyRequestDTO.getAmount());
paramsMap.put("orderId", transactionId);
@ -389,7 +408,7 @@ public class GamesPGServiceImpl implements IGamesService {
gameExchangeMoneyService.insertGameExchangeMoney(exchangeMoney);
ExchangeTransferStatusRequestDTO exchangeTransferStatusRequestDTO = new ExchangeTransferStatusRequestDTO();
exchangeTransferStatusRequestDTO.setAccount(exchangeTransferMoneyRequestDTO.getAccount());
exchangeTransferStatusRequestDTO.setCurrency(exchangeTransferMoneyRequestDTO.getCurrency());
exchangeTransferStatusRequestDTO.setCurrency(currencyDTO.getCurrency());
exchangeTransferStatusRequestDTO.setOrderId(transactionId);
exchangeTransferStatusRequestDTO.setAgentId(exchangeTransferMoneyRequestDTO.getAgentId());
exchangeTransferStatusRequestDTO.setAgentKey(exchangeTransferMoneyRequestDTO.getAgentKey());
@ -455,21 +474,19 @@ public class GamesPGServiceImpl implements IGamesService {
@Override
public Boolean getBetRecordByTime(BetRecordByTimeDTO betRecordByTimeDTO) {
// GameSecretKeyCurrencyDTO gameSecretKeyDTO = new GameSecretKeyCurrencyDTO();
// gameSecretKeyDTO.setPlatformCodes(NGPlatforms.getAllPlatforms());
// List<GameSecretKeyCurrencyDTO> currencyDTOList = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTOList(gameSecretKeyDTO);
// List<String> currencys = currencyDTOList.stream()
// .map(GameSecretKeyCurrencyDTO::getCurrency)
// .distinct()
// .collect(Collectors.toList());
GameSecretKeyCurrencyDTO gameSecretKeyDTO = new GameSecretKeyCurrencyDTO();
gameSecretKeyDTO.setPlatformCodes(NGPlatforms.getAllPlatforms());
List<GameSecretKeyCurrencyDTO> currencyDTOList = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTOList(gameSecretKeyDTO);
List<String> currencys = currencyDTOList.stream()
.map(GameSecretKeyCurrencyDTO::getCurrency)
.distinct()
.collect(Collectors.toList());
Platform platform = betRecordByTimeDTO.getVendor();
Set<String> cacheSet = redisCache.getCacheSet(CacheConstants.PG_GAMES_BET_CURRENCY);
if (CollectionUtils.isEmpty(cacheSet)) {
cacheSet = new HashSet<>();
}
List<String> currencys = new ArrayList<>(platform.getCurrencyInfo().values());
//如果长度一致则清空缓存循环币种
if (cacheSet.size() >= currencys.size()) {
cacheSet = new HashSet<>();
@ -480,24 +497,22 @@ public class GamesPGServiceImpl implements IGamesService {
String firstCurrency = currencys.get(0);
// GameSecretKeyCurrencyDTO currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
// .platformCode(GamePlatforms.PG.getCode())
// .currency(firstCurrency)
// .build());
GameSecretKeyCurrencyDTO currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(GamePlatforms.PG.getCode())
.currency(firstCurrency)
.build());
// betRecordByTimeDTO.setAgentId(currencyDTO.getCode());
// betRecordByTimeDTO.setAgentKey(currencyDTO.getKey());
betRecordByTimeDTO.setAgentId(currencyDTO.getCode());
betRecordByTimeDTO.setAgentKey(currencyDTO.getKey());
int pageNo = 1;
int pageSize = 2000;
Map<String, Object> paramsMap = new HashMap<>();
paramsMap.put("currency", /*currencyDTO.getCurrency()*/ firstCurrency);
paramsMap.put("currency", currencyDTO.getCurrency());
paramsMap.put("pageNo", pageNo);
paramsMap.put("pageSize", pageSize);
Map<String, String> key = this.getKey(betRecordByTimeDTO);
String systemCurrency = platform.getOurCurrency(firstCurrency);
ApiNGResponseDTO<ApiGameBetRecordPageResponseDTO> betRecordByTime = ngClient.getBetRecordByTime(paramsMap, key);
@ -511,7 +526,7 @@ public class GamesPGServiceImpl implements IGamesService {
ApiGameBetRecordPageResponseDTO data = result.getData();
//数据组装
this.batchInsert(data, systemCurrency, firstCurrency);
this.batchInsert(data);
//总页数
// 计算总页数,确保不会遗漏
@ -522,19 +537,19 @@ public class GamesPGServiceImpl implements IGamesService {
pageNoAtomic.incrementAndGet();
//请求参数
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("currency", /*currencyDTO.getCurrency()*/firstCurrency);
paramMap.put("currency", currencyDTO.getCurrency());
paramMap.put("pageNo", pageNoAtomic.get());
paramMap.put("pageSize", pageSize);
SleepUtil.sleep(10000);
ApiNGResponseDTO<ApiGameBetRecordPageResponseDTO> betRecordByTimePage = ngClient.getBetRecordByTime(paramMap, key);
data = betRecordByTimePage.getData();
//数据组装
this.batchInsert(data, systemCurrency, firstCurrency);
this.batchInsert(data);
}
}
getBetRecordByHistoryTime(betRecordByTimeDTO, systemCurrency, firstCurrency);
getBetRecordByHistoryTime(betRecordByTimeDTO, currencyDTO);
return Boolean.TRUE;
}
@ -542,9 +557,9 @@ public class GamesPGServiceImpl implements IGamesService {
*
*
* @param betRecordByTimeDTO dto
* @param currency
* @param currencyDTO dto
*/
private void getBetRecordByHistoryTime(BetRecordByTimeDTO betRecordByTimeDTO, String systemCurrency, String currency /*GameSecretKeyCurrencyDTO currencyDTO*/) {
private void getBetRecordByHistoryTime(BetRecordByTimeDTO betRecordByTimeDTO, GameSecretKeyCurrencyDTO currencyDTO) {
//捞取指定30分钟前的数据
Long startTimes = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), -30);
@ -572,12 +587,12 @@ public class GamesPGServiceImpl implements IGamesService {
.format(Instant.ofEpochMilli(betRecordByTimeDTO.getEndTime()));
//betRecordByTimeDTO.setAgentId(currencyDTO.getCode());
//betRecordByTimeDTO.setAgentKey(currencyDTO.getKey());
betRecordByTimeDTO.setAgentId(currencyDTO.getCode());
betRecordByTimeDTO.setAgentKey(currencyDTO.getKey());
int pageNo = 1;
int pageSize = 2000;
Map<String, Object> paramsMap = new HashMap<>();
paramsMap.put("currency", /*currencyDTO.getCurrency()*/ currency);
paramsMap.put("currency", currencyDTO.getCurrency());
paramsMap.put("pageNo", pageNo);
paramsMap.put("pageSize", pageSize);
paramsMap.put("startTime", startTime);
@ -595,7 +610,7 @@ public class GamesPGServiceImpl implements IGamesService {
ApiGameBetRecordPageResponseDTO data = result.getData();
//数据组装
this.batchInsert(data, systemCurrency, currency);
this.batchInsert(data);
//总页数
// 计算总页数,确保不会遗漏
@ -606,7 +621,7 @@ public class GamesPGServiceImpl implements IGamesService {
pageNoAtomic.incrementAndGet();
//请求参数
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("currency", /*currencyDTO.getCurrency()*/ currency);
paramMap.put("currency", currencyDTO.getCurrency());
paramMap.put("pageNo", pageNoAtomic.get());
paramMap.put("pageSize", pageSize);
paramMap.put("startTime", startTime);
@ -615,14 +630,13 @@ public class GamesPGServiceImpl implements IGamesService {
ApiNGResponseDTO<ApiGameBetRecordPageResponseDTO> betRecordByTimePage = ngClient.getBetRecordByTime(paramMap, key);
data = betRecordByTimePage.getData();
//数据组装
this.batchInsert(data, systemCurrency, currency);
this.batchInsert(data);
}
});
}
}
/**
*
*
@ -714,7 +728,6 @@ public class GamesPGServiceImpl implements IGamesService {
throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode());
}
/**
*
*
@ -727,6 +740,7 @@ public class GamesPGServiceImpl implements IGamesService {
}
/**
*
*
@ -745,18 +759,15 @@ public class GamesPGServiceImpl implements IGamesService {
}
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)) {
return null;
}
Game gamesDataDTO = games.get(0);
// GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
// .platformCodes(NGPlatforms.getAllPlatforms())
// .currency(resultBean.getCurrency())
// .build());
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCodes(NGPlatforms.getAllPlatforms())
.currency(resultBean.getCurrency())
.build());
Member member = memberService.selectMemberByGameAccount(resultBean.getPlayerId());
if (ObjectUtils.isEmpty(member)) {
@ -776,7 +787,7 @@ public class GamesPGServiceImpl implements IGamesService {
GameBettingDetails gameBettingDetails = GameBettingDetails.builder()
.tenantKey(member.getTenantKey())
//保存我们的币种id
.currencyCode(gamesDataBuildDTO.getSystemCurrencyCode())
.currencyCode(currencyDTO.getSystemCurrency())
.memberId(member.getId())
.gameCode(gamesDataDTO.getGameCode())
.gameType(NGGameType.findSystemByCode(resultBean.getGameType()))
@ -812,15 +823,12 @@ public class GamesPGServiceImpl implements IGamesService {
*
* @param data
*/
private synchronized void batchInsert(ApiGameBetRecordPageResponseDTO data, String systemCurrency, String currency) {
private synchronized void batchInsert(ApiGameBetRecordPageResponseDTO data) {
List<GameBettingDetails> gameBettingDetails = new ArrayList<>();
List<String> wagersIds = new ArrayList<>();
//数据转化
for (ApiGameBetRecordPageResponseDTO.GameBetRecord bean : data.getList()) {
GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder()
.systemCurrencyCode(systemCurrency)
.currencyCode(currency)
.data(bean).build());
GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder().data(bean).build());
if (!ObjectUtils.isEmpty(bettingDetails)) {
bettingDetails.setId(IdUtil.getSnowflakeNextId());
gameBettingDetails.add(bettingDetails);
@ -829,7 +837,7 @@ public class GamesPGServiceImpl implements IGamesService {
}
if (!CollectionUtils.isEmpty(gameBettingDetails)) {
//查询重复数据id
List<String> removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds, NGPlatforms.PG.getPlatform());
List<String> removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds,NGPlatforms.PG.getPlatform());
//用steam流清除list中与wagersIds集合相同的数据
gameBettingDetails = gameBettingDetails.stream()
.filter(detail -> !removeWagersIds.contains(detail.getWagersId()))

View File

@ -3,8 +3,8 @@ package com.ff.game.api.pgx.address;
import com.dtflys.forest.callback.AddressSource;
import com.dtflys.forest.http.ForestAddress;
import com.dtflys.forest.http.ForestRequest;
import com.ff.base.enums.GamePlatforms;
import com.ff.game.service.IPlatformService;
import com.ff.base.constant.Constants;
import com.ff.base.system.service.ISysConfigService;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@ -20,13 +20,12 @@ import javax.annotation.Resource;
public class MyPGXAddressSource implements AddressSource {
@Resource
private IPlatformService platformService;
private ISysConfigService configService;
@Override
public ForestAddress getAddress(ForestRequest request) {
// String apiBaseUrl = configService.selectConfigByKey(Constants.PGX_API_BASE_URL);
String apiBaseUrl = platformService.get(GamePlatforms.PGX.getCode())
.getUrlInfo().getUrl();
return new ForestAddress("http", apiBaseUrl, 80, "");
String apiBaseUrl = configService.selectConfigByKey(Constants.PGX_API_BASE_URL);
return new ForestAddress("http",apiBaseUrl, 80,"");
}
}

View File

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

View File

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

View File

@ -1,8 +1,7 @@
package com.ff.game.api.request;
import com.ff.game.domain.KeyInfo;
import com.ff.game.domain.Platform;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
@ -37,15 +36,12 @@ public class GamesBaseRequestDTO implements Serializable {
private String query;
/**
*
*/
private String currency;
private Platform vendor;
private KeyInfo keyInfo;
private String systemCurrency;
}

View File

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

View File

@ -3,8 +3,8 @@ package com.ff.game.api.sa.address;
import com.dtflys.forest.callback.AddressSource;
import com.dtflys.forest.http.ForestAddress;
import com.dtflys.forest.http.ForestRequest;
import com.ff.base.enums.GamePlatforms;
import com.ff.game.service.IPlatformService;
import com.ff.base.constant.Constants;
import com.ff.base.system.service.ISysConfigService;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@ -20,14 +20,12 @@ import javax.annotation.Resource;
public class MySAAddressSource implements AddressSource {
@Resource
private IPlatformService platformService;
private ISysConfigService configService;
@Override
public ForestAddress getAddress(ForestRequest request) {
// String apiBaseUrl = configService.selectConfigByKey(Constants.SA_API_BASE_URL);
String apiBaseUrl = platformService.get(GamePlatforms.SA.getCode())
.getUrlInfo().getUrl();
return new ForestAddress("https", apiBaseUrl, 443, "api");
String apiBaseUrl = configService.selectConfigByKey(Constants.SA_API_BASE_URL);
return new ForestAddress("https",apiBaseUrl, 443,"api");
}
}

View File

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

View File

@ -3,8 +3,8 @@ package com.ff.game.api.xk.address;
import com.dtflys.forest.callback.AddressSource;
import com.dtflys.forest.http.ForestAddress;
import com.dtflys.forest.http.ForestRequest;
import com.ff.base.enums.GamePlatforms;
import com.ff.game.service.IPlatformService;
import com.ff.base.constant.Constants;
import com.ff.base.system.service.ISysConfigService;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@ -20,13 +20,12 @@ import javax.annotation.Resource;
public class MyXKAddressSource implements AddressSource {
@Resource
private IPlatformService platformService;
private ISysConfigService configService;
@Override
public ForestAddress getAddress(ForestRequest request) {
// String apiBaseUrl = configService.selectConfigByKey(Constants.XK_API_BASE_URL);
String apiBaseUrl = platformService.get(GamePlatforms.XK.getCode())
.getUrlInfo().getUrl();
return new ForestAddress("https", apiBaseUrl, 443, "api");
String apiBaseUrl = configService.selectConfigByKey(Constants.XK_API_BASE_URL);
return new ForestAddress("https",apiBaseUrl, 443,"api");
}
}

View File

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

View File

@ -1,11 +1,27 @@
package com.ff.game.controller;
import com.ff.base.core.controller.BaseController;
import com.ff.base.core.domain.AjaxResult;
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.domain.AjaxResult;
import com.ff.base.enums.BusinessType;
import com.ff.game.domain.GamePlatform;
import com.ff.game.service.IGamePlatformService;
import com.ff.base.utils.poi.ExcelUtil;
import com.ff.base.core.page.TableDataInfo;
/**
* Controller
@ -16,7 +32,19 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/game/platform")
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);
}
/**
*
@ -28,4 +56,54 @@ public class GamePlatformController extends BaseController {
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

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

View File

@ -1,20 +0,0 @@
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

@ -5,12 +5,11 @@ 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;
import java.util.List;
/**
* ff_game
*
@ -21,31 +20,24 @@ import java.util.List;
@AllArgsConstructor
@NoArgsConstructor
@SuperBuilder
public class Game extends BaseEntity {
public class Game extends BaseEntity
{
private static final long serialVersionUID = 1L;
/**
* id
*/
/** 主键id */
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
/**
*
*/
/** 排序 */
@Excel(name = "排序")
private Integer sortNo;
/**
* id
*/
/** 游戏平台id */
@Excel(name = "游戏平台id")
@JsonSerialize(using = ToStringSerializer.class)
private Long platformId;
/**
* id
*/
/** 游戏第三方id */
@Excel(name = "游戏第三方id")
private String gameCode;
@ -54,45 +46,27 @@ public class Game extends BaseEntity {
*/
private Integer ingress;
/**
*
*/
/** 第三方来源分类 */
@Excel(name = "第三方来源分类")
private String gameSourceType;
/**
*
*/
/** 游戏名称 */
@Excel(name = "游戏名称")
private String gameName;
/**
* 1 0
*/
/** 是否支持免费游戏 1 支持 0 不支持 */
@Excel(name = "是否支持免费游戏 1 支持 0 不支持")
private Boolean freespin;
/**
* 0 1
*/
/** 是否支持试玩 0关闭 1开启 */
@Excel(name = "是否支持试玩 0关闭 1开启")
private Boolean demoStatus;
/**
*
*/
/** 维护开关 维护状态 */
@Excel(name = "维护开关 ")
private Boolean stopStatus;
/**
* code
*/
private String platformCode;
/**
*
*/
private Integer platformType;
private List<NameInfo> nameInfo;
}

View File

@ -0,0 +1,50 @@
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

@ -0,0 +1,58 @@
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

@ -0,0 +1,50 @@
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

@ -0,0 +1,55 @@
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

@ -0,0 +1,43 @@
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

@ -1,21 +0,0 @@
package com.ff.game.domain;
import lombok.Data;
import java.io.Serializable;
/**
*
*
* @author cengy
*/
@Data
public class KeyInfo implements Serializable {
private String code;
private String key;
private String currency;
private String password;
private String providerCode;
}

View File

@ -1,14 +0,0 @@
package com.ff.game.domain;
import java.io.Serializable;
import java.util.HashMap;
/**
* @author cengy
*/
public class LangInfo extends HashMap<String, String> implements Serializable {
public String get(String lang) {
return super.get(lang);
}
}

View File

@ -1,20 +0,0 @@
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,76 +0,0 @@
package com.ff.game.domain;
import com.ff.base.core.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* @author cengy
*/
@Data
public class Platform extends BaseEntity {
/**
*
*/
private Integer sortNo;
/**
* code
*/
private String platformCode;
/**
*
*/
private String platformName;
/**
* true: false:
*/
private Boolean stopStatus;
private List<PlatformInfo> platformInfo;
private List<KeyInfo> keyInfo;
private LangInfo langInfo;
private CurrencyInfo currencyInfo;
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();
}
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,15 +0,0 @@
package com.ff.game.domain;
import lombok.Data;
import java.io.Serializable;
/**
* @author cengy
*/
@Data
public class PlatformInfo implements Serializable {
private String code;
private String name;
private int type;
}

View File

@ -1,16 +0,0 @@
package com.ff.game.domain;
import lombok.Data;
import java.io.Serializable;
/**
* @author cengy
*/
@Data
public class UrlInfo implements Serializable {
private String url;
private String loginUrl;
private String hallCode;
}

View File

@ -0,0 +1,28 @@
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

@ -0,0 +1,51 @@
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

@ -0,0 +1,21 @@
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

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

View File

@ -0,0 +1,72 @@
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

@ -0,0 +1,70 @@
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

@ -0,0 +1,79 @@
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

@ -0,0 +1,71 @@
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

@ -0,0 +1,72 @@
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,24 +0,0 @@
package com.ff.game.mapper;
import com.ff.game.domain.Platform;
import java.util.List;
/**
* @author cengy
*/
public interface PlatformMapper {
List<Platform> selectList(Platform platform);
Platform selectByPlatformCode(String platformCode);
int updatePlatform(Platform platform);
int insertPlatform(Platform platform);
int deleteById(Long id);
int deleteByIds(String ids);
}

View File

@ -0,0 +1,74 @@
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

@ -0,0 +1,71 @@
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

@ -0,0 +1,86 @@
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

@ -0,0 +1,72 @@
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

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

View File

@ -1,27 +0,0 @@
package com.ff.game.service;
import com.ff.game.domain.Platform;
import java.util.List;
/**
* @author cengy
*/
public interface IPlatformService {
List<Platform> selectList(Platform platform);
Platform selectByPlatformCode(String platformCode);
int updatePlatform(Platform platform);
int insertPlatform(Platform platform);
int deleteById(Long id);
int deleteByIds(String ids);
void loadToCache();
Platform get(String platformCode);
}

View File

@ -0,0 +1,110 @@
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

@ -0,0 +1,107 @@
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

@ -0,0 +1,123 @@
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

@ -0,0 +1,106 @@
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

@ -0,0 +1,110 @@
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,22 +1,29 @@
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 com.ff.api.response.GameResponse;
import com.ff.base.constant.ConfigConstants;
import com.ff.base.utils.DateUtils;
import com.ff.game.api.IGamesService;
import com.ff.game.api.request.BetRecordByTimeDTO;
import com.ff.game.api.request.GameUniqueDTO;
import com.ff.game.domain.Game;
import com.ff.game.api.request.GamesBaseRequestDTO;
import com.ff.game.domain.GameSecretKey;
import com.ff.game.dto.GameDTO;
import com.ff.game.mapper.GameMapper;
import com.ff.game.service.IGameService;
import com.ff.game.service.IGameSecretKeyService;
import com.ff.member.service.IMemberService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
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 java.util.List;
import java.util.Map;
/**
* Service
@ -27,13 +34,16 @@ import java.util.Map;
@Service
@Slf4j
public class GameServiceImpl implements IGameService {
@Autowired
private GameMapper gameMapper;
@Resource
private IMemberService memberService;
@Resource
private IGameSecretKeyService gameSecretKeyService;
@Autowired
private Map<String, IGamesService> gamesService;
@ -119,6 +129,19 @@ public class GameServiceImpl implements IGameService {
return gameMapper.deleteGameById(id);
}
/**
* id
*
* @param platformId id
* @return {@link Integer }
*/
@Override
public Integer selectMaxSortNoByPlatformId(Long platformId) {
return gameMapper.selectMaxSortNoByPlatformId(platformId);
}
/**
*
*
@ -140,9 +163,35 @@ public class GameServiceImpl implements IGameService {
return gameMapper.selectGameResponseList();
}
/**
*
*
* @param startTime
* @param endTime
* @param platformCode
*/
@Override
public Integer selectMaxSortNo(Integer platformType, String platformCode) {
return gameMapper.selectMaxSortNoBy(platformType, platformCode);
public void insertGameBettingDetails(Long startTime, Long endTime, String platformCode) {
List<GameSecretKey> gameSecretKeys = gameSecretKeyService.selectGameSecretKeyList(GameSecretKey.builder().platform(platformCode).build());
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,79 +0,0 @@
package com.ff.game.service.impl;
import com.ff.base.constant.CacheConstants;
import com.ff.base.core.redis.RedisCache;
import com.ff.base.datasource.DynamicDataSourceContextHolder;
import com.ff.game.domain.Platform;
import com.ff.game.mapper.PlatformMapper;
import com.ff.game.service.IPlatformService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.sql.DataSource;
import java.util.List;
import java.util.Map;
/**
* @author cengy
*/
@Service
public class PlatformServiceImpl implements IPlatformService {
@Autowired
PlatformMapper platformMapper;
@Autowired
RedisCache redisCache;
@Override
public List<Platform> selectList(Platform platform) {
return platformMapper.selectList(platform);
}
@Override
public Platform selectByPlatformCode(String platformCode) {
return platformMapper.selectByPlatformCode(platformCode);
}
@Override
public int updatePlatform(Platform platform) {
return platformMapper.updatePlatform(platform);
}
@Override
public int insertPlatform(Platform platform) {
return platformMapper.insertPlatform(platform);
}
@Override
public int deleteById(Long id) {
return platformMapper.deleteById(id);
}
@Override
public int deleteByIds(String ids) {
return platformMapper.deleteByIds(ids);
}
@Override
public void loadToCache() {
Map<Object, DataSource> resolvedDataSources = DynamicDataSourceContextHolder.getAllDataSource();
for (Map.Entry<Object, DataSource> entry : resolvedDataSources.entrySet()) {
Object key = entry.getKey();
// 设置数据源类型
DynamicDataSourceContextHolder.setDataSourceType(key.toString());
List<Platform> list = selectList(new Platform());
for (Platform pp : list) {
redisCache.setCacheObject(getCacheKey(pp.getPlatformCode()), pp);
}
}
}
@Override
public Platform get(String platformCode) {
return redisCache.getCacheObject(getCacheKey(platformCode));
}
private String getCacheKey(String configKey) {
return CacheConstants.Platform + configKey;
}
}

View File

@ -1,30 +1,43 @@
package com.ff.quartz.task;
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.NGPlatforms;
import com.ff.base.enums.PlatformType;
import com.ff.base.enums.StatusType;
import com.ff.base.utils.DateUtils;
import com.ff.base.utils.StringUtils;
import com.ff.game.api.IGamesService;
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.ExchangeTransferStatusRequestDTO;
import com.ff.game.api.request.GamesBaseRequestDTO;
import com.ff.game.api.request.GetFreeSpinDashflowRequestDTO;
import com.ff.game.domain.GameExchangeMoney;
import com.ff.game.domain.KeyInfo;
import com.ff.game.domain.Platform;
import com.ff.game.service.IGameExchangeMoneyService;
import com.ff.game.service.IPlatformService;
import com.ff.game.domain.GameSecretKey;
import com.ff.game.dto.GameSecretKeyCurrencyDTO;
import com.ff.game.dto.GameSecretKeyDTO;
import com.ff.game.service.*;
import com.ff.member.domain.Member;
import com.ff.member.service.IMemberService;
import lombok.extern.slf4j.Slf4j;
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.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import javax.sql.DataSource;
import javax.xml.crypto.dsig.keyinfo.PGPData;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -37,213 +50,242 @@ import java.util.Map;
@Component("gameTask")
public class GameTask {
@Autowired
private Map<String, IGamesService> gamesService;
@Resource
private IGameSecretKeyService gameSecretKeyService;
@Resource
private IGamePlatformService gamePlatformService;
@Resource
private NGClient ngClient;
@Resource
private IGameExchangeMoneyService gameExchangeMoneyService;
@Resource
private IGameSecretKeyCurrencyService gameSecretKeyCurrencyService;
@Resource
private IMemberService memberService;
@Resource
private IPlatformService platformService;
private RedisCache redisCache;
@Resource
private IGameService gameService;
/**
*
*
*/
public void syncGameList() {
for (GamePlatforms gamePlatform : GamePlatforms.values()) {
String platformCode = gamePlatform.getCode();
try {
syncGameList(platformCode);
} catch (Exception e) {
log.error("同步游戏列表失败platformCode:{}", platformCode, e);
}
}
}
public void syncGameList(String platformCode) {
Platform platform = platformService.get(platformCode);
if (null == platform) {
return;
}
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());
break;
}
}
/**
*
*
* @param platformCode
* @param backTimeMin
*/
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;
}
}
}
/**
*
*
* @param platformCode
* @param backTimeMin
*/
public void syncHistoryBetRecord(String platformCode, Integer backTimeMin) {
public void insertGameBettingDetails(Integer backTime) {
//捞取指定分钟前的数据
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).getBetRecordByHistoryTime(betRecordByTimeDTO);
} catch (Exception e) {
log.error("同步平台投注记录失败platformCode:{}", platformCode, e);
}
if (platform.isMultiAgent()) {
break;
}
}
}
/**
*
*/
public void syncFreeBetRecord(String platformCode, Integer backTime) {
// 捞取指定分钟前的数据
Long startTime = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), backTime);
Long endTime = DateUtils.getNowDate();
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());
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);
}
}
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);
}
/**
* 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("免费游戏投注记录失败platformCode:{}", platformCode, e);
}
if (platform.isMultiAgent()) {
break;
} 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
*/
public void insertPGXHistoryGameBettingDetails(Integer backTime) {
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.MeiTian.getCode());
}
/**
* 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);
}
}
/**
*
*/
public void insertFreeSpinDashflow() {
Long startTime = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), -70);
for (String gameKey : gamesService.keySet()) {
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 updateGameExchangeMoney() {
List<GameExchangeMoney> gameExchangeMoneyList = gameExchangeMoneyService.selectGameExchangeMoneyList(GameExchangeMoney.builder().status(StatusType.IN_PROGRESS.getValue()).build());
for (GameExchangeMoney exchangeMoney : gameExchangeMoneyList) {
try {
// GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
// .platformCode(exchangeMoney.getPlatformCode())
// .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;
}
GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(exchangeMoney.getPlatformCode())
.systemCurrency(exchangeMoney.getCurrencyCode()).build());
Member member = memberService.selectMemberById(exchangeMoney.getMemberId());
ExchangeTransferStatusRequestDTO exchangeTransferStatusRequestDTO = new ExchangeTransferStatusRequestDTO();
exchangeTransferStatusRequestDTO.setAccount(member.getGameAccount());
exchangeTransferStatusRequestDTO.setCurrency(targetCurrency);
exchangeTransferStatusRequestDTO.setCurrency(gameSecretKey.getCurrency());
exchangeTransferStatusRequestDTO.setOrderId(exchangeMoney.getTransactionId());
exchangeTransferStatusRequestDTO.setAgentId(keyInfo.getCode());
exchangeTransferStatusRequestDTO.setAgentKey(keyInfo.getKey());
exchangeTransferStatusRequestDTO.setAgentId(gameSecretKey.getCode());
exchangeTransferStatusRequestDTO.setAgentKey(gameSecretKey.getKey());
exchangeTransferStatusRequestDTO.setGameExchangeMoneyId(exchangeMoney.getId());
exchangeTransferStatusRequestDTO.setVendor(platform);
exchangeTransferStatusRequestDTO.setKeyInfo(keyInfo);
exchangeTransferStatusRequestDTO.setSystemCurrency(exchangeMoney.getCurrencyCode());
gamesService.get(exchangeMoney.getPlatformCode() + Constants.SERVICE).exchangeTransferStatus(exchangeTransferStatusRequestDTO);
} catch (Exception e) {
log.error("查询 更新交易记录失败,错误信息 {}", e);

View File

@ -1,29 +0,0 @@
package com.ff.sports.api.fb.address;
import com.dtflys.forest.callback.AddressSource;
import com.dtflys.forest.http.ForestAddress;
import com.dtflys.forest.http.ForestRequest;
import com.ff.base.system.service.ISysConfigService;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
* @author shi
* @date 2025/02/10
*/
@Component
public class FbAddress implements AddressSource {
public static final String API_BASE_URL = "fb.api.base.url";
@Resource
private ISysConfigService configService;
@Override
public ForestAddress getAddress(ForestRequest request) {
String apiBaseUrl = configService.selectConfigByKey(API_BASE_URL);
return new ForestAddress("https", apiBaseUrl, 443, "services");
}
}

View File

@ -1,7 +0,0 @@
package com.ff.sports.fb;
/**
* @author cengy
*/
public class A {
}

View File

@ -12,7 +12,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="ingress" column="ingress" />
<result property="gameSourceType" column="game_source_type" />
<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="demoStatus" column="demo_status" />
<result property="stopStatus" column="stop_status" />
@ -41,9 +40,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="freespin != null "> and freespin = #{freespin}</if>
<if test="demoStatus != null "> and demo_status = #{demoStatus}</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>
</select>
@ -165,11 +161,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where platform_id = #{platformId}
</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">
<result property="id" column="id"/>
<result property="gameName" column="game_name"/>

View File

@ -0,0 +1,124 @@
<?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

@ -0,0 +1,99 @@
<?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

@ -0,0 +1,141 @@
<?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

@ -0,0 +1,112 @@
<?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

@ -0,0 +1,100 @@
<?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

@ -1,116 +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.PlatformMapper">
<resultMap type="Platform" id="PlatformResult">
<result property="id" column="id" />
<result property="sortNo" column="sort_no" />
<result property="platformCode" column="platform_code" />
<result property="platformName" column="platform_name" />
<result property="platformInfo" column="platform_info" typeHandler="com.ff.base.handler.JsonListHandler" javaType="com.ff.game.domain.PlatformInfo"/>
<result property="urlInfo" column="url_info" typeHandler="com.ff.base.handler.JsonHandler" javaType="com.ff.game.domain.UrlInfo"/>
<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="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="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="selectVO">
select * from ff_platform
</sql>
<select id="selectList" parameterType="Platform" resultMap="PlatformResult">
<include refid="selectVO"/>
<where>
<if test="platformCode != null and platformCode != ''"> and platform_code = #{platformCode}</if>
<if test="platformName != null and platformName != ''"> and instr(platform_name,#{platformName}) &gt; 0</if>
<if test="stopStatus != null"> and stop_status = #{stopStatus}</if>
</where>
</select>
<select id="selectByPlatformCode" parameterType="String" resultMap="PlatformResult">
<include refid="selectVO"/>
where platform_code = #{platformCode}
</select>
<insert id="insertPlatform" parameterType="Platform">
insert into ff_platform
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">id,</if>
<if test="sortNo != null">sort_no,</if>
<if test="platformCode != null and platformCode != ''">platform_code,</if>
<if test="platformName != null and platformName != ''">platform_name,</if>
<if test="platformInfo != null and platformInfo != ''">platform_info,</if>
<if test="urlInfo != null and urlInfo != ''">url_info,</if>
<if test="keyInfo != null and keyInfo != ''">key_info,</if>
<if test="langInfo != null and langInfo != ''">lang_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="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 and platformCode != ''">#{platformCode},</if>
<if test="platformName != null and platformName != ''">#{platformName},</if>
<if test="platformInfo != null and platformInfo != ''">#{platformInfo},</if>
<if test="urlInfo != null and urlInfo != ''">#{urlInfo},</if>
<if test="keyInfo != null and keyInfo != ''">#{keyInfo},</if>
<if test="langInfo != null and langInfo != ''">#{langInfo},</if>
<if test="currencyInfo != null and currencyInfo != ''">#{currencyInfo},</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="updatePlatform" parameterType="Platform">
update ff_platform
<trim prefix="SET" suffixOverrides=",">
<if test="sortNo != null">sort_no = #{sortNo},</if>
<if test="platformCode != null and platformCode != ''">platform_code = #{platformCode},</if>
<if test="platformName != null and platformName != ''">platform_name = #{platformName},</if>
<if test="platformInfo != null and platformInfo != ''">platform_info = #{platformInfo},</if>
<if test="urlInfo != null and urlInfo != ''">url_info = #{urlInfo},</if>
<if test="keyInfo != null and keyInfo != ''">key_info = #{keyInfo},</if>
<if test="langInfo != null and langInfo != ''">lang_info = #{langInfo},</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="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{updateTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteById" parameterType="Long">
delete from ff_platform where id = #{id}
</delete>
<delete id="deleteByIds" parameterType="String">
delete from ff_platform where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>