设备注册 短信跟邮箱验证

This commit is contained in:
yuhaiming
2026-09-23 16:28:24 +08:00
parent bc1074d194
commit 827b48e954
25 changed files with 645 additions and 67 deletions

View File

@@ -46,6 +46,13 @@ public class AppUserApiServiceImpl implements AppUserApiService {
*/
private static final String USER_NAME_PREFIX = "app_";
/**
* 生成 APP 用户默认昵称,避免直接暴露手机号或邮箱。
*/
private static String defaultNickName() {
return "user_" + System.currentTimeMillis();
}
private final SysUserMapper userMapper;
/**
@@ -138,11 +145,12 @@ public class AppUserApiServiceImpl implements AppUserApiService {
* <li>与后台 {@code sys_user} 的账号名冲突需其恰好命名为 {@code app_<雪花ID>},非自然产生。</li>
* </ul>
* 说明:APP 登录仅依赖 {@code phone_number}(见 {@code selectByPhone}),不依赖 {@code user_name};
* 展示用昵称取 {@code nickName}(默认手机号),故 user_name 采用内部派生值不影响用户展示。
* 展示用昵称取 {@code nickName}(未传时默认生成 {@code user_ + 当前时间戳}),故 user_name
* 采用内部派生值不影响用户展示。
*
* @param phoneNumber 手机号
* @param rawPassword 明文密码
* @param nickName 昵称(为空时默认取手机号)
* @param nickName 昵称(为空时默认生成 {@code user_ + 当前时间戳})
* @return 新建用户主键
*/
@Override
@@ -151,7 +159,7 @@ public class AppUserApiServiceImpl implements AppUserApiService {
SysUser user = new SysUser();
user.setUserId(userId);
user.setUserName(USER_NAME_PREFIX + userId);
user.setNickName(StringUtils.isBlank(nickName) ? phoneNumber : nickName);
user.setNickName(StringUtils.isBlank(nickName) ? defaultNickName() : nickName);
user.setPhoneNumber(phoneNumber);
user.setUserType(UserType.APP_USER.getUserType());
user.setPassword(BCrypt.hashpw(rawPassword));
@@ -210,6 +218,22 @@ public class AppUserApiServiceImpl implements AppUserApiService {
.exists();
}
/**
* 更新 APP 用户邮箱;调用方负责完成验证码和唯一性校验。
* <p>仅写入邮箱字段,不改动昵称及其他用户资料。</p>
*/
@Override
public boolean updateEmail(Long userId, String newEmail) {
if (userId == null || StringUtils.isBlank(newEmail)) {
return false;
}
return userMapper.lambda()
.set(SysUser::getEmail, newEmail)
.eq(SysUser::getUserId, userId)
.eq(SysUser::getUserType, UserType.APP_USER.getUserType())
.updateCount() > 0;
}
/**
* 以邮箱注册一个 APP 用户。
* <p>
@@ -224,7 +248,7 @@ public class AppUserApiServiceImpl implements AppUserApiService {
*
* @param email 邮箱地址(已归一化)
* @param rawPassword 明文密码
* @param nickName 昵称(为空时默认取邮箱)
* @param nickName 昵称(为空时默认生成 {@code user_ + 当前时间戳})
* @return 新建用户主键
*/
@Override
@@ -233,7 +257,7 @@ public class AppUserApiServiceImpl implements AppUserApiService {
SysUser user = new SysUser();
user.setUserId(userId);
user.setUserName(USER_NAME_PREFIX + userId);
user.setNickName(StringUtils.isBlank(nickName) ? email : nickName);
user.setNickName(StringUtils.isBlank(nickName) ? defaultNickName() : nickName);
user.setEmail(email);
user.setUserType(UserType.APP_USER.getUserType());
user.setPassword(BCrypt.hashpw(rawPassword));
@@ -271,7 +295,7 @@ public class AppUserApiServiceImpl implements AppUserApiService {
}
/**
* 换绑手机号。
* 换绑手机号;仅写入手机号字段,不改动昵称及其他用户资料。
*
* @param userId 用户主键
* @param newPhoneNumber 新手机号