|
@@ -20,6 +20,7 @@ import cn.iocoder.yudao.module.system.api.oauth2.dto.OAuth2AccessTokenRespDTO;
|
|
import cn.iocoder.yudao.module.system.api.sms.SmsCodeApi;
|
|
import cn.iocoder.yudao.module.system.api.sms.SmsCodeApi;
|
|
import cn.iocoder.yudao.module.system.api.social.SocialUserApi;
|
|
import cn.iocoder.yudao.module.system.api.social.SocialUserApi;
|
|
import cn.iocoder.yudao.module.system.api.social.dto.SocialUserBindReqDTO;
|
|
import cn.iocoder.yudao.module.system.api.social.dto.SocialUserBindReqDTO;
|
|
|
|
+import cn.iocoder.yudao.module.system.api.social.dto.SocialUserRespDTO;
|
|
import cn.iocoder.yudao.module.system.enums.logger.LoginLogTypeEnum;
|
|
import cn.iocoder.yudao.module.system.enums.logger.LoginLogTypeEnum;
|
|
import cn.iocoder.yudao.module.system.enums.logger.LoginResultEnum;
|
|
import cn.iocoder.yudao.module.system.enums.logger.LoginResultEnum;
|
|
import cn.iocoder.yudao.module.system.enums.oauth2.OAuth2ClientConstants;
|
|
import cn.iocoder.yudao.module.system.enums.oauth2.OAuth2ClientConstants;
|
|
@@ -65,13 +66,14 @@ public class MemberAuthServiceImpl implements MemberAuthService {
|
|
MemberUserDO user = login0(reqVO.getMobile(), reqVO.getPassword());
|
|
MemberUserDO user = login0(reqVO.getMobile(), reqVO.getPassword());
|
|
|
|
|
|
// 如果 socialType 非空,说明需要绑定社交用户
|
|
// 如果 socialType 非空,说明需要绑定社交用户
|
|
|
|
+ String openid = null;
|
|
if (reqVO.getSocialType() != null) {
|
|
if (reqVO.getSocialType() != null) {
|
|
- socialUserApi.bindSocialUser(new SocialUserBindReqDTO(user.getId(), getUserType().getValue(),
|
|
|
|
|
|
+ openid = socialUserApi.bindSocialUser(new SocialUserBindReqDTO(user.getId(), getUserType().getValue(),
|
|
reqVO.getSocialType(), reqVO.getSocialCode(), reqVO.getSocialState()));
|
|
reqVO.getSocialType(), reqVO.getSocialCode(), reqVO.getSocialState()));
|
|
}
|
|
}
|
|
|
|
|
|
// 创建 Token 令牌,记录登录日志
|
|
// 创建 Token 令牌,记录登录日志
|
|
- return createTokenAfterLoginSuccess(user, reqVO.getMobile(), LoginLogTypeEnum.LOGIN_MOBILE);
|
|
|
|
|
|
+ return createTokenAfterLoginSuccess(user, reqVO.getMobile(), LoginLogTypeEnum.LOGIN_MOBILE, openid);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -86,32 +88,33 @@ public class MemberAuthServiceImpl implements MemberAuthService {
|
|
Assert.notNull(user, "获取用户失败,结果为空");
|
|
Assert.notNull(user, "获取用户失败,结果为空");
|
|
|
|
|
|
// 如果 socialType 非空,说明需要绑定社交用户
|
|
// 如果 socialType 非空,说明需要绑定社交用户
|
|
|
|
+ String openid = null;
|
|
if (reqVO.getSocialType() != null) {
|
|
if (reqVO.getSocialType() != null) {
|
|
- socialUserApi.bindSocialUser(new SocialUserBindReqDTO(user.getId(), getUserType().getValue(),
|
|
|
|
|
|
+ openid = socialUserApi.bindSocialUser(new SocialUserBindReqDTO(user.getId(), getUserType().getValue(),
|
|
reqVO.getSocialType(), reqVO.getSocialCode(), reqVO.getSocialState()));
|
|
reqVO.getSocialType(), reqVO.getSocialCode(), reqVO.getSocialState()));
|
|
}
|
|
}
|
|
|
|
|
|
// 创建 Token 令牌,记录登录日志
|
|
// 创建 Token 令牌,记录登录日志
|
|
- return createTokenAfterLoginSuccess(user, reqVO.getMobile(), LoginLogTypeEnum.LOGIN_SMS);
|
|
|
|
|
|
+ return createTokenAfterLoginSuccess(user, reqVO.getMobile(), LoginLogTypeEnum.LOGIN_SMS, openid);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public AppAuthLoginRespVO socialLogin(AppAuthSocialLoginReqVO reqVO) {
|
|
public AppAuthLoginRespVO socialLogin(AppAuthSocialLoginReqVO reqVO) {
|
|
// 使用 code 授权码,进行登录。然后,获得到绑定的用户编号
|
|
// 使用 code 授权码,进行登录。然后,获得到绑定的用户编号
|
|
- Long userId = socialUserApi.getBindUserId(UserTypeEnum.MEMBER.getValue(), reqVO.getType(),
|
|
|
|
|
|
+ SocialUserRespDTO socialUser = socialUserApi.getSocialUser(UserTypeEnum.MEMBER.getValue(), reqVO.getType(),
|
|
reqVO.getCode(), reqVO.getState());
|
|
reqVO.getCode(), reqVO.getState());
|
|
- if (userId == null) {
|
|
|
|
|
|
+ if (socialUser == null) {
|
|
throw exception(AUTH_THIRD_LOGIN_NOT_BIND);
|
|
throw exception(AUTH_THIRD_LOGIN_NOT_BIND);
|
|
}
|
|
}
|
|
|
|
|
|
// 自动登录
|
|
// 自动登录
|
|
- MemberUserDO user = userService.getUser(userId);
|
|
|
|
|
|
+ MemberUserDO user = userService.getUser(socialUser.getUserId());
|
|
if (user == null) {
|
|
if (user == null) {
|
|
throw exception(USER_NOT_EXISTS);
|
|
throw exception(USER_NOT_EXISTS);
|
|
}
|
|
}
|
|
|
|
|
|
// 创建 Token 令牌,记录登录日志
|
|
// 创建 Token 令牌,记录登录日志
|
|
- return createTokenAfterLoginSuccess(user, user.getMobile(), LoginLogTypeEnum.LOGIN_SOCIAL);
|
|
|
|
|
|
+ return createTokenAfterLoginSuccess(user, user.getMobile(), LoginLogTypeEnum.LOGIN_SOCIAL, socialUser.getOpenid());
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -129,14 +132,15 @@ public class MemberAuthServiceImpl implements MemberAuthService {
|
|
Assert.notNull(user, "获取用户失败,结果为空");
|
|
Assert.notNull(user, "获取用户失败,结果为空");
|
|
|
|
|
|
// 绑定社交用户
|
|
// 绑定社交用户
|
|
- socialUserApi.bindSocialUser(new SocialUserBindReqDTO(user.getId(), getUserType().getValue(),
|
|
|
|
|
|
+ String openid = socialUserApi.bindSocialUser(new SocialUserBindReqDTO(user.getId(), getUserType().getValue(),
|
|
SocialTypeEnum.WECHAT_MINI_APP.getType(), reqVO.getLoginCode(), ""));
|
|
SocialTypeEnum.WECHAT_MINI_APP.getType(), reqVO.getLoginCode(), ""));
|
|
|
|
|
|
// 创建 Token 令牌,记录登录日志
|
|
// 创建 Token 令牌,记录登录日志
|
|
- return createTokenAfterLoginSuccess(user, user.getMobile(), LoginLogTypeEnum.LOGIN_SOCIAL);
|
|
|
|
|
|
+ return createTokenAfterLoginSuccess(user, user.getMobile(), LoginLogTypeEnum.LOGIN_SOCIAL, openid);
|
|
}
|
|
}
|
|
|
|
|
|
- private AppAuthLoginRespVO createTokenAfterLoginSuccess(MemberUserDO user, String mobile, LoginLogTypeEnum logType) {
|
|
|
|
|
|
+ private AppAuthLoginRespVO createTokenAfterLoginSuccess(MemberUserDO user, String mobile,
|
|
|
|
+ LoginLogTypeEnum logType, String openid) {
|
|
// 插入登陆日志
|
|
// 插入登陆日志
|
|
createLoginLog(user.getId(), mobile, logType, LoginResultEnum.SUCCESS);
|
|
createLoginLog(user.getId(), mobile, logType, LoginResultEnum.SUCCESS);
|
|
// 创建 Token 令牌
|
|
// 创建 Token 令牌
|
|
@@ -144,7 +148,7 @@ public class MemberAuthServiceImpl implements MemberAuthService {
|
|
.setUserId(user.getId()).setUserType(getUserType().getValue())
|
|
.setUserId(user.getId()).setUserType(getUserType().getValue())
|
|
.setClientId(OAuth2ClientConstants.CLIENT_ID_DEFAULT));
|
|
.setClientId(OAuth2ClientConstants.CLIENT_ID_DEFAULT));
|
|
// 构建返回结果
|
|
// 构建返回结果
|
|
- return AuthConvert.INSTANCE.convert(accessTokenRespDTO);
|
|
|
|
|
|
+ return AuthConvert.INSTANCE.convert(accessTokenRespDTO, openid);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -231,7 +235,7 @@ public class MemberAuthServiceImpl implements MemberAuthService {
|
|
public AppAuthLoginRespVO refreshToken(String refreshToken) {
|
|
public AppAuthLoginRespVO refreshToken(String refreshToken) {
|
|
OAuth2AccessTokenRespDTO accessTokenDO = oauth2TokenApi.refreshAccessToken(refreshToken,
|
|
OAuth2AccessTokenRespDTO accessTokenDO = oauth2TokenApi.refreshAccessToken(refreshToken,
|
|
OAuth2ClientConstants.CLIENT_ID_DEFAULT);
|
|
OAuth2ClientConstants.CLIENT_ID_DEFAULT);
|
|
- return AuthConvert.INSTANCE.convert(accessTokenDO);
|
|
|
|
|
|
+ return AuthConvert.INSTANCE.convert(accessTokenDO, null);
|
|
}
|
|
}
|
|
|
|
|
|
private void createLogoutLog(Long userId) {
|
|
private void createLogoutLog(Long userId) {
|