mirror of
http://git.pig4cloud.com/pig/pigx.git
synced 2026-11-08 04:39:00 +08:00
feat(pigx-upms-biz): 小程序登录支持手机号不存在时自动注册
- 当用户不存在且系统注册功能开启时,自动以手机号注册新用户并返回用户信息 - 初始密码使用10位随机数字,注册逻辑与SysRegisterController保持一致
This commit is contained in:
1 parent
8062730ec3
commit
76ea7f45ac
1 file changed
+29
-4
+29
-4
@@ -17,6 +17,7 @@
|
||||
|
||||
package com.pig4cloud.pigx.admin.handler;
|
||||
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import cn.hutool.http.HttpUtil;
|
||||
@@ -24,6 +25,7 @@ import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.pig4cloud.pigx.admin.api.constant.UpmsErrorCodes;
|
||||
import com.pig4cloud.pigx.admin.api.dto.RegisterUserDTO;
|
||||
import com.pig4cloud.pigx.admin.api.dto.UserDTO;
|
||||
import com.pig4cloud.pigx.admin.api.dto.UserInfo;
|
||||
import com.pig4cloud.pigx.admin.api.entity.SysSocialDetails;
|
||||
@@ -33,10 +35,12 @@ import com.pig4cloud.pigx.admin.service.SysUserService;
|
||||
import com.pig4cloud.pigx.common.core.constant.CacheConstants;
|
||||
import com.pig4cloud.pigx.common.core.constant.SecurityConstants;
|
||||
import com.pig4cloud.pigx.common.core.constant.enums.LoginTypeEnum;
|
||||
import com.pig4cloud.pigx.common.core.constant.enums.YesNoEnum;
|
||||
import com.pig4cloud.pigx.common.core.exception.CheckedException;
|
||||
import com.pig4cloud.pigx.common.core.util.MsgUtils;
|
||||
import com.pig4cloud.pigx.common.core.util.R;
|
||||
import com.pig4cloud.pigx.common.data.cache.RedisUtils;
|
||||
import com.pig4cloud.pigx.common.data.resolver.ParamResolver;
|
||||
import com.pig4cloud.pigx.common.data.tenant.TenantContextHolder;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -117,9 +121,11 @@ public class MiniAppLoginHandler extends AbstractLoginHandler {
|
||||
|
||||
/**
|
||||
* 根据手机号获取用户信息。
|
||||
* <p>
|
||||
* 用户不存在且注册功能(SITE_REGISTER_ENABLE)开启时,自动以手机号注册新用户后返回。
|
||||
*
|
||||
* @param phone 用户手机号
|
||||
* @return 用户信息对象,未找到时返回null
|
||||
* @return 用户信息对象,未找到且无法自动注册时返回null
|
||||
*/
|
||||
@Override
|
||||
public UserInfo info(String phone) {
|
||||
@@ -133,12 +139,31 @@ public class MiniAppLoginHandler extends AbstractLoginHandler {
|
||||
|
||||
R<UserInfo> userInfoR = sysUserService.getUserInfo(userDTO);
|
||||
|
||||
if (userInfoR.getData() == null) {
|
||||
log.info("小程序手机号不存在用户:{}", phone);
|
||||
if (userInfoR.getData() != null) {
|
||||
return userInfoR.getData();
|
||||
}
|
||||
|
||||
// 用户不存在:注册功能开启时自动注册,开关判断与 SysRegisterController 保持一致
|
||||
if (!YesNoEnum.YES.getCode().equals(ParamResolver.getStr("SITE_REGISTER_ENABLE", YesNoEnum.NO.getCode()))) {
|
||||
log.info("小程序手机号不存在用户且未开启注册功能:{}", phone);
|
||||
return null;
|
||||
}
|
||||
|
||||
return userInfoR.getData();
|
||||
RegisterUserDTO registerUserDTO = new RegisterUserDTO();
|
||||
registerUserDTO.setUsername(phone);
|
||||
registerUserDTO.setPhone(phone);
|
||||
// 初始密码为 10 位随机数字
|
||||
registerUserDTO.setPassword(RandomUtil.randomNumbers(10));
|
||||
registerUserDTO.setTenantId(TenantContextHolder.getTenantId());
|
||||
|
||||
R<Boolean> registerResult = sysUserService.registerUser(registerUserDTO);
|
||||
if (!registerResult.isOk()) {
|
||||
log.warn("小程序自动注册用户失败:{},{}", phone, registerResult.getMsg());
|
||||
return null;
|
||||
}
|
||||
|
||||
log.info("小程序自动注册用户成功:{}", phone);
|
||||
return sysUserService.getUserInfo(userDTO).getData();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in new issue
Block a user