| | |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.json.JSONObject; |
| | | import cn.hutool.json.JSONUtil; |
| | | import cn.lili.base.Result; |
| | | import cn.lili.cache.Cache; |
| | | import cn.lili.common.enums.ClientTypeEnum; |
| | | import cn.lili.common.enums.ResultCode; |
| | |
| | | import cn.lili.common.security.context.UserContext; |
| | | import cn.lili.common.security.token.Token; |
| | | import cn.lili.common.utils.HttpUtils; |
| | | import cn.lili.common.utils.StringUtils; |
| | | import cn.lili.common.utils.UuidUtils; |
| | | import cn.lili.modules.connect.entity.Connect; |
| | | import cn.lili.modules.connect.entity.dto.AuthToken; |
| | |
| | | @Autowired |
| | | private RocketmqCustomProperties rocketmqCustomProperties; |
| | | |
| | | static String DEFAULT_PASSWORD = "111111"; |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public Token unionLoginCallback(ConnectAuthUser authUser, String uuid) { |
| | | return this.unionLoginCallback(authUser, false); |
| | | public Token unionLoginCallback(ConnectAuthUser authUser, String uuid,boolean encryptTwice) { |
| | | return this.unionLoginCallback(authUser, false,encryptTwice); |
| | | } |
| | | |
| | | @Override |
| | |
| | | Map<String, String> map = new HashMap<>(3); |
| | | //得到微信小程序联合登陆信息 |
| | | JSONObject json = this.getConnect(params.getCode()); |
| | | System.out.println(json); |
| | | //存储session key 后续登录用得到 |
| | | String sessionKey = json.getStr("session_key"); |
| | | String unionId = json.getStr("unionid"); |
| | |
| | | map.put("sessionKey", sessionKey); |
| | | map.put("unionId", unionId); |
| | | map.put("openId", openId); |
| | | |
| | | System.out.println(sessionKey); |
| | | //微信联合登陆参数 |
| | | return phoneMpBindAndLogin(map.get("sessionKey"), params, map.get("openId"), map.get("unionId")); |
| | | } |
| | |
| | | AuthToken authToken = new AuthToken(); |
| | | authToken.setUnionId(unionId); |
| | | connectAuthUser.setToken(authToken); |
| | | return this.unionLoginCallback(connectAuthUser, true); |
| | | return this.unionLoginCallback(connectAuthUser, true,true); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public Result silentLogin(String code) { |
| | | JSONObject res = this.getConnect(code); |
| | | String unionId = res.getStr("unionid"); |
| | | String openId = res.getStr("openid"); |
| | | Member user = memberService.findByUUID(openId); |
| | | // 不存在就注册 |
| | | if (Objects.isNull(user)) { |
| | | user = new Member(); |
| | | user.setUuId(openId); |
| | | user.setUsername(UuidUtils.getUUID()); |
| | | user.setNickName("微信用户"); |
| | | user.setPassword(DEFAULT_PASSWORD); |
| | | user.setFace(""); |
| | | user.setDisabled(Boolean.TRUE); |
| | | memberService.registerHandler(user); |
| | | } |
| | | |
| | | ConnectAuthUser connectAuthUser = new ConnectAuthUser(); |
| | | connectAuthUser.setUuid(openId); |
| | | connectAuthUser.setNickname(user.getNickName()); |
| | | connectAuthUser.setAvatar(user.getFace()); |
| | | |
| | | |
| | | connectAuthUser.setUsername(UuidUtils.getUUID()); |
| | | |
| | | connectAuthUser.setSource(ConnectEnum.WECHAT); |
| | | connectAuthUser.setType(ClientTypeEnum.WECHAT_MP); |
| | | |
| | | AuthToken authToken = new AuthToken(); |
| | | authToken.setUnionId(unionId); |
| | | connectAuthUser.setToken(authToken); |
| | | |
| | | //发送用户第三方登录消息 |
| | | MemberConnectLoginMessage memberConnectLoginMessage = new MemberConnectLoginMessage(); |
| | | memberConnectLoginMessage.setMember(user); |
| | | memberConnectLoginMessage.setConnectAuthUser(connectAuthUser); |
| | | String destination = |
| | | rocketmqCustomProperties.getMemberTopic() + ":" + MemberTagsEnum.MEMBER_CONNECT_LOGIN.name(); |
| | | //发送用户第三方登录消息 |
| | | rocketMQTemplate.asyncSend(destination, JSONUtil.toJsonStr(memberConnectLoginMessage), |
| | | RocketmqSendCallbackBuilder.commonCallback()); |
| | | Token token = memberTokenGenerate.createToken(user, Boolean.TRUE); |
| | | return Result.ok().data(token); |
| | | } |
| | | |
| | | /** |
| | | * 第三方联合登陆 |
| | |
| | | * @return token |
| | | * @throws NoPermissionException 不允许操作 |
| | | */ |
| | | private Token unionLoginCallback(ConnectAuthUser authUser, boolean longTerm) { |
| | | private Token unionLoginCallback(ConnectAuthUser authUser, boolean longTerm,boolean encryptTwice) { |
| | | |
| | | try { |
| | | Member member = null; |
| | |
| | | Connect connect = this.getOne(queryWrapper); |
| | | |
| | | if (connect == null) { |
| | | member = memberService.autoRegister(authUser); |
| | | member = memberService.autoRegister(authUser,encryptTwice); |
| | | } else { |
| | | //查询会员 |
| | | member = memberService.getById(connect.getUserId()); |
| | | //如果未绑定会员,则把刚才查询到的联合登录表数据删除 |
| | | if (member == null) { |
| | | this.remove(queryWrapper); |
| | | member = memberService.autoRegister(authUser); |
| | | |
| | | member = memberService.autoRegister(authUser,encryptTwice); |
| | | } |
| | | } |
| | | }else { |
| | | if (StringUtils.isBlank(member.getMobile())) { |
| | | member.setMobile(authUser.getPhone()); |
| | | memberService.updateById(member); |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | |
| | | } |
| | | } |