From 825a575deb96cce822468bb9d9ac3e4eea0f91d1 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期四, 17 九月 2026 08:58:14 +0800
Subject: [PATCH] update
---
backend/src/main/java/com/tourguide/modules/user/service/GuideUserService.java | 27 +++++++++++++++++++++------
1 files changed, 21 insertions(+), 6 deletions(-)
diff --git a/backend/src/main/java/com/tourguide/modules/user/service/GuideUserService.java b/backend/src/main/java/com/tourguide/modules/user/service/GuideUserService.java
index 7ed8357..205c7d4 100644
--- a/backend/src/main/java/com/tourguide/modules/user/service/GuideUserService.java
+++ b/backend/src/main/java/com/tourguide/modules/user/service/GuideUserService.java
@@ -332,30 +332,45 @@
}
private void anonymizeCancelledGuide(GuideUser user) {
- user.setUsername("deleted_" + UUID.randomUUID().toString().replace("-", "").substring(0, 24));
- user.setMobile(null);
- user.setCertificateNo(null);
- user.setIdCardNo(null);
- userMapper.updateById(user);
+ String deletedUsername = "deleted_" + UUID.randomUUID().toString().replace("-", "").substring(0, 24);
+ userMapper.anonymizeCancelledGuide(user.getId(), deletedUsername);
}
private void ensureUniqueGuideIdentity(GuideApplication application, GuideUser existingUser) {
+ if (StringUtils.hasText(application.getIdCardNo())) {
+ String idCardNo = application.getIdCardNo().trim().toUpperCase();
+ // 兼容旧注销数据:释放已注销账号占用的身份证唯一索引。
+ userMapper.clearCancelledIdentityByIdCard(idCardNo);
+ // 兼容旧驳回数据:释放待审核账号占用的身份证唯一索引,避免其阻塞重新注册。
+ userMapper.clearPendingIdentityByIdCard(idCardNo);
+ }
if (StringUtils.hasText(application.getCertificateNo())
&& userMapper.selectCount(new LambdaQueryWrapper<GuideUser>()
.eq(GuideUser::getCertificateNo, application.getCertificateNo())
+ .ne(GuideUser::getStatus, STATUS_CANCELLED)
.ne(existingUser != null && existingUser.getId() != null,
GuideUser::getId, existingUser == null ? null : existingUser.getId())) > 0) {
throw new BusinessException(409, "该导游证号已存在导游账号");
}
if (StringUtils.hasText(application.getIdCardNo())
&& userMapper.selectCount(new LambdaQueryWrapper<GuideUser>()
- .eq(GuideUser::getIdCardNo, application.getIdCardNo())
+ .eq(GuideUser::getIdCardNo, application.getIdCardNo().trim().toUpperCase())
+ .ne(GuideUser::getStatus, STATUS_CANCELLED)
.ne(existingUser != null && existingUser.getId() != null,
GuideUser::getId, existingUser == null ? null : existingUser.getId())) > 0) {
throw new BusinessException(409, "该身份证号已存在导游账号");
}
}
+ /** 申请被驳回后释放待审核账号占用的身份证/导游证唯一索引,避免其阻塞重新注册。 */
+ public void releaseIdentityForRejectedApplication(String mobile) {
+ if (!StringUtils.hasText(mobile)) return;
+ GuideUser user = findByPhone(mobile);
+ if (user != null && Integer.valueOf(STATUS_PENDING).equals(user.getStatus())) {
+ userMapper.releasePendingIdentity(user.getId());
+ }
+ }
+
private void copyApplicationProfile(GuideUser user, GuideApplication application) {
user.setRealName(application.getRealName());
user.setMobile(application.getMobile());
--
Gitblit v1.7.1