feat(login): 实现扫码登录绑定手机号后的用户同步逻辑
- 后端QrLoginServiceImpl新增nextAction字段支持绑定手机号和跳转操作 - 状态检查接口支持绑定手机号和跳转状态,响应字段增加redirectUrl和successMessage - 移除新用户注册时立即同步用户到websopy的逻辑,避免手机号未绑定时缓存无效 - 绑定手机号成功后重新加载数据库用户并同步到websopy,确保手机号完整数据同步 - WxOfficialController中注释和逻辑调整,明确绑定手机号前不进行同步操作 - 补充文档中扫码登录绑定手机号和用户同步相关流程及API接口说明
This commit is contained in:
@@ -20,6 +20,7 @@ import com.gxwebsoft.common.system.entity.User;
|
||||
import com.gxwebsoft.common.system.entity.UserOauth;
|
||||
import com.gxwebsoft.common.system.service.UserOauthService;
|
||||
import com.gxwebsoft.common.system.service.UserService;
|
||||
import com.gxwebsoft.common.system.service.UserSyncService;
|
||||
import com.gxwebsoft.common.system.service.WxService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -59,6 +60,9 @@ public class QrLoginServiceImpl implements QrLoginService {
|
||||
@Autowired(required = false)
|
||||
private UserOauthService userOauthService;
|
||||
|
||||
@Autowired(required = false)
|
||||
private UserSyncService userSyncService;
|
||||
|
||||
@Override
|
||||
public QrLoginGenerateResponse generateQrLoginToken(Integer tenantId) {
|
||||
String token = UUID.randomUUID().toString(true);
|
||||
@@ -291,6 +295,15 @@ public class QrLoginServiceImpl implements QrLoginService {
|
||||
userService.updateUser(user);
|
||||
redisUtil.delete(codeKey);
|
||||
|
||||
// 绑定手机号成功后,同步用户数据到 websopy
|
||||
if (userSyncService != null) {
|
||||
User updatedUser = userService.getAllByUserId(String.valueOf(user.getUserId()));
|
||||
if (updatedUser != null) {
|
||||
userSyncService.syncUserToWebsopy(updatedUser);
|
||||
log.info("扫码绑定手机号后同步用户到websopy成功: userId={}, phone={}", user.getUserId(), user.getPhone());
|
||||
}
|
||||
}
|
||||
|
||||
String accessToken = buildAccessToken(user);
|
||||
qrLoginData.setStatus(QR_LOGIN_STATUS_CONFIRMED);
|
||||
qrLoginData.setUserId(user.getUserId());
|
||||
|
||||
@@ -274,14 +274,7 @@ public class WxOfficialController extends BaseController {
|
||||
userRole.setTenantId(user.getTenantId());
|
||||
userRole.setRoleId(user.getRoleId());
|
||||
userRoleService.save(userRole);
|
||||
// 同步到 websopy - 从数据库重新加载确保有完整数据
|
||||
User savedUser = userService.getAllByUserId(String.valueOf(userId));
|
||||
if (savedUser != null) {
|
||||
userSyncService.syncUserToWebsopy(savedUser);
|
||||
} else {
|
||||
// 如果无法重新加载,使用当前对象
|
||||
userSyncService.syncUserToWebsopy(user);
|
||||
}
|
||||
// 注意:不立即同步到 websopy,等绑定手机号后再同步
|
||||
}
|
||||
System.out.println("新微信公众号用户 userId = " + userId);
|
||||
}
|
||||
@@ -696,14 +689,7 @@ public class WxOfficialController extends BaseController {
|
||||
userRole.setTenantId(user.getTenantId());
|
||||
userRole.setRoleId(user.getRoleId());
|
||||
userRoleService.save(userRole);
|
||||
// 同步到 websopy - 从数据库重新加载确保有完整数据
|
||||
User savedUser = userService.getAllByUserId(String.valueOf(userId));
|
||||
if (savedUser != null) {
|
||||
userSyncService.syncUserToWebsopy(savedUser);
|
||||
} else {
|
||||
// 如果无法重新加载,使用当前对象
|
||||
userSyncService.syncUserToWebsopy(user);
|
||||
}
|
||||
// 注意:不立即同步到 websopy,等绑定手机号后再同步
|
||||
}
|
||||
System.out.println("数据不一致:创建新用户 userId = " + userId);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user