zxl
4 天以前 8063ee7eee51bfe25a09428e6efc60f828b270c6
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;
@@ -81,6 +82,8 @@
     */
    @Autowired
    private RocketmqCustomProperties rocketmqCustomProperties;
    static String DEFAULT_PASSWORD = "111111";
    @Override
    @Transactional(rollbackFor = Exception.class)
@@ -243,6 +246,50 @@
        }
    }
    @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("https://i.loli.net/2020/11/19/LyN6JF7zZRskdIe.png");
            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);
    }
    /**
     * 第三方联合登陆
@@ -389,4 +436,4 @@
    }
}
}