diff --git a/ff-base/src/main/java/com/ff/base/utils/RandomGeneratorUtils.java b/ff-base/src/main/java/com/ff/base/utils/RandomGeneratorUtils.java index 4a09d1e..4e4d32c 100644 --- a/ff-base/src/main/java/com/ff/base/utils/RandomGeneratorUtils.java +++ b/ff-base/src/main/java/com/ff/base/utils/RandomGeneratorUtils.java @@ -16,12 +16,12 @@ public class RandomGeneratorUtils { /** - * 生成 5-9 之间的随机长度 + * 生成 5-8 之间的随机长度 * * @return {@link String } */ public static String generateRandomAccount() { - int length = 5 + RANDOM.nextInt(5); + int length = 5 + RANDOM.nextInt(4); StringBuilder sb = new StringBuilder(length); for (int i = 0; i < length; i++) { sb.append(CHARACTERS.charAt(RANDOM.nextInt(CHARACTERS.length()))); 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 bd684ab..eb92f28 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 @@ -33,6 +33,7 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; +import org.springframework.util.ObjectUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -106,20 +107,26 @@ public class ApiMemberController extends BaseController { String gameAccount = StringUtils.addSuffix(memberService.getMemberGameAccount(), tenantSecretKey.getTenantSn()); - List members = memberService.selectMemberList(Member.builder() - .tenantKey(tenantSecretKey.getTenantKey()).gameAccount(gameAccount).build()); - if (CollectionUtils.isEmpty(members)) { - //注册本地账号 - Member member = Member.builder() - .tenantKey(tenantSecretKey.getTenantKey()) - .memberAccount(memberCreateApiRequest.getAccount()) - .gameAccount(gameAccount) - .platformCode(memberCreateApiRequest.getPlatformCode()) - .currencyCode(memberCreateApiRequest.getCurrencyCode()) - .build(); - int insertMember = memberService.insertMember(member); - Assert.isTrue(insertMember > 0, "建立游戏账号失败"); + // 获取用户信息 + Member gameMember = memberService.selectMemberByAccount(memberCreateApiRequest.getAccount(), memberCreateApiRequest.getCurrencyCode(), memberCreateApiRequest.getPlatformCode()); + if (!ObjectUtils.isEmpty(gameMember)){ + throw new ApiException(ErrorCode.GAME_ACCOUNT_CREATION_FAILED.getCode()); } + + + + + //注册本地账号 + Member member = Member.builder() + .tenantKey(tenantSecretKey.getTenantKey()) + .memberAccount(memberCreateApiRequest.getAccount()) + .gameAccount(gameAccount) + .platformCode(memberCreateApiRequest.getPlatformCode()) + .currencyCode(memberCreateApiRequest.getCurrencyCode()) + .build(); + int insertMember = memberService.insertMember(member); + Assert.isTrue(insertMember > 0, "建立游戏账号失败"); + //向第三方注册账号 CreateMemberRequestDTO gamesBaseRequestDTO = CreateMemberRequestDTO.builder() .account(gameAccount) @@ -153,9 +160,13 @@ public class ApiMemberController extends BaseController { ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode()); - Member member = memberService.selectMemberByGameAccount(StringUtils.addSuffix(memberInfoApiRequest.getAccount(), memberInfoApiRequest.getCurrencyCode() + tenantSecretKey.getTenantSn())); + + // 获取用户信息 + Member member = memberService.selectMemberByAccount(memberInfoApiRequest.getAccount(), memberInfoApiRequest.getCurrencyCode(), memberInfoApiRequest.getPlatformCode()); ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode()); + + //向第三方查询账号 MemberInfoRequestDTO gamesBaseRequestDTO = MemberInfoRequestDTO.builder() .accounts(member.getGameAccount()) @@ -179,9 +190,8 @@ public class ApiMemberController extends BaseController { @PostMapping("/info/all") public AjaxResult infoAll(@Validated @RequestBody MemberInfoAllApiRequest memberInfoAllApiRequest) { - TenantSecretKey tenantSecretKey = keyConfig.get(); - Member member = memberService.selectMemberByGameAccount(StringUtils.addSuffix(memberInfoAllApiRequest.getAccount(), memberInfoAllApiRequest.getCurrencyCode() + tenantSecretKey.getTenantSn())); - ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode()); + + List gameSecretKeys = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTOList(GameSecretKeyCurrencyDTO.builder() @@ -199,6 +209,12 @@ public class ApiMemberController extends BaseController { futures.add(threadPoolTaskExecutor.submit(() -> { try { IGamesService iGamesService = gamesService.get(gameSecretKey.getPlatformCode() + Constants.SERVICE); + + // 获取用户信息 + Member member = memberService.selectMemberByAccount(memberInfoAllApiRequest.getAccount(), memberInfoAllApiRequest.getCurrencyCode(), gameSecretKey.getPlatformCode()); + ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode()); + + MemberInfoRequestDTO gamesBaseRequestDTO = MemberInfoRequestDTO.builder() .accounts(member.getGameAccount()) .agentId(gameSecretKey.getCode()) 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 7a1ba95..b592727 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 @@ -313,8 +313,14 @@ public class TenantGameQuotaServiceImpl implements ITenantGameQuotaService { ApiException.notNull(tenantPlatform, ErrorCode.PLATFORM_NOT_EXIST.getCode()); + // 获取用户信息 - Member member = memberService.selectMemberByGameAccount(StringUtils.addSuffix(gameBalanceExchange.getAccount(), gameBalanceExchange.getCurrencyCode() + tenantSecretKey.getTenantSn())); + Member member = memberService.selectMemberByAccount(gameBalanceExchange.getAccount(), gameBalanceExchange.getCurrencyCode(), gameBalanceExchange.getPlatformCode()); + ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode()); + + + + // 检查用户是否存在,否则抛出异常 ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode()); diff --git a/ff-game/src/main/resources/mapper/member/MemberMapper.xml b/ff-game/src/main/resources/mapper/member/MemberMapper.xml index fb9cb71..7415509 100644 --- a/ff-game/src/main/resources/mapper/member/MemberMapper.xml +++ b/ff-game/src/main/resources/mapper/member/MemberMapper.xml @@ -99,6 +99,7 @@ \ No newline at end of file