From 76ea7f45acbfa7bf3a42d7585464bbd20b2b4b77 Mon Sep 17 00:00:00 2001 From: PIGCLOUD Date: Sat, 4 Jul 2026 11:09:12 +0800 Subject: [PATCH] =?UTF-8?q?feat(pigx-upms-biz):=20=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F=E7=99=BB=E5=BD=95=E6=94=AF=E6=8C=81=E6=89=8B=E6=9C=BA?= =?UTF-8?q?=E5=8F=B7=E4=B8=8D=E5=AD=98=E5=9C=A8=E6=97=B6=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E6=B3=A8=E5=86=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 当用户不存在且系统注册功能开启时,自动以手机号注册新用户并返回用户信息 - 初始密码使用10位随机数字,注册逻辑与SysRegisterController保持一致 --- .../admin/handler/MiniAppLoginHandler.java | 33 ++++++++++++++++--- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/MiniAppLoginHandler.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/MiniAppLoginHandler.java index ea3ff832b..e94fec39e 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/MiniAppLoginHandler.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/MiniAppLoginHandler.java @@ -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 { /** * 根据手机号获取用户信息。 + *

+ * 用户不存在且注册功能(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 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 registerResult = sysUserService.registerUser(registerUserDTO); + if (!registerResult.isOk()) { + log.warn("小程序自动注册用户失败:{},{}", phone, registerResult.getMsg()); + return null; + } + + log.info("小程序自动注册用户成功:{}", phone); + return sysUserService.getUserInfo(userDTO).getData(); } /**