diff --git a/ff-base/src/main/java/com/ff/base/constant/CacheConstants.java b/ff-base/src/main/java/com/ff/base/constant/CacheConstants.java index 7475779..3d96357 100644 --- a/ff-base/src/main/java/com/ff/base/constant/CacheConstants.java +++ b/ff-base/src/main/java/com/ff/base/constant/CacheConstants.java @@ -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"; } diff --git a/ff-base/src/main/java/com/ff/base/core/domain/BaseEntity.java b/ff-base/src/main/java/com/ff/base/core/domain/BaseEntity.java index 0a2308d..f0e179c 100644 --- a/ff-base/src/main/java/com/ff/base/core/domain/BaseEntity.java +++ b/ff-base/src/main/java/com/ff/base/core/domain/BaseEntity.java @@ -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; diff --git a/ff-base/src/main/java/com/ff/base/enums/ErrorCode.java b/ff-base/src/main/java/com/ff/base/enums/ErrorCode.java index e46daf7..26f4173 100644 --- a/ff-base/src/main/java/com/ff/base/enums/ErrorCode.java +++ b/ff-base/src/main/java/com/ff/base/enums/ErrorCode.java @@ -22,6 +22,7 @@ public enum ErrorCode { CURRENCY_EXCHANGE(1006, "不支持币种的汇率"), FREQUENT_INTERFACE_REQUESTS (1007, "接口请求频繁"), BALANCE_TRANSFER_FAILED (1008, "余额转移失败"), + LANG_NOT_EXIST(1009, "游戏平台不支持的语言"), ; // 获取错误码 diff --git a/ff-base/src/main/java/com/ff/base/enums/NGPlatforms.java b/ff-base/src/main/java/com/ff/base/enums/NGPlatforms.java index 18a445c..493017f 100644 --- a/ff-base/src/main/java/com/ff/base/enums/NGPlatforms.java +++ b/ff-base/src/main/java/com/ff/base/enums/NGPlatforms.java @@ -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 包含所有平台名称 + */ + public static List getAllPlatforms() { + return Arrays.stream(NGPlatforms.values()) + .map(NGPlatforms::getPlatform) + .collect(Collectors.toList()); + } } diff --git a/ff-base/src/main/java/com/ff/base/enums/NGSettlementStatusEnum.java b/ff-base/src/main/java/com/ff/base/enums/NGSettlementStatusEnum.java new file mode 100644 index 0000000..b656791 --- /dev/null +++ b/ff-base/src/main/java/com/ff/base/enums/NGSettlementStatusEnum.java @@ -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(); + } + +} diff --git a/ff-base/src/main/java/com/ff/base/enums/SettlementStatusEnum.java b/ff-base/src/main/java/com/ff/base/enums/SettlementStatusEnum.java new file mode 100644 index 0000000..5a90261 --- /dev/null +++ b/ff-base/src/main/java/com/ff/base/enums/SettlementStatusEnum.java @@ -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; + + +} diff --git a/ff-base/src/main/java/com/ff/base/system/domain/TenantAgent.java b/ff-base/src/main/java/com/ff/base/system/domain/TenantAgent.java index 0af0653..84d42bb 100644 --- a/ff-base/src/main/java/com/ff/base/system/domain/TenantAgent.java +++ b/ff-base/src/main/java/com/ff/base/system/domain/TenantAgent.java @@ -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; diff --git a/ff-base/src/main/java/com/ff/base/system/domain/TenantPlatform.java b/ff-base/src/main/java/com/ff/base/system/domain/TenantPlatform.java index 5f86063..fa77865 100644 --- a/ff-base/src/main/java/com/ff/base/system/domain/TenantPlatform.java +++ b/ff-base/src/main/java/com/ff/base/system/domain/TenantPlatform.java @@ -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; diff --git a/ff-base/src/main/java/com/ff/base/system/domain/TenantSecretKey.java b/ff-base/src/main/java/com/ff/base/system/domain/TenantSecretKey.java index fb10dbf..5b6dca2 100644 --- a/ff-base/src/main/java/com/ff/base/system/domain/TenantSecretKey.java +++ b/ff-base/src/main/java/com/ff/base/system/domain/TenantSecretKey.java @@ -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; diff --git a/ff-base/src/main/java/com/ff/base/system/domain/TenantWhite.java b/ff-base/src/main/java/com/ff/base/system/domain/TenantWhite.java index 0a9f8fe..ba394ef 100644 --- a/ff-base/src/main/java/com/ff/base/system/domain/TenantWhite.java +++ b/ff-base/src/main/java/com/ff/base/system/domain/TenantWhite.java @@ -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; diff --git a/ff-base/src/main/java/com/ff/base/system/dto/CreateTenantDTO.java b/ff-base/src/main/java/com/ff/base/system/dto/CreateTenantDTO.java index a92cbb6..458782f 100644 --- a/ff-base/src/main/java/com/ff/base/system/dto/CreateTenantDTO.java +++ b/ff-base/src/main/java/com/ff/base/system/dto/CreateTenantDTO.java @@ -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; /** diff --git a/ff-game/src/main/java/com/ff/agent/domain/TenantAgentCommission.java b/ff-game/src/main/java/com/ff/agent/domain/TenantAgentCommission.java index 8e01ec6..a8e8f7f 100644 --- a/ff-game/src/main/java/com/ff/agent/domain/TenantAgentCommission.java +++ b/ff-game/src/main/java/com/ff/agent/domain/TenantAgentCommission.java @@ -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; diff --git a/ff-game/src/main/java/com/ff/agent/domain/TenantAgentInvite.java b/ff-game/src/main/java/com/ff/agent/domain/TenantAgentInvite.java index b1047a9..b26acf7 100644 --- a/ff-game/src/main/java/com/ff/agent/domain/TenantAgentInvite.java +++ b/ff-game/src/main/java/com/ff/agent/domain/TenantAgentInvite.java @@ -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; diff --git a/ff-game/src/main/java/com/ff/agent/domain/TenantAgentInvitePlatform.java b/ff-game/src/main/java/com/ff/agent/domain/TenantAgentInvitePlatform.java index 7071dd0..1f97b24 100644 --- a/ff-game/src/main/java/com/ff/agent/domain/TenantAgentInvitePlatform.java +++ b/ff-game/src/main/java/com/ff/agent/domain/TenantAgentInvitePlatform.java @@ -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; diff --git a/ff-game/src/main/java/com/ff/agent/domain/TenantAgentInviteRegister.java b/ff-game/src/main/java/com/ff/agent/domain/TenantAgentInviteRegister.java index c9e9782..e6d3b6f 100644 --- a/ff-game/src/main/java/com/ff/agent/domain/TenantAgentInviteRegister.java +++ b/ff-game/src/main/java/com/ff/agent/domain/TenantAgentInviteRegister.java @@ -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; diff --git a/ff-game/src/main/java/com/ff/agent/domain/TenantAgentWithdrawal.java b/ff-game/src/main/java/com/ff/agent/domain/TenantAgentWithdrawal.java index f9d0a7e..23b73ce 100644 --- a/ff-game/src/main/java/com/ff/agent/domain/TenantAgentWithdrawal.java +++ b/ff-game/src/main/java/com/ff/agent/domain/TenantAgentWithdrawal.java @@ -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; diff --git a/ff-game/src/main/java/com/ff/agent/dto/AgentTenantSecretKeyDTO.java b/ff-game/src/main/java/com/ff/agent/dto/AgentTenantSecretKeyDTO.java index a1b9e68..0def3e8 100644 --- a/ff-game/src/main/java/com/ff/agent/dto/AgentTenantSecretKeyDTO.java +++ b/ff-game/src/main/java/com/ff/agent/dto/AgentTenantSecretKeyDTO.java @@ -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; diff --git a/ff-game/src/main/java/com/ff/api/controller/ApiGameController.java b/ff-game/src/main/java/com/ff/api/controller/ApiGameController.java index 7c200ac..75436bf 100644 --- a/ff-game/src/main/java/com/ff/api/controller/ApiGameController.java +++ b/ff-game/src/main/java/com/ff/api/controller/ApiGameController.java @@ -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 gameResponses = gameService.selectGameResponseList(); for (GameResponse gameRespons : gameResponses) { - List gameSecretKeys = gameSecretKeyService.selectGameSecretKeyList(GameSecretKey.builder() - .platform(gameRespons.getPlatformCode()) - .build()); - List currencyCode = gameSecretKeys.stream().map(GameSecretKey::getSystemCurrency).collect(Collectors.toList()); + + List gameSecretKeyCurrencies = gameSecretKeyCurrencyService.selectGameSecretKeyCurrencyList(GameSecretKeyCurrencyDTO.builder().platformCode(gameRespons.getPlatformCode()).build()); + List 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 gameSecretKeys = gameSecretKeyService.selectGameSecretKeyList(GameSecretKey.builder().systemCurrency(gameExchangeBalanceAllRequest.getCurrencyCode()).build()); + List gameSecretKeys = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTOList(GameSecretKeyCurrencyDTO.builder() + .systemCurrency(gameExchangeBalanceAllRequest.getCurrencyCode()).build()); // 创建线程池 @@ -452,18 +490,18 @@ public class ApiGameController extends BaseController { List> 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()) diff --git a/ff-game/src/main/java/com/ff/api/controller/ApiMemberController.java b/ff-game/src/main/java/com/ff/api/controller/ApiMemberController.java index 1908986..ad21761 100644 --- a/ff-game/src/main/java/com/ff/api/controller/ApiMemberController.java +++ b/ff-game/src/main/java/com/ff/api/controller/ApiMemberController.java @@ -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 gameSecretKeys = gameSecretKeyService.selectGameSecretKeyList(GameSecretKey.builder().systemCurrency(memberInfoAllApiRequest.getCurrencyCode()).build()); - + List gameSecretKeys = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTOList(GameSecretKeyCurrencyDTO.builder() + .systemCurrency(memberInfoAllApiRequest.getCurrencyCode()).build()); // 创建线程池 Map balanceMap = new LinkedHashMap<>(); @@ -184,14 +195,14 @@ public class ApiMemberController extends BaseController { List> 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(); // 任务完成后减少计数 diff --git a/ff-game/src/main/java/com/ff/api/response/GameBettingDetailsResponse.java b/ff-game/src/main/java/com/ff/api/response/GameBettingDetailsResponse.java index d1342f3..c76951d 100644 --- a/ff-game/src/main/java/com/ff/api/response/GameBettingDetailsResponse.java +++ b/ff-game/src/main/java/com/ff/api/response/GameBettingDetailsResponse.java @@ -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; diff --git a/ff-game/src/main/java/com/ff/api/response/GameExchangeBalanceResponse.java b/ff-game/src/main/java/com/ff/api/response/GameExchangeBalanceResponse.java index bf85e3c..3b27b5a 100644 --- a/ff-game/src/main/java/com/ff/api/response/GameExchangeBalanceResponse.java +++ b/ff-game/src/main/java/com/ff/api/response/GameExchangeBalanceResponse.java @@ -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; diff --git a/ff-game/src/main/java/com/ff/api/response/GameFreeRecordResponse.java b/ff-game/src/main/java/com/ff/api/response/GameFreeRecordResponse.java index 52492bd..5bc2433 100644 --- a/ff-game/src/main/java/com/ff/api/response/GameFreeRecordResponse.java +++ b/ff-game/src/main/java/com/ff/api/response/GameFreeRecordResponse.java @@ -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 { diff --git a/ff-game/src/main/java/com/ff/api/response/GameResponse.java b/ff-game/src/main/java/com/ff/api/response/GameResponse.java index 1c7d003..8f4eee3 100644 --- a/ff-game/src/main/java/com/ff/api/response/GameResponse.java +++ b/ff-game/src/main/java/com/ff/api/response/GameResponse.java @@ -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; diff --git a/ff-game/src/main/java/com/ff/api/response/MemberInfoAllResponse.java b/ff-game/src/main/java/com/ff/api/response/MemberInfoAllResponse.java index 8979911..d2e34ed 100644 --- a/ff-game/src/main/java/com/ff/api/response/MemberInfoAllResponse.java +++ b/ff-game/src/main/java/com/ff/api/response/MemberInfoAllResponse.java @@ -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; diff --git a/ff-game/src/main/java/com/ff/api/response/MemberInfoResponse.java b/ff-game/src/main/java/com/ff/api/response/MemberInfoResponse.java index f2d377a..96f5722 100644 --- a/ff-game/src/main/java/com/ff/api/response/MemberInfoResponse.java +++ b/ff-game/src/main/java/com/ff/api/response/MemberInfoResponse.java @@ -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; diff --git a/ff-game/src/main/java/com/ff/common/domain/TenantAgentPlatform.java b/ff-game/src/main/java/com/ff/common/domain/TenantAgentPlatform.java index e038672..29b7757 100644 --- a/ff-game/src/main/java/com/ff/common/domain/TenantAgentPlatform.java +++ b/ff-game/src/main/java/com/ff/common/domain/TenantAgentPlatform.java @@ -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; diff --git a/ff-game/src/main/java/com/ff/common/domain/TenantGameQuota.java b/ff-game/src/main/java/com/ff/common/domain/TenantGameQuota.java index 5abd269..83033f4 100644 --- a/ff-game/src/main/java/com/ff/common/domain/TenantGameQuota.java +++ b/ff-game/src/main/java/com/ff/common/domain/TenantGameQuota.java @@ -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; diff --git a/ff-game/src/main/java/com/ff/common/domain/TenantGameQuotaFlow.java b/ff-game/src/main/java/com/ff/common/domain/TenantGameQuotaFlow.java index 2e81af4..899fa2a 100644 --- a/ff-game/src/main/java/com/ff/common/domain/TenantGameQuotaFlow.java +++ b/ff-game/src/main/java/com/ff/common/domain/TenantGameQuotaFlow.java @@ -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; diff --git a/ff-game/src/main/java/com/ff/common/domain/TenantQuotaExchange.java b/ff-game/src/main/java/com/ff/common/domain/TenantQuotaExchange.java index f06a0fa..55347a1 100644 --- a/ff-game/src/main/java/com/ff/common/domain/TenantQuotaExchange.java +++ b/ff-game/src/main/java/com/ff/common/domain/TenantQuotaExchange.java @@ -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; diff --git a/ff-game/src/main/java/com/ff/common/dto/BalanceChangesDTO.java b/ff-game/src/main/java/com/ff/common/dto/BalanceChangesDTO.java index 8963c37..ebe4214 100644 --- a/ff-game/src/main/java/com/ff/common/dto/BalanceChangesDTO.java +++ b/ff-game/src/main/java/com/ff/common/dto/BalanceChangesDTO.java @@ -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; diff --git a/ff-game/src/main/java/com/ff/common/dto/BalanceRealChangesDTO.java b/ff-game/src/main/java/com/ff/common/dto/BalanceRealChangesDTO.java index 348b237..b0b52d4 100644 --- a/ff-game/src/main/java/com/ff/common/dto/BalanceRealChangesDTO.java +++ b/ff-game/src/main/java/com/ff/common/dto/BalanceRealChangesDTO.java @@ -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; diff --git a/ff-game/src/main/java/com/ff/common/dto/GameBalanceExchange.java b/ff-game/src/main/java/com/ff/common/dto/GameBalanceExchange.java index 328d977..5935c43 100644 --- a/ff-game/src/main/java/com/ff/common/dto/GameBalanceExchange.java +++ b/ff-game/src/main/java/com/ff/common/dto/GameBalanceExchange.java @@ -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; diff --git a/ff-game/src/main/java/com/ff/common/service/impl/TenantGameQuotaServiceImpl.java b/ff-game/src/main/java/com/ff/common/service/impl/TenantGameQuotaServiceImpl.java index 63c7dfd..7a1ba95 100644 --- a/ff-game/src/main/java/com/ff/common/service/impl/TenantGameQuotaServiceImpl.java +++ b/ff-game/src/main/java/com/ff/common/service/impl/TenantGameQuotaServiceImpl.java @@ -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(); diff --git a/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIBetRecordDataResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIBetRecordDataResponseDTO.java index 2ea7665..a37c1e1 100644 --- a/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIBetRecordDataResponseDTO.java +++ b/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIBetRecordDataResponseDTO.java @@ -30,7 +30,7 @@ public class JILIBetRecordDataResponseDTO { * 游戏id */ @JsonProperty("GameId") - private int gameId; + private String gameId; /** * 下注时间 */ diff --git a/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIGamesDataDTO.java b/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIGamesDataDTO.java index c2ba812..55a35da 100644 --- a/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIGamesDataDTO.java +++ b/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIGamesDataDTO.java @@ -17,7 +17,7 @@ public class JILIGamesDataDTO { * 游戏id */ @JsonProperty("GameId") - private int gameId; + private String gameId; /** *自己系统游戏id diff --git a/ff-game/src/main/java/com/ff/game/api/jili/service/impl/GamesJILIServiceImpl.java b/ff-game/src/main/java/com/ff/game/api/jili/service/impl/GamesJILIServiceImpl.java index b21eb54..ecc1537 100644 --- a/ff-game/src/main/java/com/ff/game/api/jili/service/impl/GamesJILIServiceImpl.java +++ b/ff-game/src/main/java/com/ff/game/api/jili/service/impl/GamesJILIServiceImpl.java @@ -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 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 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 gamesDatas = redisCache.getCacheList(CacheConstants.JILI_GAMES); - Map dataDTOMap = gamesDatas.stream().collect(Collectors.toMap(JILIGamesDataDTO::getGameId, e -> e)); + Map 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()); diff --git a/ff-game/src/main/java/com/ff/game/api/ng/client/NGClient.java b/ff-game/src/main/java/com/ff/game/api/ng/client/NGClient.java index ee57acd..3f3f91f 100644 --- a/ff-game/src/main/java/com/ff/game/api/ng/client/NGClient.java +++ b/ff-game/src/main/java/com/ff/game/api/ng/client/NGClient.java @@ -85,4 +85,15 @@ public interface NGClient { */ @Post(url = "/server/transferStatus") ApiNGResponseDTO exchangeTransferStatus(@JSONBody Map parameters, @Header Map headerMap); + + + /** + * 按时间获取投注记录 + * + * @param parameters 范围 + * @param headerMap 标题映射 + * @return {@link ApiNGResponseDTO }<{@link ApiGameBetRecordPageResponseDTO }> + */ + @Post(url = "server/recordAll") + ApiNGResponseDTO getBetRecordByTime(@JSONBody Map parameters, @Header Map headerMap); } diff --git a/ff-game/src/main/java/com/ff/game/api/ng/dto/ApiGameBetRecordPageResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/ng/dto/ApiGameBetRecordPageResponseDTO.java new file mode 100644 index 0000000..713234f --- /dev/null +++ b/ff-game/src/main/java/com/ff/game/api/ng/dto/ApiGameBetRecordPageResponseDTO.java @@ -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 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; + } +} diff --git a/ff-game/src/main/java/com/ff/game/api/ng/service/impl/GamesPGServiceImpl.java b/ff-game/src/main/java/com/ff/game/api/ng/service/impl/GamesPGServiceImpl.java index 0feecaf..fad4d66 100644 --- a/ff-game/src/main/java/com/ff/game/api/ng/service/impl/GamesPGServiceImpl.java +++ b/ff-game/src/main/java/com/ff/game/api/ng/service/impl/GamesPGServiceImpl.java @@ -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 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 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 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 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 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 gameName = apiGameInfoResponseDTO.getGameName(); + for (String key : gameName.keySet()) { + String name = gameName.get(key); + List 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 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 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 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 currencyDTOList = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTOList(gameSecretKeyDTO); + List currencys = currencyDTOList.stream() + .map(GameSecretKeyCurrencyDTO::getCurrency) + .distinct() + .collect(Collectors.toList()); + + + Set 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 paramsMap = new HashMap<>(); + paramsMap.put("currency", currencyDTO.getCurrency()); + paramsMap.put("pageNo", pageNo); + paramsMap.put("pageSize", pageSize); + Map key = this.getKey(betRecordByTimeDTO); + + + ApiNGResponseDTO betRecordByTime = ngClient.getBetRecordByTime(paramsMap, key); + + if (this.getIsSuccess(betRecordByTime.getCode())) { + cacheSet.add(firstCurrency); + redisCache.setCacheSet(CacheConstants.PG_GAMES_BET_CURRENCY, cacheSet); + + ApiNGResponseDTO 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 paramMap = new HashMap<>(); + paramMap.put("currency", currencyDTO.getCurrency()); + paramMap.put("pageNo", pageNo); + paramMap.put("pageSize", pageSize); + //每次翻页请求必须间隔 10 秒钟 + SleepUtil.sleep(10000); + ApiNGResponseDTO 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 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 = new ArrayList<>(); + List 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 removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds); + //用steam流清除list中与wagersIds集合相同的数据 + gameBettingDetails = gameBettingDetails.stream() + .filter(detail -> !removeWagersIds.contains(detail.getWagersId())) + .collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(gameBettingDetails)) { + List wagersId = gameBettingDetails.stream().map(GameBettingDetails::getWagersId).collect(Collectors.toList()); + gameBettingDetailsService.deleteGameBettingDetailsByWagersId(wagersId); + gameBettingDetailsService.batchInsert(gameBettingDetails); + } + } + + } + } diff --git a/ff-game/src/main/java/com/ff/game/api/request/BetRecordByTimeDTO.java b/ff-game/src/main/java/com/ff/game/api/request/BetRecordByTimeDTO.java index c2cc3f6..a0bb724 100644 --- a/ff-game/src/main/java/com/ff/game/api/request/BetRecordByTimeDTO.java +++ b/ff-game/src/main/java/com/ff/game/api/request/BetRecordByTimeDTO.java @@ -37,4 +37,6 @@ public class BetRecordByTimeDTO extends GamesBaseRequestDTO { + + } diff --git a/ff-game/src/main/java/com/ff/game/api/request/GamesBaseRequestDTO.java b/ff-game/src/main/java/com/ff/game/api/request/GamesBaseRequestDTO.java index 2751f06..072657c 100644 --- a/ff-game/src/main/java/com/ff/game/api/request/GamesBaseRequestDTO.java +++ b/ff-game/src/main/java/com/ff/game/api/request/GamesBaseRequestDTO.java @@ -36,10 +36,12 @@ public class GamesBaseRequestDTO implements Serializable { private String query; + + /** - * 游戏密钥id + * 货币 */ - private Long gameSecretKeyId; + private String currency; } diff --git a/ff-game/src/main/java/com/ff/game/api/request/GamesDataBuildDTO.java b/ff-game/src/main/java/com/ff/game/api/request/GamesDataBuildDTO.java index e67cbcc..2c33345 100644 --- a/ff-game/src/main/java/com/ff/game/api/request/GamesDataBuildDTO.java +++ b/ff-game/src/main/java/com/ff/game/api/request/GamesDataBuildDTO.java @@ -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 { diff --git a/ff-game/src/main/java/com/ff/game/api/request/MemberInfoResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/request/MemberInfoResponseDTO.java index 306f62e..613c5db 100644 --- a/ff-game/src/main/java/com/ff/game/api/request/MemberInfoResponseDTO.java +++ b/ff-game/src/main/java/com/ff/game/api/request/MemberInfoResponseDTO.java @@ -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 { diff --git a/ff-game/src/main/java/com/ff/game/api/xk/dto/XKBetRecordResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/xk/dto/XKBetRecordResponseDTO.java index f605858..6ae70aa 100644 --- a/ff-game/src/main/java/com/ff/game/api/xk/dto/XKBetRecordResponseDTO.java +++ b/ff-game/src/main/java/com/ff/game/api/xk/dto/XKBetRecordResponseDTO.java @@ -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; diff --git a/ff-game/src/main/java/com/ff/game/api/xk/dto/XKGamesDTO.java b/ff-game/src/main/java/com/ff/game/api/xk/dto/XKGamesDTO.java index 3cf5c87..da08376 100644 --- a/ff-game/src/main/java/com/ff/game/api/xk/dto/XKGamesDTO.java +++ b/ff-game/src/main/java/com/ff/game/api/xk/dto/XKGamesDTO.java @@ -31,7 +31,7 @@ public class XKGamesDTO { /** * 游戏id */ - private int gameId; + private String gameId; /** * 名称 */ diff --git a/ff-game/src/main/java/com/ff/game/api/xk/service/impl/GamesXKServiceImpl.java b/ff-game/src/main/java/com/ff/game/api/xk/service/impl/GamesXKServiceImpl.java index 5f18f10..6bad116 100644 --- a/ff-game/src/main/java/com/ff/game/api/xk/service/impl/GamesXKServiceImpl.java +++ b/ff-game/src/main/java/com/ff/game/api/xk/service/impl/GamesXKServiceImpl.java @@ -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 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 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 gamesDatas = redisCache.getCacheList(CacheConstants.XK_GAMES); - Map dataDTOMap = gamesDatas.stream().collect(Collectors.toMap(XKGamesDTO.DataBean::getGameId, e -> e)); + Map 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()); diff --git a/ff-game/src/main/java/com/ff/game/domain/Game.java b/ff-game/src/main/java/com/ff/game/domain/Game.java index 5761265..c0b1e37 100644 --- a/ff-game/src/main/java/com/ff/game/domain/Game.java +++ b/ff-game/src/main/java/com/ff/game/domain/Game.java @@ -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; diff --git a/ff-game/src/main/java/com/ff/game/domain/GameBettingDetails.java b/ff-game/src/main/java/com/ff/game/domain/GameBettingDetails.java index 8d4927a..fe832d8 100644 --- a/ff-game/src/main/java/com/ff/game/domain/GameBettingDetails.java +++ b/ff-game/src/main/java/com/ff/game/domain/GameBettingDetails.java @@ -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; diff --git a/ff-game/src/main/java/com/ff/game/domain/GameExchangeMoney.java b/ff-game/src/main/java/com/ff/game/domain/GameExchangeMoney.java index a3d968b..6721e0b 100644 --- a/ff-game/src/main/java/com/ff/game/domain/GameExchangeMoney.java +++ b/ff-game/src/main/java/com/ff/game/domain/GameExchangeMoney.java @@ -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; diff --git a/ff-game/src/main/java/com/ff/game/domain/GameFreeRecord.java b/ff-game/src/main/java/com/ff/game/domain/GameFreeRecord.java index 362c978..b749f64 100644 --- a/ff-game/src/main/java/com/ff/game/domain/GameFreeRecord.java +++ b/ff-game/src/main/java/com/ff/game/domain/GameFreeRecord.java @@ -18,7 +18,7 @@ import lombok.experimental.SuperBuilder; */ @Data @AllArgsConstructor -@Builder +@SuperBuilder @NoArgsConstructor public class GameFreeRecord extends BaseEntity { diff --git a/ff-game/src/main/java/com/ff/game/domain/GameName.java b/ff-game/src/main/java/com/ff/game/domain/GameName.java new file mode 100644 index 0000000..144a9e4 --- /dev/null +++ b/ff-game/src/main/java/com/ff/game/domain/GameName.java @@ -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; + + +} diff --git a/ff-game/src/main/java/com/ff/game/domain/GamePlatform.java b/ff-game/src/main/java/com/ff/game/domain/GamePlatform.java index be1a547..03e00c6 100644 --- a/ff-game/src/main/java/com/ff/game/domain/GamePlatform.java +++ b/ff-game/src/main/java/com/ff/game/domain/GamePlatform.java @@ -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; diff --git a/ff-game/src/main/java/com/ff/game/domain/GameSecretKey.java b/ff-game/src/main/java/com/ff/game/domain/GameSecretKey.java index 01f4744..f34a0ff 100644 --- a/ff-game/src/main/java/com/ff/game/domain/GameSecretKey.java +++ b/ff-game/src/main/java/com/ff/game/domain/GameSecretKey.java @@ -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; - - } diff --git a/ff-game/src/main/java/com/ff/game/domain/GameSecretKeyCurrency.java b/ff-game/src/main/java/com/ff/game/domain/GameSecretKeyCurrency.java new file mode 100644 index 0000000..7efb7f7 --- /dev/null +++ b/ff-game/src/main/java/com/ff/game/domain/GameSecretKeyCurrency.java @@ -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; + + +} diff --git a/ff-game/src/main/java/com/ff/game/domain/GameSecretKeyLang.java b/ff-game/src/main/java/com/ff/game/domain/GameSecretKeyLang.java new file mode 100644 index 0000000..91212da --- /dev/null +++ b/ff-game/src/main/java/com/ff/game/domain/GameSecretKeyLang.java @@ -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; + + +} diff --git a/ff-game/src/main/java/com/ff/game/dto/GameDTO.java b/ff-game/src/main/java/com/ff/game/dto/GameDTO.java new file mode 100644 index 0000000..3dddea8 --- /dev/null +++ b/ff-game/src/main/java/com/ff/game/dto/GameDTO.java @@ -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 platformCodes; + + /** + * 平台代码 + */ + private String platformCode; +} diff --git a/ff-game/src/main/java/com/ff/game/dto/GameNameDTO.java b/ff-game/src/main/java/com/ff/game/dto/GameNameDTO.java new file mode 100644 index 0000000..f4d187f --- /dev/null +++ b/ff-game/src/main/java/com/ff/game/dto/GameNameDTO.java @@ -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; +} diff --git a/ff-game/src/main/java/com/ff/game/dto/GameSecretKeyCurrencyDTO.java b/ff-game/src/main/java/com/ff/game/dto/GameSecretKeyCurrencyDTO.java new file mode 100644 index 0000000..5c0dbff --- /dev/null +++ b/ff-game/src/main/java/com/ff/game/dto/GameSecretKeyCurrencyDTO.java @@ -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 platformCodes; + + /** + * API code + */ + private String code; + + /** + * 游戏密钥id + */ + private Long gameSecretKeyId; + + /** + * 密钥 + */ + private String key; + + +} diff --git a/ff-game/src/main/java/com/ff/game/dto/GameSecretKeyDTO.java b/ff-game/src/main/java/com/ff/game/dto/GameSecretKeyDTO.java new file mode 100644 index 0000000..3a769b9 --- /dev/null +++ b/ff-game/src/main/java/com/ff/game/dto/GameSecretKeyDTO.java @@ -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 platforms; +} diff --git a/ff-game/src/main/java/com/ff/game/dto/GameSecretKeyLangDTO.java b/ff-game/src/main/java/com/ff/game/dto/GameSecretKeyLangDTO.java new file mode 100644 index 0000000..af56c2f --- /dev/null +++ b/ff-game/src/main/java/com/ff/game/dto/GameSecretKeyLangDTO.java @@ -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; + +} diff --git a/ff-game/src/main/java/com/ff/game/mapper/GameBettingDetailsMapper.java b/ff-game/src/main/java/com/ff/game/mapper/GameBettingDetailsMapper.java index e233bcf..9834bf6 100644 --- a/ff-game/src/main/java/com/ff/game/mapper/GameBettingDetailsMapper.java +++ b/ff-game/src/main/java/com/ff/game/mapper/GameBettingDetailsMapper.java @@ -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 bettingDetails); + + + /** + * 按投注id删除游戏投注详细信息 + * + * @param wagersIds 投注id + * @return int + */ + int deleteGameBettingDetailsByWagersId(@Param("wagersIds") List wagersIds); } diff --git a/ff-game/src/main/java/com/ff/game/mapper/GameMapper.java b/ff-game/src/main/java/com/ff/game/mapper/GameMapper.java index 6a4384c..a9db62d 100644 --- a/ff-game/src/main/java/com/ff/game/mapper/GameMapper.java +++ b/ff-game/src/main/java/com/ff/game/mapper/GameMapper.java @@ -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 selectGameResponseList(); + + /** + * 选择游戏数据列表 + * + * @param gameDTO 游戏dto + * @return {@link List }<{@link Game }> + */ + List selectGameDTOList(GameDTO gameDTO); + } diff --git a/ff-game/src/main/java/com/ff/game/mapper/GameNameMapper.java b/ff-game/src/main/java/com/ff/game/mapper/GameNameMapper.java new file mode 100644 index 0000000..435b093 --- /dev/null +++ b/ff-game/src/main/java/com/ff/game/mapper/GameNameMapper.java @@ -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 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 selectGameNameDTOList(GameNameDTO gameNameDTO); +} diff --git a/ff-game/src/main/java/com/ff/game/mapper/GameSecretKeyCurrencyMapper.java b/ff-game/src/main/java/com/ff/game/mapper/GameSecretKeyCurrencyMapper.java new file mode 100644 index 0000000..df58ee8 --- /dev/null +++ b/ff-game/src/main/java/com/ff/game/mapper/GameSecretKeyCurrencyMapper.java @@ -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 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 findByGameSecretKeyCurrencyDTOList(GameSecretKeyCurrencyDTO gameSecretKeyCurrencyDTO); +} diff --git a/ff-game/src/main/java/com/ff/game/mapper/GameSecretKeyLangMapper.java b/ff-game/src/main/java/com/ff/game/mapper/GameSecretKeyLangMapper.java new file mode 100644 index 0000000..afa304f --- /dev/null +++ b/ff-game/src/main/java/com/ff/game/mapper/GameSecretKeyLangMapper.java @@ -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 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); +} diff --git a/ff-game/src/main/java/com/ff/game/mapper/GameSecretKeyMapper.java b/ff-game/src/main/java/com/ff/game/mapper/GameSecretKeyMapper.java index 7fe1b1b..31daa64 100644 --- a/ff-game/src/main/java/com/ff/game/mapper/GameSecretKeyMapper.java +++ b/ff-game/src/main/java/com/ff/game/mapper/GameSecretKeyMapper.java @@ -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); } diff --git a/ff-game/src/main/java/com/ff/game/service/IGameBettingDetailsService.java b/ff-game/src/main/java/com/ff/game/service/IGameBettingDetailsService.java index cb6d388..d01f505 100644 --- a/ff-game/src/main/java/com/ff/game/service/IGameBettingDetailsService.java +++ b/ff-game/src/main/java/com/ff/game/service/IGameBettingDetailsService.java @@ -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 wagersId); } diff --git a/ff-game/src/main/java/com/ff/game/service/IGameNameService.java b/ff-game/src/main/java/com/ff/game/service/IGameNameService.java new file mode 100644 index 0000000..7bde767 --- /dev/null +++ b/ff-game/src/main/java/com/ff/game/service/IGameNameService.java @@ -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 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 selectGameNameDTOList(GameNameDTO gameNameDTO); + + +} diff --git a/ff-game/src/main/java/com/ff/game/service/IGameSecretKeyCurrencyService.java b/ff-game/src/main/java/com/ff/game/service/IGameSecretKeyCurrencyService.java new file mode 100644 index 0000000..f14b93a --- /dev/null +++ b/ff-game/src/main/java/com/ff/game/service/IGameSecretKeyCurrencyService.java @@ -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 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 findByGameSecretKeyCurrencyDTOList(GameSecretKeyCurrencyDTO gameSecretKeyCurrencyDTO); + + + +} diff --git a/ff-game/src/main/java/com/ff/game/service/IGameSecretKeyLangService.java b/ff-game/src/main/java/com/ff/game/service/IGameSecretKeyLangService.java new file mode 100644 index 0000000..6858764 --- /dev/null +++ b/ff-game/src/main/java/com/ff/game/service/IGameSecretKeyLangService.java @@ -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 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); +} diff --git a/ff-game/src/main/java/com/ff/game/service/IGameSecretKeyService.java b/ff-game/src/main/java/com/ff/game/service/IGameSecretKeyService.java index 740789d..1203346 100644 --- a/ff-game/src/main/java/com/ff/game/service/IGameSecretKeyService.java +++ b/ff-game/src/main/java/com/ff/game/service/IGameSecretKeyService.java @@ -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); - } diff --git a/ff-game/src/main/java/com/ff/game/service/IGameService.java b/ff-game/src/main/java/com/ff/game/service/IGameService.java index c0eb6b9..07e47ee 100644 --- a/ff-game/src/main/java/com/ff/game/service/IGameService.java +++ b/ff-game/src/main/java/com/ff/game/service/IGameService.java @@ -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 selectGameList(Game game); + + /** + * 选择游戏数据列表 + * + * @param gameDTO 游戏dto + * @return {@link List }<{@link Game }> + */ + List selectGameDTOList(GameDTO gameDTO); + /** * 新增平台子游戏管理 * diff --git a/ff-game/src/main/java/com/ff/game/service/impl/GameBettingDetailsServiceImpl.java b/ff-game/src/main/java/com/ff/game/service/impl/GameBettingDetailsServiceImpl.java index 6d6fba7..68ea26f 100644 --- a/ff-game/src/main/java/com/ff/game/service/impl/GameBettingDetailsServiceImpl.java +++ b/ff-game/src/main/java/com/ff/game/service/impl/GameBettingDetailsServiceImpl.java @@ -119,4 +119,15 @@ public class GameBettingDetailsServiceImpl implements IGameBettingDetailsService { return gameBettingDetailsMapper.deleteGameBettingDetailsById(id); } + + /** + * 按投注id删除游戏投注详细信息 + * + * @param wagersId 投注id + * @return int + */ + @Override + public int deleteGameBettingDetailsByWagersId(List wagersId) { + return gameBettingDetailsMapper.deleteGameBettingDetailsByWagersId(wagersId); + } } diff --git a/ff-game/src/main/java/com/ff/game/service/impl/GameNameServiceImpl.java b/ff-game/src/main/java/com/ff/game/service/impl/GameNameServiceImpl.java new file mode 100644 index 0000000..4268236 --- /dev/null +++ b/ff-game/src/main/java/com/ff/game/service/impl/GameNameServiceImpl.java @@ -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 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 selectGameNameDTOList(GameNameDTO gameNameDTO) { + return gameNameMapper.selectGameNameDTOList(gameNameDTO); + } +} diff --git a/ff-game/src/main/java/com/ff/game/service/impl/GameSecretKeyCurrencyServiceImpl.java b/ff-game/src/main/java/com/ff/game/service/impl/GameSecretKeyCurrencyServiceImpl.java new file mode 100644 index 0000000..aab9c01 --- /dev/null +++ b/ff-game/src/main/java/com/ff/game/service/impl/GameSecretKeyCurrencyServiceImpl.java @@ -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 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 findByGameSecretKeyCurrencyDTOList(GameSecretKeyCurrencyDTO gameSecretKeyCurrencyDTO) { + return gameSecretKeyCurrencyMapper.findByGameSecretKeyCurrencyDTOList(gameSecretKeyCurrencyDTO); + } +} diff --git a/ff-game/src/main/java/com/ff/game/service/impl/GameSecretKeyLangServiceImpl.java b/ff-game/src/main/java/com/ff/game/service/impl/GameSecretKeyLangServiceImpl.java new file mode 100644 index 0000000..695a073 --- /dev/null +++ b/ff-game/src/main/java/com/ff/game/service/impl/GameSecretKeyLangServiceImpl.java @@ -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 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); + } +} diff --git a/ff-game/src/main/java/com/ff/game/service/impl/GameSecretKeyServiceImpl.java b/ff-game/src/main/java/com/ff/game/service/impl/GameSecretKeyServiceImpl.java index 7a9f65b..85350d3 100644 --- a/ff-game/src/main/java/com/ff/game/service/impl/GameSecretKeyServiceImpl.java +++ b/ff-game/src/main/java/com/ff/game/service/impl/GameSecretKeyServiceImpl.java @@ -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); - } } diff --git a/ff-game/src/main/java/com/ff/game/service/impl/GameServiceImpl.java b/ff-game/src/main/java/com/ff/game/service/impl/GameServiceImpl.java index 6083629..8160451 100644 --- a/ff-game/src/main/java/com/ff/game/service/impl/GameServiceImpl.java +++ b/ff-game/src/main/java/com/ff/game/service/impl/GameServiceImpl.java @@ -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 selectGameDTOList(GameDTO gameDTO) { + return gameMapper.selectGameDTOList(gameDTO); + } + /** * 新增平台子游戏管理 * diff --git a/ff-game/src/main/java/com/ff/member/domain/Member.java b/ff-game/src/main/java/com/ff/member/domain/Member.java index 8eaee0d..93535ce 100644 --- a/ff-game/src/main/java/com/ff/member/domain/Member.java +++ b/ff-game/src/main/java/com/ff/member/domain/Member.java @@ -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; diff --git a/ff-game/src/main/java/com/ff/quartz/task/GameTask.java b/ff-game/src/main/java/com/ff/quartz/task/GameTask.java index 22bfcb4..c8592b0 100644 --- a/ff-game/src/main/java/com/ff/quartz/task/GameTask.java +++ b/ff-game/src/main/java/com/ff/quartz/task/GameTask.java @@ -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 resolvedDataSources = DynamicDataSourceContextHolder.getAllDataSource(); - for (Map.Entry entry : resolvedDataSources.entrySet()) { - Object key = entry.getKey(); - // 设置数据源类型 - DynamicDataSourceContextHolder.setDataSourceType(key.toString()); + for (String gameKey : gamesService.keySet()) { - List gameSecretKeys = gameSecretKeyService.selectGameSecretKeyList(GameSecretKey.builder().platform(gameKey.replace(Constants.SERVICE, "")).build()); + String platformCode = gameKey.replace(Constants.SERVICE, ""); + if (NGPlatforms.exists(platformCode)) { + continue; + } + + List 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 resolvedDataSources = DynamicDataSourceContextHolder.getAllDataSource(); - for (Map.Entry entry : resolvedDataSources.entrySet()) { - Object key = entry.getKey(); - // 设置数据源类型 - DynamicDataSourceContextHolder.setDataSourceType(key.toString()); Long startTime = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), -70); for (String gameKey : gamesService.keySet()) { List gameSecretKeys = gameSecretKeyService.selectGameSecretKeyList(GameSecretKey.builder().platform(gameKey.replace(Constants.SERVICE, "")).build()); @@ -105,9 +152,34 @@ public class GameTask { } } - } + } } + + + public void updateGameExchangeMoney() { + List 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); + } + } + + } + } diff --git a/ff-game/src/main/java/com/ff/tenant/dto/TenantDTO.java b/ff-game/src/main/java/com/ff/tenant/dto/TenantDTO.java index 120310b..8bd7487 100644 --- a/ff-game/src/main/java/com/ff/tenant/dto/TenantDTO.java +++ b/ff-game/src/main/java/com/ff/tenant/dto/TenantDTO.java @@ -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; diff --git a/ff-game/src/main/resources/mapper/game/GameBettingDetailsMapper.xml b/ff-game/src/main/resources/mapper/game/GameBettingDetailsMapper.xml index c6c2dc7..c40a586 100644 --- a/ff-game/src/main/resources/mapper/game/GameBettingDetailsMapper.xml +++ b/ff-game/src/main/resources/mapper/game/GameBettingDetailsMapper.xml @@ -18,6 +18,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + @@ -34,7 +39,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - 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 @@ -103,6 +109,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" game_status_type, game_currency_code, account, + round, + table, + seat, + bet_content, wagers_id, wagers_time, bet_amount, @@ -130,6 +140,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{gameStatusType}, #{gameCurrencyCode}, #{account}, + #{round}, + #{table}, + #{seat}, + #{betContent}, #{wagersId}, #{wagersTime}, #{betAmount}, @@ -161,6 +175,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" game_status_type = #{gameStatusType}, game_currency_code = #{gameCurrencyCode}, account = #{account}, + round = #{round}, + table = #{table}, + seat = #{seat}, + bet_content = #{betContent}, wagers_id = #{wagersId}, wagers_time = #{wagersTime}, bet_amount = #{betAmount}, @@ -188,15 +206,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{id} + + delete from ff_game_betting_details where wagers_id in + + #{wagersId} + + + + + + + insert into ff_game_betting_details 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 - + settlement_time, turnover, order_no, create_by, create_time, settlement_status, + update_by, update_time, round, `table`, seat, bet_content + values #{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} diff --git a/ff-game/src/main/resources/mapper/game/GameMapper.xml b/ff-game/src/main/resources/mapper/game/GameMapper.xml index 2706ef0..abf59e2 100644 --- a/ff-game/src/main/resources/mapper/game/GameMapper.xml +++ b/ff-game/src/main/resources/mapper/game/GameMapper.xml @@ -26,10 +26,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + + + + + + diff --git a/ff-game/src/main/resources/mapper/game/GameNameMapper.xml b/ff-game/src/main/resources/mapper/game/GameNameMapper.xml new file mode 100644 index 0000000..a330f6b --- /dev/null +++ b/ff-game/src/main/resources/mapper/game/GameNameMapper.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, game_id, game_name, lang_code, create_by, create_time, update_by, update_time from ff_game_name + + + + + + + + + + insert into ff_game_name + + id, + game_id, + game_name, + lang_code, + create_by, + create_time, + update_by, + update_time, + + + #{id}, + #{gameId}, + #{gameName}, + #{langCode}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + + + + + update ff_game_name + + game_id = #{gameId}, + game_name = #{gameName}, + lang_code = #{langCode}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + + where id = #{id} + + + + delete from ff_game_name where id = #{id} + + + + delete from ff_game_name where id in + + #{id} + + + + + \ No newline at end of file diff --git a/ff-game/src/main/resources/mapper/game/GameSecretKeyCurrencyMapper.xml b/ff-game/src/main/resources/mapper/game/GameSecretKeyCurrencyMapper.xml new file mode 100644 index 0000000..cd211e2 --- /dev/null +++ b/ff-game/src/main/resources/mapper/game/GameSecretKeyCurrencyMapper.xml @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, game_secret_key_id, currency, system_currency, create_by, create_time, update_by, update_time from ff_game_secret_key_currency + + + + + + + + insert into ff_game_secret_key_currency + + id, + game_secret_key_id, + currency, + system_currency, + create_by, + create_time, + update_by, + update_time, + + + #{id}, + #{gameSecretKeyId}, + #{currency}, + #{systemCurrency}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + + + + + update ff_game_secret_key_currency + + game_secret_key_id = #{gameSecretKeyId}, + currency = #{currency}, + system_currency = #{systemCurrency}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + + where id = #{id} + + + + delete from ff_game_secret_key_currency where id = #{id} + + + + delete from ff_game_secret_key_currency where id in + + #{id} + + + + + + + + \ No newline at end of file diff --git a/ff-game/src/main/resources/mapper/game/GameSecretKeyLangMapper.xml b/ff-game/src/main/resources/mapper/game/GameSecretKeyLangMapper.xml new file mode 100644 index 0000000..b137079 --- /dev/null +++ b/ff-game/src/main/resources/mapper/game/GameSecretKeyLangMapper.xml @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, game_secret_key_id, lang, system_lang_code, create_by, create_time, update_by, update_time from ff_game_secret_key_lang + + + + + + + + insert into ff_game_secret_key_lang + + id, + game_secret_key_id, + lang, + system_lang_code, + create_by, + create_time, + update_by, + update_time, + + + #{id}, + #{gameSecretKeyId}, + #{lang}, + #{systemLangCode}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + + + + + update ff_game_secret_key_lang + + game_secret_key_id = #{gameSecretKeyId}, + lang = #{lang}, + system_lang_code = #{systemLangCode}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + + where id = #{id} + + + + delete from ff_game_secret_key_lang where id = #{id} + + + + delete from ff_game_secret_key_lang where id in + + #{id} + + + + + \ No newline at end of file diff --git a/ff-game/src/main/resources/mapper/game/GameSecretKeyMapper.xml b/ff-game/src/main/resources/mapper/game/GameSecretKeyMapper.xml index 14be4b0..7576be3 100644 --- a/ff-game/src/main/resources/mapper/game/GameSecretKeyMapper.xml +++ b/ff-game/src/main/resources/mapper/game/GameSecretKeyMapper.xml @@ -9,11 +9,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - - - - @@ -21,20 +16,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - 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 @@ -43,31 +33,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where id = #{id} - + insert into ff_game_secret_key - id, + + id, platform, code, - currency, - `key`, - system_currency, - lang, - system_lang_code, - info, + key, create_by, create_time, update_by, update_time, - #{id}, + + #{id}, #{platform}, #{code}, - #{currency}, #{key}, - #{systemCurrency}, - #{lang}, - #{systemLangCode}, - #{info}, #{createBy}, #{createTime}, #{updateBy}, @@ -80,12 +62,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" platform = #{platform}, code = #{code}, - `key` = #{key}, - currency = #{currency}, - system_currency = #{systemCurrency}, - lang = #{lang}, - system_lang_code = #{systemLangCode}, - info = #{info}, + key = #{key}, create_by = #{createBy}, create_time = #{createTime}, update_by = #{updateBy}, @@ -104,20 +81,4 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{id} - - - - - - \ No newline at end of file