From 850796d89bc2b7fb496630bb6c363695e67187d4 Mon Sep 17 00:00:00 2001 From: zxl <763096477@qq.com> Date: 星期二, 05 八月 2025 17:52:10 +0800 Subject: [PATCH] 会员同步手机号 --- framework/src/main/java/cn/lili/modules/connect/serviceimpl/ConnectServiceImpl.java | 77 ++++++++++++++++++++++++++++++++++---- 1 files changed, 69 insertions(+), 8 deletions(-) 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 eac79b1..07587fc 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 @@ -4,6 +4,7 @@ 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; @@ -13,6 +14,7 @@ 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; @@ -82,10 +84,12 @@ @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 @@ -127,6 +131,7 @@ 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"); @@ -134,7 +139,7 @@ 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")); } @@ -193,7 +198,7 @@ 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(); } @@ -243,6 +248,51 @@ } } + @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); + } /** * 绗笁鏂硅仈鍚堢櫥闄� @@ -257,7 +307,7 @@ * @return token * @throws NoPermissionException 涓嶅厑璁告搷浣� */ - private Token unionLoginCallback(ConnectAuthUser authUser, boolean longTerm) { + private Token unionLoginCallback(ConnectAuthUser authUser, boolean longTerm,boolean encryptTwice) { try { Member member = null; @@ -265,6 +315,11 @@ if (StrUtil.isNotBlank(authUser.getPhone())) { member = memberService.findByMobile(authUser.getPhone()); } + + if (StrUtil.isNotBlank(authUser.getUuid())) { + member = memberService.findByUUID(authUser.getUuid()); + } + //濡傛灉鏈煡鍒版墜鏈哄彿鐨勪細鍛樺垯浣跨敤绗笁鏂圭櫥褰� if (member == null) { LambdaQueryWrapper<Connect> queryWrapper = new LambdaQueryWrapper<Connect>(); @@ -283,15 +338,21 @@ 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); } } @@ -384,4 +445,4 @@ } -} \ No newline at end of file +} -- Gitblit v1.8.0