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