From d25fa959b64c344b4c5fca7bf0dac220b2d1fd8d Mon Sep 17 00:00:00 2001 From: chen-xin-zhi <3588068430@qq.com> Date: Sat, 16 Aug 2025 20:06:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=B3=A8=E5=86=8Cbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/course/CourseController.java | 2 +- .../exception/GlobalExceptionHandler.java | 7 +++++ .../userInfo/impl/UserInfoServiceImpl.java | 29 ++++++++++++++----- 3 files changed, 30 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/greenorange/promotion/controller/course/CourseController.java b/src/main/java/com/greenorange/promotion/controller/course/CourseController.java index afcf3cc..30e738a 100644 --- a/src/main/java/com/greenorange/promotion/controller/course/CourseController.java +++ b/src/main/java/com/greenorange/promotion/controller/course/CourseController.java @@ -72,7 +72,7 @@ public class CourseController { // 降序排序并取前四个元素 courseList = courseList.stream() .sorted((course1, course2) -> Integer.compare(course2.getOrderCount(), course1.getOrderCount())) // 降序排序 - .limit(4) // 取前四个元素 + .limit(6) // 取前六个元素 .collect(Collectors.toList()); List courseCardVOS = commonService.convertList(courseList, CourseCardVO.class); return ResultUtils.success(courseCardVOS); diff --git a/src/main/java/com/greenorange/promotion/exception/GlobalExceptionHandler.java b/src/main/java/com/greenorange/promotion/exception/GlobalExceptionHandler.java index 21d192f..9a4e88b 100644 --- a/src/main/java/com/greenorange/promotion/exception/GlobalExceptionHandler.java +++ b/src/main/java/com/greenorange/promotion/exception/GlobalExceptionHandler.java @@ -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, "未知异常"); + } + + } diff --git a/src/main/java/com/greenorange/promotion/service/userInfo/impl/UserInfoServiceImpl.java b/src/main/java/com/greenorange/promotion/service/userInfo/impl/UserInfoServiceImpl.java index b9d8e11..efea989 100644 --- a/src/main/java/com/greenorange/promotion/service/userInfo/impl/UserInfoServiceImpl.java +++ b/src/main/java/com/greenorange/promotion/service/userInfo/impl/UserInfoServiceImpl.java @@ -39,10 +39,7 @@ import org.springframework.transaction.annotation.Transactional; import java.io.IOException; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.TimeUnit; import java.util.function.Function; import java.util.stream.Collectors; @@ -186,13 +183,30 @@ public class UserInfoServiceImpl extends ServiceImpl 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)) + 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, "邀请码错误"); // 保存用户 UserInfo myUserInfo = commonService.copyProperties(userInfoRegisterRequest, UserInfo.class); myUserInfo.setParentUserId(parentUserInfo.getId()); - myUserInfo.setInvitationCode(RandomUtil.randomNumbers(6)); + // 获取唯一的邀请码 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.select(UserInfo::getInvitationCode); + lambdaQueryWrapper.in(UserInfo::getUserRole, UserConstant.DEFAULT_ROLE, UserConstant.STAFF_ROLE, UserConstant.SUPERVISOR_ROLE, UserConstant.MANAGER_ROLE); + List 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.setUserRole(userRole); myUserInfo.setUserAvatar(UserConstant.USER_DEFAULT_AVATAR); @@ -380,7 +394,8 @@ public class UserInfoServiceImpl extends ServiceImpl if (userInfo != null) { String userRole = userInfo.getUserRole(); 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);