zxl
4 天以前 850796d89bc2b7fb496630bb6c363695e67187d4
framework/src/main/java/cn/lili/modules/connect/serviceimpl/ConnectServiceImpl.java
@@ -14,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;
@@ -87,8 +88,8 @@
    @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
@@ -130,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");
@@ -137,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"));
    }
@@ -196,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();
        }
@@ -259,9 +261,35 @@
            user.setUsername(UuidUtils.getUUID());
            user.setNickName("微信用户");
            user.setPassword(DEFAULT_PASSWORD);
            user.setFace("https://i.loli.net/2020/11/19/LyN6JF7zZRskdIe.png");
            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);
    }
@@ -279,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;
@@ -310,16 +338,22 @@
                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);
                }
            }
            //发送用户第三方登录消息