feat: 编辑用户时用户名/邮箱按规则可修改,修改时校验唯一性

This commit is contained in:
OpenCode
2026-07-22 22:31:45 +08:00
parent f42c2433d0
commit 2a9453af15
3 changed files with 36 additions and 2 deletions
@@ -44,8 +44,22 @@ public class AdminUserInfoController extends BaseController<UserInfoService, Use
Long id = t.getId();
if (id != null) {
UserInfoEntity before = userInfoService.getById(id);
if (before != null && !ObjUtil.equals(before.getStatus(), t.getStatus())) {
coolCache.del("app:userDetails:" + id);
if (before != null) {
if (!ObjUtil.equals(before.getStatus(), t.getStatus())) {
coolCache.del("app:userDetails:" + id);
}
if (ObjUtil.isNotEmpty(before.getUsername())) {
t.setUsername(null);
}
if (ObjUtil.isNotEmpty(before.getUsername()) && ObjUtil.isNotEmpty(before.getEmail())) {
t.setEmail(null);
}
if (ObjUtil.isNotEmpty(t.getEmail()) && !ObjUtil.equals(t.getEmail(), before.getEmail())) {
userInfoService.checkEmailUnique(t.getEmail(), id);
}
if (ObjUtil.isNotEmpty(t.getUsername()) && !ObjUtil.equals(t.getUsername(), before.getUsername())) {
userInfoService.checkUsernameUnique(t.getUsername(), id);
}
}
}
return super.update(t, requestParams);
@@ -47,4 +47,8 @@ public interface UserInfoService extends BaseService<UserInfoEntity> {
void checkLogoffBeforeDelete(Long userId);
String resetPassword(Long userId);
void checkEmailUnique(String email, Long excludeId);
void checkUsernameUnique(String username, Long excludeId);
}
@@ -112,4 +112,20 @@ public class UserInfoServiceImpl extends BaseServiceImpl<UserInfoMapper, UserInf
info.updateById();
return newPassword;
}
@Override
public void checkEmailUnique(String email, Long excludeId) {
UserInfoEntity existing = getOne(QueryWrapper.create()
.eq(UserInfoEntity::getEmail, email)
.ne(UserInfoEntity::getId, excludeId));
CoolPreconditions.check(ObjUtil.isNotEmpty(existing), "该邮箱已被其他用户使用");
}
@Override
public void checkUsernameUnique(String username, Long excludeId) {
UserInfoEntity existing = getOne(QueryWrapper.create()
.eq(UserInfoEntity::getUsername, username)
.ne(UserInfoEntity::getId, excludeId));
CoolPreconditions.check(ObjUtil.isNotEmpty(existing), "该用户名已被其他用户使用");
}
}