| | |
| | | @Value("${spring.profiles.active}") |
| | | private String active; |
| | | |
| | | /** |
| | | * 管理员用户ID列表(配置项 isAdmin)。管理员不受「用户-部门关系表」限制,直接看本机构全部科室/病区。 |
| | | */ |
| | | @Value("${isAdmin:1}") |
| | | private List<Long> isAdmin; |
| | | |
| | | // @Value("${wx_appid}") |
| | | // private String wxAppid; |
| | | // |
| | |
| | | } |
| | | |
| | | String redirectUrl = path + "/#/loginSSO?token=" + loginToken + "&orgid=" + orgid + "&campusid=" + campusid + "&orgname=null&ZuHuID=null&deptCode=null"; |
| | | if (active.equals("sltd")) { |
| | | //省立同德不能带“#” |
| | | redirectUrl = path + "/loginSSO?token=" + loginToken + "&orgid=" + orgid + "&campusid=" + campusid + "&orgname=null&ZuHuID=null&deptCode=null"; |
| | | } |
| | | log.info("【SSO登录】重定向地址:{}", redirectUrl); |
| | | return buildRedirect(redirectUrl); |
| | | } |
| | |
| | | SysUser user = SecurityUtils.getLoginUser().getUser(); |
| | | //显示所有院区权限 |
| | | String allCampus = sysConfigService.selectConfigByKey("sys.authority.campus.all"); |
| | | if(StringUtils.isNotEmpty(allCampus)){ |
| | | allCampus = "," + allCampus + ","; |
| | | if (allCampus.contains("," + user.getUserName() + ",")) { |
| | | user.setCampusid(null); |
| | | if (StringUtils.isNotEmpty(allCampus) && StringUtils.isNotEmpty(user.getUserName())) { |
| | | for (String item : allCampus.split("[,,;;\\s]+")) { |
| | | if (user.getUserName().equals(item.trim())) { |
| | | user.setCampusid(null); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | ajax.put("user", user); |
| | | ajax.put("roles", roles); |
| | | ajax.put("permissions", permissions); |
| | | List<SysDept> sysDeptKSs = null; |
| | | List<SysDept> sysDeptBQs = null; |
| | | // 科室/病区下拉的数据源: |
| | | // · 管理员(账号 admin,或命中配置 isAdmin 的用户ID):直接查 sys_dept 取本机构全部科室/病区, |
| | | // 不再关联 sys_user_dept,也不按院区过滤——管理员天然拥有全部科室权限; |
| | | // · 普通用户:仍然按「用户-部门关系表」只返回自己名下的科室/病区(保持原逻辑)。 |
| | | SysUserDept sysUserDept = new SysUserDept(); |
| | | sysUserDept.setUserId(user.getUserId()); |
| | | sysUserDept.setDeptType("1"); |
| | | sysUserDept.setOrgid(user.getOrgid()); |
| | | sysUserDept.setCampusid(user.getCampusid()); |
| | | sysDeptKSs = sysDeptService.selectLeafSysDeptListBySysUserDept(sysUserDept); |
| | | if (!isAdminUser(user)) { |
| | | sysUserDept.setUserId(user.getUserId()); |
| | | sysUserDept.setCampusid(user.getCampusid()); |
| | | } |
| | | sysUserDept.setDeptType("1"); |
| | | List<SysDept> sysDeptKSs = sysDeptService.selectLeafSysDeptListBySysUserDept(sysUserDept); |
| | | ajax.put("belongDepts", sysDeptKSs); |
| | | sysUserDept.setDeptType("2"); |
| | | sysDeptBQs = sysDeptService.selectLeafSysDeptListBySysUserDept(sysUserDept); |
| | | List<SysDept> sysDeptBQs = sysDeptService.selectLeafSysDeptListBySysUserDept(sysUserDept); |
| | | ajax.put("belongWards", sysDeptBQs); |
| | | |
| | | return ajax; |
| | | } |
| | | |
| | | /** |
| | | * 是否管理员:账号名为 admin,或用户ID命中配置项 isAdmin。 |
| | | * <p> |
| | | * 管理员取科室/病区时不走 sys_user_dept(HIS 采集明确排除 admin,该表里管理员没有数据), |
| | | * 否则会出现「登录成功但科室/病区下拉为空」。 |
| | | */ |
| | | private boolean isAdminUser(SysUser user) { |
| | | if (user == null) { |
| | | return false; |
| | | } |
| | | if ("admin".equalsIgnoreCase(user.getUserName())) { |
| | | return true; |
| | | } |
| | | return user.getUserId() != null && isAdmin != null && isAdmin.contains(user.getUserId()); |
| | | } |
| | | |
| | | /** |
| | | * 获取路由信息 |
| | | * |
| | | * @return 路由信息 |