mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-06-11 10:49:52 +08:00
bugfix 注册加锁
This commit is contained in:
@@ -185,6 +185,18 @@ public class MemberService {
|
||||
throw new BusinessException(ReturnCodeEnum.CODE_OPEN_ID_IS_NULL_ERROR);
|
||||
}
|
||||
|
||||
String lockKey = CacheConstants.USER_APP_REGISTER + phoneNumber;
|
||||
String requestId = IdUtils.fastUUID();
|
||||
Boolean isLock = false;
|
||||
try {
|
||||
// 获取锁,防止注册创建重复账户,锁超时时间10秒
|
||||
isLock = redisCache.lock(lockKey, requestId, 10);
|
||||
if (!isLock) {
|
||||
// 获取锁失败,说明有其他请求正在处理,提示用户稍候
|
||||
log.warn("获取注册锁失败,可能有并发请求正在处理, phoneNumber:{}", phoneNumber);
|
||||
throw new BusinessException(ReturnCodeEnum.CODE_MEMBER_REGISTER_AND_LOGIN_PROCESSING);
|
||||
}
|
||||
|
||||
// 查询手机号码是否注册过
|
||||
MemberBasicInfo memberBasicInfo = memberBasicInfoService.selectInfoByMobileNumber(phoneNumber, firstLevelMerchantId);
|
||||
if (Objects.isNull(memberBasicInfo)) {
|
||||
@@ -234,6 +246,19 @@ public class MemberService {
|
||||
String memberToken = JWTUtils.createMemberToken(memberBasicInfo.getMemberId(), memberBasicInfo.getNickName());
|
||||
// log.info("memToken:{}", memberToken);
|
||||
return memberToken;
|
||||
} finally {
|
||||
// 释放锁
|
||||
if (isLock) {
|
||||
try {
|
||||
Object lockValue = redisCache.getCacheObject(lockKey);
|
||||
if (lockValue != null && requestId.equals(lockValue.toString())) {
|
||||
redisCache.unLock(lockKey);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("释放注册锁失败, phoneNumber:{}, error:{}", phoneNumber, e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private String generateNewMemberId() {
|
||||
|
||||
@@ -420,4 +420,9 @@ public class CacheConstants {
|
||||
|
||||
// 保险退保
|
||||
public static final String REFUND_INSURANCE = "REFUND_INSURANCE:";
|
||||
|
||||
/**
|
||||
* 用户app注册
|
||||
*/
|
||||
public static final String USER_APP_REGISTER = "user_app_register:";
|
||||
}
|
||||
|
||||
@@ -22,6 +22,8 @@ public enum ReturnCodeEnum {
|
||||
|
||||
CODE_MEMBER_REGISTER_AND_LOGIN_ERROR("00100007", "会员登录注册接口异常"),
|
||||
|
||||
CODE_MEMBER_REGISTER_AND_LOGIN_PROCESSING("00100007_1", "正在登录/注册中,请稍候..."),
|
||||
|
||||
CODE_WECHAT_LOGIN_ERROR("00100008", "微信登录异常"),
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user