mirror of
http://git.pig4cloud.com/pig/pigx.git
synced 2026-11-13 22:09: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;
|
package com.pig4cloud.pigx.admin.handler;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.RandomUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.http.HttpRequest;
|
import cn.hutool.http.HttpRequest;
|
||||||
import cn.hutool.http.HttpUtil;
|
import cn.hutool.http.HttpUtil;
|
||||||
@@ -24,6 +25,7 @@ import cn.hutool.json.JSONObject;
|
|||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.pig4cloud.pigx.admin.api.constant.UpmsErrorCodes;
|
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.UserDTO;
|
||||||
import com.pig4cloud.pigx.admin.api.dto.UserInfo;
|
import com.pig4cloud.pigx.admin.api.dto.UserInfo;
|
||||||
import com.pig4cloud.pigx.admin.api.entity.SysSocialDetails;
|
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.CacheConstants;
|
||||||
import com.pig4cloud.pigx.common.core.constant.SecurityConstants;
|
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.LoginTypeEnum;
|
||||||
|
import com.pig4cloud.pigx.common.core.constant.enums.YesNoEnum;
|
||||||
import com.pig4cloud.pigx.common.core.exception.CheckedException;
|
import com.pig4cloud.pigx.common.core.exception.CheckedException;
|
||||||
import com.pig4cloud.pigx.common.core.util.MsgUtils;
|
import com.pig4cloud.pigx.common.core.util.MsgUtils;
|
||||||
import com.pig4cloud.pigx.common.core.util.R;
|
import com.pig4cloud.pigx.common.core.util.R;
|
||||||
import com.pig4cloud.pigx.common.data.cache.RedisUtils;
|
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 com.pig4cloud.pigx.common.data.tenant.TenantContextHolder;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -117,9 +121,11 @@ public class MiniAppLoginHandler extends AbstractLoginHandler {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据手机号获取用户信息。
|
* 根据手机号获取用户信息。
|
||||||
|
* <p>
|
||||||
|
* 用户不存在且注册功能(SITE_REGISTER_ENABLE)开启时,自动以手机号注册新用户后返回。
|
||||||
*
|
*
|
||||||
* @param phone 用户手机号
|
* @param phone 用户手机号
|
||||||
* @return 用户信息对象,未找到时返回null
|
* @return 用户信息对象,未找到且无法自动注册时返回null
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public UserInfo info(String phone) {
|
public UserInfo info(String phone) {
|
||||||
@@ -133,12 +139,31 @@ public class MiniAppLoginHandler extends AbstractLoginHandler {
|
|||||||
|
|
||||||
R<UserInfo> userInfoR = sysUserService.getUserInfo(userDTO);
|
R<UserInfo> userInfoR = sysUserService.getUserInfo(userDTO);
|
||||||
|
|
||||||
if (userInfoR.getData() == null) {
|
if (userInfoR.getData() != null) {
|
||||||
log.info("小程序手机号不存在用户:{}", phone);
|
return userInfoR.getData();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 用户不存在:注册功能开启时自动注册,开关判断与 SysRegisterController 保持一致
|
||||||
|
if (!YesNoEnum.YES.getCode().equals(ParamResolver.getStr("SITE_REGISTER_ENABLE", YesNoEnum.NO.getCode()))) {
|
||||||
|
log.info("小程序手机号不存在用户且未开启注册功能:{}", phone);
|
||||||
return null;
|
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