refactor(member): 重构会员游戏账号生成逻辑

- 在 ApiMemberController 中调用 memberService.getMemberGameAccount() 替代原有逻辑
- 在 IMemberService 中添加 getMemberGameAccount 方法接口
- 在 MemberServiceImpl 中实现 getMemberGameAccount 方法,生成唯一的游戏账号- 新增 RandomGeneratorUtils 工具类,用于生成随机账号字符串
main-p
shi 2025-03-14 19:30:40 +08:00
parent ee49e83c79
commit 672c722a19
4 changed files with 57 additions and 1 deletions

View File

@ -0,0 +1,32 @@
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-9
*
* @return {@link String }
*/
public static String generateRandomAccount() {
int length = 5 + RANDOM.nextInt(5);
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

@ -103,7 +103,7 @@ 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(memberCreateApiRequest.getAccount(), memberCreateApiRequest.getCurrencyCode() + tenantSecretKey.getTenantSn()); String gameAccount = StringUtils.addSuffix(memberService.getMemberGameAccount(), tenantSecretKey.getTenantSn());
List<Member> members = memberService.selectMemberList(Member.builder() List<Member> members = memberService.selectMemberList(Member.builder()

View File

@ -27,6 +27,13 @@ public interface IMemberService
*/ */
List<Member> selectMemberList(Member member); List<Member> selectMemberList(Member member);
/**
*
*
* @return {@link String }
*/
String getMemberGameAccount();
/** /**
* *
* *

View File

@ -4,11 +4,13 @@ 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
@ -46,6 +48,21 @@ 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;
}
/** /**
* *
* *