forked from github/cool-admin-java
feat: 编辑用户时用户名/邮箱按规则可修改,修改时校验唯一性
This commit is contained in:
@@ -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), "该用户名已被其他用户使用");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user