修复了用户注册bug

This commit is contained in:
2025-08-16 20:06:17 +08:00
parent 6b2bce2b61
commit d25fa959b6
3 changed files with 30 additions and 8 deletions

View File

@ -72,7 +72,7 @@ public class CourseController {
// 降序排序并取前四个元素 // 降序排序并取前四个元素
courseList = courseList.stream() courseList = courseList.stream()
.sorted((course1, course2) -> Integer.compare(course2.getOrderCount(), course1.getOrderCount())) // 降序排序 .sorted((course1, course2) -> Integer.compare(course2.getOrderCount(), course1.getOrderCount())) // 降序排序
.limit(4) // 取前个元素 .limit(6) // 取前个元素
.collect(Collectors.toList()); .collect(Collectors.toList());
List<CourseCardVO> courseCardVOS = commonService.convertList(courseList, CourseCardVO.class); List<CourseCardVO> courseCardVOS = commonService.convertList(courseList, CourseCardVO.class);
return ResultUtils.success(courseCardVOS); return ResultUtils.success(courseCardVOS);

View File

@ -89,5 +89,12 @@ public class GlobalExceptionHandler {
} }
@ExceptionHandler(RuntimeException.class)
public BaseResponse<?> runtimeExceptionHandler(RuntimeException e) {
log.error("RuntimeException", e);
return ResultUtils.error(ErrorCode.SYSTEM_ERROR, "未知异常");
}
} }

View File

@ -39,10 +39,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.io.IOException; import java.io.IOException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -186,13 +183,30 @@ public class UserInfoServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo>
userRoleMap.put(UserRoleEnum.STAFF, 2); userRoleMap.put(UserRoleEnum.STAFF, 2);
userRoleMap.put(UserRoleEnum.SUPERVISOR, 3); userRoleMap.put(UserRoleEnum.SUPERVISOR, 3);
userRoleMap.put(UserRoleEnum.MANAGER, 4); userRoleMap.put(UserRoleEnum.MANAGER, 4);
if (userRoleMap.get(parentUserRoleEnum) - userRoleMap.get(userRoleEnum) != 1 || UserRoleEnum.USER.equals(userRoleEnum) && UserRoleEnum.USER.equals(parentUserRoleEnum)) int level = userRoleMap.get(parentUserRoleEnum) - userRoleMap.get(userRoleEnum);
if (!(level == 1 || level == 0 && UserRoleEnum.USER.equals(userRoleEnum) && UserRoleEnum.USER.equals(parentUserRoleEnum)))
throw new BusinessException(ErrorCode.OPERATION_ERROR, "邀请码错误"); throw new BusinessException(ErrorCode.OPERATION_ERROR, "邀请码错误");
// 保存用户 // 保存用户
UserInfo myUserInfo = commonService.copyProperties(userInfoRegisterRequest, UserInfo.class); UserInfo myUserInfo = commonService.copyProperties(userInfoRegisterRequest, UserInfo.class);
myUserInfo.setParentUserId(parentUserInfo.getId()); myUserInfo.setParentUserId(parentUserInfo.getId());
myUserInfo.setInvitationCode(RandomUtil.randomNumbers(6)); // 获取唯一的邀请码
LambdaQueryWrapper<UserInfo> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.select(UserInfo::getInvitationCode);
lambdaQueryWrapper.in(UserInfo::getUserRole, UserConstant.DEFAULT_ROLE, UserConstant.STAFF_ROLE, UserConstant.SUPERVISOR_ROLE, UserConstant.MANAGER_ROLE);
List<UserInfo> userInfos;
String inviteCode;
while (true) {
String tempCode = RandomUtil.randomNumbers(6);
userInfos = this.list(lambdaQueryWrapper);
boolean exists = userInfos.stream()
.anyMatch(u -> u.getInvitationCode().equals(tempCode));
if (!exists) {
inviteCode = tempCode;
break;
}
}
myUserInfo.setInvitationCode(inviteCode);
myUserInfo.setUserAccount(phoneNumber); myUserInfo.setUserAccount(phoneNumber);
myUserInfo.setUserRole(userRole); myUserInfo.setUserRole(userRole);
myUserInfo.setUserAvatar(UserConstant.USER_DEFAULT_AVATAR); myUserInfo.setUserAvatar(UserConstant.USER_DEFAULT_AVATAR);
@ -380,7 +394,8 @@ public class UserInfoServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo>
if (userInfo != null) { if (userInfo != null) {
String userRole = userInfo.getUserRole(); String userRole = userInfo.getUserRole();
UserRoleEnum currentUserRoleEnum = UserRoleEnum.getEnumByValue(userRole); UserRoleEnum currentUserRoleEnum = UserRoleEnum.getEnumByValue(userRole);
throw new BusinessException(ErrorCode.OPERATION_ERROR, "该手机号为"+ currentUserRoleEnum.getText() +"账号"); if (!currentUserRoleEnum.equals(userRoleEnum)) throw new BusinessException(ErrorCode.OPERATION_ERROR, "该手机号为"+ currentUserRoleEnum.getText() +"账号");
else throw new BusinessException(ErrorCode.OPERATION_ERROR, "该手机号已注册");
} }
} }
String code = redisTemplate.opsForValue().get(SystemConstant.VERIFICATION_CODE + ":" + verificationCode); String code = redisTemplate.opsForValue().get(SystemConstant.VERIFICATION_CODE + ":" + verificationCode);