使用手机号为唯一身份进行登录
This commit is contained in:
parent
959e24f51b
commit
279b473793
@ -40,17 +40,13 @@ public class MemberExecute implements MemberLoginEvent, MemberConnectLoginEvent
|
||||
|
||||
@Override
|
||||
public void memberConnectLogin(Member member, ConnectAuthUser authUser) {
|
||||
log.info("unionid:"+authUser.getToken().getUnionId());
|
||||
log.info("openid:"+authUser.getUuid());
|
||||
//保存UnionID
|
||||
if (StrUtil.isNotBlank(authUser.getToken().getUnionId())) {
|
||||
connectService.loginBindUser(member.getId(), authUser.getToken().getUnionId(), authUser.getSource());
|
||||
connectService.loginBindUser(member.getId(), authUser.getToken().getUnionId(), authUser.getSource().name());
|
||||
}
|
||||
//保存OpenID
|
||||
if (StrUtil.isNotBlank(authUser.getUuid())) {
|
||||
log.info("authUser.getSource():"+authUser.getSource());
|
||||
log.info("authUser.getType():"+authUser.getType());
|
||||
SourceEnum sourceEnum = SourceEnum.getSourceEnum(ConnectEnum.valueOf(authUser.getSource()), ClientTypeEnum.valueOf(authUser.getType()));
|
||||
SourceEnum sourceEnum = SourceEnum.getSourceEnum(authUser.getSource(), authUser.getType());
|
||||
connectService.loginBindUser(member.getId(), authUser.getUuid(), sourceEnum.name());
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,9 @@
|
||||
package cn.lili.modules.connect.entity.dto;
|
||||
|
||||
import cn.lili.common.enums.ClientTypeEnum;
|
||||
import cn.lili.modules.connect.config.ConnectAuthEnum;
|
||||
import cn.lili.modules.connect.entity.enums.AuthUserGender;
|
||||
import cn.lili.modules.connect.entity.enums.ConnectEnum;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
@ -65,14 +67,15 @@ public class ConnectAuthUser implements Serializable {
|
||||
private AuthUserGender gender;
|
||||
/**
|
||||
* 用户来源
|
||||
* 例如:QQ、微信、微博等
|
||||
*/
|
||||
private String source;
|
||||
private ConnectEnum source;
|
||||
|
||||
/**
|
||||
* 类型
|
||||
* 类型-客户端类型
|
||||
* 例如:PC、WAP、小程序
|
||||
*/
|
||||
private String type;
|
||||
private ClientTypeEnum type;
|
||||
/**
|
||||
* 用户授权的token信息
|
||||
*/
|
||||
|
@ -69,8 +69,8 @@ public class BaseAuthQQRequest extends BaseAuthRequest {
|
||||
.uuid(openId)
|
||||
.gender(AuthUserGender.getRealGender(object.getString("gender")))
|
||||
.token(authToken)
|
||||
.source(ConnectEnum.QQ.name())
|
||||
.type(ClientTypeEnum.PC.name())
|
||||
.source(ConnectEnum.QQ)
|
||||
.type(ClientTypeEnum.PC)
|
||||
.build();
|
||||
}
|
||||
|
||||
|
@ -62,8 +62,8 @@ public class BaseAuthWeChatPCRequest extends BaseAuthRequest {
|
||||
.uuid(authToken.getOpenId())
|
||||
.gender(AuthUserGender.getWechatRealGender(object.getString("sex")))
|
||||
.token(authToken)
|
||||
.source(ConnectEnum.WECHAT.name())
|
||||
.type(ClientTypeEnum.PC.name())
|
||||
.source(ConnectEnum.WECHAT)
|
||||
.type(ClientTypeEnum.PC)
|
||||
.build();
|
||||
}
|
||||
|
||||
|
@ -64,8 +64,8 @@ public class BaseAuthWeChatRequest extends BaseAuthRequest {
|
||||
.uuid(openId)
|
||||
.gender(AuthUserGender.getWechatRealGender(object.getString("sex")))
|
||||
.token(authToken)
|
||||
.source(ConnectEnum.WECHAT.name())
|
||||
.type(ClientTypeEnum.H5.name())
|
||||
.source(ConnectEnum.WECHAT)
|
||||
.type(ClientTypeEnum.H5)
|
||||
.build();
|
||||
}
|
||||
|
||||
|
@ -12,6 +12,7 @@ import cn.lili.modules.connect.entity.dto.AuthToken;
|
||||
import cn.lili.modules.connect.entity.dto.ConnectAuthUser;
|
||||
import cn.lili.modules.connect.entity.enums.AuthResponseStatus;
|
||||
import cn.lili.modules.connect.entity.enums.AuthUserGender;
|
||||
import cn.lili.modules.connect.entity.enums.ConnectEnum;
|
||||
import cn.lili.modules.connect.exception.AuthException;
|
||||
import cn.lili.common.utils.HttpUtils;
|
||||
import cn.lili.common.utils.IpUtils;
|
||||
@ -72,7 +73,7 @@ public class BaseAuthWeiboRequest extends BaseAuthRequest {
|
||||
.remark(object.getString("description"))
|
||||
.gender(AuthUserGender.getRealGender(object.getString("gender")))
|
||||
.token(authToken)
|
||||
.source(source.toString())
|
||||
.source(ConnectEnum.WEIBO)
|
||||
.build();
|
||||
}
|
||||
|
||||
|
@ -191,15 +191,11 @@ public class ConnectServiceImpl extends ServiceImpl<ConnectMapper, Connect> impl
|
||||
String phone = (String) userInfo.get("purePhoneNumber");
|
||||
connectAuthUser.setUsername("m" + phone);
|
||||
connectAuthUser.setPhone(phone);
|
||||
connectAuthUser.setSource(ClientTypeEnum.WECHAT_MP.name());
|
||||
connectAuthUser.setType(ConnectEnum.WECHAT.name());
|
||||
|
||||
} else {
|
||||
connectAuthUser.setUsername(UuidUtils.getUUID());
|
||||
connectAuthUser.setSource(ClientTypeEnum.WECHAT_MP.name());
|
||||
connectAuthUser.setType(ConnectEnum.WECHAT.name());
|
||||
}
|
||||
|
||||
connectAuthUser.setSource(ConnectEnum.WECHAT);
|
||||
connectAuthUser.setType(ClientTypeEnum.WECHAT_MP);
|
||||
|
||||
AuthToken authToken = new AuthToken();
|
||||
authToken.setUnionId(unionId);
|
||||
@ -270,33 +266,39 @@ public class ConnectServiceImpl extends ServiceImpl<ConnectMapper, Connect> impl
|
||||
*/
|
||||
private Token unionLoginCallback(ConnectAuthUser authUser, boolean longTerm) {
|
||||
|
||||
|
||||
try {
|
||||
LambdaQueryWrapper<Connect> queryWrapper = new LambdaQueryWrapper<Connect>();
|
||||
//使用UnionId登录
|
||||
if (StrUtil.isNotBlank(authUser.getToken().getUnionId())) {
|
||||
queryWrapper.eq(Connect::getUnionId, authUser.getToken().getUnionId())
|
||||
.eq(Connect::getUnionType, authUser.getSource());
|
||||
} else {
|
||||
//使用OpenID登录
|
||||
SourceEnum sourceEnum = SourceEnum.getSourceEnum(ConnectEnum.valueOf(authUser.getType()),
|
||||
ClientTypeEnum.valueOf(authUser.getSource()));
|
||||
queryWrapper.eq(Connect::getUnionId, authUser.getUuid())
|
||||
.eq(Connect::getUnionType, sourceEnum.name());
|
||||
Member member =null;
|
||||
//判断是否传递手机号,如果传递手机号则使用手机号登录
|
||||
if(StrUtil.isNotBlank(authUser.getPhone())){
|
||||
member = memberService.findByMobile(authUser.getPhone());
|
||||
}
|
||||
//如果未查到手机号的会员则使用第三方登录
|
||||
if(member==null){
|
||||
LambdaQueryWrapper<Connect> queryWrapper = new LambdaQueryWrapper<Connect>();
|
||||
//使用UnionId登录
|
||||
if (StrUtil.isNotBlank(authUser.getToken().getUnionId())) {
|
||||
queryWrapper.eq(Connect::getUnionId, authUser.getToken().getUnionId())
|
||||
.eq(Connect::getUnionType, authUser.getSource());
|
||||
} else {
|
||||
//使用OpenID登录
|
||||
SourceEnum sourceEnum = SourceEnum.getSourceEnum(authUser.getSource(), authUser.getType());
|
||||
queryWrapper.eq(Connect::getUnionId, authUser.getUuid())
|
||||
.eq(Connect::getUnionType, sourceEnum.name());
|
||||
}
|
||||
|
||||
//查询绑定关系
|
||||
Connect connect = this.getOne(queryWrapper);
|
||||
Member member = new Member();
|
||||
if (connect == null) {
|
||||
member = memberService.autoRegister(authUser);
|
||||
} else {
|
||||
//查询会员
|
||||
member = memberService.getById(connect.getUserId());
|
||||
//如果未绑定会员,则把刚才查询到的联合登录表数据删除
|
||||
if (member == null) {
|
||||
this.remove(queryWrapper);
|
||||
//查询绑定关系
|
||||
Connect connect = this.getOne(queryWrapper);
|
||||
|
||||
if (connect == null) {
|
||||
member = memberService.autoRegister(authUser);
|
||||
} else {
|
||||
//查询会员
|
||||
member = memberService.getById(connect.getUserId());
|
||||
//如果未绑定会员,则把刚才查询到的联合登录表数据删除
|
||||
if (member == null) {
|
||||
this.remove(queryWrapper);
|
||||
member = memberService.autoRegister(authUser);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user