feat(game): 增加游戏投注记录详细信息
- 在 GameBettingDetails 模型中添加新字段:round, table, seat, betContent - 更新相关 mapper 和 SQL 文件以支持新字段- 添加 GameDTO 类用于游戏数据传输 - 更新 ApiGameController 和 ApiMemberController 中的相关方法 - 优化部分代码结构,使用 SuperBuilder 等特性main-p
parent
bd1c3d9d9e
commit
47235ed870
|
|
@ -56,19 +56,9 @@ public class CacheConstants
|
|||
* pg游戏
|
||||
*/
|
||||
public static final String PG_GAMES= "pg_games:";
|
||||
/**
|
||||
* 通知窗口
|
||||
*/
|
||||
public static final String NOTICE_WINDOW= "notice:window:";
|
||||
|
||||
/**
|
||||
* 代理关系
|
||||
* pg游戏投注货币
|
||||
*/
|
||||
public static final String AGENT_RELATION_KEY = "agentRelation:";
|
||||
|
||||
|
||||
/**
|
||||
* 个性化配置预览
|
||||
*/
|
||||
public static final String LAYOUT_PREVIEW = "layout:preview:";
|
||||
public static final String PG_GAMES_BET_CURRENCY= "pg_games:bet:currency";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,11 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
|
|||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.HashMap;
|
||||
|
|
@ -16,6 +20,9 @@ import java.util.Map;
|
|||
* @author ff
|
||||
*/
|
||||
@Data
|
||||
@SuperBuilder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class BaseEntity implements Serializable
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ public enum ErrorCode {
|
|||
CURRENCY_EXCHANGE(1006, "不支持币种的汇率"),
|
||||
FREQUENT_INTERFACE_REQUESTS (1007, "接口请求频繁"),
|
||||
BALANCE_TRANSFER_FAILED (1008, "余额转移失败"),
|
||||
LANG_NOT_EXIST(1009, "游戏平台不支持的语言"),
|
||||
;
|
||||
|
||||
// 获取错误码
|
||||
|
|
|
|||
|
|
@ -3,7 +3,11 @@ package com.ff.base.enums;
|
|||
import lombok.Getter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
* ng平台 支持游戏
|
||||
|
|
@ -25,8 +29,46 @@ public enum NGPlatforms {
|
|||
this.platform = platform;
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过代码获取
|
||||
*
|
||||
* @param code 代码
|
||||
* @return {@link NGPlatforms }
|
||||
*/
|
||||
public static NGPlatforms getByCode(String code) {
|
||||
for (NGPlatforms platform : NGPlatforms.values()) {
|
||||
if (platform.code.equalsIgnoreCase(code)) {
|
||||
return platform;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 判断某个平台是否存在
|
||||
* @param platformName 平台名称
|
||||
* @return 存在返回 true,否则返回 false
|
||||
*/
|
||||
public static Boolean exists(String platformName) {
|
||||
for (NGPlatforms platform : NGPlatforms.values()) {
|
||||
if (platform.platform.equalsIgnoreCase(platformName)) {
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
}
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取所有平台名称的列表
|
||||
* @return List<String> 包含所有平台名称
|
||||
*/
|
||||
public static List<String> getAllPlatforms() {
|
||||
return Arrays.stream(NGPlatforms.values())
|
||||
.map(NGPlatforms::getPlatform)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,31 @@
|
|||
package com.ff.base.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* 未知
|
||||
*
|
||||
* @author shi
|
||||
* @date 2025/03/13
|
||||
*/
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum NGSettlementStatusEnum {
|
||||
UNFINISHED(1, 0, "未结算"),
|
||||
COMPLETED(2, 1, "已完成"),
|
||||
CANCELED(3, 2, "已取消"),
|
||||
REVOKED(4, 3, "已撤单");
|
||||
|
||||
private final int code;
|
||||
private final int status;
|
||||
private final String description;
|
||||
public static NGSettlementStatusEnum fromStatus(int status) {
|
||||
return Arrays.stream(values())
|
||||
.filter(e -> e.status == status)
|
||||
.findFirst().get();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
package com.ff.base.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* 结算状态枚举
|
||||
*
|
||||
* @author shi
|
||||
* @date 2025/03/13
|
||||
*/
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum SettlementStatusEnum {
|
||||
UNFINISHED(1, "未结算"),
|
||||
COMPLETED(2, "已完成"),
|
||||
CANCELED(3, "已取消"),
|
||||
REVOKED(4, "已撤单");
|
||||
|
||||
private final int code;
|
||||
private final String description;
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -8,6 +8,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
/**
|
||||
* 代理对象 ff_tenant_agent
|
||||
|
|
@ -18,7 +19,7 @@ import lombok.NoArgsConstructor;
|
|||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
public class TenantAgent extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
/**
|
||||
* 租户成本管理对象 ff_tenant_platform
|
||||
|
|
@ -20,7 +21,7 @@ import lombok.NoArgsConstructor;
|
|||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
public class TenantPlatform extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
/**
|
||||
* 用户租户密钥对象 ff_tenant_secret_key
|
||||
|
|
@ -21,7 +22,7 @@ import lombok.NoArgsConstructor;
|
|||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
public class TenantSecretKey extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
/**
|
||||
* 租户白名单对象 ff_tenant_white
|
||||
|
|
@ -18,7 +19,7 @@ import lombok.NoArgsConstructor;
|
|||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
public class TenantWhite extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
|
@ -22,7 +23,7 @@ import java.util.List;
|
|||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
public class CreateTenantDTO implements Serializable {
|
||||
private final static long serialVersionUID = 1L;
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
|||
import com.ff.base.annotation.Excel;
|
||||
import com.ff.base.core.domain.BaseEntity;
|
||||
import lombok.*;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
/**
|
||||
* 代理佣金管理 对象 ff_tenant_agent_commission
|
||||
|
|
@ -17,7 +18,7 @@ import lombok.*;
|
|||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
public class TenantAgentCommission extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
/**
|
||||
* 代理邀请链接对象 ff_tenant_agent_invite
|
||||
|
|
@ -20,7 +21,7 @@ import lombok.NoArgsConstructor;
|
|||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
public class TenantAgentInvite extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
/**
|
||||
* 平台邀请注册成本管理对象 ff_tenant_agent_invite_platform
|
||||
|
|
@ -20,7 +21,7 @@ import lombok.NoArgsConstructor;
|
|||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
public class TenantAgentInvitePlatform extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
/**
|
||||
* 代理邀请注册对象 ff_tenant_agent_invite_register
|
||||
|
|
@ -20,7 +21,7 @@ import lombok.NoArgsConstructor;
|
|||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
public class TenantAgentInviteRegister extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
/**
|
||||
* 代理申请提现审批管理对象 ff_tenant_agent_withdrawal
|
||||
|
|
@ -20,7 +21,7 @@ import lombok.NoArgsConstructor;
|
|||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
public class TenantAgentWithdrawal extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
|
|
@ -21,7 +22,7 @@ import java.math.BigDecimal;
|
|||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
public class AgentTenantSecretKeyDTO extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
|
|
|||
|
|
@ -22,6 +22,8 @@ import com.ff.config.KeyConfig;
|
|||
import com.ff.game.api.IGamesService;
|
||||
import com.ff.game.api.request.*;
|
||||
import com.ff.game.domain.*;
|
||||
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;
|
||||
|
|
@ -94,6 +96,13 @@ public class ApiGameController extends BaseController {
|
|||
@Resource
|
||||
private IGameExchangeMoneyService gameExchangeMoneyService;
|
||||
|
||||
@Resource
|
||||
private IGameSecretKeyCurrencyService gameSecretKeyCurrencyService;
|
||||
|
||||
|
||||
@Resource
|
||||
private IGameSecretKeyLangService gameSecretKeyLangService;
|
||||
|
||||
@Autowired
|
||||
@Qualifier("threadPoolTaskExecutor")
|
||||
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
|
||||
|
|
@ -108,10 +117,9 @@ public class ApiGameController extends BaseController {
|
|||
public AjaxResult list() {
|
||||
List<GameResponse> gameResponses = gameService.selectGameResponseList();
|
||||
for (GameResponse gameRespons : gameResponses) {
|
||||
List<GameSecretKey> gameSecretKeys = gameSecretKeyService.selectGameSecretKeyList(GameSecretKey.builder()
|
||||
.platform(gameRespons.getPlatformCode())
|
||||
.build());
|
||||
List<String> currencyCode = gameSecretKeys.stream().map(GameSecretKey::getSystemCurrency).collect(Collectors.toList());
|
||||
|
||||
List<GameSecretKeyCurrency> gameSecretKeyCurrencies = gameSecretKeyCurrencyService.selectGameSecretKeyCurrencyList(GameSecretKeyCurrencyDTO.builder().platformCode(gameRespons.getPlatformCode()).build());
|
||||
List<String> currencyCode = gameSecretKeyCurrencies.stream().map(GameSecretKeyCurrency::getSystemCurrency).collect(Collectors.toList());
|
||||
gameRespons.setCurrencyCode(currencyCode);
|
||||
}
|
||||
return AjaxResult.success(gameResponses);
|
||||
|
|
@ -138,26 +146,32 @@ public class ApiGameController extends BaseController {
|
|||
|
||||
|
||||
TenantSecretKey tenantSecretKey = keyConfig.get();
|
||||
GameSecretKey gameSecretKey = gameSecretKeyService.findSecretKeyByPlatformAndSystemCurrency(gamePlatform.getPlatformCode(), memberCreateApiRequest.getCurrencyCode());
|
||||
ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode());
|
||||
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());
|
||||
|
||||
GameSecretKey gameSecretKeyLang = gameSecretKeyService.findByPlatformAndSystemLangCode(gamePlatform.getPlatformCode(), memberCreateApiRequest.getLangCode());
|
||||
Assert.notNull(gameSecretKeyLang, "当前语言不存在");
|
||||
|
||||
Member member = memberService.selectMemberByGameAccount(StringUtils.addSuffix(memberCreateApiRequest.getAccount(), memberCreateApiRequest.getCurrencyCode() + tenantSecretKey.getTenantSn()));
|
||||
ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode());
|
||||
|
||||
GamesLogin gamesLogin = GamesLogin.builder()
|
||||
.agentId(gameSecretKey.getCode())
|
||||
.agentKey(gameSecretKey.getKey())
|
||||
.agentId(secretKeyCurrencyDTO.getCode())
|
||||
.agentKey(secretKeyCurrencyDTO.getKey())
|
||||
.account(member.getGameAccount())
|
||||
.gameSecretKeyId(gameSecretKey.getId())
|
||||
.gameType(game.getGameSourceType())
|
||||
.currency(secretKeyCurrencyDTO.getCurrency())
|
||||
.gameId(game.getGameCode())
|
||||
.homeUrl(memberCreateApiRequest.getHomeUrl())
|
||||
.platform(memberCreateApiRequest.getPlatform())
|
||||
.disableFullScreen(memberCreateApiRequest.getDisableFullScreen())
|
||||
.lang(gameSecretKeyLang.getLang())
|
||||
.lang(gameSecretKeyLangDTO.getLang())
|
||||
.build();
|
||||
|
||||
String login = iGamesService.loginWithoutRedirect(gamesLogin);
|
||||
|
|
@ -182,7 +196,10 @@ public class ApiGameController extends BaseController {
|
|||
|
||||
TenantSecretKey tenantSecretKey = keyConfig.get();
|
||||
|
||||
GameSecretKey gameSecretKey = gameSecretKeyService.findSecretKeyByPlatformAndSystemCurrency(gameExchangeBalanceRequest.getPlatformCode(), gameExchangeBalanceRequest.getCurrencyCode());
|
||||
GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
|
||||
.platformCode(gameExchangeBalanceRequest.getPlatformCode())
|
||||
.systemCurrency(gameExchangeBalanceRequest.getCurrencyCode()).build());
|
||||
|
||||
ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode());
|
||||
|
||||
BigDecimal quota = tenantGameQuotaService.gameBalanceExchange(GameBalanceExchange.builder()
|
||||
|
|
@ -205,7 +222,7 @@ public class ApiGameController extends BaseController {
|
|||
.agentKey(gameSecretKey.getKey())
|
||||
.orderId(gameExchangeBalanceRequest.getOrderId())
|
||||
.account(member.getGameAccount())
|
||||
.gameSecretKeyId(gameSecretKey.getId())
|
||||
.currency(gameSecretKey.getCurrency())
|
||||
.tenantKey(tenantSecretKey.getTenantKey())
|
||||
.quota(quota)
|
||||
.amount(gameExchangeBalanceRequest.getAmount())
|
||||
|
|
@ -234,7 +251,9 @@ public class ApiGameController extends BaseController {
|
|||
|
||||
|
||||
TenantSecretKey tenantSecretKey = keyConfig.get();
|
||||
GameSecretKey gameSecretKey = gameSecretKeyService.findSecretKeyByPlatformAndSystemCurrency(gameCreateFreeSpinRequest.getPlatformCode(), gameCreateFreeSpinRequest.getCurrencyCode());
|
||||
GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
|
||||
.platformCode(gameCreateFreeSpinRequest.getPlatformCode())
|
||||
.systemCurrency(gameCreateFreeSpinRequest.getCurrencyCode()).build());
|
||||
ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode());
|
||||
|
||||
Member member = memberService.selectMemberByGameAccount(StringUtils.addSuffix(gameCreateFreeSpinRequest.getAccount(), gameCreateFreeSpinRequest.getCurrencyCode() + tenantSecretKey.getTenantSn()));
|
||||
|
|
@ -303,15 +322,26 @@ public class ApiGameController extends BaseController {
|
|||
public AjaxResult getDetail(@Validated @RequestBody GameGetDetailRequest gameGetDetailRequest) {
|
||||
|
||||
|
||||
GameSecretKey gameSecretKey = gameSecretKeyService.findSecretKeyByPlatformAndSystemCurrency(gameGetDetailRequest.getPlatformCode(), gameGetDetailRequest.getCurrencyCode());
|
||||
|
||||
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());
|
||||
|
||||
GameSecretKey gameSecretKeyLang = gameSecretKeyService.findByPlatformAndSystemLangCode(gameGetDetailRequest.getPlatformCode(), gameGetDetailRequest.getLangCode());
|
||||
Assert.notNull(gameSecretKeyLang, "当前语言不存在");
|
||||
|
||||
|
||||
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()
|
||||
|
|
@ -331,7 +361,9 @@ public class ApiGameController extends BaseController {
|
|||
*/
|
||||
@PostMapping("/kick/member")
|
||||
public AjaxResult kickMember(@Validated @RequestBody GameKickMemeberRequest gameKickMemeberRequest) {
|
||||
GameSecretKey gameSecretKey = gameSecretKeyService.findSecretKeyByPlatformAndSystemCurrency(gameKickMemeberRequest.getPlatformCode(), gameKickMemeberRequest.getCurrencyCode());
|
||||
GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
|
||||
.platformCode(gameKickMemeberRequest.getPlatformCode())
|
||||
.systemCurrency(gameKickMemeberRequest.getCurrencyCode()).build());
|
||||
ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode());
|
||||
|
||||
TenantSecretKey tenantSecretKey = keyConfig.get();
|
||||
|
|
@ -351,7 +383,10 @@ public class ApiGameController extends BaseController {
|
|||
|
||||
@PostMapping("/kick/member/all")
|
||||
public AjaxResult kickMemberAll(@Validated @RequestBody GameKickMemeberAllRequest gameKickMemeberAllRequest) {
|
||||
GameSecretKey gameSecretKey = gameSecretKeyService.findSecretKeyByPlatformAndSystemCurrency(gameKickMemeberAllRequest.getPlatformCode(), gameKickMemeberAllRequest.getCurrencyCode());
|
||||
GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
|
||||
.platformCode(gameKickMemeberAllRequest.getPlatformCode())
|
||||
.systemCurrency(gameKickMemeberAllRequest.getCurrencyCode()).build());
|
||||
|
||||
ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode());
|
||||
|
||||
IGamesService iGamesService = gamesService.get(gameKickMemeberAllRequest.getPlatformCode() + Constants.SERVICE);
|
||||
|
|
@ -413,7 +448,9 @@ public class ApiGameController extends BaseController {
|
|||
*/
|
||||
@PostMapping("/cancel/free/spin")
|
||||
public AjaxResult cancelFreeSpin(@Validated @RequestBody GameCancelFreeSpinRequest gameGetFreeSpinDashflowRequest) {
|
||||
GameSecretKey gameSecretKey = gameSecretKeyService.findSecretKeyByPlatformAndSystemCurrency(gameGetFreeSpinDashflowRequest.getPlatformCode(), gameGetFreeSpinDashflowRequest.getCurrencyCode());
|
||||
GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
|
||||
.platformCode(gameGetFreeSpinDashflowRequest.getPlatformCode())
|
||||
.systemCurrency(gameGetFreeSpinDashflowRequest.getCurrencyCode()).build());
|
||||
ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode());
|
||||
|
||||
IGamesService iGamesService = gamesService.get(gameGetFreeSpinDashflowRequest.getPlatformCode() + Constants.SERVICE);
|
||||
|
|
@ -441,7 +478,8 @@ public class ApiGameController extends BaseController {
|
|||
ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode());
|
||||
|
||||
|
||||
List<GameSecretKey> gameSecretKeys = gameSecretKeyService.selectGameSecretKeyList(GameSecretKey.builder().systemCurrency(gameExchangeBalanceAllRequest.getCurrencyCode()).build());
|
||||
List<GameSecretKeyCurrencyDTO> gameSecretKeys = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTOList(GameSecretKeyCurrencyDTO.builder()
|
||||
.systemCurrency(gameExchangeBalanceAllRequest.getCurrencyCode()).build());
|
||||
|
||||
|
||||
// 创建线程池
|
||||
|
|
@ -452,18 +490,18 @@ public class ApiGameController extends BaseController {
|
|||
List<Future<Long>> futures = new ArrayList<>();
|
||||
|
||||
// 提交异步任务到线程池
|
||||
for (GameSecretKey gameSecretKey : gameSecretKeys) {
|
||||
for (GameSecretKeyCurrencyDTO gameSecretKeyCurrencyDTO : gameSecretKeys) {
|
||||
futures.add(threadPoolTaskExecutor.submit(() -> {
|
||||
try {
|
||||
|
||||
IGamesService iGamesService = gamesService.get(gameSecretKey.getPlatform() + Constants.SERVICE);
|
||||
IGamesService iGamesService = gamesService.get(gameSecretKeyCurrencyDTO.getPlatformCode() + Constants.SERVICE);
|
||||
//操作第三方钱包
|
||||
ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO = ExchangeTransferMoneyRequestDTO.builder()
|
||||
.agentId(gameSecretKey.getCode())
|
||||
.agentKey(gameSecretKey.getKey())
|
||||
.agentId(gameSecretKeyCurrencyDTO.getCode())
|
||||
.agentKey(gameSecretKeyCurrencyDTO.getKey())
|
||||
.orderId(gameExchangeBalanceAllRequest.getOrderId())
|
||||
.gameSecretKeyId(gameSecretKey.getId())
|
||||
.amount(BigDecimal.ONE)
|
||||
.currency(gameSecretKeyCurrencyDTO.getCurrency())
|
||||
.tenantKey(tenantSecretKey.getTenantKey())
|
||||
.account(member.getGameAccount())
|
||||
.transferType(TransferType.ALL.getCode())
|
||||
|
|
|
|||
|
|
@ -19,6 +19,8 @@ import com.ff.config.KeyConfig;
|
|||
import com.ff.game.api.IGamesService;
|
||||
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;
|
||||
|
|
@ -78,6 +80,9 @@ public class ApiMemberController extends BaseController {
|
|||
@Qualifier("threadPoolTaskExecutor")
|
||||
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
|
||||
|
||||
@Resource
|
||||
private IGameSecretKeyCurrencyService gameSecretKeyCurrencyService;
|
||||
|
||||
/**
|
||||
* 创建成员
|
||||
*
|
||||
|
|
@ -92,7 +97,10 @@ public class ApiMemberController extends BaseController {
|
|||
ApiException.notNull(iGamesService, ErrorCode.PLATFORM_NOT_EXIST.getCode());
|
||||
|
||||
TenantSecretKey tenantSecretKey = keyConfig.get();
|
||||
GameSecretKey gameSecretKey = gameSecretKeyService.findSecretKeyByPlatformAndSystemCurrency(memberCreateApiRequest.getPlatformCode(), memberCreateApiRequest.getCurrencyCode());
|
||||
GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
|
||||
.platformCode(memberCreateApiRequest.getPlatformCode())
|
||||
.systemCurrency(memberCreateApiRequest.getCurrencyCode()).build());
|
||||
|
||||
ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode());
|
||||
|
||||
String gameAccount = StringUtils.addSuffix(memberCreateApiRequest.getAccount(), memberCreateApiRequest.getCurrencyCode() + tenantSecretKey.getTenantSn());
|
||||
|
|
@ -110,14 +118,14 @@ public class ApiMemberController extends BaseController {
|
|||
.currencyCode(memberCreateApiRequest.getCurrencyCode())
|
||||
.build();
|
||||
int insertMember = memberService.insertMember(member);
|
||||
Assert.isTrue(insertMember>0, "建立游戏账号失败");
|
||||
Assert.isTrue(insertMember > 0, "建立游戏账号失败");
|
||||
}
|
||||
//向第三方注册账号
|
||||
CreateMemberRequestDTO gamesBaseRequestDTO = CreateMemberRequestDTO.builder()
|
||||
.account(gameAccount)
|
||||
.agentId(gameSecretKey.getCode())
|
||||
.gameSecretKeyId(gameSecretKey.getId())
|
||||
.agentKey(gameSecretKey.getKey())
|
||||
.currency(gameSecretKey.getCurrency())
|
||||
.build();
|
||||
Boolean result = iGamesService.createMember(gamesBaseRequestDTO);
|
||||
Assert.isTrue(result, "建立游戏账号失败");
|
||||
|
|
@ -139,7 +147,10 @@ public class ApiMemberController extends BaseController {
|
|||
|
||||
|
||||
TenantSecretKey tenantSecretKey = keyConfig.get();
|
||||
GameSecretKey gameSecretKey = gameSecretKeyService.findSecretKeyByPlatformAndSystemCurrency(memberInfoApiRequest.getPlatformCode(), memberInfoApiRequest.getCurrencyCode());
|
||||
GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
|
||||
.platformCode(memberInfoApiRequest.getPlatformCode())
|
||||
.systemCurrency(memberInfoApiRequest.getCurrencyCode()).build());
|
||||
|
||||
ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode());
|
||||
|
||||
Member member = memberService.selectMemberByGameAccount(StringUtils.addSuffix(memberInfoApiRequest.getAccount(), memberInfoApiRequest.getCurrencyCode() + tenantSecretKey.getTenantSn()));
|
||||
|
|
@ -149,7 +160,7 @@ public class ApiMemberController extends BaseController {
|
|||
MemberInfoRequestDTO gamesBaseRequestDTO = MemberInfoRequestDTO.builder()
|
||||
.accounts(member.getGameAccount())
|
||||
.agentId(gameSecretKey.getCode())
|
||||
.gameSecretKeyId(gameSecretKey.getId())
|
||||
.currency(gameSecretKey.getCurrency())
|
||||
.agentKey(gameSecretKey.getKey())
|
||||
.build();
|
||||
MemberInfoResponseDTO memberInfo = iGamesService.getMemberInfo(gamesBaseRequestDTO);
|
||||
|
|
@ -173,8 +184,8 @@ public class ApiMemberController extends BaseController {
|
|||
ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode());
|
||||
|
||||
|
||||
List<GameSecretKey> gameSecretKeys = gameSecretKeyService.selectGameSecretKeyList(GameSecretKey.builder().systemCurrency(memberInfoAllApiRequest.getCurrencyCode()).build());
|
||||
|
||||
List<GameSecretKeyCurrencyDTO> gameSecretKeys = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTOList(GameSecretKeyCurrencyDTO.builder()
|
||||
.systemCurrency(memberInfoAllApiRequest.getCurrencyCode()).build());
|
||||
|
||||
// 创建线程池
|
||||
Map<String, BigDecimal> balanceMap = new LinkedHashMap<>();
|
||||
|
|
@ -184,14 +195,14 @@ public class ApiMemberController extends BaseController {
|
|||
List<Future<MemberInfoAllResponse>> futures = new ArrayList<>();
|
||||
|
||||
// 提交异步任务到线程池
|
||||
for (GameSecretKey gameSecretKey : gameSecretKeys) {
|
||||
for (GameSecretKeyCurrencyDTO gameSecretKey : gameSecretKeys) {
|
||||
futures.add(threadPoolTaskExecutor.submit(() -> {
|
||||
try {
|
||||
IGamesService iGamesService = gamesService.get(gameSecretKey.getPlatform() + Constants.SERVICE);
|
||||
IGamesService iGamesService = gamesService.get(gameSecretKey.getPlatformCode() + Constants.SERVICE);
|
||||
MemberInfoRequestDTO gamesBaseRequestDTO = MemberInfoRequestDTO.builder()
|
||||
.accounts(member.getGameAccount())
|
||||
.agentId(gameSecretKey.getCode())
|
||||
.gameSecretKeyId(gameSecretKey.getId())
|
||||
.currency(gameSecretKey.getCurrency())
|
||||
.agentKey(gameSecretKey.getKey())
|
||||
.build();
|
||||
//查询余额
|
||||
|
|
@ -200,7 +211,7 @@ public class ApiMemberController extends BaseController {
|
|||
.account(member.getGameAccount())
|
||||
.balance(memberInfo.getBalance())
|
||||
.status(memberInfo.getStatus())
|
||||
.platformCode(gameSecretKey.getPlatform())
|
||||
.platformCode(gameSecretKey.getPlatformCode())
|
||||
.build();
|
||||
} finally {
|
||||
latch.countDown(); // 任务完成后减少计数
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
|
@ -19,7 +20,7 @@ import java.math.BigDecimal;
|
|||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
public class GameBettingDetailsResponse implements Serializable
|
||||
{
|
||||
private static final long serialVersionUID = -988976119749917266L;
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
|
@ -19,7 +20,7 @@ import java.math.BigDecimal;
|
|||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
public class GameExchangeBalanceResponse implements Serializable
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
|
|
@ -17,7 +18,7 @@ import java.io.Serializable;
|
|||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
@NoArgsConstructor
|
||||
public class GameFreeRecordResponse implements Serializable
|
||||
{
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
|
@ -18,7 +19,7 @@ import java.util.List;
|
|||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
public class GameResponse implements Serializable {
|
||||
private static final long serialVersionUID = 7932597077733961820L;
|
||||
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
|
@ -17,7 +18,7 @@ import java.math.BigDecimal;
|
|||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
public class MemberInfoAllResponse implements Serializable
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
|
@ -17,7 +18,7 @@ import java.math.BigDecimal;
|
|||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
public class MemberInfoResponse implements Serializable
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
/**
|
||||
* 平台利润成本管理对象 ff_tenant_agent_platform
|
||||
|
|
@ -17,7 +18,7 @@ import lombok.NoArgsConstructor;
|
|||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
public class TenantAgentPlatform extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
/**
|
||||
* 租户游戏配额对象 ff_tenant_game_quota
|
||||
|
|
@ -21,7 +22,7 @@ import lombok.NoArgsConstructor;
|
|||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
public class TenantGameQuota extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
/**
|
||||
* 租户游戏额度流水对象 ff_tenant_game_quota_flow
|
||||
|
|
@ -20,7 +21,7 @@ import lombok.NoArgsConstructor;
|
|||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
public class TenantGameQuotaFlow extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
/**
|
||||
* 币种汇率对象 ff_tenant_quota_exchange
|
||||
|
|
@ -20,7 +21,7 @@ import lombok.NoArgsConstructor;
|
|||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
public class TenantQuotaExchange extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
|
@ -21,7 +22,7 @@ import java.math.BigDecimal;
|
|||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
public class BalanceChangesDTO implements Serializable {
|
||||
private static final long serialVersionUID = -7479292236485670076L;
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
|
@ -18,7 +19,7 @@ import java.math.BigDecimal;
|
|||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
public class BalanceRealChangesDTO implements Serializable {
|
||||
private static final long serialVersionUID = -4864053711644163092L;
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import java.io.Serializable;
|
||||
|
|
@ -19,7 +20,7 @@ import java.math.BigDecimal;
|
|||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
public class GameBalanceExchange implements Serializable {
|
||||
private final static long serialVersionUID = 3452954102791311247L;
|
||||
|
||||
|
|
|
|||
|
|
@ -27,6 +27,8 @@ 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;
|
||||
|
|
@ -78,6 +80,11 @@ public class TenantGameQuotaServiceImpl implements ITenantGameQuotaService {
|
|||
@Resource
|
||||
private ITenantPlatformService tenantPlatformService;
|
||||
|
||||
|
||||
@Resource
|
||||
private IGameSecretKeyCurrencyService gameSecretKeyCurrencyService;
|
||||
|
||||
|
||||
/**
|
||||
* 查询租户游戏配额
|
||||
*
|
||||
|
|
@ -282,7 +289,10 @@ public class TenantGameQuotaServiceImpl implements ITenantGameQuotaService {
|
|||
@Override
|
||||
public BigDecimal gameBalanceExchange(GameBalanceExchange gameBalanceExchange) {
|
||||
// 获取平台接口密钥
|
||||
GameSecretKey gameSecretKey = gameSecretKeyService.findSecretKeyByPlatformAndSystemCurrency(gameBalanceExchange.getPlatformCode(), gameBalanceExchange.getCurrencyCode());
|
||||
GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
|
||||
.platformCode(gameBalanceExchange.getPlatformCode())
|
||||
.currency(gameBalanceExchange.getCurrencyCode()).build());
|
||||
|
||||
// 检查平台密钥是否存在,否则抛出异常
|
||||
ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode());
|
||||
|
||||
|
|
@ -329,7 +339,7 @@ public class TenantGameQuotaServiceImpl implements ITenantGameQuotaService {
|
|||
MemberInfoRequestDTO gamesBaseRequestDTO = MemberInfoRequestDTO.builder()
|
||||
.accounts(member.getGameAccount())
|
||||
.agentId(gameSecretKey.getCode())
|
||||
.gameSecretKeyId(gameSecretKey.getId())
|
||||
.currency(gameSecretKey.getCurrency())
|
||||
.agentKey(gameSecretKey.getKey())
|
||||
.build();
|
||||
balanceRequestAmount = iGamesService.getMemberInfo(gamesBaseRequestDTO).getBalance();
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ public class JILIBetRecordDataResponseDTO {
|
|||
* 游戏id
|
||||
*/
|
||||
@JsonProperty("GameId")
|
||||
private int gameId;
|
||||
private String gameId;
|
||||
/**
|
||||
* 下注时间
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ public class JILIGamesDataDTO {
|
|||
* 游戏id
|
||||
*/
|
||||
@JsonProperty("GameId")
|
||||
private int gameId;
|
||||
private String gameId;
|
||||
|
||||
/**
|
||||
*自己系统游戏id
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ 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.dto.GameSecretKeyCurrencyDTO;
|
||||
import com.ff.game.service.*;
|
||||
import com.ff.member.domain.Member;
|
||||
import com.ff.member.service.IMemberService;
|
||||
|
|
@ -84,7 +85,11 @@ public class GamesJILIServiceImpl implements IGamesService {
|
|||
@Resource
|
||||
private IGameBettingDetailsService gameBettingDetailsService;
|
||||
|
||||
@Resource
|
||||
private IGameSecretKeyCurrencyService gameSecretKeyCurrencyService;
|
||||
|
||||
@Resource
|
||||
private IGameNameService gameNameService;
|
||||
/**
|
||||
* 获得就是成功
|
||||
*
|
||||
|
|
@ -262,6 +267,24 @@ public class GamesJILIServiceImpl implements IGamesService {
|
|||
}
|
||||
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());
|
||||
|
||||
gameNameService.insertGameName(GameName.builder()
|
||||
.gameId(game.getId())
|
||||
.gameName(gamesDataDTO.getName().getEnUS())
|
||||
.langCode("en-US")
|
||||
.createBy(Constants.SYSTEM)
|
||||
.build());
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -285,7 +308,10 @@ public class GamesJILIServiceImpl implements IGamesService {
|
|||
@Override
|
||||
@Transactional
|
||||
public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) {
|
||||
String systemByCode = gameSecretKeyService.findSystemByCode(exchangeTransferMoneyRequestDTO.getAgentId(), GamePlatforms.JILI.getInfo());
|
||||
GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
|
||||
.code(exchangeTransferMoneyRequestDTO.getAgentId())
|
||||
.currency(exchangeTransferMoneyRequestDTO.getCurrency()).build());
|
||||
|
||||
Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount());
|
||||
String transactionId = GamePlatforms.JILI.getCode() + IdUtils.simpleUUID();
|
||||
|
||||
|
|
@ -306,7 +332,7 @@ public class GamesJILIServiceImpl implements IGamesService {
|
|||
.quota(exchangeTransferMoneyRequestDTO.getQuota())
|
||||
.balance(exchangeTransferMoneyRequestDTO.getAmount())
|
||||
.exchangeType(exchangeTransferMoneyRequestDTO.getTransferType())
|
||||
.currencyCode(systemByCode)
|
||||
.currencyCode(gameSecretKey.getSystemCurrency())
|
||||
.memberId(member.getId())
|
||||
.transactionId(transactionId)
|
||||
.platformCode(GamePlatforms.JILI.getCode())
|
||||
|
|
@ -421,6 +447,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());
|
||||
|
||||
List<Long> gameIds = createFreeSpinRequest.getGameIds();
|
||||
GameUniqueDTO gameUniqueDTO = new GameUniqueDTO();
|
||||
|
|
@ -468,8 +497,10 @@ public class GamesJILIServiceImpl implements IGamesService {
|
|||
member = new Member();
|
||||
}
|
||||
for (Game game : gameList) {
|
||||
|
||||
|
||||
GameFreeRecord gameFreeRecord = GameFreeRecord.builder()
|
||||
.currencyCode(gameSecretKeyService.findSystemByCode(createFreeSpinRequest.getAgentId(), GamePlatforms.JILI.getInfo()))
|
||||
.currencyCode(gameSecretKey.getSystemCurrency())
|
||||
.referenceId(referenceId)
|
||||
.platformCode(GamePlatforms.JILI.getInfo())
|
||||
.memberId(member.getId())
|
||||
|
|
@ -694,13 +725,17 @@ public class GamesJILIServiceImpl implements IGamesService {
|
|||
|
||||
//转化类
|
||||
JILIBetRecordDataResponseDTO jiliBetRecordDataResponseDTO = (JILIBetRecordDataResponseDTO) gamesDataBuildDTO.getData();
|
||||
String systemByCode = gameSecretKeyService.findSystemByCode(jiliBetRecordDataResponseDTO.getAgentId(), GamePlatforms.JILI.getInfo());
|
||||
GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
|
||||
.code(jiliBetRecordDataResponseDTO.getAgentId())
|
||||
.platformCode(GamePlatforms.JILI.getInfo()).build());
|
||||
|
||||
|
||||
Member member = memberService.selectMemberByGameAccount(jiliBetRecordDataResponseDTO.getAccount());
|
||||
if (ObjectUtils.isEmpty(member)) {
|
||||
return null;
|
||||
}
|
||||
List<JILIGamesDataDTO> gamesDatas = redisCache.getCacheList(CacheConstants.JILI_GAMES);
|
||||
Map<Integer, JILIGamesDataDTO> dataDTOMap = gamesDatas.stream().collect(Collectors.toMap(JILIGamesDataDTO::getGameId, e -> e));
|
||||
Map<String, JILIGamesDataDTO> dataDTOMap = gamesDatas.stream().collect(Collectors.toMap(JILIGamesDataDTO::getGameId, e -> e));
|
||||
JILIGamesDataDTO gamesDataDTO = dataDTOMap.get(jiliBetRecordDataResponseDTO.getGameId());
|
||||
BigDecimal payoffAmount = BigDecimal.ZERO;
|
||||
if (GameStatus.WIN.getCode().equals(jiliBetRecordDataResponseDTO.getStatus())) {
|
||||
|
|
@ -713,7 +748,7 @@ public class GamesJILIServiceImpl implements IGamesService {
|
|||
GameBettingDetails gameBettingDetails = GameBettingDetails.builder()
|
||||
.tenantKey(member.getTenantKey())
|
||||
//保存我们的币种id
|
||||
.currencyCode(systemByCode)
|
||||
.currencyCode(gameSecretKey.getSystemCurrency())
|
||||
.memberId(member.getId())
|
||||
.gameCode(jiliBetRecordDataResponseDTO.getGameId())
|
||||
.gameType(JILIGameType.findSystemByCode(jiliBetRecordDataResponseDTO.getGameCategoryId()))
|
||||
|
|
@ -732,6 +767,7 @@ public class GamesJILIServiceImpl implements IGamesService {
|
|||
.settlementTime(jiliBetRecordDataResponseDTO.getSettlementTime())
|
||||
.turnover(jiliBetRecordDataResponseDTO.getTurnover())
|
||||
.orderNo(String.valueOf(jiliBetRecordDataResponseDTO.getRoundIndex()))
|
||||
.settlementStatus(SettlementStatusEnum.COMPLETED.getCode())
|
||||
.build();
|
||||
gameBettingDetails.setCreateBy(Constants.SYSTEM);
|
||||
gameBettingDetails.setCreateTime(DateUtils.getNowDate());
|
||||
|
|
|
|||
|
|
@ -85,4 +85,15 @@ public interface NGClient {
|
|||
*/
|
||||
@Post(url = "/server/transferStatus")
|
||||
ApiNGResponseDTO<ApiExchangeTransferStatusResponseDTO> exchangeTransferStatus(@JSONBody Map<String, Object> parameters, @Header Map<String, String> headerMap);
|
||||
|
||||
|
||||
/**
|
||||
* 按时间获取投注记录
|
||||
*
|
||||
* @param parameters 范围
|
||||
* @param headerMap 标题映射
|
||||
* @return {@link ApiNGResponseDTO }<{@link ApiGameBetRecordPageResponseDTO }>
|
||||
*/
|
||||
@Post(url = "server/recordAll")
|
||||
ApiNGResponseDTO<ApiGameBetRecordPageResponseDTO> getBetRecordByTime(@JSONBody Map<String, Object> parameters, @Header Map<String, String> headerMap);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,129 @@
|
|||
package com.ff.game.api.ng.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* api游戏下注记录页面响应dto
|
||||
*
|
||||
* @author shi
|
||||
* @date 2025/03/12
|
||||
*/
|
||||
@Data
|
||||
public class ApiGameBetRecordPageResponseDTO {
|
||||
|
||||
/**
|
||||
* 数据总计
|
||||
*/
|
||||
private int total;
|
||||
|
||||
/**
|
||||
* 当前页码
|
||||
*/
|
||||
private int pageNo;
|
||||
|
||||
/**
|
||||
* 每页条数
|
||||
*/
|
||||
private int pageSize;
|
||||
|
||||
/**
|
||||
* 投注记录列表
|
||||
*/
|
||||
private List<GameBetRecord> list;
|
||||
|
||||
/**
|
||||
* 游戏投注记录
|
||||
*/
|
||||
@Data
|
||||
public static class GameBetRecord {
|
||||
|
||||
/**
|
||||
* 玩家账号
|
||||
*/
|
||||
private String playerId;
|
||||
|
||||
/**
|
||||
* 游戏平台类型
|
||||
*/
|
||||
private String platType;
|
||||
|
||||
/**
|
||||
* 游戏货币
|
||||
*/
|
||||
private String currency;
|
||||
|
||||
/**
|
||||
* 游戏类型:
|
||||
* 1:视讯、2:老虎机、3:彩票、4:体育、5:电竞、6:捕猎、7:棋牌
|
||||
*/
|
||||
private int gameType;
|
||||
|
||||
/**
|
||||
* 游戏名称
|
||||
*/
|
||||
private String gameName;
|
||||
|
||||
/**
|
||||
* 局号
|
||||
*/
|
||||
private String round;
|
||||
|
||||
/**
|
||||
* 桌号
|
||||
*/
|
||||
private String table;
|
||||
|
||||
/**
|
||||
* 座号
|
||||
*/
|
||||
private String seat;
|
||||
|
||||
|
||||
/**
|
||||
* 投注金额
|
||||
*/
|
||||
private BigDecimal betAmount;
|
||||
|
||||
/**
|
||||
* 有效投注金额
|
||||
*/
|
||||
private BigDecimal validAmount;
|
||||
|
||||
/**
|
||||
* 输赢金额
|
||||
*/
|
||||
private BigDecimal settledAmount;
|
||||
|
||||
/**
|
||||
* 投注内容,部分游戏字段内容较长,建议数据库字段类型为 text
|
||||
*/
|
||||
private String betContent;
|
||||
|
||||
/**
|
||||
* 订单状态:
|
||||
* 0:未完成、1:已完成、2:已取消、3:已撤单
|
||||
*/
|
||||
private int status;
|
||||
|
||||
/**
|
||||
* 游戏订单号
|
||||
*/
|
||||
private Long gameOrderId;
|
||||
|
||||
/**
|
||||
* 订单创建时间 (UTC +8)
|
||||
*/
|
||||
private Date betTime;
|
||||
|
||||
/**
|
||||
* 订单更新时间 (UTC +8)
|
||||
*/
|
||||
private Date lastUpdateTime;
|
||||
}
|
||||
}
|
||||
|
|
@ -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,6 +11,7 @@ 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;
|
||||
|
|
@ -20,11 +22,17 @@ 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.*;
|
||||
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.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.Assert;
|
||||
|
|
@ -34,8 +42,11 @@ import org.springframework.util.ObjectUtils;
|
|||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.security.SecureRandom;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
|
|
@ -87,6 +98,20 @@ public class GamesPGServiceImpl implements IGamesService {
|
|||
@Resource
|
||||
private IGameBettingDetailsService gameBettingDetailsService;
|
||||
|
||||
@Resource
|
||||
private IGameSecretKeyCurrencyService gameSecretKeyCurrencyService;
|
||||
|
||||
@Resource
|
||||
private IGameNameService gameNameService;
|
||||
|
||||
|
||||
@Resource
|
||||
private IGameSecretKeyLangService gameSecretKeyLangService;
|
||||
|
||||
|
||||
@Autowired
|
||||
@Qualifier("threadPoolTaskExecutor")
|
||||
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
|
||||
|
||||
/**
|
||||
* 获得就是成功
|
||||
|
|
@ -139,11 +164,10 @@ public class GamesPGServiceImpl implements IGamesService {
|
|||
@Override
|
||||
public Boolean createMember(CreateMemberRequestDTO createMemberRequestDTO) {
|
||||
log.info("GamesNGServiceImpl [createMember] 请求参数 {}", createMemberRequestDTO);
|
||||
GameSecretKey gameSecretKey = gameSecretKeyService.selectGameSecretKeyById(createMemberRequestDTO.getGameSecretKeyId());
|
||||
Map<String, Object> paramsMap = new HashMap<>();
|
||||
paramsMap.put("playerId", createMemberRequestDTO.getAccount());
|
||||
paramsMap.put("platType", NGPlatforms.PG.getCode());
|
||||
paramsMap.put("currency", gameSecretKey.getCurrency());
|
||||
paramsMap.put("currency", createMemberRequestDTO.getCurrency());
|
||||
Map<String, String> headerMap = this.getKey(createMemberRequestDTO);
|
||||
ApiNGResponseDTO apiNGResponseDTO = ngClient.createMember(paramsMap, headerMap);
|
||||
int errorCode = apiNGResponseDTO.getCode();
|
||||
|
|
@ -167,11 +191,10 @@ public class GamesPGServiceImpl implements IGamesService {
|
|||
@Override
|
||||
public MemberInfoResponseDTO getMemberInfo(MemberInfoRequestDTO memberInfoRequestDTO) {
|
||||
log.info("GamesNGServiceImpl [getMemberInfo] 请求参数 {}", memberInfoRequestDTO);
|
||||
GameSecretKey gameSecretKey = gameSecretKeyService.selectGameSecretKeyById(memberInfoRequestDTO.getGameSecretKeyId());
|
||||
Map<String, Object> paramsMap = new HashMap<>();
|
||||
paramsMap.put("playerId", memberInfoRequestDTO.getAccounts());
|
||||
paramsMap.put("platType", NGPlatforms.PG.getCode());
|
||||
paramsMap.put("currency", gameSecretKey.getCurrency());
|
||||
paramsMap.put("currency", memberInfoRequestDTO.getCurrency());
|
||||
Map<String, String> headerMap = this.getKey(memberInfoRequestDTO);
|
||||
//这个接口请求稍微重复一次就报错
|
||||
SleepUtil.sleep(500);
|
||||
|
|
@ -193,13 +216,12 @@ public class GamesPGServiceImpl implements IGamesService {
|
|||
@Override
|
||||
public String loginWithoutRedirect(GamesLogin gamesLogin) {
|
||||
log.info("GamesNGServiceImpl [loginWithoutRedirect] 请求参数 {}", gamesLogin);
|
||||
GameSecretKey gameSecretKey = gameSecretKeyService.selectGameSecretKeyById(gamesLogin.getGameSecretKeyId());
|
||||
Map<String, Object> paramsMap = new HashMap<>();
|
||||
paramsMap.put("playerId", gamesLogin.getAccount());
|
||||
paramsMap.put("platType", NGPlatforms.PG.getCode());
|
||||
paramsMap.put("currency", gameSecretKey.getCurrency());
|
||||
paramsMap.put("currency", gamesLogin.getCurrency());
|
||||
paramsMap.put("gameType", gamesLogin.getGameType());
|
||||
paramsMap.put("lang", gameSecretKey.getLang());
|
||||
paramsMap.put("lang", gamesLogin.getLang());
|
||||
paramsMap.put("gameCode", gamesLogin.getGameId());
|
||||
paramsMap.put("returnUrl", gamesLogin.getHomeUrl());
|
||||
paramsMap.put("ingress", PlatformHomeType.WEB.getValue().equals(gamesLogin.getPlatform()) ? IngressType.PC_WEB.getValue() : IngressType.MOBILE_WEB.getValue());
|
||||
|
|
@ -267,9 +289,36 @@ public class GamesPGServiceImpl implements IGamesService {
|
|||
game = games.get(0);
|
||||
}
|
||||
apiGameInfoResponseDTO.setSystemGameId(game.getId());
|
||||
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());
|
||||
if (CollectionUtils.isEmpty(gameNames)) {
|
||||
if ("zh-hans".equals(key)) {
|
||||
gameNameService.insertGameName(GameName.builder()
|
||||
.gameId(game.getId())
|
||||
.gameName(name)
|
||||
.langCode("zh-CN")
|
||||
.createBy(Constants.SYSTEM)
|
||||
.build());
|
||||
} else if (!"zh-hant".equals(key)) {
|
||||
GameSecretKeyLangDTO gameSecretKeyLangDTO = gameSecretKeyLangService.findGameSecretKeyLangDTO(GameSecretKeyLangDTO.builder()
|
||||
.platformCode(GamePlatforms.PG.getCode())
|
||||
.lang(key)
|
||||
.build());
|
||||
gameNameService.insertGameName(GameName.builder()
|
||||
.gameId(game.getId())
|
||||
.gameName(name)
|
||||
.langCode(gameSecretKeyLangDTO.getSystemLangCode())
|
||||
.createBy(Constants.SYSTEM)
|
||||
.build());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
redisCache.deleteObject(CacheConstants.PG_GAMES);
|
||||
redisCache.setCacheList(CacheConstants.PG_GAMES, gameList.getData());
|
||||
redisCache.expire(CacheConstants.PG_GAMES, 5L, TimeUnit.HOURS);
|
||||
|
|
@ -289,7 +338,13 @@ public class GamesPGServiceImpl implements IGamesService {
|
|||
@Transactional
|
||||
public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) {
|
||||
log.info("GamesNGServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO);
|
||||
GameSecretKey gameSecretKey = gameSecretKeyService.selectGameSecretKeyById(exchangeTransferMoneyRequestDTO.getGameSecretKeyId());
|
||||
|
||||
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);
|
||||
List<GameExchangeMoney> gameExchangeMonies = gameExchangeMoneyService.selectGameExchangeMoneyList(
|
||||
|
|
@ -308,7 +363,7 @@ public class GamesPGServiceImpl implements IGamesService {
|
|||
.quota(exchangeTransferMoneyRequestDTO.getQuota())
|
||||
.balance(exchangeTransferMoneyRequestDTO.getAmount())
|
||||
.exchangeType(exchangeTransferMoneyRequestDTO.getTransferType())
|
||||
.currencyCode(gameSecretKey.getSystemCurrency())
|
||||
.currencyCode(currencyDTO.getSystemCurrency())
|
||||
.memberId(member.getId())
|
||||
.transactionId(transactionId)
|
||||
.platformCode(GamePlatforms.PG.getCode())
|
||||
|
|
@ -316,13 +371,13 @@ public class GamesPGServiceImpl implements IGamesService {
|
|||
exchangeMoney.setCreateBy(Constants.SYSTEM);
|
||||
|
||||
//获取余额
|
||||
String type = TransferType.ALL.getCode().equals(exchangeTransferMoneyRequestDTO.getTransferType()) ? NGTransferType.TRANSFER_IN.getValue() : NGTransferType.TRANSFER_OUT.getValue();
|
||||
String type = TransferType.ALL.getCode().equals(exchangeTransferMoneyRequestDTO.getTransferType()) ? NGTransferType.TRANSFER_OUT.getValue() : NGTransferType.TRANSFER_IN.getValue();
|
||||
//获取当前游戏币
|
||||
MemberInfoRequestDTO gamesBaseRequestDTO = MemberInfoRequestDTO.builder()
|
||||
.accounts(member.getGameAccount())
|
||||
.agentId(gameSecretKey.getCode())
|
||||
.gameSecretKeyId(gameSecretKey.getId())
|
||||
.agentKey(gameSecretKey.getKey())
|
||||
.agentId(exchangeTransferMoneyRequestDTO.getAgentId())
|
||||
.agentKey(exchangeTransferMoneyRequestDTO.getAgentKey())
|
||||
.currency(currencyDTO.getCurrency())
|
||||
.build();
|
||||
MemberInfoResponseDTO memberInfo = this.getMemberInfo(gamesBaseRequestDTO);
|
||||
//判断是不是转出
|
||||
|
|
@ -330,15 +385,16 @@ public class GamesPGServiceImpl implements IGamesService {
|
|||
exchangeTransferMoneyRequestDTO.setAmount(memberInfo.getBalance());
|
||||
}
|
||||
|
||||
System.out.print("aa" + transactionId.length());
|
||||
|
||||
Map<String, Object> paramsMap = new HashMap<>();
|
||||
paramsMap.put("platType", NGPlatforms.PG.getCode());
|
||||
paramsMap.put("playerId", exchangeTransferMoneyRequestDTO.getAccount());
|
||||
paramsMap.put("currency", gameSecretKey.getCurrency());
|
||||
paramsMap.put("currency", currencyDTO.getCurrency());
|
||||
paramsMap.put("type", type);
|
||||
paramsMap.put("amount", String.valueOf(exchangeTransferMoneyRequestDTO.getAmount()));
|
||||
paramsMap.put("orderId", transactionId);
|
||||
|
||||
|
||||
Map<String, String> key = this.getKey(exchangeTransferMoneyRequestDTO);
|
||||
ApiNGResponseDTO apiNGResponseDTO = ngClient.exchangeTransferByAgentId(paramsMap, key);
|
||||
if (this.getIsSuccess(apiNGResponseDTO.getCode())) {
|
||||
|
|
@ -346,13 +402,12 @@ public class GamesPGServiceImpl implements IGamesService {
|
|||
exchangeMoney.setBalance(exchangeTransferMoneyRequestDTO.getAmount());
|
||||
exchangeMoney.setStatus(StatusType.IN_PROGRESS.getValue());
|
||||
gameExchangeMoneyService.insertGameExchangeMoney(exchangeMoney);
|
||||
ExchangeTransferStatusRequestDTO exchangeTransferStatusRequestDTO=new ExchangeTransferStatusRequestDTO();
|
||||
ExchangeTransferStatusRequestDTO exchangeTransferStatusRequestDTO = new ExchangeTransferStatusRequestDTO();
|
||||
exchangeTransferStatusRequestDTO.setAccount(exchangeTransferMoneyRequestDTO.getAccount());
|
||||
exchangeTransferStatusRequestDTO.setCurrency(gameSecretKey.getCurrency());
|
||||
exchangeTransferStatusRequestDTO.setCurrency(currencyDTO.getCurrency());
|
||||
exchangeTransferStatusRequestDTO.setOrderId(transactionId);
|
||||
exchangeTransferStatusRequestDTO.setAgentId(exchangeTransferMoneyRequestDTO.getAgentId());
|
||||
exchangeTransferStatusRequestDTO.setAgentKey(exchangeTransferMoneyRequestDTO.getAgentKey());
|
||||
exchangeTransferStatusRequestDTO.setGameSecretKeyId(exchangeTransferMoneyRequestDTO.getGameSecretKeyId());
|
||||
this.exchangeTransferStatus(exchangeTransferStatusRequestDTO);
|
||||
} else {
|
||||
log.error("GamesPGServiceImpl [exchangeTransferByAgentId] 金额转移失败,错误代码{},错误信息{}", apiNGResponseDTO.getCode(), apiNGResponseDTO.getMsg());
|
||||
|
|
@ -389,7 +444,7 @@ public class GamesPGServiceImpl implements IGamesService {
|
|||
for (GameExchangeMoney exchangeMoney : gameExchangeMonies) {
|
||||
//更新数据
|
||||
exchangeMoney.setBalance(apiNGResponseDTOData.getAmount().abs());
|
||||
exchangeMoney.setCoinBefore(NumberUtil.add(apiNGResponseDTOData.getAmount(), apiNGResponseDTOData.getAfterBalance()));
|
||||
exchangeMoney.setCoinBefore(NumberUtil.sub(apiNGResponseDTOData.getAfterBalance(), apiNGResponseDTOData.getAmount()));
|
||||
exchangeMoney.setCoinAfter(apiNGResponseDTOData.getAfterBalance());
|
||||
exchangeMoney.setCurrencyBefore(exchangeMoney.getCoinBefore());
|
||||
exchangeMoney.setCurrencyAfter(exchangeMoney.getCoinAfter());
|
||||
|
|
@ -415,7 +470,87 @@ public class GamesPGServiceImpl implements IGamesService {
|
|||
@Override
|
||||
public Boolean getBetRecordByTime(BetRecordByTimeDTO betRecordByTimeDTO) {
|
||||
|
||||
return null;
|
||||
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());
|
||||
|
||||
|
||||
Set<String> cacheSet = redisCache.getCacheSet(CacheConstants.PG_GAMES_BET_CURRENCY);
|
||||
if (CollectionUtils.isEmpty(cacheSet)) {
|
||||
cacheSet = new HashSet<>();
|
||||
}
|
||||
//如果长度一致则清空缓存循环币种
|
||||
if (cacheSet.size() >= currencys.size()) {
|
||||
redisCache.deleteObject(CacheConstants.PG_GAMES_BET_CURRENCY);
|
||||
}
|
||||
//去掉重复的
|
||||
currencys.removeAll(cacheSet);
|
||||
|
||||
String firstCurrency = currencys.get(0);
|
||||
|
||||
GameSecretKeyCurrencyDTO currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
|
||||
.platformCode(GamePlatforms.PG.getCode())
|
||||
.currency(firstCurrency)
|
||||
.build());
|
||||
|
||||
|
||||
|
||||
currencyDTO.setCurrency("CNY");
|
||||
|
||||
betRecordByTimeDTO.setAgentId(currencyDTO.getCode());
|
||||
betRecordByTimeDTO.setAgentKey(currencyDTO.getKey());
|
||||
int pageNo = 1;
|
||||
int pageSize = 1;
|
||||
Map<String, Object> paramsMap = new HashMap<>();
|
||||
paramsMap.put("currency", currencyDTO.getCurrency());
|
||||
paramsMap.put("pageNo", pageNo);
|
||||
paramsMap.put("pageSize", pageSize);
|
||||
Map<String, String> key = this.getKey(betRecordByTimeDTO);
|
||||
|
||||
|
||||
ApiNGResponseDTO<ApiGameBetRecordPageResponseDTO> betRecordByTime = ngClient.getBetRecordByTime(paramsMap, key);
|
||||
|
||||
if (this.getIsSuccess(betRecordByTime.getCode())) {
|
||||
cacheSet.add(firstCurrency);
|
||||
redisCache.setCacheSet(CacheConstants.PG_GAMES_BET_CURRENCY, cacheSet);
|
||||
|
||||
ApiNGResponseDTO<ApiGameBetRecordPageResponseDTO> result = betRecordByTime;
|
||||
AtomicInteger pageNoAtomic = new AtomicInteger(pageNo);
|
||||
|
||||
threadPoolTaskExecutor.execute(() -> {
|
||||
|
||||
ApiGameBetRecordPageResponseDTO data = result.getData();
|
||||
//数据组装
|
||||
this.batchInsert(data);
|
||||
|
||||
//总页数
|
||||
// 计算总页数,确保不会遗漏
|
||||
int totalPage = (int) Math.ceil((double) data.getTotal() / pageSize);
|
||||
|
||||
// 获取下一页数据
|
||||
while (pageNoAtomic.get() < totalPage && data.getTotal() > 0) {
|
||||
pageNoAtomic.incrementAndGet();
|
||||
//请求参数
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
paramMap.put("currency", currencyDTO.getCurrency());
|
||||
paramMap.put("pageNo", pageNo);
|
||||
paramMap.put("pageSize", pageSize);
|
||||
//每次翻页请求必须间隔 10 秒钟
|
||||
SleepUtil.sleep(10000);
|
||||
ApiNGResponseDTO<ApiGameBetRecordPageResponseDTO> betRecordByTimePage = ngClient.getBetRecordByTime(paramsMap, key);
|
||||
data = betRecordByTimePage.getData();
|
||||
//数据组装
|
||||
this.batchInsert(data);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -502,6 +637,99 @@ public class GamesPGServiceImpl implements IGamesService {
|
|||
@Override
|
||||
public GameBettingDetails dataBuild(GamesDataBuildDTO gamesDataBuildDTO) {
|
||||
|
||||
return null;
|
||||
//转化类
|
||||
ApiGameBetRecordPageResponseDTO.GameBetRecord resultBean = (ApiGameBetRecordPageResponseDTO.GameBetRecord) gamesDataBuildDTO.getData();
|
||||
|
||||
NGPlatforms ngPlatforms = NGPlatforms.getByCode(resultBean.getPlatType());
|
||||
if (ObjectUtils.isEmpty(ngPlatforms)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
String platform = ngPlatforms.getPlatform();
|
||||
List<Game> games = gameService.selectGameDTOList(GameDTO.builder().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());
|
||||
|
||||
Member member = memberService.selectMemberByGameAccount(resultBean.getPlayerId());
|
||||
if (ObjectUtils.isEmpty(member)) {
|
||||
return null;
|
||||
}
|
||||
GameDTO gameDTO = new GameDTO();
|
||||
gameDTO.setPlatformCodes(NGPlatforms.getAllPlatforms());
|
||||
|
||||
|
||||
//数据构造
|
||||
GameBettingDetails gameBettingDetails = GameBettingDetails.builder()
|
||||
.tenantKey(member.getTenantKey())
|
||||
//保存我们的币种id
|
||||
.currencyCode(currencyDTO.getSystemCurrency())
|
||||
.memberId(member.getId())
|
||||
.gameCode(gamesDataDTO.getGameCode())
|
||||
.gameType(NGGameType.findSystemByCode(resultBean.getGameType()))
|
||||
.platformCode(NGPlatforms.getByCode(resultBean.getPlatType()).getPlatform())
|
||||
.gameId(gamesDataDTO.getId())
|
||||
.gameName(gamesDataDTO.getGameName())
|
||||
.gameStatus(resultBean.getStatus())
|
||||
.gameStatusType(1)
|
||||
.gameCurrencyCode(resultBean.getCurrency())
|
||||
.account(resultBean.getPlayerId())
|
||||
.wagersId(resultBean.getGameOrderId())
|
||||
.wagersTime(resultBean.getBetTime().getTime())
|
||||
.betAmount(resultBean.getBetAmount().abs())
|
||||
.payoffTime(resultBean.getLastUpdateTime().getTime())
|
||||
.payoffAmount(resultBean.getSettledAmount())
|
||||
.settlementTime(resultBean.getLastUpdateTime().getTime())
|
||||
.turnover(resultBean.getValidAmount())
|
||||
.orderNo(String.valueOf(resultBean.getRound()))
|
||||
.settlementStatus(NGSettlementStatusEnum.fromStatus(resultBean.getStatus()).getCode())
|
||||
.round(resultBean.getRound())
|
||||
.table(resultBean.getTable())
|
||||
.seat(resultBean.getSeat())
|
||||
.betContent(resultBean.getBetContent())
|
||||
.build();
|
||||
gameBettingDetails.setCreateBy(Constants.SYSTEM);
|
||||
gameBettingDetails.setCreateTime(DateUtils.getNowDate());
|
||||
return gameBettingDetails;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量插入
|
||||
*
|
||||
* @param data 数据
|
||||
*/
|
||||
private void batchInsert(ApiGameBetRecordPageResponseDTO data) {
|
||||
List<GameBettingDetails> gameBettingDetails = new ArrayList<>();
|
||||
List<Long> wagersIds = new ArrayList<>();
|
||||
//数据转化
|
||||
for (ApiGameBetRecordPageResponseDTO.GameBetRecord bean : data.getList()) {
|
||||
GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder().data(bean).build());
|
||||
if (!ObjectUtils.isEmpty(bettingDetails)) {
|
||||
bettingDetails.setId(IdUtil.getSnowflakeNextId());
|
||||
gameBettingDetails.add(bettingDetails);
|
||||
}
|
||||
wagersIds.add(bean.getGameOrderId());
|
||||
}
|
||||
if (!CollectionUtils.isEmpty(gameBettingDetails)) {
|
||||
//查询重复数据id
|
||||
List<Long> removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds);
|
||||
//用steam流清除list中与wagersIds集合相同的数据
|
||||
gameBettingDetails = gameBettingDetails.stream()
|
||||
.filter(detail -> !removeWagersIds.contains(detail.getWagersId()))
|
||||
.collect(Collectors.toList());
|
||||
if (!CollectionUtils.isEmpty(gameBettingDetails)) {
|
||||
List<Long> wagersId = gameBettingDetails.stream().map(GameBettingDetails::getWagersId).collect(Collectors.toList());
|
||||
gameBettingDetailsService.deleteGameBettingDetailsByWagersId(wagersId);
|
||||
gameBettingDetailsService.batchInsert(gameBettingDetails);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,4 +37,6 @@ public class BetRecordByTimeDTO extends GamesBaseRequestDTO {
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,10 +36,12 @@ public class GamesBaseRequestDTO implements Serializable {
|
|||
private String query;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 游戏密钥id
|
||||
* 货币
|
||||
*/
|
||||
private Long gameSecretKeyId;
|
||||
private String currency;
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
/**
|
||||
* 游戏数据构建dto
|
||||
|
|
@ -13,7 +14,7 @@ import lombok.NoArgsConstructor;
|
|||
*/
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
@Data
|
||||
public class GamesDataBuildDTO
|
||||
{
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
|
|
@ -17,7 +18,7 @@ import java.math.BigDecimal;
|
|||
@NoArgsConstructor
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
public class MemberInfoResponseDTO {
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ public class XKBetRecordResponseDTO {
|
|||
public static class ResultBean {
|
||||
private String account;
|
||||
private Long wagersId;
|
||||
private Integer gameId;
|
||||
private String gameId;
|
||||
private Long wagersTime;
|
||||
private BigDecimal betAmount;
|
||||
private Long payoffTime;
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ public class XKGamesDTO {
|
|||
/**
|
||||
* 游戏id
|
||||
*/
|
||||
private int gameId;
|
||||
private String gameId;
|
||||
/**
|
||||
* 名称
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ 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.dto.GameSecretKeyCurrencyDTO;
|
||||
import com.ff.game.service.*;
|
||||
import com.ff.member.domain.Member;
|
||||
import com.ff.member.service.IMemberService;
|
||||
|
|
@ -74,6 +75,9 @@ public class GamesXKServiceImpl implements IGamesService {
|
|||
@Resource
|
||||
private IGameSecretKeyService gameSecretKeyService;
|
||||
|
||||
@Resource
|
||||
private IGameSecretKeyCurrencyService gameSecretKeyCurrencyService;
|
||||
|
||||
@Resource
|
||||
private XKClient xkClient;
|
||||
|
||||
|
|
@ -84,6 +88,9 @@ public class GamesXKServiceImpl implements IGamesService {
|
|||
@Resource
|
||||
private IGameBettingDetailsService gameBettingDetailsService;
|
||||
|
||||
@Resource
|
||||
private IGameNameService gameNameService;
|
||||
|
||||
|
||||
/**
|
||||
* 获得就是成功
|
||||
|
|
@ -273,7 +280,15 @@ public class GamesXKServiceImpl implements IGamesService {
|
|||
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());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -298,7 +313,11 @@ public class GamesXKServiceImpl implements IGamesService {
|
|||
@Transactional
|
||||
public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) {
|
||||
log.info("GamesXKServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO);
|
||||
String systemByCode = gameSecretKeyService.findSystemByCode(exchangeTransferMoneyRequestDTO.getAgentId(), GamePlatforms.XK.getInfo());
|
||||
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();
|
||||
List<GameExchangeMoney> gameExchangeMonies = gameExchangeMoneyService.selectGameExchangeMoneyList(
|
||||
|
|
@ -317,7 +336,7 @@ public class GamesXKServiceImpl implements IGamesService {
|
|||
.quota(exchangeTransferMoneyRequestDTO.getQuota())
|
||||
.balance(exchangeTransferMoneyRequestDTO.getAmount())
|
||||
.exchangeType(exchangeTransferMoneyRequestDTO.getTransferType())
|
||||
.currencyCode(systemByCode)
|
||||
.currencyCode(currencyDTO.getSystemCurrency())
|
||||
.memberId(member.getId())
|
||||
.transactionId(transactionId)
|
||||
.platformCode(GamePlatforms.XK.getCode())
|
||||
|
|
@ -549,13 +568,18 @@ public class GamesXKServiceImpl implements IGamesService {
|
|||
public GameBettingDetails dataBuild(GamesDataBuildDTO gamesDataBuildDTO) {
|
||||
//转化类
|
||||
XKBetRecordResponseDTO.DataBean.ResultBean resultBean = (XKBetRecordResponseDTO.DataBean.ResultBean) gamesDataBuildDTO.getData();
|
||||
String systemByCode = gameSecretKeyService.findSystemByCode(resultBean.getAgentId(), GamePlatforms.XK.getInfo());
|
||||
|
||||
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
|
||||
.platformCode(GamePlatforms.XK.getInfo())
|
||||
.code(resultBean.getAgentId())
|
||||
.build());
|
||||
|
||||
Member member = memberService.selectMemberByGameAccount(resultBean.getAccount());
|
||||
if (ObjectUtils.isEmpty(member)) {
|
||||
return null;
|
||||
}
|
||||
List<XKGamesDTO.DataBean> gamesDatas = redisCache.getCacheList(CacheConstants.XK_GAMES);
|
||||
Map<Integer, XKGamesDTO.DataBean> dataDTOMap = gamesDatas.stream().collect(Collectors.toMap(XKGamesDTO.DataBean::getGameId, e -> e));
|
||||
Map<String, XKGamesDTO.DataBean> dataDTOMap = gamesDatas.stream().collect(Collectors.toMap(XKGamesDTO.DataBean::getGameId, e -> e));
|
||||
XKGamesDTO.DataBean gamesDataDTO = dataDTOMap.get(resultBean.getGameId());
|
||||
BigDecimal payoffAmount = BigDecimal.ZERO;
|
||||
|
||||
|
|
@ -568,7 +592,7 @@ public class GamesXKServiceImpl implements IGamesService {
|
|||
GameBettingDetails gameBettingDetails = GameBettingDetails.builder()
|
||||
.tenantKey(member.getTenantKey())
|
||||
//保存我们的币种id
|
||||
.currencyCode(systemByCode)
|
||||
.currencyCode(currencyDTO.getSystemCurrency())
|
||||
.memberId(member.getId())
|
||||
.gameCode(resultBean.getGameId())
|
||||
.gameType(XKGameType.findSystemByCode(resultBean.getGameCategoryId()))
|
||||
|
|
@ -587,6 +611,7 @@ public class GamesXKServiceImpl implements IGamesService {
|
|||
.settlementTime(resultBean.getSettlementTime())
|
||||
.turnover(resultBean.getTurnover())
|
||||
.orderNo(String.valueOf(resultBean.getRoundIndex()))
|
||||
.settlementStatus(SettlementStatusEnum.COMPLETED.getCode())
|
||||
.build();
|
||||
gameBettingDetails.setCreateBy(Constants.SYSTEM);
|
||||
gameBettingDetails.setCreateTime(DateUtils.getNowDate());
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
/**
|
||||
* 平台子游戏管理对象 ff_game
|
||||
|
|
@ -18,7 +19,7 @@ import lombok.NoArgsConstructor;
|
|||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
public class Game extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
/**
|
||||
* 会员投注细目对象 ff_game_betting_details
|
||||
|
|
@ -20,7 +21,7 @@ import lombok.NoArgsConstructor;
|
|||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
public class GameBettingDetails extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
|
@ -47,7 +48,7 @@ public class GameBettingDetails extends BaseEntity
|
|||
|
||||
/** 游戏id */
|
||||
@Excel(name = "游戏id ")
|
||||
private Integer gameCode;
|
||||
private String gameCode;
|
||||
|
||||
/** 游戏id */
|
||||
@Excel(name = "游戏id")
|
||||
|
|
@ -70,7 +71,17 @@ public class GameBettingDetails extends BaseEntity
|
|||
@Excel(name = "注单状态 1: 赢 2: 输 3: 平局")
|
||||
private Integer gameStatus;
|
||||
|
||||
/** 注单类型 */
|
||||
/** 注单类型
|
||||
* 1 一般下注
|
||||
9 舞龙争霸和梅杜莎的
|
||||
11 道具卡
|
||||
12 游戏内购
|
||||
17 满额必开 (下注)
|
||||
18 满额必开 (开奖)
|
||||
19 免费游戏
|
||||
28 旋转奖金
|
||||
|
||||
*/
|
||||
@Excel(name = "注单类型")
|
||||
private Integer gameStatusType;
|
||||
|
||||
|
|
@ -82,6 +93,27 @@ public class GameBettingDetails extends BaseEntity
|
|||
@Excel(name = "游戏账号")
|
||||
private String account;
|
||||
|
||||
|
||||
/**
|
||||
* 局号
|
||||
*/
|
||||
private String round;
|
||||
|
||||
/**
|
||||
* 桌号
|
||||
*/
|
||||
private String table;
|
||||
|
||||
/**
|
||||
* 座号
|
||||
*/
|
||||
private String seat;
|
||||
|
||||
/**
|
||||
* 投注内容,部分游戏字段内容较长,建议数据库字段类型为 text
|
||||
*/
|
||||
private String betContent;
|
||||
|
||||
/** 游戏注单唯一值 */
|
||||
@Excel(name = "游戏注单唯一值")
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
|
|
@ -119,7 +151,7 @@ public class GameBettingDetails extends BaseEntity
|
|||
@Excel(name = "订单id")
|
||||
private String orderNo;
|
||||
|
||||
/** 结算状态 1 未结算 2已结算 3 已撤单 */
|
||||
/** 结算状态 1 未结算 2已结算 3 已撤单 4 已取消 */
|
||||
@Excel(name = "结算状态 1 未结算 2已结算 3 已撤单")
|
||||
private Integer settlementStatus;
|
||||
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
/**
|
||||
* 会员金额转移记录对象 ff_game_exchange_money
|
||||
|
|
@ -20,7 +21,7 @@ import lombok.NoArgsConstructor;
|
|||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
public class GameExchangeMoney extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ import lombok.experimental.SuperBuilder;
|
|||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
@NoArgsConstructor
|
||||
public class GameFreeRecord extends BaseEntity
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -8,6 +8,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
/**
|
||||
* 平台管理对象 ff_game_platform
|
||||
|
|
@ -18,7 +19,7 @@ import lombok.NoArgsConstructor;
|
|||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
public class GamePlatform extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
|
|
|||
|
|
@ -1,30 +1,27 @@
|
|||
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
|
||||
*
|
||||
* @author shi
|
||||
* @date 2025-02-10
|
||||
* @date 2025-03-13
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@SuperBuilder
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class GameSecretKey extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 主键id */
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
/** $column.columnComment */
|
||||
private Long id;
|
||||
|
||||
/** 平台 */
|
||||
|
|
@ -40,26 +37,4 @@ public class GameSecretKey extends BaseEntity
|
|||
private String key;
|
||||
|
||||
|
||||
/**
|
||||
* 货币
|
||||
*/
|
||||
private String currency;
|
||||
|
||||
/** 系统币种 */
|
||||
@Excel(name = "系统币种")
|
||||
private String systemCurrency;
|
||||
|
||||
/** 语言 */
|
||||
@Excel(name = "语言")
|
||||
private String lang;
|
||||
|
||||
/** 系统语种id */
|
||||
@Excel(name = "系统语种id")
|
||||
private String systemLangCode;
|
||||
|
||||
/** 信息 */
|
||||
@Excel(name = "信息")
|
||||
private String info;
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,51 @@
|
|||
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;
|
||||
|
||||
/**
|
||||
* 币种
|
||||
*/
|
||||
@Excel(name = "币种")
|
||||
private String currency;
|
||||
|
||||
/**
|
||||
* 系统代码
|
||||
*/
|
||||
@Excel(name = "系统代码")
|
||||
private String systemCurrency;
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
package com.ff.game.dto;
|
||||
|
||||
import com.ff.game.domain.Game;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 游戏dto
|
||||
*
|
||||
* @author shi
|
||||
* @date 2025/03/12
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@SuperBuilder
|
||||
public class GameDTO extends Game {
|
||||
/**
|
||||
* 平台集合
|
||||
*/
|
||||
private List<String> platformCodes;
|
||||
|
||||
/**
|
||||
* 平台代码
|
||||
*/
|
||||
private String platformCode;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
@ -3,6 +3,7 @@ package com.ff.game.mapper;
|
|||
import java.util.List;
|
||||
import com.ff.game.domain.GameBettingDetails;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.springframework.security.core.parameters.P;
|
||||
|
||||
/**
|
||||
* 会员投注细目Mapper接口
|
||||
|
|
@ -77,4 +78,13 @@ public interface GameBettingDetailsMapper
|
|||
* @return int
|
||||
*/
|
||||
int batchInsert(List<GameBettingDetails> bettingDetails);
|
||||
|
||||
|
||||
/**
|
||||
* 按投注id删除游戏投注详细信息
|
||||
*
|
||||
* @param wagersIds 投注id
|
||||
* @return int
|
||||
*/
|
||||
int deleteGameBettingDetailsByWagersId(@Param("wagersIds") List<Long> wagersIds);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ 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;
|
||||
|
||||
/**
|
||||
* 平台子游戏管理Mapper接口
|
||||
|
|
@ -87,4 +88,13 @@ public interface GameMapper
|
|||
*/
|
||||
List<GameResponse> selectGameResponseList();
|
||||
|
||||
|
||||
/**
|
||||
* 选择游戏数据列表
|
||||
*
|
||||
* @param gameDTO 游戏dto
|
||||
* @return {@link List }<{@link Game }>
|
||||
*/
|
||||
List<Game> selectGameDTOList(GameDTO gameDTO);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -1,16 +1,13 @@
|
|||
package com.ff.game.mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.ff.base.system.domain.TenantSecretKey;
|
||||
import com.ff.game.domain.GameSecretKey;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
/**
|
||||
* 游戏平台密钥管理Mapper接口
|
||||
*
|
||||
* @author shi
|
||||
* @date 2025-02-10
|
||||
* @date 2025-03-13
|
||||
*/
|
||||
public interface GameSecretKeyMapper
|
||||
{
|
||||
|
|
@ -61,30 +58,4 @@ public interface GameSecretKeyMapper
|
|||
* @return 结果
|
||||
*/
|
||||
int deleteGameSecretKeyByIds(Long[] ids);
|
||||
|
||||
/**
|
||||
* 按代码查找系统
|
||||
*
|
||||
* @param code 代码
|
||||
* @return {@link String }
|
||||
*/
|
||||
String findSystemByCode(@Param("code") String code, @Param("platform")String platform);
|
||||
|
||||
/**
|
||||
* 通过平台和系统代码查找密钥
|
||||
*
|
||||
* @param platform 平台
|
||||
* @param systemCode 系统代码
|
||||
* @return {@link TenantSecretKey }
|
||||
*/
|
||||
GameSecretKey findSecretKeyByPlatformAndSystemCurrency(@Param("platform") String platform, @Param("systemCurrency") String systemCode);
|
||||
|
||||
/**
|
||||
* 按平台和系统查找lang代码
|
||||
*
|
||||
* @param platform 平台
|
||||
* @param systemLangCode 系统语言代码
|
||||
* @return {@link GameSecretKey }
|
||||
*/
|
||||
GameSecretKey findByPlatformAndSystemLangCode(@Param("platform") String platform, @Param("systemLangCode") String systemLangCode);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ public interface IGameBettingDetailsService
|
|||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 查询会员投注细目列表
|
||||
*
|
||||
|
|
@ -80,4 +81,12 @@ public interface IGameBettingDetailsService
|
|||
* @return 结果
|
||||
*/
|
||||
int deleteGameBettingDetailsById(Long id);
|
||||
|
||||
/**
|
||||
* 按投注id删除游戏投注详细信息
|
||||
*
|
||||
* @param wagersId 投注id
|
||||
* @return int
|
||||
*/
|
||||
int deleteGameBettingDetailsByWagersId(List<Long> wagersId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -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);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -1,14 +1,13 @@
|
|||
package com.ff.game.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.ff.game.domain.GameSecretKey;
|
||||
|
||||
/**
|
||||
* 游戏平台密钥管理Service接口
|
||||
*
|
||||
* @author shi
|
||||
* @date 2025-02-10
|
||||
* @date 2025-03-13
|
||||
*/
|
||||
public interface IGameSecretKeyService
|
||||
{
|
||||
|
|
@ -59,35 +58,4 @@ public interface IGameSecretKeyService
|
|||
* @return 结果
|
||||
*/
|
||||
int deleteGameSecretKeyById(Long id);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 按代码查找系统
|
||||
*
|
||||
* @param code 代码
|
||||
* @param platform 平台
|
||||
* @return {@link String }
|
||||
*/
|
||||
String findSystemByCode( String code,String platform);
|
||||
|
||||
/**
|
||||
* 通过平台和系统代码查找密钥
|
||||
*
|
||||
* @param platform 平台
|
||||
* @param systemCode 系统代码
|
||||
* @return {@link GameSecretKey }
|
||||
*/
|
||||
GameSecretKey findSecretKeyByPlatformAndSystemCurrency(String platform, String systemCode);
|
||||
|
||||
|
||||
/**
|
||||
* 按平台和系统查找lang代码
|
||||
*
|
||||
* @param platform 平台
|
||||
* @param systemLangCode 系统语言代码
|
||||
* @return {@link GameSecretKey }
|
||||
*/
|
||||
GameSecretKey findByPlatformAndSystemLangCode( String platform,String systemLangCode);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ 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;
|
||||
|
||||
/**
|
||||
* 平台子游戏管理Service接口
|
||||
|
|
@ -30,6 +31,15 @@ public interface IGameService
|
|||
*/
|
||||
List<Game> selectGameList(Game game);
|
||||
|
||||
|
||||
/**
|
||||
* 选择游戏数据列表
|
||||
*
|
||||
* @param gameDTO 游戏dto
|
||||
* @return {@link List }<{@link Game }>
|
||||
*/
|
||||
List<Game> selectGameDTOList(GameDTO gameDTO);
|
||||
|
||||
/**
|
||||
* 新增平台子游戏管理
|
||||
*
|
||||
|
|
|
|||
|
|
@ -119,4 +119,15 @@ public class GameBettingDetailsServiceImpl implements IGameBettingDetailsService
|
|||
{
|
||||
return gameBettingDetailsMapper.deleteGameBettingDetailsById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 按投注id删除游戏投注详细信息
|
||||
*
|
||||
* @param wagersId 投注id
|
||||
* @return int
|
||||
*/
|
||||
@Override
|
||||
public int deleteGameBettingDetailsByWagersId(List<Long> wagersId) {
|
||||
return gameBettingDetailsMapper.deleteGameBettingDetailsByWagersId(wagersId);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,113 @@
|
|||
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)
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,20 +1,20 @@
|
|||
package com.ff.game.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
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-02-10
|
||||
* @date 2025-03-13
|
||||
*/
|
||||
@Service
|
||||
public class GameSecretKeyServiceImpl implements IGameSecretKeyService
|
||||
|
|
@ -96,41 +96,4 @@ public class GameSecretKeyServiceImpl implements IGameSecretKeyService
|
|||
{
|
||||
return gameSecretKeyMapper.deleteGameSecretKeyById(id);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 按代码查找系统
|
||||
*
|
||||
* @param code 代码
|
||||
* @param platform 平台
|
||||
* @return {@link String }
|
||||
*/
|
||||
@Override
|
||||
public String findSystemByCode(String code,String platform) {
|
||||
return gameSecretKeyMapper.findSystemByCode(code,platform);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过平台和系统代码查找密钥
|
||||
*
|
||||
* @param platform 平台
|
||||
* @param systemCode 系统代码
|
||||
* @return {@link GameSecretKey }
|
||||
*/
|
||||
@Override
|
||||
public GameSecretKey findSecretKeyByPlatformAndSystemCurrency(String platform, String systemCode) {
|
||||
return gameSecretKeyMapper.findSecretKeyByPlatformAndSystemCurrency(platform,systemCode);
|
||||
}
|
||||
|
||||
/**
|
||||
* 按平台和系统查找lang代码
|
||||
*
|
||||
* @param platform 平台
|
||||
* @param systemLangCode 系统语言代码
|
||||
* @return {@link GameSecretKey }
|
||||
*/
|
||||
@Override
|
||||
public GameSecretKey findByPlatformAndSystemLangCode(String platform, String systemLangCode) {
|
||||
return gameSecretKeyMapper.findByPlatformAndSystemLangCode(platform,systemLangCode);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import com.ff.api.response.GameResponse;
|
|||
import com.ff.base.constant.ConfigConstants;
|
||||
import com.ff.base.utils.DateUtils;
|
||||
import com.ff.game.api.request.GameUniqueDTO;
|
||||
import com.ff.game.dto.GameDTO;
|
||||
import com.ff.member.service.IMemberService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
|
@ -56,6 +57,17 @@ public class GameServiceImpl implements IGameService
|
|||
return gameMapper.selectGameList(game);
|
||||
}
|
||||
|
||||
/**
|
||||
* 选择游戏数据列表
|
||||
*
|
||||
* @param gameDTO 游戏dto
|
||||
* @return {@link List }<{@link Game }>
|
||||
*/
|
||||
@Override
|
||||
public List<Game> selectGameDTOList(GameDTO gameDTO) {
|
||||
return gameMapper.selectGameDTOList(gameDTO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增平台子游戏管理
|
||||
*
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
/**
|
||||
* 会员对象 ff_member
|
||||
|
|
@ -18,7 +19,7 @@ import lombok.NoArgsConstructor;
|
|||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
public class Member extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
|
|
|||
|
|
@ -3,22 +3,39 @@ package com.ff.quartz.task;
|
|||
import com.ff.base.constant.Constants;
|
||||
import com.ff.base.datasource.DynamicDataSourceContextHolder;
|
||||
import com.ff.base.enums.GamePlatforms;
|
||||
import com.ff.base.enums.NGPlatforms;
|
||||
import com.ff.base.enums.StatusType;
|
||||
import com.ff.base.utils.DateUtils;
|
||||
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.GameSecretKey;
|
||||
import com.ff.game.dto.GameSecretKeyCurrencyDTO;
|
||||
import com.ff.game.dto.GameSecretKeyDTO;
|
||||
import com.ff.game.service.IGameExchangeMoneyService;
|
||||
import com.ff.game.service.IGamePlatformService;
|
||||
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 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 javax.annotation.Resource;
|
||||
import javax.sql.DataSource;
|
||||
import javax.xml.crypto.dsig.keyinfo.PGPData;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
|
@ -40,6 +57,21 @@ public class GameTask {
|
|||
@Resource
|
||||
private IGameSecretKeyService gameSecretKeyService;
|
||||
|
||||
@Resource
|
||||
private IGamePlatformService gamePlatformService;
|
||||
|
||||
|
||||
@Resource
|
||||
private NGClient ngClient;
|
||||
|
||||
@Resource
|
||||
private IGameExchangeMoneyService gameExchangeMoneyService;
|
||||
|
||||
@Resource
|
||||
private IGameSecretKeyCurrencyService gameSecretKeyCurrencyService;
|
||||
|
||||
@Resource
|
||||
private IMemberService memberService;
|
||||
/**
|
||||
* 插入游戏投注详细信息
|
||||
*/
|
||||
|
|
@ -50,13 +82,14 @@ public class GameTask {
|
|||
Long startTime = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), backTime);
|
||||
Long endTime = DateUtils.getNowDate();
|
||||
|
||||
Map<Object, DataSource> resolvedDataSources = DynamicDataSourceContextHolder.getAllDataSource();
|
||||
for (Map.Entry<Object, DataSource> entry : resolvedDataSources.entrySet()) {
|
||||
Object key = entry.getKey();
|
||||
// 设置数据源类型
|
||||
DynamicDataSourceContextHolder.setDataSourceType(key.toString());
|
||||
|
||||
for (String gameKey : gamesService.keySet()) {
|
||||
List<GameSecretKey> gameSecretKeys = gameSecretKeyService.selectGameSecretKeyList(GameSecretKey.builder().platform(gameKey.replace(Constants.SERVICE, "")).build());
|
||||
String platformCode = gameKey.replace(Constants.SERVICE, "");
|
||||
if (NGPlatforms.exists(platformCode)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
List<GameSecretKey> gameSecretKeys = gameSecretKeyService.selectGameSecretKeyList(GameSecretKey.builder().platform(platformCode).build());
|
||||
for (GameSecretKey gameSecretKey : gameSecretKeys) {
|
||||
try {
|
||||
gamesService.get(gameKey).getGameList(GamesBaseRequestDTO.builder()
|
||||
|
|
@ -78,18 +111,32 @@ public class GameTask {
|
|||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 插入游戏ngbetting详细信息
|
||||
*
|
||||
*/
|
||||
public void insertGameNGBettingDetails() {
|
||||
|
||||
|
||||
try {
|
||||
|
||||
BetRecordByTimeDTO betRecordByTimeDTO = new BetRecordByTimeDTO();
|
||||
gamesService.get(NGPlatforms.PG.getPlatform() + Constants.SERVICE).getBetRecordByTime(betRecordByTimeDTO);
|
||||
} catch (Exception e) {
|
||||
log.error("查询 NG 投注记录失败,错误信息 {}", e);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 插入免费游戏局数情况
|
||||
*/
|
||||
public void insertFreeSpinDashflow() {
|
||||
Map<Object, DataSource> resolvedDataSources = DynamicDataSourceContextHolder.getAllDataSource();
|
||||
for (Map.Entry<Object, DataSource> entry : resolvedDataSources.entrySet()) {
|
||||
Object key = entry.getKey();
|
||||
// 设置数据源类型
|
||||
DynamicDataSourceContextHolder.setDataSourceType(key.toString());
|
||||
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());
|
||||
|
|
@ -105,9 +152,34 @@ public class GameTask {
|
|||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
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());
|
||||
Member member = memberService.selectMemberById(exchangeMoney.getMemberId());
|
||||
|
||||
ExchangeTransferStatusRequestDTO exchangeTransferStatusRequestDTO = new ExchangeTransferStatusRequestDTO();
|
||||
exchangeTransferStatusRequestDTO.setAccount(member.getGameAccount());
|
||||
exchangeTransferStatusRequestDTO.setCurrency(gameSecretKey.getCurrency());
|
||||
exchangeTransferStatusRequestDTO.setOrderId(exchangeMoney.getTransactionId());
|
||||
exchangeTransferStatusRequestDTO.setAgentId(gameSecretKey.getCode());
|
||||
exchangeTransferStatusRequestDTO.setAgentKey(gameSecretKey.getKey());
|
||||
gamesService.get(exchangeMoney.getPlatformCode()+Constants.SERVICE).exchangeTransferStatus(exchangeTransferStatusRequestDTO);
|
||||
} catch (Exception e) {
|
||||
log.error("查询 更新交易记录失败,错误信息 {}", e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
|
@ -19,7 +20,7 @@ import java.util.List;
|
|||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
public class TenantDTO implements java.io.Serializable{
|
||||
private static final long serialVersionUID = 4132444654065053186L;
|
||||
|
||||
|
|
|
|||
|
|
@ -18,6 +18,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<result property="gameStatusType" column="game_status_type" />
|
||||
<result property="gameCurrencyCode" column="game_currency_code" />
|
||||
<result property="account" column="account" />
|
||||
<result property="round" column="round" />
|
||||
<result property="table" column="table" />
|
||||
<result property="seat" column="seat" />
|
||||
<result property="betContent" column="bet_content" />
|
||||
|
||||
<result property="wagersId" column="wagers_id" />
|
||||
<result property="wagersTime" column="wagers_time" />
|
||||
<result property="betAmount" column="bet_amount" />
|
||||
|
|
@ -34,7 +39,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
</resultMap>
|
||||
|
||||
<sql id="selectGameBettingDetailsVo">
|
||||
select id,tenant_key, currency_code, member_id, game_code, game_id, game_type, platform_code, game_name, game_status, game_status_type, game_currency_code, account, wagers_id, wagers_time, bet_amount, payoff_time, payoff_amount, settlement_time, turnover, order_no, settlement_status, create_by, create_time, update_by, update_time from ff_game_betting_details
|
||||
select id,tenant_key, currency_code, member_id, game_code, game_id, game_type, platform_code, game_name, game_status, game_status_type, game_currency_code, account, round, `table`, seat, bet_content, wagers_id, wagers_time, bet_amount, payoff_time, payoff_amount, settlement_time, turnover, order_no, settlement_status, create_by, create_time, update_by, update_time from ff_game_betting_details
|
||||
</sql>
|
||||
|
||||
<select id="selectGameBettingDetailsList" parameterType="GameBettingDetails" resultMap="GameBettingDetailsResult">
|
||||
|
|
@ -84,6 +89,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<foreach item="wagersId" collection="wagersIds" open="(" separator="," close=")">
|
||||
#{wagersId}
|
||||
</foreach>
|
||||
and settlement_status !=1
|
||||
|
||||
</select>
|
||||
|
||||
|
|
@ -103,6 +109,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="gameStatusType != null">game_status_type,</if>
|
||||
<if test="gameCurrencyCode != null">game_currency_code,</if>
|
||||
<if test="account != null">account,</if>
|
||||
<if test="round != null">round,</if>
|
||||
<if test="table != null">table,</if>
|
||||
<if test="seat != null">seat,</if>
|
||||
<if test="betContent != null">bet_content,</if>
|
||||
<if test="wagersId != null">wagers_id,</if>
|
||||
<if test="wagersTime != null">wagers_time,</if>
|
||||
<if test="betAmount != null">bet_amount,</if>
|
||||
|
|
@ -130,6 +140,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="gameStatusType != null">#{gameStatusType},</if>
|
||||
<if test="gameCurrencyCode != null">#{gameCurrencyCode},</if>
|
||||
<if test="account != null">#{account},</if>
|
||||
<if test="round != null">#{round},</if>
|
||||
<if test="table != null">#{table},</if>
|
||||
<if test="seat != null">#{seat},</if>
|
||||
<if test="betContent != null">#{betContent},</if>
|
||||
<if test="wagersId != null">#{wagersId},</if>
|
||||
<if test="wagersTime != null">#{wagersTime},</if>
|
||||
<if test="betAmount != null">#{betAmount},</if>
|
||||
|
|
@ -161,6 +175,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="gameStatusType != null">game_status_type = #{gameStatusType},</if>
|
||||
<if test="gameCurrencyCode != null">game_currency_code = #{gameCurrencyCode},</if>
|
||||
<if test="account != null">account = #{account},</if>
|
||||
<if test="round != null">round = #{round},</if>
|
||||
<if test="table != null">table = #{table},</if>
|
||||
<if test="seat != null">seat = #{seat},</if>
|
||||
<if test="betContent != null">bet_content = #{betContent},</if>
|
||||
<if test="wagersId != null">wagers_id = #{wagersId},</if>
|
||||
<if test="wagersTime != null">wagers_time = #{wagersTime},</if>
|
||||
<if test="betAmount != null">bet_amount = #{betAmount},</if>
|
||||
|
|
@ -188,15 +206,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
<delete id="deleteGameBettingDetailsByWagersId" >
|
||||
delete from ff_game_betting_details where wagers_id in
|
||||
<foreach item="wagersId" collection="wagersIds" open="(" separator="," close=")">
|
||||
#{wagersId}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<insert id="batchInsert" parameterType="list" useGeneratedKeys="true" keyProperty="id">
|
||||
insert into ff_game_betting_details
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">id,
|
||||
tenant_key, game_id, currency_code, member_id, game_code, game_type, platform_code,
|
||||
game_name, game_status, game_status_type, game_currency_code, account,
|
||||
game_name, game_status, game_status_type, game_currency_code, `account`,
|
||||
wagers_id, wagers_time, bet_amount, payoff_time, payoff_amount,
|
||||
settlement_time, turnover, order_no, create_by, create_time
|
||||
</trim>
|
||||
settlement_time, turnover, order_no, create_by, create_time, settlement_status,
|
||||
update_by, update_time, round, `table`, seat, bet_content
|
||||
</trim>
|
||||
values
|
||||
<foreach collection="list" item="item" separator=",">
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">#{item.id},
|
||||
|
|
@ -221,7 +251,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
#{item.turnover},
|
||||
#{item.orderNo},
|
||||
#{item.createBy},
|
||||
#{item.createTime}
|
||||
#{item.createTime},
|
||||
#{item.settlementStatus},
|
||||
#{item.updateBy},
|
||||
#{item.updateTime},
|
||||
#{item.round},
|
||||
#{item.table},
|
||||
#{item.seat},
|
||||
#{item.betContent}
|
||||
</trim>
|
||||
</foreach>
|
||||
</insert>
|
||||
|
|
|
|||
|
|
@ -26,10 +26,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
</sql>
|
||||
|
||||
|
||||
<select id="selectGameByGameCode" resultMap="GameResult">
|
||||
<include refid="selectGameVo"/>
|
||||
where game_code = #{gameCode} and platform_id = #{platformId}
|
||||
</select>
|
||||
|
||||
|
||||
<select id="selectGameList" parameterType="Game" resultMap="GameResult">
|
||||
<include refid="selectGameVo"/>
|
||||
|
|
@ -45,6 +42,47 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="stopStatus != null "> and stop_status = #{stopStatus}</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="selectGameDTOList" parameterType="com.ff.game.dto.GameDTO" resultMap="GameResult">
|
||||
select g.id,
|
||||
g.sort_no,
|
||||
g.platform_id,
|
||||
g.game_code,
|
||||
g.ingress,
|
||||
g.game_source_type,
|
||||
g.game_name,
|
||||
g.freespin,
|
||||
g.demo_status,
|
||||
g.stop_status,
|
||||
g.create_by,
|
||||
g.create_time,
|
||||
g.update_by,
|
||||
g.update_time
|
||||
from ff_game g
|
||||
inner join ff_game_platform p on g.platform_id = p.id
|
||||
|
||||
|
||||
<where>
|
||||
<if test="sortNo != null "> and g.sort_no = #{sortNo}</if>
|
||||
<if test="platformId != null "> and g.platform_id = #{platformId}</if>
|
||||
<if test="gameCode != null "> and g.game_code = #{gameCode}</if>
|
||||
<if test="ingress != null "> and g.ingress = #{ingress}</if>
|
||||
<if test="gameSourceType != null "> and g.game_source_type = #{gameSourceType}</if>
|
||||
<if test="gameName != null and gameName != ''"> and game_name like concat('%', #{gameName}, '%')</if>
|
||||
<if test="freespin != null "> and g.freespin = #{freespin}</if>
|
||||
<if test="demoStatus != null "> and g.demo_status = #{demoStatus}</if>
|
||||
<if test="stopStatus != null "> and g.stop_status = #{stopStatus}</if>
|
||||
<if test="platformCodes != null and platformCodes.size()>0"> and p.platform_code in
|
||||
<foreach collection="platforms" item="item" index="index" open="(" close=")" separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="platformCode != null and platformCode != ''"> and p.platform_code = #{platformCode}</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
|
||||
|
||||
|
||||
<select id="selectGameById" parameterType="Long" resultMap="GameResult">
|
||||
<include refid="selectGameVo"/>
|
||||
|
|
@ -153,6 +191,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
|
||||
|
||||
|
||||
|
||||
<select id="selectGameUniqueList" parameterType="com.ff.game.api.request.GameUniqueDTO" resultMap="GameResult">
|
||||
<include refid="selectGameVo"/>
|
||||
<where>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
@ -0,0 +1,135 @@
|
|||
<?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="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="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, 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="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="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="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 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>
|
||||
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 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>
|
||||
|
|
@ -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>
|
||||
|
|
@ -9,11 +9,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<result property="platform" column="platform" />
|
||||
<result property="code" column="code" />
|
||||
<result property="key" column="key" />
|
||||
<result property="currency" column="currency" />
|
||||
<result property="systemCurrency" column="system_currency" />
|
||||
<result property="lang" column="lang" />
|
||||
<result property="systemLangCode" column="system_lang_code" />
|
||||
<result property="info" column="info" />
|
||||
<result property="createBy" column="create_by" />
|
||||
<result property="createTime" column="create_time" />
|
||||
<result property="updateBy" column="update_by" />
|
||||
|
|
@ -21,20 +16,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
</resultMap>
|
||||
|
||||
<sql id="selectGameSecretKeyVo">
|
||||
select id, platform, code,currency, `key`, system_currency, lang, system_lang_code, info, create_by, create_time, update_by, update_time from ff_game_secret_key
|
||||
select id, platform, 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>
|
||||
<where>
|
||||
<if test="platform != null and platform != ''"> and platform = #{platform}</if>
|
||||
<if test="code != null and code != ''"> and code = #{code}</if>
|
||||
<if test="key != null and key != ''"> and `key` = #{key}</if>
|
||||
<if test="currency != null and currency != ''"> and currency = #{currency}</if>
|
||||
<if test="systemCurrency != null and systemCurrency != ''"> and system_currency = #{systemCurrency}</if>
|
||||
<if test="lang != null and lang != ''"> and lang = #{lang}</if>
|
||||
<if test="systemLangCode != null and systemLangCode != ''"> and system_lang_code = #{systemLangCode}</if>
|
||||
<if test="info != null and info != ''"> and info = #{info}</if>
|
||||
<if test="key != null and key != ''"> and key = #{key}</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
|
|
@ -43,31 +33,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
where id = #{id}
|
||||
</select>
|
||||
|
||||
<insert id="insertGameSecretKey" parameterType="GameSecretKey" useGeneratedKeys="true" keyProperty="id">
|
||||
<insert id="insertGameSecretKey" parameterType="GameSecretKey">
|
||||
insert into ff_game_secret_key
|
||||
<trim prefix="(" suffix=")" suffixOverrides=","><if test="id != null">id,</if>
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="id != null">id,</if>
|
||||
<if test="platform != null and platform != ''">platform,</if>
|
||||
<if test="code != null and code != ''">code,</if>
|
||||
<if test="currency != null and currency != ''">currency,</if>
|
||||
<if test="key != null and key != ''">`key`,</if>
|
||||
<if test="systemCurrency != null and systemCurrency != ''">system_currency,</if>
|
||||
<if test="lang != null and lang != ''">lang,</if>
|
||||
<if test="systemLangCode != null">system_lang_code,</if>
|
||||
<if test="info != null and info != ''">info,</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>
|
||||
<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 != ''">#{code},</if>
|
||||
<if test="currency != null and currency != ''">#{currency},</if>
|
||||
<if test="key != null and key != ''">#{key},</if>
|
||||
<if test="systemCurrency != null and systemCurrency != ''">#{systemCurrency},</if>
|
||||
<if test="lang != null and lang != ''">#{lang},</if>
|
||||
<if test="systemLangCode != null">#{systemLangCode},</if>
|
||||
<if test="info != null and info != ''">#{info},</if>
|
||||
<if test="createBy != null">#{createBy},</if>
|
||||
<if test="createTime != null">#{createTime},</if>
|
||||
<if test="updateBy != null">#{updateBy},</if>
|
||||
|
|
@ -80,12 +62,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<trim prefix="SET" suffixOverrides=",">
|
||||
<if test="platform != null and platform != ''">platform = #{platform},</if>
|
||||
<if test="code != null and code != ''">code = #{code},</if>
|
||||
<if test="key != null and key != ''">`key` = #{key},</if>
|
||||
<if test="currency != null and currency != ''">currency = #{currency},</if>
|
||||
<if test="systemCurrency != null and systemCurrency != ''">system_currency = #{systemCurrency},</if>
|
||||
<if test="lang != null and lang != ''">lang = #{lang},</if>
|
||||
<if test="systemLangCode != null">system_lang_code = #{systemLangCode},</if>
|
||||
<if test="info != null and info != ''">info = #{info},</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>
|
||||
|
|
@ -104,20 +81,4 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
<select id="findSystemByCode" resultType="string">
|
||||
SELECT system_currency
|
||||
FROM ff_game_secret_key
|
||||
WHERE code = #{code} and platform = #{platform}
|
||||
</select>
|
||||
|
||||
<select id="findSecretKeyByPlatformAndSystemCurrency" resultType="com.ff.game.domain.GameSecretKey">
|
||||
<include refid="selectGameSecretKeyVo"/>
|
||||
where platform = #{platform} and system_currency = #{systemCurrency}
|
||||
</select>
|
||||
|
||||
<select id="findByPlatformAndSystemLangCode" resultType="com.ff.game.domain.GameSecretKey">
|
||||
<include refid="selectGameSecretKeyVo"/>
|
||||
where platform = #{platform} and system_lang_code = #{systemLangCode}
|
||||
</select>
|
||||
</mapper>
|
||||
Loading…
Reference in New Issue