update 同步 ruoyi 新功能

This commit is contained in:
疯狂的狮子li
2022-08-25 13:30:57 +08:00
32 changed files with 429 additions and 222 deletions

View File

@@ -51,8 +51,7 @@ public class SysDeptController extends BaseController {
@GetMapping("/list/exclude/{deptId}")
public R<List<SysDept>> excludeChild(@PathVariable(value = "deptId", required = false) Long deptId) {
List<SysDept> depts = deptService.selectDeptList(new SysDept());
depts.removeIf(d -> d.getDeptId().equals(deptId)
|| ArrayUtil.contains(StringUtils.split(d.getAncestors(), ","), deptId + ""));
depts.removeIf(d -> d.getDeptId().intValue() == deptId || ArrayUtil.contains(StringUtils.split(d.getAncestors(), ","), deptId + ""));
return R.ok(depts);
}
@@ -68,29 +67,6 @@ public class SysDeptController extends BaseController {
return R.ok(deptService.selectDeptById(deptId));
}
/**
* 获取部门下拉树列表
*/
@GetMapping("/treeselect")
public R<List<Tree<Long>>> treeselect(SysDept dept) {
List<SysDept> depts = deptService.selectDeptList(dept);
return R.ok(deptService.buildDeptTreeSelect(depts));
}
/**
* 加载对应角色部门列表树
*
* @param roleId 角色ID
*/
@GetMapping(value = "/roleDeptTreeselect/{roleId}")
public R<Map<String, Object>> roleDeptTreeselect(@PathVariable("roleId") Long roleId) {
List<SysDept> depts = deptService.selectDeptList(new SysDept());
Map<String, Object> ajax = new HashMap<>();
ajax.put("checkedKeys", deptService.selectDeptListByRoleId(roleId));
ajax.put("depts", deptService.buildDeptTreeSelect(depts));
return R.ok(ajax);
}
/**
* 新增部门
*/

View File

@@ -74,6 +74,8 @@ public class SysProfileController extends BaseController {
user.setUserId(LoginHelper.getUserId());
user.setUserName(null);
user.setPassword(null);
user.setAvatar(null);
user.setDeptId(null);
if (userService.updateUserProfile(user) > 0) {
return R.ok();
}

View File

@@ -10,10 +10,12 @@ import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.mybatis.core.page.PageQuery;
import com.ruoyi.common.mybatis.core.page.TableDataInfo;
import com.ruoyi.common.satoken.utils.LoginHelper;
import com.ruoyi.system.api.domain.SysDept;
import com.ruoyi.system.api.domain.SysRole;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.model.LoginUser;
import com.ruoyi.system.domain.SysUserRole;
import com.ruoyi.system.service.ISysDeptService;
import com.ruoyi.system.service.ISysPermissionService;
import com.ruoyi.system.service.ISysRoleService;
import com.ruoyi.system.service.ISysUserService;
@@ -22,7 +24,9 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 角色信息
@@ -37,6 +41,7 @@ public class SysRoleController extends BaseController {
private final ISysRoleService roleService;
private final ISysUserService userService;
private final ISysDeptService deptService;
private final ISysPermissionService permissionService;
/**
@@ -106,7 +111,9 @@ public class SysRoleController extends BaseController {
LoginUser loginUser = LoginHelper.getLoginUser();
Long userId = loginUser.getUserId();
if (!LoginHelper.isAdmin(userId)) {
loginUser.setMenuPermission(permissionService.getMenuPermission(userId));
SysUser sysUser = new SysUser();
sysUser.setUserId(userId);
loginUser.setMenuPermission(permissionService.getMenuPermission(sysUser));
LoginHelper.setLoginUser(loginUser);
}
return R.ok();
@@ -213,4 +220,19 @@ public class SysRoleController extends BaseController {
roleService.checkRoleDataScope(roleId);
return toAjax(roleService.insertAuthUsers(roleId, userIds));
}
/**
* 获取对应角色部门树列表
*
* @param roleId 角色ID
*/
@SaCheckPermission("system:role:query")
@GetMapping(value = "/deptTree/{roleId}")
public R<Map<String, Object>> deptTree(@PathVariable("roleId") Long roleId) {
Map<String, Object> ajax = new HashMap<>();
ajax.put("checkedKeys", deptService.selectDeptListByRoleId(roleId));
ajax.put("depts", deptService.selectDeptTreeList(new SysDept()));
return R.ok(ajax);
}
}

View File

@@ -52,6 +52,7 @@ public class SysUserController extends BaseController {
private final ISysRoleService roleService;
private final ISysPostService postService;
private final ISysPermissionService permissionService;
private final ISysDeptService deptService;
/**
* 获取用户列表
@@ -113,7 +114,7 @@ public class SysUserController extends BaseController {
public R<Map<String, Object>> getInfo() {
Long userId = LoginHelper.getUserId();
// 角色集合
Set<String> roles = permissionService.getRolePermission(userId);
Set<String> roles = permissionService.getRolePermission(user);
// 权限集合
Set<String> permissions = permissionService.getMenuPermission(userId);
Map<String, Object> ajax = new HashMap<>();
@@ -254,4 +255,13 @@ public class SysUserController extends BaseController {
userService.insertUserAuth(userId, roleIds);
return R.ok();
}
/**
* 获取部门树列表
*/
@SaCheckPermission("system:user:list")
@GetMapping("/deptTree")
public AjaxResult deptTree(SysDept dept) {
return R.ok(deptService.selectDeptTreeList(dept));
}
}

View File

@@ -32,6 +32,14 @@ public interface SysMenuMapper extends BaseMapperPlus<SysMenuMapper, SysMenu, Sy
*/
List<SysMenu> selectMenuListByUserId(@Param(Constants.WRAPPER) Wrapper<SysMenu> queryWrapper);
/**
* 根据角色ID查询权限
*
* @param roleId 角色ID
* @return 权限列表
*/
public List<String> selectMenuPermsByRoleId(Long roleId);
/**
* 根据用户ID查询权限
*

View File

@@ -19,6 +19,14 @@ public interface ISysDeptService {
*/
List<SysDept> selectDeptList(SysDept dept);
/**
* 查询部门树结构信息
*
* @param dept 部门信息
* @return 部门树信息集合
*/
public List<Tree<Long>> selectDeptTreeList(SysDept dept);
/**
* 构建前端所需要下拉树结构
*

View File

@@ -38,6 +38,14 @@ public interface ISysMenuService {
*/
Set<String> selectMenuPermsByUserId(Long userId);
/**
* 根据角色ID查询权限
*
* @param roleId 角色ID
* @return 权限列表
*/
public Set<String> selectMenuPermsByRoleId(Long roleId);
/**
* 根据用户ID查询菜单树信息
*

View File

@@ -1,21 +1,28 @@
package com.ruoyi.system.service;
import java.util.Set;
public interface ISysPermissionService {
/**
* 获取角色数据权限
*
* @param userId 用户Id
* @return 角色权限信息
*/
Set<String> getRolePermission(Long userId);
/**
* 获取菜单数据权限
*
* @param userId 用户Id
* @return 菜单权限信息
*/
Set<String> getMenuPermission(Long userId);
}
package com.ruoyi.system.service;
import java.util.Set;
import com.ruoyi.system.api.domain.SysUser;
/**
* 权限信息 服务层
*
* @author ruoyi
*/
public interface ISysPermissionService {
/**
* 获取角色数据权限
*
* @param userId 用户Id
* @return 角色权限信息
*/
Set<String> getRolePermission(SysUser user);
/**
* 获取菜单数据权限
*
* @param userId 用户Id
* @return 菜单权限信息
*/
Set<String> getMenuPermission(SysUser user);
}

View File

@@ -57,6 +57,18 @@ public class SysDeptServiceImpl implements ISysDeptService {
return baseMapper.selectDeptList(lqw);
}
/**
* 查询部门树结构信息
*
* @param dept 部门信息
* @return 部门树信息集合
*/
@Override
public List<Tree<Long>> selectDeptTreeList(SysDept dept) {
List<SysDept> depts = this.selectDeptList(dept);
return buildDeptTreeSelect(depts);
}
/**
* 构建前端所需要下拉树结构
*

View File

@@ -97,6 +97,27 @@ public class SysMenuServiceImpl implements ISysMenuService {
return permsSet;
}
/**
* 根据角色ID查询权限
*
* @param roleId 角色ID
* @return 权限列表
*/
@Override
public Set<String> selectMenuPermsByRoleId(Long roleId)
{
List<String> perms = menuMapper.selectMenuPermsByRoleId(roleId);
Set<String> permsSet = new HashSet<>();
for (String perm : perms)
{
if (StringUtils.isNotEmpty(perm))
{
permsSet.addAll(Arrays.asList(perm.trim().split(",")));
}
}
return permsSet;
}
/**
* 根据用户ID查询菜单
*
@@ -430,7 +451,7 @@ public class SysMenuServiceImpl implements ISysMenuService {
* @return
*/
public String innerLinkReplaceEach(String path) {
return StringUtils.replaceEach(path, new String[]{Constants.HTTP, Constants.HTTPS},
return StringUtils.replaceEach(path, new String[]{Constants.HTTP, Constants.HTTPS, Constants.WWW, "." },
new String[]{"", ""});
}
}

View File

@@ -10,6 +10,11 @@ import org.springframework.stereotype.Service;
import java.util.HashSet;
import java.util.Set;
/**
* 用户权限处理
*
* @author ruoyi
*/
@RequiredArgsConstructor
@Service
public class SysPermissionServiceImpl implements ISysPermissionService {
@@ -24,13 +29,13 @@ public class SysPermissionServiceImpl implements ISysPermissionService {
* @return 角色权限信息
*/
@Override
public Set<String> getRolePermission(Long userId) {
public Set<String> getRolePermission(SysUser user) {
Set<String> roles = new HashSet<String>();
// 管理员拥有所有权限
if (LoginHelper.isAdmin(userId)) {
if (LoginHelper.isAdmin(user.getUserId())) {
roles.add("admin");
} else {
roles.addAll(roleService.selectRolePermissionByUserId(userId));
roles.addAll(roleService.selectRolePermissionByUserId(user.getUserId()));
}
return roles;
}
@@ -42,13 +47,23 @@ public class SysPermissionServiceImpl implements ISysPermissionService {
* @return 菜单权限信息
*/
@Override
public Set<String> getMenuPermission(Long userId) {
public Set<String> getMenuPermission(SysUser user) {
Set<String> perms = new HashSet<String>();
// 管理员拥有所有权限
if (LoginHelper.isAdmin(userId)) {
if (LoginHelper.isAdmin(user.getUserId())) {
perms.add("*:*:*");
} else {
perms.addAll(menuService.selectMenuPermsByUserId(userId));
List<SysRole> roles = user.getRoles();
if (!roles.isEmpty() && roles.size() > 1) {
// 多角色设置permissions属性以便数据权限匹配权限
for (SysRole role : roles) {
Set<String> rolePerms = menuService.selectMenuPermsByRoleId(role.getRoleId());
role.setPermissions(rolePerms);
perms.addAll(rolePerms);
}
} else {
perms.addAll(menuService.selectMenuPermsByUserId(user.getUserId()));
}
}
return perms;
}