/**
* 浙政钉用户登陆
*
* @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信息获取失败");
}
}