From 44c841f9a0fe2ad751e9ba5d273bdbcae60c4411 Mon Sep 17 00:00:00 2001 From: Fdily <2949549024@qq.com> Date: Wed, 29 Jul 2026 15:01:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4roll=E6=B3=A8=E5=86=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- odcs2.com/src/views/Home/common/login.vue | 4 ++-- .../admin/controller/TtUserController.java | 6 +++++- .../service/impl/ApiRegisterServiceImpl.java | 21 ++++++++++++++----- 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/odcs2.com/src/views/Home/common/login.vue b/odcs2.com/src/views/Home/common/login.vue index 7fc1563..8c94f28 100644 --- a/odcs2.com/src/views/Home/common/login.vue +++ b/odcs2.com/src/views/Home/common/login.vue @@ -81,7 +81,7 @@
注册
- +
@@ -276,7 +276,7 @@ export default { } if (this.registerform.phoneNumber == "") { this.$message({ - message: "请输入账号", + message: "请输入手机号", type: "warning", customClass: "log_warning", }); diff --git a/skins-service/service-admin/src/main/java/com/ruoyi/admin/controller/TtUserController.java b/skins-service/service-admin/src/main/java/com/ruoyi/admin/controller/TtUserController.java index bc00f80..8ef528d 100644 --- a/skins-service/service-admin/src/main/java/com/ruoyi/admin/controller/TtUserController.java +++ b/skins-service/service-admin/src/main/java/com/ruoyi/admin/controller/TtUserController.java @@ -115,7 +115,11 @@ public class TtUserController extends BaseController { @DeleteMapping("/{userIds}") public AjaxResult remove(@PathVariable Long[] userIds) { - return toAjax(userService.removeByIds(Arrays.asList(userIds))); + // 直接从数据库物理删除,避免逻辑删除后手机号被唯一索引占用无法重新注册 + for (Long userId : userIds) { + ttUserMapper.removeByUserId(userId.intValue()); + } + return toAjax(userIds.length); } @GetMapping("/online/list") diff --git a/skins-service/service-user/src/main/java/com/ruoyi/user/service/impl/ApiRegisterServiceImpl.java b/skins-service/service-user/src/main/java/com/ruoyi/user/service/impl/ApiRegisterServiceImpl.java index 8ee3c94..4de09ca 100644 --- a/skins-service/service-user/src/main/java/com/ruoyi/user/service/impl/ApiRegisterServiceImpl.java +++ b/skins-service/service-user/src/main/java/com/ruoyi/user/service/impl/ApiRegisterServiceImpl.java @@ -79,12 +79,17 @@ public class ApiRegisterServiceImpl implements ApiRegisterService { if (!userService.checkPhoneUnique(ttUser)) return "注册失败," + "手机号'" + phoneNumber + "'已被注册!"; if (!userService.checkUserNameUnique(ttUser)) return "注册失败," + "用户名'" + ttUser.getUserName() + "'已存在!"; + // 唯一索引对已逻辑删除的用户也生效,这里不区分 del_flag 再检查一次,避免插入时报唯一索引冲突 + Long existCount = new LambdaQueryChainWrapper<>(userService.getBaseMapper()) + .eq(TtUser::getUserName, phoneNumber) + .count(); + if (existCount != null && existCount > 0) { + return "注册失败,手机号'" + phoneNumber + "'已被注册!"; + } ttUser.setNickName(nickName); ttUser.setUserType("02"); - List userAvatarList = new LambdaQueryChainWrapper<>(userAvatarService.getBaseMapper()).eq(TtUserAvatar::getIsDefault, "1").list(); - if (!userAvatarList.isEmpty()) { - ttUser.setAvatar(RandomUtil.choice(userAvatarList).getAvatar()); - } else ttUser.setAvatar(""); + // 注册用户统一使用前端默认头像,不再随机分配头像 + ttUser.setAvatar(""); ttUser.setPassword(SecurityUtils.encryptPassword(password)); String registerRedPacketStr = configService.selectConfigByKey("registerRedPacket"); BigDecimal registerRedPacket = new BigDecimal(registerRedPacketStr); @@ -109,7 +114,13 @@ public class ApiRegisterServiceImpl implements ApiRegisterService { // String validateCaptcha = apiSmsService.validateCaptcha(code.trim(), "ApiRegister_" + phoneNumber); // if (!"success".equals(validateCaptcha)) return validateCaptcha; ttUser.setUserId(userIdGenerator.generateUserId()); - boolean regFlag = userService.save(ttUser); + boolean regFlag; + try { + regFlag = userService.save(ttUser); + } catch (org.springframework.dao.DuplicateKeyException e) { + // 并发注册或历史删除用户占用唯一索引时的兜底提示 + return "注册失败,手机号'" + phoneNumber + "'已被注册!"; + } if (!regFlag) return "注册失败,请联系系统管理人员"; else { if (BigDecimal.ZERO.compareTo(registerRedPacket) < 0) {