Compare commits

..

No commits in common. "58cdc3a44b0b02327e801867f27628a086c22b77" and "98e1e8731a3542fa5f58eb56526d3f04464c7d32" have entirely different histories.

8 changed files with 28 additions and 159 deletions

View File

@ -1,32 +0,0 @@
package com.ff.base.utils;
import java.security.SecureRandom;
import java.util.HashSet;
import java.util.Set;
/**
*
*
* @author shi
* @date 2025/03/14
*/
public class RandomGeneratorUtils {
private static final String CHARACTERS = "abcdefghijklmnopqrstuvwxyz0123456789";
private static final SecureRandom RANDOM = new SecureRandom();
/**
* 5-8
*
* @return {@link String }
*/
public static String generateRandomAccount() {
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())));
}
return sb.toString();
}
}

View File

@ -159,7 +159,7 @@ public class ApiGameController extends BaseController {
ApiException.notNull(gameSecretKeyLangDTO, ErrorCode.LANG_NOT_EXIST.getCode()); ApiException.notNull(gameSecretKeyLangDTO, ErrorCode.LANG_NOT_EXIST.getCode());
Member member = memberService.selectMemberByAccount(memberCreateApiRequest.getAccount(), memberCreateApiRequest.getCurrencyCode(), gamePlatform.getPlatformCode()); Member member = memberService.selectMemberByGameAccount(StringUtils.addSuffix(memberCreateApiRequest.getAccount(), memberCreateApiRequest.getCurrencyCode() + tenantSecretKey.getTenantSn()));
ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode()); ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode());
GamesLogin gamesLogin = GamesLogin.builder() GamesLogin gamesLogin = GamesLogin.builder()
@ -214,8 +214,7 @@ public class ApiGameController extends BaseController {
.build()); .build());
// 获取用户信息 // 获取用户信息
Member member = memberService.selectMemberByAccount(gameExchangeBalanceRequest.getAccount(), gameExchangeBalanceRequest.getCurrencyCode(), gameExchangeBalanceRequest.getPlatformCode()); Member member = memberService.selectMemberByGameAccount(StringUtils.addSuffix(gameExchangeBalanceRequest.getAccount(), gameExchangeBalanceRequest.getCurrencyCode() + tenantSecretKey.getTenantSn()));
ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode());
//操作第三方额度接口 //操作第三方额度接口
@ -281,11 +280,8 @@ public class ApiGameController extends BaseController {
.systemCurrency(gameCreateFreeSpinRequest.getCurrencyCode()).build()); .systemCurrency(gameCreateFreeSpinRequest.getCurrencyCode()).build());
ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode()); ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode());
Member member = memberService.selectMemberByGameAccount(StringUtils.addSuffix(gameCreateFreeSpinRequest.getAccount(), gameCreateFreeSpinRequest.getCurrencyCode() + tenantSecretKey.getTenantSn()));
Member member = memberService.selectMemberByAccount(gameCreateFreeSpinRequest.getAccount(), gameCreateFreeSpinRequest.getCurrencyCode(), gameCreateFreeSpinRequest.getPlatformCode());
ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode()); ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode());
CreateFreeSpinRequestDTO createFreeSpinRequestDTO = CreateFreeSpinRequestDTO.builder() CreateFreeSpinRequestDTO createFreeSpinRequestDTO = CreateFreeSpinRequestDTO.builder()
.account(member.getGameAccount()) .account(member.getGameAccount())
.currency(gameCreateFreeSpinRequest.getCurrencyCode()) .currency(gameCreateFreeSpinRequest.getCurrencyCode())
@ -394,12 +390,10 @@ public class ApiGameController extends BaseController {
.systemCurrency(gameKickMemeberRequest.getCurrencyCode()).build()); .systemCurrency(gameKickMemeberRequest.getCurrencyCode()).build());
ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode()); ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode());
TenantSecretKey tenantSecretKey = keyConfig.get();
Member member = memberService.selectMemberByGameAccount(StringUtils.addSuffix(gameKickMemeberRequest.getAccount(), gameKickMemeberRequest.getCurrencyCode() + tenantSecretKey.getTenantSn()));
Member member = memberService.selectMemberByAccount(gameKickMemeberRequest.getAccount(), gameKickMemeberRequest.getCurrencyCode(), gameKickMemeberRequest.getPlatformCode());
ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode()); ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode());
IGamesService iGamesService = gamesService.get(gameKickMemeberRequest.getPlatformCode() + Constants.SERVICE); IGamesService iGamesService = gamesService.get(gameKickMemeberRequest.getPlatformCode() + Constants.SERVICE);
ApiException.notNull(iGamesService, ErrorCode.PLATFORM_NOT_EXIST.getCode()); ApiException.notNull(iGamesService, ErrorCode.PLATFORM_NOT_EXIST.getCode());
@ -504,9 +498,8 @@ public class ApiGameController extends BaseController {
public AjaxResult exchangeBalanceAll(@Validated @RequestBody GameExchangeBalanceAllRequest gameExchangeBalanceAllRequest) { public AjaxResult exchangeBalanceAll(@Validated @RequestBody GameExchangeBalanceAllRequest gameExchangeBalanceAllRequest) {
TenantSecretKey tenantSecretKey = keyConfig.get(); TenantSecretKey tenantSecretKey = keyConfig.get();
Member member = memberService.selectMemberByGameAccount(StringUtils.addSuffix(gameExchangeBalanceAllRequest.getAccount(), gameExchangeBalanceAllRequest.getCurrencyCode() + tenantSecretKey.getTenantSn()));
ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode());
List<GameSecretKeyCurrencyDTO> gameSecretKeys = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTOList(GameSecretKeyCurrencyDTO.builder() List<GameSecretKeyCurrencyDTO> gameSecretKeys = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTOList(GameSecretKeyCurrencyDTO.builder()
@ -526,10 +519,6 @@ public class ApiGameController extends BaseController {
try { try {
IGamesService iGamesService = gamesService.get(gameSecretKeyCurrencyDTO.getPlatformCode() + Constants.SERVICE); IGamesService iGamesService = gamesService.get(gameSecretKeyCurrencyDTO.getPlatformCode() + Constants.SERVICE);
Member member = memberService.selectMemberByAccount(gameExchangeBalanceAllRequest.getAccount(), gameExchangeBalanceAllRequest.getCurrencyCode(), gameSecretKeyCurrencyDTO.getPlatformCode());
ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode());
//操作第三方钱包 //操作第三方钱包
ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO = ExchangeTransferMoneyRequestDTO.builder() ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO = ExchangeTransferMoneyRequestDTO.builder()
.agentId(gameSecretKeyCurrencyDTO.getCode()) .agentId(gameSecretKeyCurrencyDTO.getCode())
@ -564,7 +553,6 @@ public class ApiGameController extends BaseController {
if (ObjectUtils.isEmpty(gameExchangeMoney)) { if (ObjectUtils.isEmpty(gameExchangeMoney)) {
continue; continue;
} }
Member member = memberService.selectMemberById(gameExchangeMoney.getMemberId());
balanceMap.put(gameExchangeMoney.getPlatformCode(), gameExchangeMoney.getBalance()); balanceMap.put(gameExchangeMoney.getPlatformCode(), gameExchangeMoney.getBalance());
BigDecimal balance = gameExchangeMoney.getBalance(); BigDecimal balance = gameExchangeMoney.getBalance();
balanceAll = NumberUtil.add(balanceAll, balance); balanceAll = NumberUtil.add(balanceAll, balance);

View File

@ -33,7 +33,6 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert; import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -92,7 +91,7 @@ public class ApiMemberController extends BaseController {
*/ */
@PostMapping("/create") @PostMapping("/create")
@Transactional @Transactional
public synchronized AjaxResult createMember(@Validated @RequestBody MemberCreateApiRequest memberCreateApiRequest) { public AjaxResult createMember(@Validated @RequestBody MemberCreateApiRequest memberCreateApiRequest) {
IGamesService iGamesService = gamesService.get(memberCreateApiRequest.getPlatformCode() + Constants.SERVICE); IGamesService iGamesService = gamesService.get(memberCreateApiRequest.getPlatformCode() + Constants.SERVICE);
ApiException.notNull(iGamesService, ErrorCode.PLATFORM_NOT_EXIST.getCode()); ApiException.notNull(iGamesService, ErrorCode.PLATFORM_NOT_EXIST.getCode());
@ -104,18 +103,12 @@ public class ApiMemberController extends BaseController {
ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode()); ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode());
String gameAccount = StringUtils.addSuffix(memberService.getMemberGameAccount(), tenantSecretKey.getTenantSn()); String gameAccount = StringUtils.addSuffix(memberCreateApiRequest.getAccount(), memberCreateApiRequest.getCurrencyCode() + tenantSecretKey.getTenantSn());
// 获取用户信息
Member gameMember = memberService.selectMemberByAccount(memberCreateApiRequest.getAccount(), memberCreateApiRequest.getCurrencyCode(), memberCreateApiRequest.getPlatformCode());
if (!ObjectUtils.isEmpty(gameMember)){
throw new ApiException(ErrorCode.GAME_ACCOUNT_CREATION_FAILED.getCode());
}
List<Member> members = memberService.selectMemberList(Member.builder()
.tenantKey(tenantSecretKey.getTenantKey()).gameAccount(gameAccount).build());
if (CollectionUtils.isEmpty(members)) {
//注册本地账号 //注册本地账号
Member member = Member.builder() Member member = Member.builder()
.tenantKey(tenantSecretKey.getTenantKey()) .tenantKey(tenantSecretKey.getTenantKey())
@ -126,7 +119,7 @@ public class ApiMemberController extends BaseController {
.build(); .build();
int insertMember = memberService.insertMember(member); int insertMember = memberService.insertMember(member);
Assert.isTrue(insertMember > 0, "建立游戏账号失败"); Assert.isTrue(insertMember > 0, "建立游戏账号失败");
}
//向第三方注册账号 //向第三方注册账号
CreateMemberRequestDTO gamesBaseRequestDTO = CreateMemberRequestDTO.builder() CreateMemberRequestDTO gamesBaseRequestDTO = CreateMemberRequestDTO.builder()
.account(gameAccount) .account(gameAccount)
@ -160,13 +153,9 @@ public class ApiMemberController extends BaseController {
ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode()); 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()); ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode());
//向第三方查询账号 //向第三方查询账号
MemberInfoRequestDTO gamesBaseRequestDTO = MemberInfoRequestDTO.builder() MemberInfoRequestDTO gamesBaseRequestDTO = MemberInfoRequestDTO.builder()
.accounts(member.getGameAccount()) .accounts(member.getGameAccount())
@ -190,8 +179,9 @@ public class ApiMemberController extends BaseController {
@PostMapping("/info/all") @PostMapping("/info/all")
public AjaxResult infoAll(@Validated @RequestBody MemberInfoAllApiRequest memberInfoAllApiRequest) { 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<GameSecretKeyCurrencyDTO> gameSecretKeys = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTOList(GameSecretKeyCurrencyDTO.builder() List<GameSecretKeyCurrencyDTO> gameSecretKeys = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTOList(GameSecretKeyCurrencyDTO.builder()
@ -209,12 +199,6 @@ public class ApiMemberController extends BaseController {
futures.add(threadPoolTaskExecutor.submit(() -> { futures.add(threadPoolTaskExecutor.submit(() -> {
try { try {
IGamesService iGamesService = gamesService.get(gameSecretKey.getPlatformCode() + Constants.SERVICE); 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() MemberInfoRequestDTO gamesBaseRequestDTO = MemberInfoRequestDTO.builder()
.accounts(member.getGameAccount()) .accounts(member.getGameAccount())
.agentId(gameSecretKey.getCode()) .agentId(gameSecretKey.getCode())

View File

@ -313,14 +313,8 @@ public class TenantGameQuotaServiceImpl implements ITenantGameQuotaService {
ApiException.notNull(tenantPlatform, ErrorCode.PLATFORM_NOT_EXIST.getCode()); ApiException.notNull(tenantPlatform, ErrorCode.PLATFORM_NOT_EXIST.getCode());
// 获取用户信息 // 获取用户信息
Member member = memberService.selectMemberByAccount(gameBalanceExchange.getAccount(), gameBalanceExchange.getCurrencyCode(), gameBalanceExchange.getPlatformCode()); Member member = memberService.selectMemberByGameAccount(StringUtils.addSuffix(gameBalanceExchange.getAccount(), gameBalanceExchange.getCurrencyCode() + tenantSecretKey.getTenantSn()));
ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode());
// 检查用户是否存在,否则抛出异常 // 检查用户是否存在,否则抛出异常
ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode()); ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode());

View File

@ -2,7 +2,6 @@ package com.ff.member.mapper;
import java.util.List; import java.util.List;
import com.ff.member.domain.Member; import com.ff.member.domain.Member;
import org.apache.ibatis.annotations.Param;
/** /**
* Mapper * Mapper
@ -70,15 +69,4 @@ public interface MemberMapper
* @return {@link Member } * @return {@link Member }
*/ */
Member selectMemberByGameAccount(String gameAccount); Member selectMemberByGameAccount(String gameAccount);
/**
*
*
* @param account
* @param currencyCode
* @param platformCode
* @return {@link Member }
*/
Member selectMemberByAccount(@Param("account") String account,@Param("currencyCode") String currencyCode,@Param("platformCode") String platformCode);
} }

View File

@ -27,13 +27,6 @@ public interface IMemberService
*/ */
List<Member> selectMemberList(Member member); List<Member> selectMemberList(Member member);
/**
*
*
* @return {@link String }
*/
String getMemberGameAccount();
/** /**
* *
* *
@ -74,14 +67,4 @@ public interface IMemberService
* @return {@link Member } * @return {@link Member }
*/ */
Member selectMemberByGameAccount(String gameAccount); Member selectMemberByGameAccount(String gameAccount);
/**
*
*
* @param account
* @param currencyCode
* @param platformCode
* @return {@link Member }
*/
Member selectMemberByAccount(String account,String currencyCode,String platformCode);
} }

View File

@ -4,13 +4,11 @@ import java.util.List;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import com.ff.base.utils.DateUtils; import com.ff.base.utils.DateUtils;
import com.ff.base.utils.RandomGeneratorUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.ff.member.mapper.MemberMapper; import com.ff.member.mapper.MemberMapper;
import com.ff.member.domain.Member; import com.ff.member.domain.Member;
import com.ff.member.service.IMemberService; import com.ff.member.service.IMemberService;
import org.springframework.util.ObjectUtils;
/** /**
* Service * Service
@ -48,21 +46,6 @@ public class MemberServiceImpl implements IMemberService
return memberMapper.selectMemberList(member); return memberMapper.selectMemberList(member);
} }
/**
*
*
* @return {@link String }
*/
@Override
public synchronized String getMemberGameAccount() {
String gameAccount = RandomGeneratorUtils.generateRandomAccount();
while (!ObjectUtils.isEmpty(memberMapper.selectMemberByGameAccount(gameAccount))){
gameAccount = RandomGeneratorUtils.generateRandomAccount();
}
return gameAccount;
}
/** /**
* *
* *
@ -126,17 +109,4 @@ public class MemberServiceImpl implements IMemberService
public Member selectMemberByGameAccount(String gameAccount) { public Member selectMemberByGameAccount(String gameAccount) {
return memberMapper.selectMemberByGameAccount(gameAccount.toLowerCase()); return memberMapper.selectMemberByGameAccount(gameAccount.toLowerCase());
} }
/**
*
*
* @param account
* @param currencyCode
* @param platformCode
* @return {@link Member }
*/
@Override
public Member selectMemberByAccount(String account, String currencyCode, String platformCode) {
return memberMapper.selectMemberByAccount(account,currencyCode,platformCode);
}
} }

View File

@ -96,10 +96,4 @@
<include refid="selectMemberVo"/> <include refid="selectMemberVo"/>
where game_account = #{gameAccount} where game_account = #{gameAccount}
</select> </select>
<select id="selectMemberByAccount" parameterType="String" resultMap="MemberResult">
<include refid="selectMemberVo"/>
where member_account = #{account} and platform_code = #{platformCode} and currency_code = #{currencyCode}
limit 1
</select>
</mapper> </mapper>