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) {