解决了跨级注册

This commit is contained in:
2025-08-06 10:47:58 +08:00
parent bb0066dc45
commit f450a785f4

View File

@ -11,6 +11,7 @@ import com.greenorange.promotion.config.WxOpenConfig;
import com.greenorange.promotion.constant.CommonConstant;
import com.greenorange.promotion.constant.SystemConstant;
import com.greenorange.promotion.constant.UserConstant;
import com.greenorange.promotion.exception.BusinessException;
import com.greenorange.promotion.exception.ThrowUtils;
import com.greenorange.promotion.mapper.UserInfoMapper;
import com.greenorange.promotion.mapper.UserPerformanceSummaryMapper;
@ -170,6 +171,15 @@ public class UserInfoServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo>
// 根据邀请码获得上级用户信息
String invitationCode = userInfoRegisterRequest.getInvitationCode();
UserInfo parentUserInfo = getParentUserInfoByInvitationCode(invitationCode);
String parentUserRole = parentUserInfo.getUserRole();
UserRoleEnum parentUserRoleEnum = UserRoleEnum.getEnumByValue(parentUserRole);
Map<UserRoleEnum, Integer> userRoleMap = new HashMap<>();
userRoleMap.put(UserRoleEnum.USER, 1);
userRoleMap.put(UserRoleEnum.STAFF, 2);
userRoleMap.put(UserRoleEnum.SUPERVISOR, 3);
userRoleMap.put(UserRoleEnum.MANAGER, 4);
if (userRoleMap.get(parentUserRoleEnum) - userRoleMap.get(userRoleEnum) != 1 || UserRoleEnum.USER.equals(userRoleEnum) && UserRoleEnum.USER.equals(parentUserRoleEnum))
throw new BusinessException(ErrorCode.OPERATION_ERROR, "邀请码错误");
// 保存用户
UserInfo myUserInfo = commonService.copyProperties(userInfoRegisterRequest, UserInfo.class);
@ -274,12 +284,14 @@ public class UserInfoServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo>
if (isInner) {
// 获取token的过期时间
String sourceToken = userInfoResetRequest.getSourceToken();
if (StringUtils.isNotBlank(sourceToken)) {
DecodedJWT decodedJWT = jwtUtils.verify(sourceToken);
long expirationTime = decodedJWT.getExpiresAt().getTime() - System.currentTimeMillis();
// 将token存入Redis黑名单并设置过期时间与token一致
redisTemplate.opsForValue().set(sourceToken, sourceToken, expirationTime, TimeUnit.MILLISECONDS);
}
}
}
/**