确保手机号在系统中的全局唯一性,避免登录冲突
| 功能 | 校验状态 | 说明 |
|---|---|---|
| ✅ 用户添加 | 已有 | Controller层校验 |
| ✅ 用户修改 | 已有 | Controller层校验 |
| ✅ 用户导入 | 新增 | Service层校验 |
| ✅ 用户同步(新增) | 新增 | Service层校验 |
| ✅ 用户同步(更新) | 新增 | Service层校验 |
方法: importUser
// 新增用户:校验手机号唯一性
if (StringUtils.isNotEmpty(user.getPhonenumber())) {
SysUser phoneCheck = userMapper.checkPhoneUnique(user.getPhonenumber());
if (StringUtils.isNotNull(phoneCheck)) {
// 拒绝导入,记录错误
}
}
// 更新用户:校验手机号唯一性(排除自己)
if (StringUtils.isNotEmpty(user.getPhonenumber())) {
SysUser phoneCheck = userMapper.checkPhoneUnique(user.getPhonenumber());
if (StringUtils.isNotNull(phoneCheck) && !phoneCheck.getUserId().equals(u.getUserId())) {
// 拒绝更新,记录错误
}
}
// 创建前检查
SysUser phoneCheck = sysUserMapper.checkPhoneUnique(dto.getPhonenumber());
if (StringUtils.isNotNull(phoneCheck)) {
log.warn("手机号重复,跳过创建");
return; // 跳过
}
// 更新前检查(排除自己)
SysUser phoneCheck = sysUserMapper.checkPhoneUnique(dto.getPhonenumber());
if (StringUtils.isNotNull(phoneCheck) && !phoneCheck.getUserId().equals(existingUser.getUserId())) {
log.warn("手机号被占用,跳过手机号更新");
// 继续更新其他字段
}
账号 zhangsan 导入失败:手机号码 13800138000 已被用户 lisi 使用
创建用户失败,手机号 13800138000 已被用户 lisi 使用,跳过用户 zhangsan
CREATE UNIQUE INDEX idx_sys_user_phonenumber
ON sys_user(phonenumber)
WHERE phonenumber IS NOT NULL
AND phonenumber != ''
AND del_flag = '0';