liusheng
10 天以前 a3ff2caca929d75ddb4bff51244395215fdc47e7
SSO代码提交
已修改7个文件
124 ■■■■■ 文件已修改
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -69,7 +69,7 @@
            return AjaxResult.error("用户名或组织机构不能为空");
        }
        String token = loginService.loginByUserName(loginBody.getUsername() + "&" + loginBody.getOrgid());
        String token = loginService.loginByUserName(loginBody.getUsername() + "&" + loginBody.getOrgid()+"&" + loginBody.getDeptId());
        ajax.put(Constants.TOKEN, token);
        return ajax;
    }
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java
@@ -34,4 +34,9 @@
     */
    private String orgid;
    /**
     * 部门ID
     */
    private String deptId;
}
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
@@ -95,7 +95,7 @@
    public String loginByUserName(String userName) {
        SysUser sysUser = userService.selectUserByUserName2(userName);
        SysUser sysUser = userService.selectUserByUserNameAndDeptId(userName);
        if (ObjectUtils.isNotEmpty(sysUser)) {
            // 构建登录用户对象
            LoginUser loginUser = new LoginUser();
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
@@ -50,7 +50,7 @@
     * @param userName 用户名
     * @return 用户对象信息
     */
    public SysUser selectUserByUserNameByCondition(@Param("userName") String userName, @Param("orgid") String orgid);
    public SysUser selectUserByUserNameByCondition(@Param("userName") String userName, @Param("orgid") String orgid, @Param("deptId") String deptId);
    /**
     * 通过用户ID查询用户
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
@@ -49,6 +49,8 @@
     */
    public SysUser selectUserByUserName2(String userName);
    public SysUser selectUserByUserNameAndDeptId(String userName);
    /**
     * 通过用户ID查询用户
     *
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -167,7 +167,7 @@
    @Override
    public SysUser selectUserByUserName2(String userName) {
        String[] split = userName.split("&");
        SysUser sysUser = userMapper.selectUserByUserNameByCondition(split[0], split[1]);
        SysUser sysUser = userMapper.selectUserByUserNameByCondition(split[0], split[1], null);
        if (Objects.isNull(sysUser)) return sysUser;
        List<SysDept> sysDepts = null;
        if (StringUtils.isNotEmpty(split[0]) && split[0].equals("admin")) {
@@ -269,6 +269,112 @@
        return sysUser;
    }
    @Override
    public SysUser selectUserByUserNameAndDeptId(String userName) {
        String[] split = userName.split("&");
        SysUser sysUser = userMapper.selectUserByUserNameByCondition(split[0], split[1], split[2]);
        if (Objects.isNull(sysUser)) return sysUser;
        List<SysDept> sysDepts = null;
        if (StringUtils.isNotEmpty(split[0]) && split[0].equals("admin")) {
            SysDept dept = new SysDept();
            dept.setOrgid(split[1]);
            sysDepts = sysDeptMapper.selectDeptList(dept);
        } else {
            sysDepts = sysUserDeptMapper.selectDeptListByUserId(sysUser.getUserId());
        }
        List<Long> deptIds = new ArrayList<>();
        for (SysDept sysDept : sysDepts) {
            deptIds.add(sysDept.getDeptId());
        }
        SysUserDept sysUserDept = new SysUserDept();
        sysUserDept.setUserId(sysUser.getUserId());
        sysUserDept.setDeptType(sysUser.getSearchscope());
        sysUserDept.setOrgid(split[1]);
        List<SysUserDept> sysUserDeptKSs = null;
        List<SysUserDept> sysUserDeptBQs = null;
        if (StringUtils.isNotEmpty(sysUser.getSearchscope()) && sysUser.getSearchscope().equals("0")) {
            if (StringUtils.isNotEmpty(split[0]) && split[0].equals("admin")) {
                sysUserDept.setUserId(null);
            }
            sysUserDept.setDeptType("1");
            sysUserDeptKSs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);
            sysUserDept.setDeptType("2");
            sysUserDeptBQs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);
            //如果是admin,需要对sysUserDeptBQs,sysUserDeptBQs去重
            if (StringUtils.isNotEmpty(split[0]) && split[0].equals("admin")) {
                //如果是admin,只能去sys_dept去取数据
                SysDept dept = new SysDept();
                dept.setOrgid(split[1]);
                dept.setDeptType("1");
                sysDepts = sysDeptMapper.selectDeptList(dept);
                sysUserDeptKSs = DtoConversionUtils.sourceToTarget(sysDepts, SysUserDept.class);
                dept.setDeptType("2");
                sysDepts = sysDeptMapper.selectDeptList(dept);
                sysUserDeptBQs = DtoConversionUtils.sourceToTarget(sysDepts, SysUserDept.class);
                List<SysUserDept> distinctUserDepts = new ArrayList<>();
                Set<String> uniqueDeptCodes = new HashSet<>();
                for (SysUserDept userDept : sysUserDeptKSs) {
                    String deptCode = userDept.getDeptCode();
                    if (StringUtils.isNotEmpty(deptCode) && !uniqueDeptCodes.contains(deptCode)) {
                        distinctUserDepts.add(userDept);
                        uniqueDeptCodes.add(deptCode);
                    }
                }
                List<SysUserDept> distinctUserBQs = new ArrayList<>();
                Set<String> uniqueBQCodes = new HashSet<>();
                for (SysUserDept userDept : sysUserDeptBQs) {
                    String deptCode = userDept.getDeptCode();
                    if (StringUtils.isNotEmpty(deptCode) && !uniqueBQCodes.contains(deptCode)) {
                        distinctUserBQs.add(userDept);
                        uniqueBQCodes.add(deptCode);
                    }
                }
                sysUserDeptKSs = distinctUserDepts;
                sysUserDeptBQs = distinctUserBQs;
            }
        } else if (StringUtils.isNotEmpty(sysUser.getSearchscope()) && sysUser.getSearchscope().equals("1")) {
            sysUserDept.setDeptType("1");
            sysUserDeptKSs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);
        } else if (StringUtils.isNotEmpty(sysUser.getSearchscope()) && sysUser.getSearchscope().equals("2")) {
            sysUserDept.setDeptType("2");
            sysUserDeptBQs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);
        }
        sysUser.setDepts(deptIds);
        if (!CollectionUtils.isEmpty(sysUserDeptBQs)) {
            List<Map<String, Object>> list = new ArrayList<>();
            for (SysUserDept sud : sysUserDeptBQs) {
                Map<String, Object> map = new HashMap<>();
                map.put("districtCode", "");
                if (StringUtils.isNotEmpty(sud.getDeptCode())) map.put("districtCode", sud.getDeptCode());
                else continue;
                map.put("districtName", "");
                if (StringUtils.isNotEmpty(sud.getDeptName())) map.put("districtName", sud.getDeptName());
                list.add(map);
            }
            sysUser.setBelongWards(list);
        }
        if (!CollectionUtils.isEmpty(sysUserDeptKSs)) {
            List<Map<String, Object>> list = new ArrayList<>();
            for (SysUserDept sud : sysUserDeptKSs) {
                Map<String, Object> map = new HashMap<>();
                map.put("deptCode", "");
                if (StringUtils.isNotEmpty(sud.getDeptCode())) map.put("deptCode", sud.getDeptCode());
                else continue;
                map.put("deptName", "");
                if (StringUtils.isNotEmpty(sud.getDeptName())) map.put("deptName", sud.getDeptName());
                list.add(map);
            }
            sysUser.setBelongDepts(list);
        }
        return sysUser;
    }
    /**
     * 通过用户ID查询用户
     *
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -235,6 +235,9 @@
            <if test="orgid != null and orgid != ''">
                AND u.orgid = #{orgid}
            </if>
            <if test="deptId != null and deptId != ''">
                AND u.dept_id = #{deptId}
            </if>
        </where>
    </select>