• 浙政钉用户登陆


    /**
     * 浙政钉用户登陆
     *
     * @param request
     * @return
     */
    public AjaxResult zzdLogin(ZZDLoginRequest request) {
        //默认租户dnCd
        ThreadLocalUtil.set(videoCallConfig.getTenant());
        Map result = new HashMap();
        //根据appid找到对应得应用
        TZzdConfig zzdConfig = zzdConfigMapper.selectTZzdConfigByAppId(request.getAppId());
        if (zzdConfig == null) {
            ThreadLocalUtil.remove();
            return AjaxResult.error("配置信息错误");
        }
        //删除租户信息
        ThreadLocalUtil.remove();
        //重新设置租户信息为配置的租户
        ThreadLocalUtil.set(zzdConfig.getSjzTenant());
        //获取应用access_token
        String accesstoken = zzdService.getToken(zzdConfig);
        log.debug("accesstoken返回:{}", accesstoken);
        if (StringUtils.isNotEmpty(accesstoken)) {
            //根据accesstoken+authcode获取当前当前的用户信息
            ZZDUser zzdUser = zzdService.getLoginUser(zzdConfig, request.getAuth_code(), accesstoken);
            log.warn("zzduser:{}", zzdUser);
            if (zzdUser != null) {
                //根据用户accountId读取系统用户
                SysUser sysUser = userService.getSysUserByAccountId(zzdUser.getAccountId());
                if (sysUser == null) {
                    ThreadLocalUtil.remove();
                    return AjaxResult.error("未绑定系统用户");
                }
                //开始执行登录
                LoginUser loginUser = new LoginUser();
                loginUser.setTenant(zzdConfig.getSjzTenant());
                loginUser.setUser(sysUser);
    
                // 生成token
                String token = tokenService.createToken(loginUser);
                log.warn("浙政钉登录token:{}", token);
                AsyncManager.me()
                        .execute(AsyncFactory.recordLogininfor(null, null, loginUser.getToken(), loginUser.getDeptPk(),
                                loginUser.getLoginUserId(), EnumUserType.ADMIN.getCode(), zzdConfig.getSjzTenant(), sysUser.getUserName(),
                                nickName(loginUser), Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
    
                // 修改用户登录时间
                SysUser user = new SysUser();
                user.setPkId(loginUser.getLoginUserId());
                user.setLoginDate(new Date());
                userService.updateUserProfile(user);
                //查询部门信息和单位信息
                SysDept dept = deptService.selectDeptById(sysUser.getDeptId());
                log.warn("dept:{}", dept);
                if (dept != null) {
                    result.put("deptName", dept.getDeptName());
                }
                SysOrg org = orgService.selectSysOrgById(sysUser.getOrgPk());
                log.warn("org:{}", org);
                if (org != null) {
                    result.put("orgName", org.getOrgName());
                }
                //读取用户权限
                Set permissions = permissionService.getMenuPermission(sysUser);
                result.put("permissions", permissions);
                result.put("token", token);
                ThreadLocalUtil.remove();
                return AjaxResult.success(result);
            } else {
                ThreadLocalUtil.remove();
                return AjaxResult.error("用户信息读取失败");
            }
        } else {
            ThreadLocalUtil.remove();
            return AjaxResult.error("accesstoken信息获取失败");
        }
    }
  • 相关阅读:
    STM32 如何定位导致发生 hard fault 的代码段
    RAID磁盘阵列简单介绍
    Python进阶该怎么学?有什么书推荐吗?
    【C语言练习——打印空心下三角及其变形】
    学习笔记|构建一元线性回归模型|方差分析|方差齐性|检验残差正态性|规范表达|《小白爱上SPSS》课程:SPSS第二十讲: 一元线性回归分析怎么做?
    C#__文件操作之FileInfo和DirectoryInfo
    Monoxide relay机制和连弩挖矿
    AspNetCore 成长杂记(一):JWT授权鉴权之生成JWT(其一)
    uniapp 树状数据无限极 进行展示并选择
    Java反编译生成java文件
  • 原文地址:https://blog.csdn.net/qq_39716220/article/details/126948528