根据微信code获取换取用户登录态信息

1.根据微信code获取换取用户登录态信息

点击查看代码
    /**
     *  根据code获取小程序用户openpid
     */
    @Override
    public R<Map<String, String>> getUnitCheckPersonOpenId(String code){
        R<Map<String, String>> resMap = new R<>();
        //获取用户openid
        String wxAppIdUrl = WxLoginConstant.WX_LOGIN_URL + "?appid=" + WxLoginConstant.APP_ID + "&secret=" +
                WxLoginConstant.SECRET + "&js_code=" + code + "&grant_type=" + WxLoginConstant.GRANT_TYPE;
        R<Object> tokenRes = RequestUtil.GET(wxAppIdUrl, null);
        Integer resCode = tokenRes.getCode();
        if (resCode == HttpStatus.SC_OK){
            Object tokenData = tokenRes.getData();
            WxLoginResVo tokenResVo = JSON.parseObject(tokenData.toString(), WxLoginResVo.class);
            if (Objects.nonNull(tokenResVo)){
                    String openid = tokenResVo.getOpenid();
                    if (StringUtils.isNotBlank(openid)){
                        //根据openid查询db是否存在此记录
                        WghHiddenSelfCheckUnitPersonVo unitCheckPerson = getUnitCheckPersonByOpenid(openid);
                        Map<String, String> map = Maps.newHashMap();
                        if (Objects.nonNull(unitCheckPerson)){
                            //1.存在
                            map.put("isExistOpenId","y");
                            //更新
                        } else {
                            //2.不存在
                            map.put("isExistOpenId","n");
                        }
                        //用户唯一标识
                        map.put("openid",openid);
                        resMap.setCode(200);
                        resMap.setMsg("成功");
                        resMap.setData(map);
                    } else {
                        resMap.setCode(tokenResVo.getErrcode());
                        resMap.setMsg(tokenResVo.getErrmsg());
                    }
            }
        }else {
            resMap.setCode(500);
            resMap.setMsg("获取用户openid失败");
        }
        return resMap;
    }
2. 根据openid判断是否为系统内部人员、公众人员
点击查看代码
/**
     * 根据openid判断是否为系统内部人员、公众人员
     */
    @Override
    public R<Map<String,String>> getHiddenSelfCheckIsHasUnitInfo(String openid) {
        R<Map<String, String>> resMap = new R<>();
        if (StringUtils.isBlank(openid)) {
            resMap.setCode(501);
            resMap.setMsg("openid参数不能为空");
            return resMap;
        }
        LambdaQueryWrapper<WghHiddenSelfCheckUnitPerson> lqw = Wrappers.lambdaQuery();
        lqw.eq(StringUtils.isNotBlank(openid), WghHiddenSelfCheckUnitPerson::getOpenid, openid);
        WghHiddenSelfCheckUnitPersonVo objVo = baseMapper.selectVoOne(lqw);
        if (Objects.isNull(objVo)) {
            resMap.setCode(502);
            resMap.setMsg("无法根据openid查询到用户信息");
            return resMap;
        }
        Map<String, String> map = Maps.newHashMap();
        Long sysUserId = objVo.getSysUserId();
        if (Objects.nonNull(sysUserId)) {
            //系统用户
            map.put("isSysUser", "y");
            //生成token
            SysUser sysUser = sysUserMapper.selectUserById(sysUserId);
            if (Objects.nonNull(sysUser)) {
                LoginUser loginUser = SysLoginService.buildLoginUser(sysUser);
                LoginHelper.loginByDevice(loginUser, DeviceType.XCX);
                String token = StpUtil.getTokenValue();
                map.put("token", token);
            } else {
                resMap.setCode(401);
                resMap.setMsg("系统中不存在此用户信息");
            }
        } else {
            //公众用户
            map.put("isSysUser", "n");
        }
        resMap.setCode(200);
        resMap.setMsg("成功");
        resMap.setData(map);
        return resMap;
    }

3. 根据openid完善小程序登录个人信息
点击查看代码
    /**
     * 根据openid完善小程序登录个人信息
     */
    @Override
    public Boolean hiddenSelfCheckUnitUserInfo(WghHiddenSelfCheckUnitPersonBo bo) {
        if (StringUtils.isBlank(bo.getPhone())){
            return false;
        }
        // 1.根据手机号查询db是否存在此记录
        Boolean flag;
        LambdaQueryWrapper<WghHiddenSelfCheckUnitPerson> lqw = Wrappers.lambdaQuery();
        lqw.eq(StringUtils.isNotBlank(bo.getPhone()),WghHiddenSelfCheckUnitPerson::getPhone,bo.getPhone());
        WghHiddenSelfCheckUnitPersonVo vo = baseMapper.selectVoOne(lqw);
        if (Objects.nonNull(vo)){
            //1.1是则为系统用户第一次登录,需绑定小程序openid
            //更新db
            UpdateWrapper<WghHiddenSelfCheckUnitPerson> updateWrapper = new UpdateWrapper<>();
            updateWrapper.eq("phone", bo.getPhone());
            updateWrapper.set("openid",bo.getOpenid());
            flag =  baseMapper.update(null,updateWrapper) > 0;
        }else {
            //1.2否,说明是自查自改单位人员,则新增(手机号、用户名、openid)
            //新增
            WghHiddenSelfCheckUnitPerson add = BeanUtil.toBean(bo, WghHiddenSelfCheckUnitPerson.class);
            flag = baseMapper.insert(add) > 0;
        }
        return flag;
    }
posted @ 2024-04-18 21:08  zhuoyb  阅读(125)  评论(0)    收藏  举报