From 279b47379369632551bfe739ec3c308597fbd9d6 Mon Sep 17 00:00:00 2001 From: "pikachu1995@126.com" Date: Tue, 25 Apr 2023 17:59:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=BF=E7=94=A8=E6=89=8B=E6=9C=BA=E5=8F=B7?= =?UTF-8?q?=E4=B8=BA=E5=94=AF=E4=B8=80=E8=BA=AB=E4=BB=BD=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/lili/event/impl/MemberExecute.java | 8 +-- .../connect/entity/dto/ConnectAuthUser.java | 9 ++- .../connect/request/BaseAuthQQRequest.java | 4 +- .../request/BaseAuthWeChatPCRequest.java | 4 +- .../request/BaseAuthWeChatRequest.java | 4 +- .../connect/request/BaseAuthWeiboRequest.java | 3 +- .../serviceimpl/ConnectServiceImpl.java | 60 ++++++++++--------- 7 files changed, 47 insertions(+), 45 deletions(-) diff --git a/consumer/src/main/java/cn/lili/event/impl/MemberExecute.java b/consumer/src/main/java/cn/lili/event/impl/MemberExecute.java index 27ce3bf75..838a097e1 100644 --- a/consumer/src/main/java/cn/lili/event/impl/MemberExecute.java +++ b/consumer/src/main/java/cn/lili/event/impl/MemberExecute.java @@ -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()); } diff --git a/framework/src/main/java/cn/lili/modules/connect/entity/dto/ConnectAuthUser.java b/framework/src/main/java/cn/lili/modules/connect/entity/dto/ConnectAuthUser.java index a3b011d37..0c1d5e83a 100644 --- a/framework/src/main/java/cn/lili/modules/connect/entity/dto/ConnectAuthUser.java +++ b/framework/src/main/java/cn/lili/modules/connect/entity/dto/ConnectAuthUser.java @@ -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信息 */ diff --git a/framework/src/main/java/cn/lili/modules/connect/request/BaseAuthQQRequest.java b/framework/src/main/java/cn/lili/modules/connect/request/BaseAuthQQRequest.java index 4cf53b784..137d652e8 100644 --- a/framework/src/main/java/cn/lili/modules/connect/request/BaseAuthQQRequest.java +++ b/framework/src/main/java/cn/lili/modules/connect/request/BaseAuthQQRequest.java @@ -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(); } diff --git a/framework/src/main/java/cn/lili/modules/connect/request/BaseAuthWeChatPCRequest.java b/framework/src/main/java/cn/lili/modules/connect/request/BaseAuthWeChatPCRequest.java index 43aa3e064..63feaea42 100644 --- a/framework/src/main/java/cn/lili/modules/connect/request/BaseAuthWeChatPCRequest.java +++ b/framework/src/main/java/cn/lili/modules/connect/request/BaseAuthWeChatPCRequest.java @@ -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(); } diff --git a/framework/src/main/java/cn/lili/modules/connect/request/BaseAuthWeChatRequest.java b/framework/src/main/java/cn/lili/modules/connect/request/BaseAuthWeChatRequest.java index 283a07f53..6418d9cfe 100644 --- a/framework/src/main/java/cn/lili/modules/connect/request/BaseAuthWeChatRequest.java +++ b/framework/src/main/java/cn/lili/modules/connect/request/BaseAuthWeChatRequest.java @@ -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(); } diff --git a/framework/src/main/java/cn/lili/modules/connect/request/BaseAuthWeiboRequest.java b/framework/src/main/java/cn/lili/modules/connect/request/BaseAuthWeiboRequest.java index 69c263512..e2e79b975 100644 --- a/framework/src/main/java/cn/lili/modules/connect/request/BaseAuthWeiboRequest.java +++ b/framework/src/main/java/cn/lili/modules/connect/request/BaseAuthWeiboRequest.java @@ -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(); } diff --git a/framework/src/main/java/cn/lili/modules/connect/serviceimpl/ConnectServiceImpl.java b/framework/src/main/java/cn/lili/modules/connect/serviceimpl/ConnectServiceImpl.java index aaea809c7..9e575b82b 100644 --- a/framework/src/main/java/cn/lili/modules/connect/serviceimpl/ConnectServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/connect/serviceimpl/ConnectServiceImpl.java @@ -191,15 +191,11 @@ public class ConnectServiceImpl extends ServiceImpl 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 impl */ private Token unionLoginCallback(ConnectAuthUser authUser, boolean longTerm) { - try { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); - //使用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 queryWrapper = new LambdaQueryWrapper(); + //使用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); + } } }